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

Elastic High Performance Computing:IMB と MPI ライブラリを使用したクラスター通信パフォーマンスのテスト

最終更新日:Apr 02, 2026

Intel MPI Benchmarks (IMB) と Message Passing Interface (MPI) ライブラリを使用して、E-HPC クラスターの通信パフォーマンスをテストします。このチュートリアルでは、ポイントツーポイントレイテンシ (pingpong) と集団通信操作 (allreduce、alltoall) について説明します。

前提条件

開始する前に、以下を確認してください。

  • 管理ノード 1 台と計算ノード 2 台で構成される SCC ベースの E-HPC クラスター。セットアップ手順については、「ウィザードを使用したクラスターの作成」をご参照ください。クラスターを以下の設定で構成します。

    設定
    ハードウェア設定管理ノード 1 台と計算ノード 2 台。各計算ノードに 8 vCPU 以上の ECS インスタンスタイプを使用します。この例では、2 つの ecs.c7.2xlarge インスタンスを使用します。
    ソフトウェア設定CentOS 7.6 パブリックイメージと PBS スケジューラ。
  • sudo 権限グループに所属する mpitest という名前のクラスターユーザー。セットアップ手順については、「ユーザーの作成」をご参照ください。

  • クラスターにインストールされている以下のソフトウェア。インストール手順については、「ソフトウェアのインストール」をご参照ください。

    • Intel MPI 2018

    • Intel MPI Benchmarks (IMB) 2019

基本概念

Intel MPI Benchmarks (IMB) は、HPC クラスターにおけるさまざまなメッセージ粒度でのポイントツーポイントおよびグローバルな通信パフォーマンスを測定します。

Message Passing Interface (MPI) は、並列計算のための標準化されたポータブルなメッセージパッシング標準です。複数のプログラミング言語をサポートし、高性能、同時実行性、移植性、スケーラビリティを提供します。

ステップ1:クラスターへの接続

以下のいずれかの方法でクラスターに接続します。この例では、ユーザー名として mpitest を使用します。接続後、シェルは /home/mpitest で開きます。

オプション1:E-HPC クライアント (PBS スケジューラが必要)

E-HPC クライアント環境がデプロイされていることを確認してください。セットアップ手順については、「E-HPC クライアント環境のデプロイ」をご参照ください。

  1. E-HPC クライアントを起動してログインします。

  2. 左側のナビゲーションウィンドウで、[セッション管理] をクリックします。

  3. [セッション管理] ページ右上の [ターミナル] をクリックします。

オプション2:E-HPC コンソール

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

  2. 上部のナビゲーションバーの左上で、リージョンを選択します。

  3. 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  4. [クラスター] ページで対象のクラスターを見つけ、[接続] をクリックします。

  5. [接続] パネルでユーザー名とパスワードを入力し、[SSH 経由で接続] をクリックします。

ステップ2:ジョブの送信

このステップのすべての例では、mpirun-genv I_MPI_DEBUG 5 フラグとともに使用して、レベル 5 の MPI デバッグ出力を有効にします。

  1. IMB.pbs という名前のジョブスクリプトファイルを作成します。

    vim IMB.pbs

    次のスクリプトを使用します。

    #!/bin/sh
    #PBS -j oe
    #PBS -l select=2:ncpus=8:mpiprocs=1
    export MODULEPATH=/opt/ehpcmodulefiles/
    module load intel-mpi/2018
    module load intel-mpi-benchmarks/2019
    echo "run at the beginning"
    /opt/intel/impi/2018.3.222/bin64/mpirun -genv I_MPI_DEBUG 5 -np 2 -ppn 1 -host compute000,compute001 /opt/intel-mpi-benchmarks/2019/IMB-MPI1 pingpong > IMB-pingpong

    #PBS -l select=2:ncpus=8:mpiprocs=1」の行は、2 つのノード、ノードあたり 8 つの vCPU、ノードあたり 1 つの MPI プロセスをリクエストします。これらの値は、ご利用のクラスター構成に合わせて調整してください。

    要件に基づいて mpirun パラメーターを構成します。

    パラメーター説明
    -npMPI プロセスの総数。たとえば、各ノードに 1 つのプロセスを持つ 2 つのノードでは -np 2 が必要です。
    -ppnノードあたりの MPI プロセス数。
    -hostジョブを実行するノードのコンマ区切りのリスト。
    -npmin実行可能なプロセスの最小数。
    -msglogセグメント粒度の範囲。
    注:すべての IMB パラメーターとサポートされている通信モードを表示するには、/opt/intel-mpi-benchmarks/2019/IMB-MPI1 -h を実行します。
  2. (任意) スクリプト内の mpirun コマンドを変更して、追加のベンチマークテストを実行します。

    Allreduce — N 個のノードにわたる集団リダクションパフォーマンスを測定します。これを使用して、N 個のノード間の all-reduce 通信のパフォーマンスをテストします。各ノードで 2 つのプロセスが開始され、さまざまなメッセージ粒度のメッセージを通信するために消費された時間を取得します。

    /opt/intel/impi/2018.3.222/bin64/mpirun -genv I_MPI_DEBUG 5 -np <N*2> -ppn 2 -host <node0>,...,<nodeN> /opt/intel-mpi-benchmarks/2019/IMB-MPI1 -npmin 2 -msglog 19:21 allreduce

    たとえば、それぞれ 2 つのプロセスを持つ 2 つのノードをテストするには、-np 4 -ppn 2 -host compute000,compute001 と設定します。

    Alltoall — N 個のノードにわたる all-to-all 集団パフォーマンスを測定します。これを使用して、N 個のノード間の all-to-all 通信のパフォーマンスをテストします。各ノードでプロセスが開始され、さまざまな粒度のメッセージを通信するために消費された時間を取得します。

    /opt/intel/impi/2018.3.222/bin64/mpirun -genv I_MPI_DEBUG 5 -np <N> -ppn 1 -host <node0>,...,<nodeN> /opt/intel-mpi-benchmarks/2019/IMB-MPI1 -npmin 1 -msglog 15:17 alltoall

    たとえば、それぞれ 1 つのプロセスを持つ 2 つのノードをテストするには、-np 2 -ppn 1 -host compute000,compute001 と設定します。

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

    qsub imb.pbs

    出力はジョブ ID を返します。

    0.manager

ステップ3:ジョブ結果の表示

  1. ジョブのステータスを確認します。

    qstat -x 0.manager

    出力は次のようになります。S 列の R はジョブが実行中であることを意味し、F はジョブが完了したことを意味します。

    Job id            Name             User              Time Use S Queue
    ----------------  ---------------- ----------------  -------- - -----
    0.manager         imb.pbs          mpitest           00:00:04 F workq
  2. pingpong テストの結果を表示します。

    cat /home/mpitest/IMB-pingpong

    テスト結果は次の図に示されています。

    IMB-Results.png