はじめに
root権限の無いCentOS7.3&GCC-4.8.5の環境に野良ビルドしたGCC-9.3.0を基に,次はOpenMPI-3.1.6を構築してみたいと思います。
準備
OpenMPIとlibpciaccessを以下からダウンロードしておきます。
https://github.com/freedesktop/xorg-libpciaccess
https://www.open-mpi.org/
今回用いたバージョンは,libpciaccess-0.13.5,openmpi-3.1.6です。
私の環境では,ファイル操作用1つ,計算用2つの計3つのログインノードがありますが,計算用のログインノードでOpenMPIをビルドするとOmni-Pathが有効になるようです。また,計算用にはGPUもあるようです。詳しいことは良くわかりませんが,事前にlibpciaccessをビルドしておくと,OpenMPIのCUDAも有効にしてビルドできました。
libpciaccessのビルドとインストール
前回のGCC-9.3.0と同様に,$HOME/toolsにインストールを行います。
tar xfv libpciaccess-0.13.5.tar.bz2
mv libpciaccess-0.13.5 ~/tools/pciaccess_work
cd ~/tools/pciaccess_work
mkdir build
cd build
../configure --prefix=$HOME/tools/libpciaccess-0.13.5 CC=$HOME/bin/gcc93 CXX=$HOME/bin/g++93
make -j 12
make install
インストール完了後,.bash_profileに以下を追記します。
export PKG_CONFIG_PATH=$HOME/tools/libpciaccess-0.13.5/lib/pkgconfig:$PKG_CONFIG_PATH
OpenMPIのビルドとインストール
次に,OpenMPIも,$HOME/toolsにインストールを行います。"--with-cuda"オプションを設定してみました。
tar xjf openmpi-3.1.6.tar.bz2
mv openmpi-3.1.6 openmpi_work
cd openmpi_work
mkdir build
cd build
../configure --prefix=$HOME/tools/openmpi-3.1.6-gcc93 CC=$HOME/tools/gcc-9.3.0/bin/gcc CXX=$HOME/tools/gcc-9.3.0/bin/g++ F77=$HOME/tools/gcc-9.3.0/bin/gfortran FC=$HOME/tools/gcc-9.3.0/bin/gfortran LDFLAGS="-L$HOME/tools/gcc-9.3.0/lib64" CPPFLAGS="-I$HOME/tools/gcc-9.3.0/include" --with-cuda
make –j 48
make install
なお,configure完了後のメッセージは以下でした。よくわからないですが,ビルドは最後までできたので問題無いのではと思います。
Open MPI configuration:
-----------------------
Version: 3.1.6
Build MPI C bindings: yes
Build MPI C++ bindings (deprecated): no
Build MPI Fortran bindings: mpif.h, use mpi, use mpi_f08
MPI Build Java bindings (experimental): no
Build Open SHMEM support: yes
Debug build: no
Platform file: (none)
Miscellaneous
-----------------------
CUDA support: yes
PMIx support: internal
Transports
-----------------------
Cisco usNIC: yes
Cray uGNI (Gemini/Aries): no
Intel Omnipath (PSM2): yes
Intel SCIF: no
Intel TrueScale (PSM): yes
Mellanox MXM: no
Open UCX: no
OpenFabrics OFI Libfabric: yes
OpenFabrics Verbs: yes
Portals4: no
Shared memory/copy in+copy out: yes
Shared memory/Linux CMA: yes
Shared memory/Linux KNEM: no
Shared memory/XPMEM: no
TCP: yes
Resource Managers
-----------------------
Cray Alps: no
Grid Engine: no
LSF: no
Moab: no
Slurm: yes
ssh/rsh: yes
Torque: yes
OMPIO File Systems
-----------------------
Generic Unix FS: yes
Lustre: no
PVFS2/OrangeFS: no
インストール完了後,以下を.bash_profileに以下を追記しました。
MPIROOT=$HOME/tools/openmpi-3.1.6-gcc93
PATH=$MPIROOT/bin:$PATH
LD_LIBRARY_PATH=$MPIROOT/lib:$LD_LIBRARY_PATH
MANPATH=$MPIROOT/share/man:$MANPATH
export MPIROOT PATH LD_LIBRARY_PATH MANPATH
以上で,GCC-9.3.0ベースのC,C++,FortranのOpenMPIができました。