Ubuntu12.04 OpenMPIのインストール

共有メモリを使う並列計算ならばOpenMPが便利ですが、ワークステーションやスーパーコンピュータとなってくると分散メモリなのでMPIが必須になってきます。
インテルの提供するIntel MPIはコンパイラと違って有償なので、フリーで配布されているOpenMPIかMPICHを使用することにします。
ワークステーションでジョブを実行する前に、自分のパソコンでテストランしたいので、パソコンにもMPIを使ったプログラムがコンパイルできる環境を作ります。
ネットの評判を見ていると、OpenMPIの方が安定して動作し、性能も高いみたいです。

OpenMPは、実はapt-getで簡単にインストールできます。

$ sudo apt-get install openmpi-bin openmpi-dev

プログラムのコンパイル

$ mpif90 -o test test.f90

とするとできます。
コンパイルオプションはgfortranと同じです。
ですが、今回はインテルコンパイラが使いたいのでそっちをインストールします。
インテルコンパイラのインストール方法は過去の記事をどうぞ。
Ubuntu12.04 Intel® Parallel Studio XE 2011 for Linuxのインストール - cmphysの日記

インストール

OpenMPIのサイトからダウンロードします。
Open MPI: Open Source High Performance Computing
現在のバージョンは1.6です。
ダウンロードしたファイルはホーム・ディレクトリにおいてください。
これを展開します。

$ tar xzvf openmpi-1.6.tar.gz
$ cd openmpi-1.6

インストール前に、インストール先の指定とコンパイラインテルのものに変更します。

$ ./configure --prefix=/usr/local/openmpi CC=icc CXX=icpc F77=ifort FC=ifort

そしてコンパイル、管理者権限に移ってインストールを実行します。

$ make all
$ sudo su
# source /home/username/.bashrc
# make install

途中でルートに移りますが、インテルコンパイラを使うので、そのパスが入った.bashrcを読み込む必要があります。
usernameはご自身のユーザー名に変更してください。

環境設定

~/.bashrcを開いて、ファイルの最後に次の文を付け加えます。

MPIROOT=/usr/local/openmpi
PATH=$MPIROOT/bin:$PATH
LD_LIBRARY_PATH=$MPIROOT/lib:$LD_LIBRARY_PATH
MANPATH=$MPIROOT/share/man:$MANPATH
export MPIROOT PATH LD_LIBRARY_PATH MANPATH

次に /etc/ld.so.conf.d/ を管理者権限で開いて"openmpi.conf"というファイルを作り、以下の内容を記述します。

/usr/local/openmpi/lib

複数のパソコンをつなげてMPIを使う場合は、ホストの設定が必要です。
ここではこれについては触れませんので、別に調べてください。

コンパイルと実行

コンパイルは、Fortranの場合

$ mpif90 -o test test.f90

C++の場合

$ mpicc -o test test.cc

でできます。
コンパイルオプションの付け方はインテルコンパイラのときと同じです。
MPIで実行する場合は

$ mpirun -np 2 test

-npで指定してるのはプロセスの数です。

参考 http://www.hitachi.co.jp/Prod/comp/hpc/foruser/sr8000/tebiki/mpi_exec.html