mpi4py.MPI.COMM_SELF.Spawn
似乎会抛出错误。我的问题是,在我的Anaconda安装方式中,mpi4py
是否有可能针对错误版本的MPI(mpich v openmpi)构建。
问题是以下代码
# spawn.py
import mpi4py.MPI as MPI
import sys
print 'mpi4py:',MPI.__file__
comm = MPI.COMM_SELF.Spawn(sys.executable,
args=['hello.py'],
maxprocs=1)
给出以下错误
$ /home/wd15/anaconda/bin/python spawn.py
mpi4py: /home/wd15/anaconda/lib/python2.7/site-packages/mpi4py/MPI.so
[mpiexec@loki] match_arg (./utils/args/args.c:122): unrecognized argument pmi_args
[mpiexec@loki] HYDU_parse_array (./utils/args/args.c:140): argument matching returned error
[mpiexec@loki] parse_args (./ui/mpich/utils.c:1387): error parsing input array
[mpiexec@loki] HYD_uii_mpx_get_parameters (./ui/mpich/utils.c:1438): unable to parse user arguments
...
我相信Anaconda的mpi4py
正在使用mpich。如果我使用系统python它可以工作。
$ /usr/bin/python spawn.py
mpi4py: /usr/lib/python2.7/dist-packages/mpi4py/MPI.so
hello
系统mpi4py
使用openmpi。在{Anaconda中使用冲突的MPI版本构建mpi4py
是否会出现问题?
此外,mpi4py
程序包在mpirun
调用下运行时似乎在Anaconda中正常运行。例如
# test_mpi4py.py
import mpi4py.MPI as MPI
print MPI.COMM_WORLD.Get_rank()
将给出
$ mpirun -n 2 /home/wd15/anaconda/bin/python test_mpi4py.py
0
1
答案 0 :(得分:1)
我遇到了同样的问题,一个解决方案是用openmpi而不是mpich编译mpi4py(参见mpi4py文档中的'Compute Pi'示例)。
请参阅this未解决的问题。
测试: Ubuntu 16.04 Anaconda 4.0.0 python 3.5.0 mpich 3.2.0 openmpi 1.10.2 mpi4py 2.0.0
答案 1 :(得分:0)
Anaconda与MPICH捆绑在一起。您不需要使用anaconda的mpi4py,而是需要从源代码构建自己的安装,显式链接系统MPI安装。