Anaconda Python发行版中的mpi4py产生问题

Anaconda Python发行版中的mpi4py产生问题,mpi,anaconda,mpi4py,Mpi,Anaconda,Mpi4py,mpi4py.MPI.COMM_SELF.Spawn在使用Anaconda的Python发行版时似乎会抛出错误。我的问题是,mpi4py是否可能是在我安装的Anaconda中以某种方式针对错误版本的MPI(mpich v openmpi)构建的 问题是以下代码 # spawn.py import mpi4py.MPI as MPI import sys print 'mpi4py:',MPI.__file__ comm = MPI.COMM_SELF.Spawn(sys.executable,

mpi4py.MPI.COMM_SELF.Spawn
在使用Anaconda的Python发行版时似乎会抛出错误。我的问题是,
mpi4py
是否可能是在我安装的Anaconda中以某种方式针对错误版本的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
是否存在一些问题

另外,当在
mpirun
调用下运行时,
mpi4py
包似乎在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

水蟒与MPICH捆绑在一起。与使用anaconda的mpi4py不同,您需要从源代码构建自己的安装,并显式链接到系统MPI安装。

我遇到了同样的问题,一个解决方案是使用openmpi而不是mpich编译mpi4py(请参阅mpi4py文档中的“计算Pi”示例)

见未解决的问题

测试日期: Ubuntu 16.04 水蟒4.0.0 python 3.5.0 mpich 3.2.0 openmpi 1.10.2
mpi4py 2.0.0

我同意我可以使用系统openmpi在Anaconda的环境中构建和安装
mpi4py
,但如果能理解
spawn
为什么不能与Anaconda的本机MPI一起工作,那就太好了。在mpich中使用
spawn
命令是否存在固有问题?