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

python isochronesのための設定:Open MPI, CMake, mpi4py, MultiNest, PyMultiNest

(1)Open MPI
http://www.open-mpi.org/software/ompi/v1.8/
から openmpi-1.8.8.tar.gz をダウンロード。解凍。

$ cd openmpi-1.8.8
$ ./configure
$ make all
$ sudo make install

(2)CMake
$ sudo port install cmake +gui

(3)mpi4py [これは pymultinest に必要]
$ sudo pip install mpi4py

(4)MultiNest [これは pymultinest に必要]
$ cd
$ git clone https://github.com/JohannesBuchner/MultiNest.git
$ cd MultiNest/build/
$ cmake ..
$ make
[少し待つ]

# ここまで/Users/my_name/MultiNestへのインストールが完了。
# さらにPyMultiNestのための準備を行う。

$ cd ../lib/ #[MultiNest/lib に移動]
$ ls -l
-rwxr-xr-x 1 my_name staff 701512 19 Jan 19:21 libmultinest.3.10.dylib
-rw-r--r-- 1 my_name staff 814136 19 Jan 19:21 libmultinest.a
lrwxr-xr-x 1 my_name staff 23 19 Jan 19:21 libmultinest.dylib -> libmultinest.3.10.dylib
-rwxr-xr-x 1 my_name staff 715016 19 Jan 19:20 libmultinest_mpi.3.10.dylib
-rw-r--r-- 1 my_name staff 832704 19 Jan 19:21 libmultinest_mpi.a
lrwxr-xr-x 1 my_name staff 27 19 Jan 19:20 libmultinest_mpi.dylib -> libmultinest_mpi.3.10.dylib

# /Users/my_name/MultiNest/lib の中身を /usr/local/lib/ にコピーする。
$ sudo cp libmultinest.3.10.dylib /usr/local/lib/
$ sudo cp libmultinest.a /usr/local/lib/
$ sudo cp libmultinest.dylib /usr/local/lib/
$ sudo cp libmultinest_mpi.3.10.dylib /usr/local/lib/
$ sudo cp libmultinest_mpi.a /usr/local/lib/
$ sudo cp libmultinest_mpi.dylib /usr/local/lib/

# /Users/my_name/MultiNest/lib にある XXX.dylib の内容を持つ、 XXX.so という名前のリンクを作る。
# http://astrobetter.com/wiki/MultiNest+Installation+Notes の通りにすると一部不足する模様。全部やる。
$ sudo ln -s libmultinest.3.10.dylib libmultinest.3.10.so
$ sudo ln -s libmultinest.dylib libmultinest.so
$ sudo ln -s libmultinest_mpi.3.10.dylib libmultinest_mpi.3.10.so
$ sudo ln -s libmultinest_mpi.dylib libmultinest_mpi.so

# さらに、PATHをいじる。
$ cd
$ vi .bash_profile
[以下の内容を加える。]
#--------------------
# Added by me when installing MultiNest and PyMultiNest (19 Jan 2016)
export DYLD_LIBRARY_PATH=/Users/my_name/MultiNest/lib:$DYLD_LIBRARY_PATH
export PATH=$PATH:$HOME/.local/bin/
#--------------------
# 参考: http://johannesbuchner.github.io/pymultinest-tutorial/install.html#on-your-own-computer

# おそらく、MultiNest以外にも使う場合は
# http://johannesbuchner.github.io/PyMultiNest/install.html#id4 にあるように、
# $ export DYLD_LIBRARY_PATH=/Users/my_name/MultiNest/lib:/Users/my_name/cuba/lib:/Users/my_name/apemost/lib:$DYLD_LIBRARY_PATH
# のようにするのだろう(推測)。

(5)PyMultiNestインストール
$ cd
$ git clone https://github.com/JohannesBuchner/PyMultiNest.git
$ cd PyMultiNest
$ sudo python setup.py install

(6)テスト
(6-1)MultiNest
$ cd
$ cd MultiNest/bin
$ rm chains/*
$ ./eggboxC #binの中のプログラムなら何でも良い。

(6-2)MultiNest と mpi
$ cd
$ cd MultiNest/bin
$ rm chains/*
$ mpirun -np 6 eggboxC
これを走らせながら、新規ターミナルを開いて
$ top -o cpu
としてみる。いろいろ数字がモニターできる。

(6-3)PyMultiNest
$ cd
$ cd PyMultiNest
$ python -c 'import pymultinest'
# エラーメッセージがなければ良い。
$ python pymultinest_demo_minimal.py
# これでデモコードが走る。

 

※ が、翌日にpipが走らないという問題に遭遇した。 

一連のインストールに問題があると思い、いろいろ試したが、結局

python - Upgrading to latest pip caused ValueError - Stack Overflow

で解決した。