すべてのプロダクト
Search
ドキュメントセンター

Elastic High Performance Computing:eRDMA に基づく E-HPC クラスターデプロイメント

最終更新日:May 31, 2025

このトピックでは、E-HPC 最新バージョンを使用して、Elastic Remote Direct Memory Access(eRDMA)に適合した Elastic High Performance Computing(E-HPC)クラスタをアクティブ化する方法について説明します。 OSU-Benchmark アプリケーションを例として使用し、eRDMA テクノロジーを使用してマルチノード HPC アプリケーション間の通信を高速化するためのランタイムパラメータを構成します。

背景情報

eRDMA テクノロジーを使用することで、E-HPC クラスタ内の気候と気象、産業シミュレーション、分子動力などの HPC マルチノード並列タスクは、オフラインクラスタに匹敵する高速ネットワークパフォーマンスを実現できます。これには、高帯域幅と低レイテンシが含まれ、数値シミュレーションとシミュレーションの効率を大幅に向上させることができます。同時に、追加の RDMA ネットワークインターフェースコントローラをデプロイする必要なく、既存のビジネスネットワークで RDMA の利点を体験し、シームレスな統合と便利なアプリケーションを実現できます。

準備

  1. [クラスタの作成] をクリックして E-HPC クラスタを作成します。詳細については、「クラスタを作成する」をご参照ください。

    この例では、クラスタに次の構成を使用します。

  2. パラメータ

    構成

    クラスタ構成

    リージョン

    中国 (上海)

    ネットワークとアベイラビリティーゾーン

    ゾーン L を選択します。

    シリーズ

    Standard Edition

    デプロイメントモデル

    パブリッククラウドクラスタ

    クラスタタイプ

    SLURM

    管理ノード

    • インスタンスタイプ: ecs.c7.xlarge インスタンスタイプを使用します。4 vCPU と 8 GiB のメモリを搭載しています。

    • イメージ: aliyun_2_1903_x64_20G_alibase_20240628.vhd

      説明

      osu-benchmark インストールパッケージは、Alibaba Cloud Linux 2.1903 LTS 64 ビットイメージに基づいて構築されています。

    計算ノードとキュー

    キュー計算ノード

    ノードの初期数: 2

    ノード間相互接続

    ERDMA ネットワーク

    説明

    特定のインスタンスタイプの計算ノードのみが ERI をサポートしています。詳細については、「概要」および「エンタープライズレベルインスタンスで eRDMA を有効にする」をご参照ください。

    インスタンスタイプグループ

    インスタンスタイプ: ecs.c8ae.xlarge-generation AMD インスタンス、または同じ世代の他の AMD インスタンスを使用します。

    イメージ: aliyun_2_1903_x64_20G_alibase_20240628.vhd

    共有ファイルストレージ

    /home クラスタマウントディレクトリ

    デフォルトでは、構成されたファイルシステムは、共有ストレージディレクトリとして使用するために、管理ノードの /home ディレクトリと /opt ディレクトリにマウントされます。

    /opt クラスタマウントディレクトリ

    ソフトウェアとサービスコンポーネント

    インストールするソフトウェア

    • erdma-installer

    • mpich-aocc

    インストール可能なサービスコンポーネント

    ログオンノード

    • インスタンスタイプ: ecs.c7.xlarge インスタンスタイプを使用します。インスタンスタイプは 4 vCPU と 8 GiB のメモリです。

    • イメージ: aliyun_2_1903_x64_20G_alibase_20240628.vhd

  3. クラスタユーザーを作成します。詳細については、「ユーザーを管理する」をご参照ください。

eRDMA 環境を確認する

計算ノードの eRDMA 構成が正しいかどうかを確認します。

  1. [E-HPC コンソール] にログオンします。

  2. ノードとキュー > ノード ページで、クラスタ内のすべての計算ノードを選択し、[コマンドの送信] をクリックします。

    image

  3. 計算ノードの eRDMA ネットワークステータスと RDMA ハードウェア/ソフトウェアサポートを確認します。

    1. 次のコマンドをすべての計算ノードに送信します。

      hpcacc erdma check

      image

    2. 次の結果は、eRDMA 構成が正しいことを示しています。

      image

    3. 返された情報に異常がある場合は、次のコマンドを実行してエラーを修正します。

      hpcacc erdma repair
    4. 修正が完了したら、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 やフロー制御など)を確認する必要がある場合があります。

テスト手順は次のとおりです。

  1. 作成したユーザーを使用して E-HPC クラスタに接続します。詳細については、「クラスタに接続する」をご参照ください。

  2. 依存環境のコンポーネントが正しくインストールされているかどうかを確認します。

    module avail
  3. プリコンパイル済みの osu-benchmark インストールパッケージをダウンロードして解凍します。

    cd ~ && wget https://ehpc-perf.oss-cn-hangzhou.aliyuncs.com/AMD-Genoa/osu-bin.tar.gz
    tar -zxvf osu-bin.tar.gz
  4. テスト作業ディレクトリに移動し、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 ネットワークを提供します。

  5. ジョブを送信します。

    sbatch slurm.job

    コマンドラインはジョブ ID を出力します。

    image

  6. ジョブの状態をクエリします。テスト中は、コンソールで E-HPC 監視情報(ストレージ監視、ジョブ監視、ノード監視など)を表示することもできます。詳細については、「リソースプールの監視情報を表示する」をご参照ください。

    squeue

    image

    現在のディレクトリにあるジョブ ID に対応するログファイルを表示できます。出力は次のとおりです。

    • ネットワークレイテンシテストの結果: メッセージサイズ(1 MB から 4 MB までのバイト単位)とネットワークレイテンシ(平均レイテンシ)の関係。テスト結果の例:

      Verbs プロトコル(eRDMA ベース)を使用する

      image

      TCP を使用する

      image

      テストデータから、小さなメッセージ(1B から 8KB)の場合、eRDMA のレイテンシは TCP よりも大幅に低いことがわかります。

    • 帯域幅テストの結果: メッセージサイズ(1 MB から 4 MB までのバイト単位)と帯域幅の関係。テスト結果の例:

      Verbs プロトコル(eRDMA ベース)を使用する

      image

      TCP を使用する

      image

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