このトピックでは、E-HPC 最新バージョンを使用して、Elastic Remote Direct Memory Access(eRDMA)に適合した Elastic High Performance Computing(E-HPC)クラスタをアクティブ化する方法について説明します。 OSU-Benchmark アプリケーションを例として使用し、eRDMA テクノロジーを使用してマルチノード HPC アプリケーション間の通信を高速化するためのランタイムパラメータを構成します。
背景情報
eRDMA テクノロジーを使用することで、E-HPC クラスタ内の気候と気象、産業シミュレーション、分子動力などの HPC マルチノード並列タスクは、オフラインクラスタに匹敵する高速ネットワークパフォーマンスを実現できます。これには、高帯域幅と低レイテンシが含まれ、数値シミュレーションとシミュレーションの効率を大幅に向上させることができます。同時に、追加の RDMA ネットワークインターフェースコントローラをデプロイする必要なく、既存のビジネスネットワークで RDMA の利点を体験し、シームレスな統合と便利なアプリケーションを実現できます。
準備
[クラスタの作成] をクリックして E-HPC クラスタを作成します。詳細については、「クラスタを作成する」をご参照ください。
この例では、クラスタに次の構成を使用します。
インスタンスタイプ: 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 ネットワーク 説明 特定のインスタンスタイプの計算ノードのみが ERI をサポートしています。詳細については、「概要」および「エンタープライズレベルインスタンスで eRDMA を有効にする」をご参照ください。 | |
インスタンスタイプグループ | インスタンスタイプ: ecs.c8ae.xlarge-generation AMD インスタンス、または同じ世代の他の AMD インスタンスを使用します。 イメージ: aliyun_2_1903_x64_20G_alibase_20240628.vhd | |
共有ファイルストレージ | /home クラスタマウントディレクトリ | デフォルトでは、構成されたファイルシステムは、共有ストレージディレクトリとして使用するために、管理ノードの |
/opt クラスタマウントディレクトリ | ||
ソフトウェアとサービスコンポーネント | インストールするソフトウェア | |
インストール可能なサービスコンポーネント | ログオンノード |
eRDMA 環境を確認する
計算ノードの eRDMA 構成が正しいかどうかを確認します。
[E-HPC コンソール] にログオンします。
ページで、クラスタ内のすべての計算ノードを選択し、[コマンドの送信] をクリックします。

計算ノードの eRDMA ネットワークステータスと RDMA ハードウェア/ソフトウェアサポートを確認します。
次のコマンドをすべての計算ノードに送信します。
hpcacc erdma check
次の結果は、eRDMA 構成が正しいことを示しています。

返された情報に異常がある場合は、次のコマンドを実行してエラーを修正します。
hpcacc erdma repair修正が完了したら、eRDMA 構成が再び正しいことを確認します。
OSU-Benchmark テスト
OSU-Benchmark は、HPC クラスタと分散システムの通信パフォーマンスを評価するために使用されます。このトピックでは、次の 2 つのベンチマークテストを使用して、異なるネットワークプロトコル(TCP と RDMA)に基づく通信パフォーマンスをテストします。
ネットワークレイテンシテスト(osu_latency): ポイントツーポイント通信の片方向レイテンシ(プロセス A からプロセス B までの時間、戻り時間を除く)、特に小さなメッセージ(1 バイトから数 KB など)の通信効率を測定します。小さなメッセージのレイテンシは、ネットワークハードウェアの基盤となるパフォーマンス(RDMA アクセラレーション機能など)と MPI ライブラリの最適化レベルを反映しており、これは HPC システムの応答機能の主要な指標です。たとえば、リアルタイムシミュレーションや AI 用機械学習プラットフォームのパラメータ同期では、低レイテンシによって通信オーバーヘッドを大幅に削減できます。
ネットワーク帯域幅テスト(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 // 標準エラー出力をファイルにリダイレクト # load env params // 環境パラメータを読み込み 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 // eRDMA を使用した MPI レイテンシテストを実行 echo -e "++++++ use erdma for osu_lat: START" // 開始メッセージを出力 mpirun -np 2 -ppn 1 -genv FI_PROVIDER="verbs;ofi_rxm" ./osu_latency // MPI 実行コマンド echo -e "------ use erdma for osu_lat: END\n" // 終了メッセージを出力 # run mpi latency test: tcp // TCP を使用した MPI レイテンシテストを実行 echo -e "++++++ use tcp for osu_lat: START" // 開始メッセージを出力 mpirun -np 2 -ppn 1 -genv FI_PROVIDER="tcp;ofi_rxm" ./osu_latency // MPI 実行コマンド echo -e "------ use erdma for osu_lat: END\n" // 終了メッセージを出力 # run mpi bandwidth test: erdma // eRDMA を使用した MPI 帯域幅テストを実行 echo -e "++++++ use erdma for osu_bw: START" // 開始メッセージを出力 mpirun -np 2 -ppn 1 -genv FI_PROVIDER="verbs;ofi_rxm" ./osu_bw // MPI 実行コマンド echo -e "------ use erdma for osu_bw: END\n" // 終了メッセージを出力 # run mpi bandwidth test: tcp // TCP を使用した MPI 帯域幅テストを実行 echo -e "++++++ use tcp for osu_bw: START" // 開始メッセージを出力 mpirun -np 2 -ppn 1 -genv FI_PROVIDER="tcp;ofi_rxm" ./osu_bw // MPI 実行コマンド 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 を使用して、高性能 eRDMA ネットワークを提供します。
ジョブを送信します。
sbatch slurm.jobコマンドラインはジョブ ID を出力します。

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

TCP を使用する

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

TCP を使用する

テストデータから、メッセージサイズが 16KB から 64KB の場合、eRDMA はネットワーク帯域幅を最大限に活用しますが、TCP プロトコルスタック処理は追加のオーバーヘッドをもたらすことがわかります。