Mac
OpenMP
Mpich2
openmpi

MacでMPIとopenmpをハイブリッドにつかえる環境を構築する

More than 3 years have passed since last update.


openmpiとopenmpとは

※ openmpiとopenmpは別物


  • MPI(openmpiとmpich2)はどちらも並列するためのライブラリ

  • openmpはスレッド並列するためのライブラリ

  • MPIでは各プロセスが占有のメモリ領域を扱うのに対し、 OpenMPではメモリを共有してアクセスすることができる。


目的

MPIとopenmpを用いたハイブリッド並列を使い計算速度を上げる。


Mac固有の問題

mac以外の場合、最近のgccはopenmpをサポートしているので素直にopenmpiをインストールすれば良い。

しかしMacだと以下の点でめんどい

通常macではパッケージ管理ソフトとしてbrewを使う。

brewを使いインストールするとコンパイラがclangが選択されてしまう(clangはopenmpがサポートされていない)

なのでgccを基にしたopenmpiをインストールする必要がある


インストール


gccのインストール(もし入っていなければ)


チェック方法

gcc --version

をやってgcc (GCC)ほにゃほにゃってメッセージが返ってこなかったり、clangって返ってきたらgccは入ってないです。


パッケージ管理ソフトbrewを使いインストールする


  • brewの導入

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"


  • brewを使いgccの導入

brew update

sudo brew install gcc49
ln -s /usr/local/bin/gcc-4.9 /usr/local/bin/gcc
ln -s /usr/local/bin/g++-4.9 /usr/local/bin/g++

※gcc49は現在(1015/1月)の最新バージョン(ver4.2以上をインストールすること openmpに対応したのが4.2以降なので)

※sudo 使うとmacのログインパスワード聞かれるので入力


OpenMPIを手動でインストール(brewが使えないため)


  • ソースをダウンロードして解凍(wgetがないならhome brewで入れて下さい)

wget http://www.open-mpi.org/software/ompi/v1.8/downloads/openmpi-1.8.3.tar.gz

tar xzvf openmpi-1.8.3.tar.gz

http://www.open-mpi.org/ にある最新バージョンを使って下さい


  • コンパイルの設定ファイル(Makefile)を生成

cd openmpi-1.8.3

./configure CC=gcc CXX=g++ F77=gfortran FC=gfortran --enable-mpi-thread-multiple --prefix=インストール先のディレクトリ


  • コンパイルしてインストール

sudo make

sudo make install

※途中でmacのログインするときのパスワード聞かれるかも


  • pathを通す

bashを使っているのなら ~/.bashrcに以下を記述


~/.bashrc

# for openmpi                                                                                                                                         

export MANPATH=インストールしたディレクトリ/share/man:$MANPATH
export LD_LIBRARY_PATH=インストールしたディレクトリ/lib:$LD_LIBRARY_PATH
export PATH="インストールしたディレクトリ/bin:$PATH"


  • パスの確認

ターミナルを再起動

mpic++ --version

これで反応があるともう使える状態になっている。

使い方はまた今度

一応使い方のサンプルが乗っているサイト(openmpiのみでopenmpi+openmpのハイブリッドな使いたではないが)

http://auewe.hatenablog.com/entry/2013/06/16/172844