読者です 読者をやめる 読者になる 読者になる

Open MPI 1.8.4 のインストール

tarballのダウンロード

ホームページ から openmpi-1.8.4.tar.gz をダウンロードし,解凍する.

% cd /tmp
% wget http://www.open-mpi.org/software/ompi/v1.8/downloads/openmpi-1.8.4.tar.gz
% tar xzf openmpi-1.8.4.tar.gz
% cd openmpi-1.8.4

configure

Intel コンパイラを利用する場合

% icc -v
icc version 14.0.1 (gcc version 4.7.0 compatibility)
% ./configure --prefix=/usr/local/openmpi-1.8.4_intel-14.0.1 \
  CC=icc CXX=icpc F77=ifort FC=ifort \
  2>&1 | tee configure_intel.log

GCC を利用する場合

% gcc --version
gcc (Debian 4.7.2-5) 4.7.2
Copyright (C) 2012 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.
% ./configure --prefix=/usr/local/openmpi-1.8.4_gcc-4.7.2 \
  CC=gcc CXX=g++ F77=gfortran FC=gfortran \
  2>&1 | tee configure_gcc.log

--prefix=PREFIX とすると PREFIX にインストールされる.root 権限がない場合等は例えば $HOME/local 以下を指定する. 詳細は ./configure --help 参照.

インストール

% make -j 4 2>&1 | tee make-all.log
% su
# make -j 4 install 2>&1 | tee make-install.log

パスの設定

$HOME/.zshrcに以下を追加する.

# Open MPI 1.8.4
MPIROOT=/usr/local/openmpi-1.8.4_intel-14.0.1
# or MPIROOT=/usr/local/openmpi-1.8.4_gcc-4.7.2
export PATH=$MPIROOT/bin:$PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MPIROOT/lib
export MANPATH=$MANPATH:$MPIROOT/share/man

パスが通っていなくても mpirun --prefix=$MPIROOT (Open MPI FAQ) で実行可能.

しかしながら Open MPI 以外の mpirun にパスが通っている場合,

export PATH=$PATH:$MPIROOT/bin

とした時の mpirun が失敗することに注意.

$HOME/.rhosts$HOME/hostfile の作成

$HOME/.rhosts

$HOME/.rhosts はジョブを投入するマシンとユーザを指定するファイルで, rsh を利用して計算を流す場合各計算ノードの $HOME に必要となる. 書式は <hostname> <user> (詳細は Open MPI FAQ).

% echo "$(hostname) $USER" > $HOME/.rhosts

rsh しない場合は

% echo 'localhost' > $HOME/.rhosts

または

% echo 'localhost.localdomain' > $HOME/.rhosts

$HOME/hostfile

$HOME/hostfile は ホスト名とコア数を列挙したファイルで,書式は <hostname> slots=<number of cores> (slots が指定されていない場合はシングルコア, 詳細は Open MPI FAQ).

$HOME/.rhostslocalhost の場合は

% echo "localhost slots=$(grep processor /proc/cpuinfo | wc -l)" > $HOME/hostfile

2015-03-04 追記 nproc を利用すると以下のようになる:

% echo "localhost slots=$(nproc)" > $HOME/hostfile

ユーザ全体に同じホストを利用させたい場合は $MPIROOT/etc/openmpi-default-hostfile を編集する.

mpirun --hostfile <hostfile>mpirun --host <host> で実行時に指定することも可能 (Open MPI FAQ: hostfile, host).

また, TORQUESLURM を利用する場合は不要 (Open MPI FAQ).

テスト

% exec zsh
% cd /tmp/openmpi-1.8.4/examples
% make
% mpirun -np 4 ./hello_c
Hello, world, I am 2 of 4, (Open MPI v1.8.4, package: Open MPI USER@HOST Distribution, ident: 1.8.4, repo rev: v1.8.3-330-g0344f04, Dec 19, 2014, 128)
Hello, world, I am 0 of 4, (Open MPI v1.8.4, package: Open MPI USER@HOST Distribution, ident: 1.8.4, repo rev: v1.8.3-330-g0344f04, Dec 19, 2014, 128)
Hello, world, I am 1 of 4, (Open MPI v1.8.4, package: Open MPI USER@HOST Distribution, ident: 1.8.4, repo rev: v1.8.3-330-g0344f04, Dec 19, 2014, 128)
Hello, world, I am 3 of 4, (Open MPI v1.8.4, package: Open MPI USER@HOST Distribution, ident: 1.8.4, repo rev: v1.8.3-330-g0344f04, Dec 19, 2014, 128)

参考

Open MPI: Open Source High Performance Computing