OSU micro benchmark の実行

ここでは、通信速度やレイテンシを計測するマイクロベンチマークであるOSU micro benchmarkを実行します。

OSU micro benchmark の導入

この手順は参考のためのものです。 バージョンやコンパイル時のオプションなどは、要件にあわせたものをご利用ください。

ソースコードのダウンロード

cd /shared
wget http://mvapich.cse.ohio-state.edu/download/mvapich/osu-micro-benchmarks-5.6.2.tar.gz
tar xvf osu-micro-benchmarks-5.6.2.tar.gz

build

以下のコマンドでbuildを実行します

module load openmpi
cd osu-micro-benchmarks-5.6.2
./configure CC=/opt/amazon/openmpi/bin/mpicc CXX=/opt/amazon/openmpi/bin/mpicxx
make

ベンチマークの実行

ジョブスクリプトの作成

Home ディレクトリなど、任意の場所で以下のジョブスクリプトを作成します。 <N_PROCESS>については、2ノード起動するように、2ノード分のslot数を指定します(c5.largeのHyperThreadingが有効な状態であれば、2slot x 2ノード分となり4を指定)。

  • osu.sh
#!/bin/bash
#$ -cwd
#$ -pe mpi <N_PROCESS>

module load openmpi
BIN_PATH=/shared/osu-micro-benchmarks-5.6.2/mpi/pt2pt
mpiexec --map-by node -np 2 ${BIN_PATH}/osu_bw
mpiexec --map-by node -np 2 ${BIN_PATH}/osu_latency

ジョブの投入

以下のコマンドにより、作成したジョブスクリプトを投入します

qsub osu.sh

結果の確認

ジョブを投入してしばらくすると、Compute インスタンスが起動し、処理を行い、結果ファイルが出力されます。 ジョブの進行状況はqstatコマンドで確認することが可能です。

結果ファイルは、osu.sh.o<JobID>の形式となります。

  • 実行結果例

    # OSU MPI Bandwidth Test v5.6.2
    # Size      Bandwidth (MB/s)
    1                       0.59
    2                       1.19
    4                       2.42
    8                       1.70
    16                      9.63
    32                     19.25
    64                     38.46
    128                    78.35
    256                   161.59
    512                   311.80
    1024                  610.79
    2048                 1158.92
    4096                 2298.75
    8192                 4146.65
    16384                 869.22
    32768                6118.97
    65536                7103.44
    131072               8119.87
    262144               8878.30
    524288               9292.81
    1048576              8646.58
    2097152              8180.50
    4194304              7822.21
    # OSU MPI Latency Test v5.6.2
    # Size          Latency (us)
    0                      17.99
    1                      19.78
    2                      17.63
    4                      17.40
    8                      17.34
    16                     17.36
    32                     17.38
    64                     17.42
    128                    17.52
    256                    17.58
    512                    17.93
    1024                   18.70
    2048                   20.39
    4096                   23.14
    8192                   27.98
    16384                  71.20
    32768                  77.08
    65536                  85.02
    131072                 98.69
    262144                138.94
    524288                247.28
    1048576               451.81
    2097152               898.88
    4194304              1738.13```
    

参考

EFAの有効化

以下のconfigを参考に、EFAを有効化したクラスタを作成します

  • config(抜粋)

    compute_instance_type = c5n.18xlarge
    placement_group = DYNAMIC
    enable_efa = compute
    

Intel MPI の利用

  • build

    module load intelmpi
    cd osu-micro-benchmarks-5.6.2
    ./configure CC=/opt/intel/compilers_and_libraries_2020.0.166/linux/mpi/intel64/bin/mpicc CXX=/opt/intel/compilers_and_libraries_2020.0.166/linux/mpi/intel64/bin/mpicxx
    make
    
  • job script

    #!/bin/bash
    #$ -cwd
    #$ -pe mpi 72
    
    INTEL_OPT="-print-rank-map -perhost 1 -n 2"
    OSU_PATH=/shared/osu-micro-benchmarks-5.6.2/mpi/pt2pt
    
    module load intelmpi
    #export FI_PROVIDER=sockets
    export FI_PROVIDER=efa
    
    mpiexec ${INTEL_OPT} ${OSU_PATH}/osu_bw
    mpiexec ${INTEL_OPT} ${OSU_PATH}/osu_latency