Mac上でMacPortsを利用してMPIを使用する時のメモ.
未検証.
環境
$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.11.6
BuildVersion: 15G1217
$ xcodebuild -version
Xcode 8.2.1
Build version 8C1002
$ port version
Version: 2.4.0
インストール
OpenMPIとMPICHの二つがある.
port名はそれぞれopenmpi
, mpich
で,どちらもさらにsub-portsがある.
末尾にdefault
が付いている名前のsub-portsがデフォルトでインストールされる.
これはXcodeのclangをラップする.
openmpi/mpich-defaultが動かない
ところが,この*-default
はプログラムのコンパイルは通っても,MPIの呼び出しで止まってしまう.
openmpi/mpich-gcc6を使用する
末尾にgcc6
が付くsub-portsに切り替えたところ,こちらは動く.
と言っても,検証ができたレベルではない.
ひとまずMPIの初期化には成功しているようだ.
このsub-portsはMacPortsのgcc6をラップする.
他にも,色々なコンパイラをラップするsub-portsがあるので,丁度良いものを選べばよい,ということなのだろうか?
コーディング時のtips
MPI_VERSION
https://twitter.com/Flast_RO/status/837904400156766208 より,MPI 3.0からmpi.h
を読むとMPI_VERSION
というマクロが定義されるようなので,コンパイル時に分岐させたい場合はこのマクロで分岐すればよさそう.
しかし,ヘッダファイルを読めば,ではなくて,mpiccとかmpicxxとか,ラッパーが何か定義してくれることが理想なのだが…
この辺りはMakeを工夫して使用することでカバーするしかなさそう.
結び
テストコードがきちんと書けたら続きを書きます.