2

mpi4py.MPI.COMM_SELF.Spawn使用 Anaconda 的 Python 发行版时似乎会抛出错误。我的问题是,在我的 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
...

我相信 Anacondampi4py正在使用 mpich。如果我使用系统 python 它可以工作。

$ /usr/bin/python spawn.py
mpi4py: /usr/lib/python2.7/dist-packages/mpi4py/MPI.so
hello

系统mpi4py使用openmpi。mpi4py在 Anaconda 中使用冲突的 MPI 版本构建会不会有一些问题?

此外,在调用mpi4py下运行时,该包似乎在 Anaconda 中正常运行mpirun。例如

# 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
4

2 回答 2

1

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

看到这个未解决的问题。

测试:Ubuntu 16.04 Anaconda 4.0.0 python 3.5.0 mpich 3.2.0 openmpi 1.10.2 mpi4py 2.0.0

于 2016-05-31T15:18:58.627 回答
0

Anaconda 与 MPICH 捆绑在一起。您需要从源代码构建自己的安装,而不是使用 anaconda 的 mpi4py,明确链接到系统 MPI 安装。

于 2014-03-24T20:23:39.350 回答