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

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

最終更新日:Jan 11, 2025

このトピックでは、Intel MPI Benchmarks(IMB)と Message Passing Interface(MPI)ライブラリを使用して、Elastic High Performance Computing(E-HPC)クラスタの通信パフォーマンスをテストする方法について説明します。

背景情報

IMB は、さまざまなメッセージ粒度について、HPC クラスタにおけるポイントツーポイント通信とグローバル通信のパフォーマンスを測定するために使用されるソフトウェアアプリケーションです。

MPI は、並列コンピューティング用の標準化されたポータブルなメッセージパッシング標準です。 MPI は複数のプログラミング言語をサポートし、高性能、並行性、移植性、スケーラビリティなどの利点を提供します。

準備

  1. SCC ベースの E-HPC クラスタを作成します。詳細については、「ウィザードを使用してクラスタを作成する」をご参照ください。

    以下のパラメータを設定します。

    パラメータ

    説明

    ハードウェア設定

    1 つの管理ノードと 2 つの計算ノードで構成される小規模クラスタをデプロイします。 計算ノードとして 8 つ以上の vCPU を持つ Elastic Compute Service(ECS)インスタンスタイプを指定します。 この例では、2 つの ecs.c7.2xlarge インスタンスが使用されています。

    ソフトウェア設定

    CentOS 7.6 パブリックイメージと PBS スケジューラをデプロイします。

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

    ユーザーは、クラスタへのログオン、LAMMPS のコンパイル、ジョブの送信に使用されます。 この例では、次の情報を使用してユーザーを作成します。

    • ユーザー名: mpitest

    • ユーザーグループ: sudo 権限グループ

  3. ソフトウェアをインストールします。詳細については、「ソフトウェアをインストールする」をご参照ください。

    以下のソフトウェアをインストールします。

    • Intel MPI 2018

    • Intel MPI Benchmarks 2019

手順 1: クラスタに接続する

次のいずれかの方法を使用してクラスタに接続します。この例では、ユーザー名として mpitest を使用します。 クラスタに接続すると、/home/mpitest に自動的にログオンします。

  • E-HPC クライアントを使用してクラスタにログオンする

    クラスタのスケジューラは PBS である必要があります。 E-HPC クライアントをダウンロードしてインストールし、クライアントに必要な環境をデプロイしていることを確認してください。 詳細については、「E-HPC クライアントの環境をデプロイする」をご参照ください。

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

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

    3. [セッション管理] ページの右上隅にある [ターミナル] をクリックして、ターミナルウィンドウを開きます。

  • E-HPC コンソールを使用してクラスタにログオンする

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

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

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

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

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

手順 2: ジョブを送信する

  1. 次のコマンドを実行して、IMB.pbs という名前のジョブスクリプトファイルを作成します。

    vim IMB.pbs

    サンプルスクリプト:

    #!/bin/sh
    #PBS -j oe  // 標準出力と標準エラー出力を結合
    #PBS -l select=2:ncpus=8:mpiprocs=1 // 2ノードを選択、各ノードで8 vCPUと1 MPIプロセスを使用
    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   # パラメータを実際の構成に置き換えます。
    
    • // この例では、テストに 2 つの計算ノードが使用されます。 各ノードは 8 つの vCPU と 1 つの MPI を使用して高性能コンピューティングジョブを実行します。 実際のノード構成に基づいて、#PBS -l select=2:ncpus=8:mpiprocs=1 パラメータを指定します。

    • 要件に基づいて、スクリプト内の /opt/intel/impi/2018.3.222/bin64/mpirun コマンドのパラメータを指定します。 以下のパラメータを設定します。

      • -ppn: ノードあたりのプロセス数。

      • -host: ジョブノードリスト。

      • -npmin: 実行できる最小プロセス数。

      • -msglog: セグメント粒度の範囲。

      説明

      /opt/intel-mpi-benchmarks/2019/IMB-MPI1 -h コマンドを実行して、IMB のパラメータの説明と IMB がサポートする通信モードを表示できます。

      例:

      • 例 1: 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: 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
  2. 次のコマンドを実行してジョブを送信します。

    qsub imb.pbs

    次のコマンド出力が返されます。これは、生成されたジョブ ID が 0.scheduler であることを示しています。

    0.manager

手順 3: ジョブ結果を表示する

  1. ジョブの実行状態を表示します。

    qstat -x 0.manager

    次のようなコードが返されます。 S 列の R はジョブが実行中であることを示し、S 列の F はジョブが完了したことを示します。

    Job id            Name             User              Time Use S Queue
    ----------------  ---------------- ----------------  -------- - -----
    0.manager         imb.pbs          mpitest           00:00:04 F workq  
  2. ジョブ結果を表示します。

    cat /home/mpitest/IMB-pingpong

    テストでは次の結果が生成されます。

    IMB-Results.png