0. 概要

本ドキュメントで解説する OSU Micro-Benchmarks の実行は、 OpenMPI でこれをコンパイルして作成したバイナリを使用し、以下3種類を解説します。

  1. 1ノード内全コアを使用するAlltoall
  2. 2ノード間のレイテンシ
  3. 2ノード間の帯域幅
  4. 4ノード間のAllreduce

本ドキュメントで OSU Micro-Benchmarks を実行するHPCクラスタは、HPCワークロード向けベアメタルシェイプ BM.Optimized3.36 4インスタンスを クラスタ・ネットワーク で接続した構成とし、 OCI HPCチュートリアル集 のカテゴリ HPC/GPUクラスタ のチュートリアルの手順に従う等により、ノード間でMPIが実行できるよう予め構築しておきます。

本ドキュメントは、以下の環境で OSU Micro-Benchmarks を実行し、以下の性能が出ています。

[実行環境]

※1)OCI HPCテクニカルTips集クラスタネットワーキングイメージの選び方1. クラスタネットワーキングイメージ一覧 のイメージ No.12 です。
※2) OCI HPCテクニカルTips集Slurm環境での利用を前提とするUCX通信フレームワークベースのOpenMPI構築方法 に従って構築された OpenMPI です。

[実行結果]

  • レイテンシ: 1.67 usec
  • 帯域幅(256 MiBメッセージサイズ): 12,254 MB/s

以降では、 OSU Micro-Benchmarks の実行方法を以下の順に解説します。

  1. OpenMPI インストール
  2. OSU Micro-Benchmarks インストール
  3. OSU Micro-Benchmarks 実行

1. OpenMPIインストール

OCI HPCテクニカルTips集Slurm環境での利用を前提とするUCX通信フレームワークベースのOpenMPI構築方法 に従い、 OSU Micro-Benchmarks を実行する全てのノードに OpenMPI をインストールします。


2. OSU Micro-Benchmarksインストール

以下コマンドを OSU Micro-Benchmarks を実行する全てのノードのopcユーザで実行し、 OSU Micro-Benchmarks をインストールします。
なおmakeコマンドの並列数は、当該ノードのコア数に合わせて調整します。

$ mkdir ~/`hostname` && cd ~/`hostname` && wget https://mvapich.cse.ohio-state.edu/download/mvapich/osu-micro-benchmarks-7.5.1.tar.gz
$ tar -xvf ./osu-micro-benchmarks-7.5.1.tar.gz
$ module load openmpi
$ cd osu-micro-benchmarks-7.5.1 && ./configure CC=mpicc CXX=mpicxx --prefix=/opt/openmpi/tests/omb
$ make -j 36 && sudo make install

3. OSU Micro-Benchmarks実行

3-1. 1ノード内全コアを使用するAlltoall

以下コマンドを対象ノードで OSU Micro-Benchmarks 実行ユーザで実行します。
ここでは、1ノード36プロセスのAlltoall所要時間をメッセージサイズ1バイト~64 MiBで計測しています。

$ module load openmpi
$ mpirun -n 36 /opt/openmpi/tests/omb/libexec/osu-micro-benchmarks/mpi/collective/osu_alltoall -x 10 -i 10 -m 1:67108864
# OSU MPI All-to-All Personalized Exchange Latency Test v7.5
# Datatype: MPI_CHAR.
# Size       Avg Latency(us)
1                      10.29
2                      10.56
4                      15.24
8                      36.18
16                     26.05
32                     31.65
64                    114.09
128                    88.31
256                   151.46
512                   200.72
1024                  321.50
2048                  584.21
4096                   57.71
8192                   55.33
16384                  83.89
32768                 191.30
65536                 713.32
131072               1644.93
262144               3760.77
524288               7431.27
1048576             14171.51
2097152             26630.68
4194304             50215.80
8388608             96730.71
16777216           189185.05
33554432           375799.96
67108864           747888.64
$

3-2. 2ノード間のレイテンシ

以下コマンドを何れか1ノードで OSU Micro-Benchmarks を実行するユーザで実行します。
この出力は、2ノード間のメッセージサイズ1バイトの片道所要時間で、この結果(ここでは 1.67 usec )を2ノード間のレイテンシとします。

$ module load openmpi
$ mpirun -n 2 -N 1 -hostfile ~/hostlist.txt -x UCX_NET_DEVICES=mlx5_2:1 /opt/openmpi/tests/omb/libexec/osu-micro-benchmarks/mpi/pt2pt/osu_latency -x 1000 -i 10000 -m 1:1
[inst-xsyjo-x9-ol905:263038] SET UCX_NET_DEVICES=mlx5_2:1

# OSU MPI Latency Test v7.5
# Datatype: MPI_CHAR.
# Size       Avg Latency(us)
1                       1.67
$

3-3. 2ノード間の帯域幅

以下コマンドを何れか1ノードで OSU Micro-Benchmarks を実行するユーザで実行します。
この出力は、2ノード間のメッセージサイズ256 MiBの帯域幅で、この結果(ここでは 12,254,16 MB/s )を2ノード間の帯域幅とします。

$ module load openmpi
$ mpirun -n 2 -N 1 -hostfile ~/hostlist.txt -x UCX_NET_DEVICES=mlx5_2:1 /opt/openmpi/tests/omb/libexec/osu-micro-benchmarks/mpi/pt2pt/osu_bw -x 10 -i 10 -m 268435456:268435456
[inst-xsyjo-x9-ol905:263198] SET UCX_NET_DEVICES=mlx5_2:1

# OSU MPI Bandwidth Test v7.5
# Datatype: MPI_CHAR.
# Size      Bandwidth (MB/s)
268435456           12254.16
$

3-4. 4ノード間のAllreduce

以下コマンドを OSU Micro-Benchmarks を実行するユーザで何れか1ノードで実行します。
ここでは、4ノード144プロセス(ノードあたり36プロセス)を使用したAllreduceの所要時間をメッセージサイズ4バイト~256 MiBで計測しています。

$ module load openmpi
$ mpirun -n 144 -N 36 -hostfile ~/hostlist.txt -x UCX_NET_DEVICES=mlx5_2:1 /opt/openmpi/tests/omb/libexec/osu-micro-benchmarks/mpi/collective/osu_allreduce -x 10 -i 10 -m 4:268435456
[inst-ztgl1-x9-ol810:227754] SET UCX_NET_DEVICES=mlx5_2:1

# OSU MPI Allreduce Latency Test v7.5
# Datatype: MPI_INT.
# Size       Avg Latency(us)
4                      11.69
8                      15.34
16                     11.50
32                     11.55
64                     12.11
128                    12.34
256                    13.21
512                    13.93
1024                   17.97
2048                   16.35
4096                   19.48
8192                   96.30
16384                 349.82
32768                3214.49
65536                 160.17
131072               3674.69
262144               3692.61
524288               5020.85
1048576              3576.91
2097152              6506.97
4194304              6996.27
8388608             13097.54
16777216            28519.36
33554432            69049.19
67108864           119121.65
134217728          251878.54
268435456          496306.98
$

更新日時: