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

  • 16
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

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