ここでは、通信速度やレイテンシを計測するマイクロベンチマークである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を実行します
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```
以下のconfig
を参考に、EFAを有効化したクラスタを作成します
config(抜粋)
compute_instance_type = c5n.18xlarge
placement_group = DYNAMIC
enable_efa = compute
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