nano_exit

基礎的なことこそ、簡単な例が必要だと思うのです。

mpi4pyをOpenMPIでインストールした時の話

WSLで入れたUbuntupythonの環境が整いつつあったので、mpi4pyをpipで入れようとしたら、上手く行かなかった。
どうもインストールの際に内部でmpiccでコンパイルするときにコケていて、エラーの内容は-lmpeやら-llmpeやらが無いということだった。

しかし、いろいろググったがlibmpeやらliblmpeやらは知名度が低いようで、どうやってこれらをインストールしたら良いかイマイチわからなかった。
人によっては、mpichを入れろとか、libopenmpi-devを入れろとか、mpi.hのパスが通ってない、とかいろいろあった。(もちろん、エラーメッセージが「mpi.hが無い」と出ていたらそうするべきだろう)
OpenMPIは自分でソースをコンパイルしてインストールしていたが、とりあえずmpichおよびlibopenmpi-devをaptで入れてみた。でも、結局問題は解決しなかった。
更にネットを見ると、mpichとlibopenmpi-devは競合するから一緒に入れるなとか書いてあった。入れてしまったものは仕方がない。ただ、apt経由のものは/usr/直下に入っていて、自分のものは/usr/local/以下に入っているのと、mpirunは、mpirun、mpirun.mpich、mpirun.openmpiとそれぞれ名前が異なるので、上手く住み分けてくれていることを願う。(ダメだったらインストールし直せば住む話)

それで結局、mpi4pyのソースをダウンロードして自分でインストールすることにした。以下のサイトからダウンロード出来る。
https://bitbucket.org/mpi4py/mpi4py/downloads/
そして、websiteに従ってインストールを進める。
https://mpi4py.readthedocs.io/en/stable/install.html
mpi.cfgの中身のmpiの項目を弄って、setup.pyのbuildコマンドを起動した。

python setup.py build

すると、ソースの中で、MPI_LBとMPI_UBが定義されていないというようなエラーが出てくる。

こんなもんどうすんだよ、、、とか思っていたが、ggると解決法が載っていた。
https://bitbucket.org/mpi4py/mpi4py/issues/123/mpi4py-does-not-build-with-openmpi4
https://bitbucket.org/mpi4py/mpi4py/commits/42f5e35a6a90454516c11131549a08cd766edbb0
~/mpi4py-X.Y/src/lib-mpi/config/openmpi.hの中で、該当箇所4行を消せば良いということだった。

これで問題が解決して、mpi4pyをインストールすることが出来た。