15

仮想マシンで python Hello World mpi4py コードを実行する際に問題があります。

hello.py コードは次のとおりです。

#!/usr/bin/python
#hello.py
from mpi4py import MPI

comm = MPI.COMM_WORLD

size = comm.Get_size()
rank = comm.Get_rank()

print "hello world from process ", rank,"of", size

mpiexec と mpirun を使用して実行しようとしましたが、うまく動作しません。出力:

$ mpirun -c 4 python hello.py 
hello world from process  0 of 1
hello world from process  0 of 1
hello world from process  0 of 1
hello world from process  0 of 1

そしてmpiexecから:

$ mpiexec -n 4 python hello.py 
hello world from process  0 of 1
hello world from process  0 of 1
hello world from process  0 of 1
hello world from process  0 of 1

彼らは通信のランクとサイズを取得していないようです。何が原因でしょうか? それを解決する方法は?

mpiexec --version
mpiexec (OpenRTE) 1.6.5

mpirun --version
mpirun (Open MPI) 1.6.5

システムは、仮想マシン上の Ubuntu 14.04 です。

理由はありますか?ありがとう!

4

2 に答える 2

0

上記およびCのこの質問mpirunで示唆されているように、これは、リンクされたものとは異なるMPIから来ていることに関係していmpi4pyます。

私の場合、他の多くの Python ユーザーにも同じことが当てはまると思います。これは、最初にmpi4pyを介してインストールしたことcondaが原因であり、MPI の非システム バージョンが私の環境に取り込まれました。condaつまり、私の環境which mpirunにパスが与えられました。conda

問題を解決するために、実行してから を実行するconda remove mpi4pyと、環境内の MPI に対してpip install mpi4py再構築されたように見え、問題が解決しました。mpi4pyconda

于 2019-06-14T14:36:51.787 に答える