主要内容

HPCチャレンジによるクラスタ,のベンチマ,ク

この例では,HPCチャレンジベンチマークを使用して計算クラスターのパフォーマンスを評価する方法を説明します。このベンチマ,クは,異なるメモリアクセスパタ,ンを測定する複数のテストで構成されます。詳細にいては,HPCチャレンジベンチマ,クを参照してください。

HPCチャレンジの準備

関数parpoolを使用して,クラスタ,でワ,カ,の並列プ,ルを起動します。既定で,parpoolは既定のクラスタプロファルを使用して並列プルを作成します。既定のクラスタプロファルは,[ホ,ム]タブの[並列][既定のクラスタ,の選択]で確認してください。このベンチマ,クでは,ワ,カ,は相互に通信します。ワ,カ,間の通信が最適化されるように,“SpmdEnabled”真正的に設定します。

Pool = parpool(“SpmdEnabled”,真正的);
启动并行池(parpool)使用'MyCluster'配置文件…与64名员工相连。

関数hpccDataSizesを使用して,hpcチャレンジの要件を満たす各ベンチマ,クの問題の規模を計算します。この規模は,ワ,カ,数および各ワ,カ,で使用できるメモリ量によって決まります。たとえば,各ワ,カ,に1 gbの使用を許可します。

gbPerWorker = 1;datasize = hpccdatasize (pool.NumWorkers,gbPerWorker);

HPCチャレンジの実行

HPCチャレンジベンチマークは複数の部分で構成され,それぞれが異なる観点からシステムのパフォーマンスを調べます。次のコードでは,各関数が1つのベンチマークを実行し,パフォーマンス結果を含む1行の表を返します。これらの関数は,分散配列に対する様々な演算をテストします。MATLABは、複数の並列ワーカーにわたって分散配列を分割するため、並列ワーカーはクラスターの結合されたメモリ リソースおよび計算リソースを使用できます。分散配列の詳細については、分散配列を参照してください。

HPL

hpccHPL (m)はLinpackベンチマ,クとして知られており,線形方程式系の求解の実行レ,トを測定します。サereplicationズが列のランダムに分散した実数行列一个と,長さがのランダムに分散した実数ベクトルbを作成し,方程式系x = A\bの並列的な求解に要する時間を測定します。パフォーマンスはギガフロップス(10億単位による,1秒あたりの浮動小数点演算の回数)で返されます。

hplResult = hpccHPL(dataszes . hpl);
启动HPCC基准测试:HPL,数据大小:27.8255 GB。在64个工作人员的池上运行分析文件并将文件传输给工作人员…完成。完成HPCC基准测试:HPL 196.816秒。

DGEMM

hpccDGEMM (m)は,実数行列同士の乗算の実行レ,トを測定します。サereplicationズが列のランダムに分散した実数行列一个BおよびCを作成し,行列乗算C = beta*C + alpha*A*Bの並列実行に要する時間を測定します。ここで,αおよびβはランダムなスカラ,です。パフォ,マンスはギガフロップス単位で返されます。

dgemmResult = hpccDGEMM(dataszes . dgemm);
启动HPCC基准测试:DGEMM,数据大小:9.27515 GB。在64个工作人员的池上运行分析文件并将文件传输给工作人员…完成。完成HPCC基准测试:DGEMM,用时69.3654秒。

hpccSTREAM (m)は,クラスタ,のメモリ帯域幅を評価します。長さがのランダムに分散したベクトルbc,およびランダムなスカラkを作成し,A = b + c*kを計算します。このベンチマ,クでは,ワ,カ,間の通信を使用しません。パフォマンスはgb /秒の単位で返されます。

streamResult = hpccSTREAM(dataSizes.STREAM);
启动HPCC基准测试:STREAM,数据大小:10.6667 GB。在64个工作人员的池上运行分析文件并将文件传输给工作人员…完成。完成HPCC基准测试:STREAM在0.0796962秒。

PTRANS

hpccPTRANS (m)は,システムのプロセス間通信の速度を測定します。サereplicationズが列のランダムに分散した2の行列一个Bを作成し,A' + bを計算します。結果はgb /秒の単位で返されます。

ptransResult = hpccPTRANS(dataszes . ptrans);
启动HPCC基准测试:PTRANS,数据大小:9.27515 GB。在64个工作人员的池上运行分析文件并将文件传输给工作人员…完成。完成HPCC基准测试:PTRANS用时6.43994秒。

RandomAccess

hpccRandomAccess (m)は分散したベクトル内でランダムに更新できるメモリ位置の1秒あたりの数を測定します。結果はgups(1秒あたりのギガ単位の更新数)の単位で返されます。このテストで,ワ,カ,はmex関数にコンパ,ルされた乱数発生器を使用します。各オペレーティングシステムアーキテクチャについて,この墨西哥人関数のバージョンを並列プールに付加します。これにより,ワ,カ,はそのオペレ,ティングシステムに対応するバ,ジョンにアクセスできます。

addAttachedFiles(池,{“hpccRandomNumberGeneratorKernel.mexa64”“hpccRandomNumberGeneratorKernel.mexw64”“hpccRandomNumberGeneratorKernel.mexmaci64”});randomAccessResult = hpccRandomAccess(dataszes . randomaccess);
启动HPCC基准测试:随机访问,数据大小:16 GB。在64个工作人员的池上运行分析文件并将文件传输给工作人员…完成。在208.103秒内完成HPCC基准测试:RandomAccess。

FFT

hpccFFT (m)は,長さがの分散したベクトルについて高速フーリエ変換(FFT)を並列計算した場合の実行レートを測定します。このテストは,システムの演算能力と通信パフォ,マンスの両方を測定します。パフォ,マンスはギガフロップス単位で返されます。

fftResult = hpccFFT(dataszes . fft);
启动HPCC基准测试:数据大小为8 GB的FFT。在64个工作人员的池上运行分析文件并将文件传输给工作人员…完成。完成HPCC基准测试:FFT耗时11.772秒。

結果の表示

各ベンチマ,クの結果は,統計値を含む1行の表です。これらの行を結合して,テスト結果の概要を提供します。

allResults = [hplResult;dgemmResult;streamResult;...ptransResult;randomAccessResult;fftResult];disp (allResults);
Benchmark DataSizeGB Time Performance PerformanceUnits ______________ __________ ________ ___________ ________________ "HPL" 27.826 196.82 773.11 "GFlops" "DGEMM" 9.2752 69.365 1266.4 "GFlops" "STREAM" 10.667 0.079696 431.13 "GBperSec" "PTRANS" 9.2752 6.4399 1.5465 "GBperSec" "RandomAccess" 16 208.1 0.010319 "GUPS" "FFT" 8 11.772 6.6129 "GFlops"

批处理を使用した計算のオフロ,ド

関数批处理を使用してHPCチャレンジの計算をクラスターにオフロードし,MATLABでの作業を続行できます。

批处理を使用する前に,現在の並行プ,ルを削除します。並列プ,ルが既に使用可能なすべてのワ,カ,を使用している場合,バッチジョブを処理できません。

删除(gcp);

批处理を使用して,関数hpccBenchmarkをバッチジョブとしてクラスタ,に送信します。この関数は,HPCチャレンジのテストを呼び出し,結果を表に返します。批处理を使用する場合,ワ,カ,はmatlabクラ,アントの役割を担い,関数を実行します。さらに,以下の名前と値のペアの引数を指定します。

  • “池”:ジョブ用にワ,カ,の並列プ,ルを作成します。この例では,32個のワ,カ,を指定します。hpccBenchmarkはこれらのワ,カ,でHPCチャレンジを実行します。

  • “AttachedFiles”:プル内のワカにファルを転送します。この例では,各オペレーティング システム アーキテクチャについてhpccRandomNumberGeneratorKernelのバ,ジョンを付加します。ワ,カ,はhpccRandomAccessテストを実行するときに,各自のオペレ,ティングシステムに対応するものにアクセスします。

  • “CurrentFolder”:ワ,カ,の作業ディレクトリを設定します。この引数を指定しない場合,MATLABはワーカーの現在のディレクトリをMATLABクライアントの現在のディレクトリに変更します。代わりにワ,カ,の現在のフォルダ,を使用する場合は,“。”に設定します。これは、ワ、カ、のファ、ルシステムが異なる場合に便利です。

gbPerWorker = 1;job = batch(@hpccBenchmark,1,{gbPerWorker},...“池”32岁的...“AttachedFiles”, {“hpccRandomNumberGeneratorKernel.mexa64”“hpccRandomNumberGeneratorKernel.mexw64”“hpccRandomNumberGeneratorKernel.mexmaci64”},...“CurrentFolder”“。”);

ジョブの投入後,matlabでの作業を続行できます。ジョブモニタ,を使用してジョブの状態を確認できます。[ホ,ム]タブの[環境]領域で,[並列][ジョブの監視]を選択します。

この例では,ジョブが完了するまで待ます。クラスタ,から結果を取得するには,関数fetchOutputsを使用します。

等待(工作);results = fetchOutputs(job);{1} disp(结果)
Benchmark DataSizeGB Time Performance PerformanceUnits ______________ __________ ________ ___________ ________________ "HPL" 13.913 113.34 474.69 "GFlops" "DGEMM" 4.6376 41.915 740.99 "GFlops" "STREAM" 5.3333 0.074617 230.24 "GBperSec" "PTRANS" 4.6376 3.7058 1.3437 "GBperSec" "RandomAccess" 8 189.05 0.0056796 "GUPS" "FFT" 4 7.6457 4.9153 "GFlops"

大規模なクラスタ,を使用する場合は,使用できる計算リソ,スを増やします。計算に要する時間がワ,カ,間の通信に要する時間より長い場合,問題を良好にスケ,ルアップできます。次の図に,4台のマシンからなり,各マシンが18個の物理コアをもつクラスターにおける,HPLベンチマークのスケーリングをワーカー数と共に示します。このベンチマクでは,ワカ数に伴ってデタサズが増加していることがわかります。

参考

|

関連するトピック