このトピックでは、eRDMA が有効な Elastic High Performance Computing (E-HPC) クラスター (旧 E-HPC NEXT) を作成する方法について説明します。また、OSU-Benchmark アプリケーションを使用し、eRDMA でマルチノードのハイパフォーマンスコンピューティング (HPC) アプリケーションの通信を高速化する方法も示します。
背景情報
eRDMA を使用すると、E-HPC クラスター (旧 E-HPC NEXT) 上のマルチノード並列ハイパフォーマンスコンピューティング (HPC) ワークロード (気候・気象モデリング、産業シミュレーション、分子動力学など) で、オンプレミスのクラスターに匹敵するネットワークパフォーマンスを実現できます。これにより、高帯域幅と低レイテンシーが実現され、数値シミュレーションの効率が大幅に向上します。追加の RDMA NIC をデプロイすることなく、既存のネットワーク内で RDMA を使用できます。このアプローチはシームレスな統合を実現し、容易に利用できます。
前提条件
-
E-HPC クラスターを作成するには、クラスターの作成ページに移動します。詳細については、「Standard Edition クラスターの作成」をご参照ください。
次の表に、サンプルクラスターの設定を示します。
-
[インスタンスタイプ]: ecs.c7.xlarge (4 vCPU、8 GiB メモリ)
-
[イメージ]: aliyun_2_1903_x64_20G_alibase_20240628.vhd
説明osu-benchmark インストールパッケージは、Alibaba Cloud Linux 2.1903 LTS 64 ビットイメージに基づいてビルドされています。
-
erdma-installer
-
mpich-aocc
-
[インスタンスタイプ]: ecs.c7.xlarge (4 vCPU、8 GiB メモリ)
-
[イメージ]: aliyun_2_1903_x64_20G_alibase_20240628.vhd
-
クラスターユーザーを作成します。詳細については、「ユーザー管理」をご参照ください。
|
パラメーター |
設定 |
|
|
[クラスター設定] |
[リージョン] |
[China (Shanghai)] |
|
[ネットワークおよびゾーン] |
[アベイラビリティーゾーン L] を選択します |
|
|
[シリーズ] |
[Standard Edition] |
|
|
[デプロイモード] |
[パブリッククラウドクラスター] |
|
|
[クラスタータイプ] |
[SLURM] |
|
|
[マスターノード] |
|
|
|
[計算キュー] |
[キューのノード数] |
初期ノード数: |
|
[ノード間インターコネクト] |
[eRDMA ネットワーク] 説明
特定のインスタンスタイプのみ、Elastic RDMA Interconnect (ERI) をサポートしています。詳細については、「eRDMA (Elastic RDMA)」および「エンタープライズレベルインスタンスでの eRDMA の有効化」をご参照ください。 |
|
|
[インスタンスタイプグループ] |
[インスタンスタイプ]: ecs.c8ae.xlarge または同世代の他の AMD インスタンス [イメージ]: aliyun_2_1903_x64_20G_alibase_20240628.vhd |
|
|
[共有ストレージ] |
[/homeクラスターマウントディレクトリ] |
デフォルトでは、ファイルシステムは管理ノードの |
|
[/optマウントディレクトリ] |
||
|
[ソフトウェアとサービス (オプション)] |
[未インストールソフトウェア] |
|
|
[インストール可能なサービスコンポーネント] |
[ログインノード]: |
eRDMA環境の確認
コンピュートノードで eRDMA 設定を検証します。
-
E-HPC コンソールにログインし、対象のクラスターをクリックします。
-
左側のナビゲーションペインで、 を選択します。クラスター内のすべてのコンピュートノードを選択し、コマンドの送信 をクリックします。
-
コンピュートノードで eRDMA ネットワークのステータスと RDMA サポートを確認します。
-
すべてのコンピュートノードに次のコマンドを送信します。
hpcacc erdma checkCloud Assistant の コマンドの送信 ダイアログボックスで、ターゲットインスタンスを選択します。[Execution Plan] を [Immediate] に、[Command Type] を [Shell] に、[Timeout] を 60 秒に設定します。[Run] をクリックします。
-
次のような結果が表示された場合、eRDMA の設定が正しいことを示します。
{"Success": true, "Message": {"Msg": "HPCACC eRDMA status check succeeded. No fault found."}} -
エラーが返された場合は、次のコマンドを実行して設定を修復します。
hpcacc erdma repair -
修復が完了したら、eRDMA の設定を再度検証します。
-
OSU-Benchmarkテストの実行
OSU-Benchmark は、ハイパフォーマンスコンピューティング (HPC) クラスターと分散システムの通信パフォーマンスを評価します。このトピックでは、次の 2 つのベンチマークを使用して、異なるネットワークプロトコル (TCP と RDMA) における通信パフォーマンスをテストします。
-
レイテンシーテスト (osu_latency):ポイントツーポイント通信の片道レイテンシー (プロセス A がメッセージを送信してからプロセス B が受信するまでの時間、戻り時間を除く) を測定します。このテストは、1 バイトから数キロバイト (KB) までの小さなメッセージに焦点を当てています。小さなメッセージのレイテンシーは、HPC システムの応答性の主要なメトリックであり、低レベルのネットワークパフォーマンス (RDMA 高速化機能など) と MPI ライブラリの最適化を反映します。たとえば、リアルタイムシミュレーションや機械学習のパラメーター同期において、低レイテンシーは通信オーバーヘッドを大幅に削減できます。
-
帯域幅テスト (osu_bw):持続的なポイントツーポイントの帯域幅 (単位時間あたりに転送されるデータ量) を測定します。このテストは、数キロバイト (KB) から数メガバイト (MB) までの大きなメッセージに焦点を当てています。帯域幅パフォーマンスは、科学計算における行列交換やファイル I/O シナリオなど、大規模なデータ転送の効率に直接影響します。測定された帯域幅が理論値を大幅に下回る場合は、MPI 設定 (マルチスレッド通信など) を最適化するか、ネットワーク設定 (MTU やフロー制御など) を確認する必要がある場合があります。
操作手順
-
作成したユーザーで E-HPC クラスターに接続します。詳細については、「クラスターへの接続」をご参照ください。
-
次のコマンドを実行して、依存関係にある環境モジュールが正しくインストールされているか確認します。
module avail -
次のコマンドを実行して、プリコンパイル済みの OSU-Benchmark インストールパッケージをダウンロードし、解凍します。
cd ~ && wget https://ehpc-perf.oss-cn-hangzhou.aliyuncs.com/AMD-Genoa/osu-bin.tar.gz tar -zxvf osu-bin.tar.gz -
次のコマンドを実行して、テストディレクトリに移動し、Slurm ジョブスクリプトを編集します。
cd ~/pt2pt vim slurm.jobテストスクリプトの内容は次のとおりです。
#!/bin/bash #SBATCH --job-name=osu-bench #SBATCH --ntasks-per-node=1 #SBATCH --nodes=2 #SBATCH --partition=comp #SBATCH --output=%j.out #SBATCH --error=%j.out # 環境パラメーターの読み込み module purge module load aocc/4.0.0 gcc/12.3.0 libfabric/1.16.0 mpich-aocc/4.0.3 # MPIレイテンシーテストの実行: erdma echo -e "++++++ use erdma for osu_lat: START" mpirun -np 2 -ppn 1 -genv FI_PROVIDER="verbs;ofi_rxm" ./osu_latency echo -e "------ use erdma for osu_lat: END\n" # MPIレイテンシーテストの実行: tcp echo -e "++++++ use tcp for osu_lat: START" mpirun -np 2 -ppn 1 -genv FI_PROVIDER="tcp;ofi_rxm" ./osu_latency echo -e "------ use tcp for osu_lat: END\n" # MPI帯域幅テストの実行: erdma echo -e "++++++ use erdma for osu_bw: START" mpirun -np 2 -ppn 1 -genv FI_PROVIDER="verbs;ofi_rxm" ./osu_bw echo -e "------ use erdma for osu_bw: END\n" # MPI帯域幅テストの実行: tcp echo -e "++++++ use tcp for osu_bw: START" mpirun -np 2 -ppn 1 -genv FI_PROVIDER="tcp;ofi_rxm" ./osu_bw echo -e "------ use tcp for osu_bw: END\n"説明-
-np 2:プロセスの総数を指定します。この例では 2 に設定されており、MPI ジョブが 2 つのプロセスを開始することを意味します。 -
-ppn 1:ノードあたりのプロセス数を指定します。この例では 1 に設定されており、各ノードで 1 つのプロセスが実行されることを意味します。 -
-genv:すべてのプロセスに適用される環境変数を設定します。-
FI_PROVIDER="tcp;ofi_rxm":TCP プロトコルを使用し、RXM フレームワークを介して通信の信頼性を高めます。 -
FI_PROVIDER="verbs;ofi_rxm":RDMA に基づく高性能な Verbs プロトコルを優先し、RXM フレームワークを介してメッセージ転送を最適化します。この例では、Alibaba Cloud eRDMA が高性能なエラスティック RDMA ネットワークを提供しています。
-
-
-
次のコマンドを実行して、テストジョブを投入します。
sbatch slurm.jobコマンドラインインターフェイスにジョブIDが返されます。
-
次のコマンドを実行して、ジョブのステータスを表示します。テスト中、コンソールで E-HPC クラスターのストレージ、ジョブ、ノードのメトリックなどの監視情報を確認することもできます。詳細については、「監視情報の表示」をご参照ください。
squeue[zh***luster@login0 pt2pt]$ squeue JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON) 11 comp slurm.jo zhtestcl R 0:01 2 compute[000-001]現在のディレクトリで、ジョブIDに対応するログファイルを確認できます。出力は次の内容のようになります。
-
ネットワークレイテンシーテストの結果:この結果は、メッセージサイズ (Size in bytes、1 B から 4 MB) と平均ネットワークレイテンシー (Avg Latency) の関係を示しています。
Verbsプロトコル (eRDMA)
[zxxx@login0 pt2pt]$ cat 11.out ++++++ use erdma for osu_lat: START # OSU MPI Latency Test v7.5 # Datatype: MPI_CHAR. # Size Avg Latency(us) 1 11.01 2 11.04 4 11.48 8 11.33 16 11.02 32 11.10 64 11.15 128 11.29 256 11.36 512 11.39 1024 11.81 2048 12.99 4096 13.95 8192 15.92 16384 34.57 32768 37.15 65536 41.15 131072 47.10 262144 61.17 524288 143.06 1048576 332.54 2097152 659.65 4194304 1315.29 ------ use erdma for osu_lat: ENDTCPプロトコル
++++++ use tcp for osu_lat: START # OSU MPI Latency Test v7.5 # Datatype: MPI_CHAR. # Size Avg Latency(us) 1 16.07 2 16.02 4 16.03 8 16.03 16 16.01 32 16.27 64 16.37 128 16.87 256 17.36 512 17.89 1024 18.56 2048 33.78 4096 33.39 8192 30.74 16384 45.17 32768 94.50 65536 107.07 131072 124.95 262144 160.55 524288 238.40 1048576 374.89 2097152 639.81 4194304 1188.98 ------ use tcp for osu_lat: ENDテストデータから、小さなメッセージ (1 B~8 KB) の場合、eRDMA のレイテンシーは TCP のレイテンシーよりも大幅に低いことがわかります。
-
ネットワーク帯域幅テストの結果:この結果は、メッセージサイズ (Size in bytes、1 B から 4 MB) と帯域幅 (Bandwidth) の関係を示しています。
Verbsプロトコル (eRDMA)
++++++ use erdma for osu_bw: START # OSU MPI Bandwidth Test v7.5 # Datatype: MPI_CHAR. # Size Bandwidth (MB/s) 1 1.09 2 2.21 4 4.43 8 8.91 16 17.98 32 35.88 64 69.93 128 137.73 256 258.35 512 541.90 1024 1023.92 2048 1768.96 4096 2918.97 8192 3984.86 16384 5203.51 32768 6264.41 65536 1661.85 131072 1696.79 262144 1535.17 524288 1587.83 1048576 1637.65 2097152 1636.63 4194304 1637.17 ------ use erdma for osu_bw: ENDTCPプロトコル
++++++ use tcp for osu_bw: START # OSU MPI Bandwidth Test v7.5 # Datatype: MPI_CHAR. # Size Bandwidth (MB/s) 1 0.38 2 0.75 4 1.51 8 3.01 16 5.95 32 12.10 64 23.43 128 46.30 256 88.25 512 167.70 1024 343.96 2048 614.60 4096 1183.85 8192 1567.03 16384 1835.89 32768 1731.67 65536 2904.03 131072 3160.96 262144 1876.96 524288 1730.89 1048576 1733.18 2097152 1736.09 4194304 1735.78 ------ use tcp for osu_bw: ENDテストデータから、eRDMA の帯域幅はメッセージサイズが 32 KB でピークに達し、それを超えるとパフォーマンスが低下することがわかります。一方、TCP プロトコルスタックでは、より低い帯域幅で推移し、追加のオーバーヘッドが発生します。
-