【问题标题】:Spawn issue with mpi4py in the Anaconda Python distributionAnaconda Python 发行版中的 mpi4py 产生问题
【发布时间】: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

【问题讨论】:

    标签: mpi anaconda mpi4py


    【解决方案1】:

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

    【讨论】:

    • 我同意我可以使用系统 openmpi 在 Anaconda 的环境中构建和安装 mpi4py,但是很高兴了解为什么 spawn 不能与 Anaconda 的本机 MPI 一起使用。将spawn 命令与 mpich 一起使用是否存在固有问题?
    【解决方案2】:

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

    请参阅this 未解决的问题。

    测试于: Ubuntu 16.04 蟒蛇 4.0.0 蟒蛇 3.5.0 mpich 3.2.0 openmpi 1.10.2 mpi4py 2.0.0

    【讨论】:

      猜你喜欢
      • 2019-09-14
      • 1970-01-01
      • 2017-07-16
      • 2015-02-23
      • 2020-12-18
      • 2021-01-01
      • 2014-06-13
      • 1970-01-01
      • 2017-05-24
      相关资源
      最近更新 更多