このトピックでは、elastic Remote Direct Memory Access (eRDMA) をサポートする Elastic High Performance Computing (E-HPC) クラスター (旧 E-HPC NEXT) を作成する方法について説明します。また、OSU-Benchmark アプリケーションの実行時パラメーターを設定して、マルチノードの高性能コンピューティング (HPC) アプリケーションの通信を高速化する方法も示します。
背景情報
eRDMA テクノロジーを使用することで、E-HPC クラスター (旧 E-HPC NEXT) 内のマルチノード並列 HPC タスクは、オンプレミスクラスターに匹敵する高速ネットワークパフォーマンスを実現します。気象予測、産業シミュレーション、分子動力学などのこれらのタスクは、高帯域幅と低レイテンシーの恩恵を受け、数値シミュレーションの効率を大幅に向上させます。追加のネットワークインターフェースコントローラー (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
クラスターユーザーを作成します。詳細については、「ユーザー管理」をご参照ください。
設定項目 | 設定 | |
クラスター設定 | リージョン | 中国 (上海) |
ネットワークとゾーン | ゾーン L を選択 | |
シリーズ | Standard Edition | |
デプロイモード | パブリッククラウドクラスター | |
クラスタータイプ | SLURM | |
マスターノード | ||
計算ノードとキュー | キューノード数 | 初期ノード数: |
ノード間接続 | eRDMA ネットワーク 説明 一部のノード仕様のみが Elastic RDMA Interconnect (ERI) をサポートしています。 詳細については、「elastic Remote Direct Memory Access (eRDMA)」および「エンタープライズレベルのインスタンスで eRDMA を有効にする」をご参照ください。 | |
インスタンスタイプグループ | インスタンスタイプ: ecs.c8ae.xlarge または同世代の他の AMD インスタンス。 イメージ: aliyun_2_1903_x64_20G_alibase_20240628.vhd | |
共有ファイルストレージ | /home クラスターマウントディレクトリ | デフォルトでは、マスターノードの |
/opt クラスターマウントディレクトリ | ||
ソフトウェアとサービスコンポーネント | インストールするソフトウェア | |
インストール可能なサービスコンポーネント | ログインノード: |
eRDMA 環境を確認する
計算ノードの eRDMA 設定が正しいかどうかを確認します。
Elastic High Performance Computing コンソールにログインし、対象のクラスターをクリックします。
ページで、クラスター内のすべての計算ノードを選択し、[コマンドの送信] をクリックします。

計算ノードの eRDMA ネットワークステータスと RDMA ハードウェアおよびソフトウェアのサポートを確認します。
次のコマンドをすべての計算ノードに送信します。
hpcacc erdma check
次の結果が返された場合、eRDMA 設定は正しいです。

異常なメッセージが返された場合は、次のコマンドを実行して問題を修正します。
hpcacc erdma repair問題が修正された後、eRDMA 設定が正しいことを確認します。
OSU-Benchmark テスト
OSU-Benchmark は、HPC クラスターと分散システムの通信パフォーマンスを評価するために使用されます。このトピックでは、次の 2 つのベンチマークを使用して、異なるネットワークプロトコル (TCP vs. RDMA) に基づく通信パフォーマンスをテストします。
ネットワークレイテンシーテスト (osu_latency): ポイントツーポイント通信の片道レイテンシーを測定します。これは、あるプロセスから別のプロセスにメッセージを送信するのにかかる時間で、応答時間は含まれません。このテストは、1 B から数 KB までの small メッセージの通信効率に焦点を当てています。small メッセージのレイテンシーは、RDMA アクセラレーションなどのネットワークハードウェアの基盤となるパフォーマンスと、MPI ライブラリの最適化レベルを反映します。これは、HPC システムの応答性のコア指標です。たとえば、低レイテンシーは、リアルタイムシミュレーションや機械学習のパラメーター同期における通信オーバーヘッドを大幅に削減します。
ネットワーク帯域幅テスト (osu_bw): ポイントツーポイント通信の持続可能な帯域幅、つまり単位時間あたりに転送されるデータ量を測定します。このテストは、数 KB から数メガバイトまでの large メッセージの転送効率に焦点を当てています。帯域幅のパフォーマンスは、科学計算におけるマトリックス交換やファイル 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 # Load environment parameters module purge module load aocc/4.0.0 gcc/12.3.0 libfabric/1.16.0 mpich-aocc/4.0.3 # Run MPI latency test: 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" # Run MPI latency test: 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" # Run MPI bandwidth test: 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" # Run MPI bandwidth test: 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": パフォーマンス専有型の Verbs プロトコル (RDMA ベース) を優先し、RXM フレームワークを通じてメッセージ送信を最適化します。Alibaba Cloud eRDMA は、パフォーマンス専有型のエラスティック RDMA ネットワークを提供します。
次のコマンドを実行して、テストジョブを送信します。
sbatch slurm.jobコマンドラインにジョブ ID が表示されます。

次のコマンドを実行して、ジョブのステータスを表示します。テスト中、コンソールでストレージ、ジョブ、ノードのステータスなど、E-HPC のモニタリング情報を表示することもできます。詳細については、「モニタリング情報の表示」をご参照ください。
squeue
現在のディレクトリで、ジョブ ID に対応するログファイルを表示できます。出力は次のとおりです。
ネットワークレイテンシーテストの結果: これらの結果は、メッセージサイズ (バイト単位、1 B から 4 MB) と平均レイテンシーの関係を示しています。以下はテスト結果の例です。
Verbs プロトコル (eRDMA ベース) の使用

TCP プロトコルの使用

テストデータは、small メッセージ (1 B から 8 KB) の場合、eRDMA のレイテンシーが TCP よりも大幅に低いことを示しています。
ネットワーク帯域幅テストの結果: これらの結果は、メッセージサイズ (バイト単位、1 B から 4 MB) と帯域幅の関係を示しています。以下はテスト結果の例です。
Verbs プロトコル (eRDMA ベース) の使用

TCP プロトコルの使用

テストデータは、メッセージサイズが 16 KB から 64 KB の場合、eRDMA はネットワーク帯域幅を完全に利用するのに対し、TCP プロトコルスタックは追加の処理オーバーヘッドを発生させることを示しています。