7
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OpenMPI (GPU Direct対応)をビルドする

Last updated at Posted at 2021-06-24

スパコン上でGPU Direct対応のOpenMPIをビルドしたのでその方法を記述します。
通常のクラスター計算機でも一部の環境設定を変更すれば、同様の方法でビルドできると思います。

実施した環境

  • Cray CS-Storm
  • CPU: Xeon Gold 6150 x2 (36core)
  • Mem: 768 GiB
  • GPU: NVIDIA V100(PCIE) x10
  • I/F: Infiniband
  • OS: CentOS 7系

スパコン上では下記の環境設定コマンドを実行しました。
通常のクラスターであれば、cuda 10.2とgcc 6.1.0の環境と同等です。

$ module switch cudatoolkit/9.0.176 cudatoolkit/10.2.89
$ module switch intel/17.0.4 gcc/6.1.0

OpenUCXのビルド

高速インターコネクト(Infiniband)のライブラリ。

バージョン1.10.0を使用しました。
ダウンロードと展開。

$ wget https://github.com/openucx/ucx/releases/download/v1.10.0/ucx-1.10.0.tar.gz
$ tar xvfz ucx-1.10.0.tar.gz
$ cd ucx-1.10.0

続いてconfigureおよびmakeを行います。
CUDAのバージョン指定やAVXなどCPUに合わせた最適化とInfinibandのmellanoxドライバに合わせたオプションを追加しています。

$ ./configure --prefix=${HOME}/OpenMPI/ucx-1.10.0 --with-cuda=/usr/local/cuda-10.2 --enable-optimizations --with-avx --with-mcpu --with-march --with-mlx5-dv --with-ib-hw-tm
$ make
$ make install

OpenMPIのビルド

いよいよOpenMPI本体のビルドです。
本記事では、4.1.0を使用しました。

ダウンロード展開

$ wget https://download.open-mpi.org/release/open-mpi/v4.1/openmpi-4.1.0.tar.gz
$ tar xvfz oepnmpi-4.1.0.tar.gz
$ cd oepnmpi-4.1.0

configureの前に先程ビルドしたOpenUCXのパスを設定しておきます。

$ export PATH=${HOME}/OpenMPI/ucx-1.10.0/bin:$PATH
$ export LD_LIBRARY_PATH=${HOME}/OpenMPI/ucx-1.10.0/lib:$LD_LIBRARY_PATH

configureとmakeを実施します。
ジョブ制御PBSの指定(省略可)、ucxの指定、CUDAの指定などを行なっています。

$ ./configure --with-verbs --prefix=${HOME}/OpenMPI/openmpi-4.1.0 --with-tm=/opt/pbs/13.1.3.170747 --with-ucx=${HOME}/OpenMPI/ucx-1.10.0 --enable-orterun-prefix-by-default --with-cuda=/usr/local/cuda-10.2 --with-gnu-ld --enable-mpi-cxx CC=gcc CXX=g++ LDFLAGS=-ldl
$ make -j 4
$ make install

動作確認

ビルドしたOpenMPIを使用するため、下記の環境変数を設定する。

export MPIROOT=${HOME}/OpenMPI/openmpi-4.1.0
export PATH=$MPIROOT/bin:$PATH
export LD_LIBRARY_PATH=$MPIROOT/lib:$LD_LIBRARY_PATH

コンパイラおよびmpirunの確認。

$ mpicc --version
gcc (GCC) 6.1.0 20160427 (Cray Inc.)
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ mpirun --version
mpirun (Open MPI) 4.1.0

Report bugs to http://www.open-mpi.org/community/help/

###mpirun実行時の設定

mpirun実行時にInfinibandの環境変数を設定しないとエラーとなりました。
実行時に必要な環境変数設定をまとめると下記です。
ジョブスケジューラで実行する場合は、PBSジョブスクリプトに下記をまとめて記載します。

# CS-Storm環境の場合のCUDA, GCC設定
module switch cudatoolkit/9.0.176 cudatoolkit/10.2.89
module switch intel/17.0.4 gcc/6.1.0

# UCX環境設定
export PATH=${HOME}/OpenMPI/ucx-1.10.0/bin:$PATH
export LD_LIBRARY_PATH=${HOME}/OpenMPI/ucx-1.10.0/lib:$LD_LIBRARY_PATH

# OpenMPI環境設定
export MPIROOT=${HOME}/OpenMPI/openmpi-4.1.0
export PATH=$MPIROOT/bin:$PATH
export LD_LIBRARY_PATH=$MPIROOT/lib:$LD_LIBRARY_PATH

# Infiniband環境設定
export OMPI_MCA_btl_openib_allow_ib=1
export OMPI_MCA_btl_openib_if_include="mlx5_0:1"

OMPI_MCA_btl_openib_if_includeには、ibstatコマンドを実行してCAの行に表示される値(OFEDのバージョン)を設定する。

7
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?