【发布时间】:2014-04-29 12:36:23
【问题描述】:
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
【问题讨论】: