Проблема появления с mpi4py в дистрибутиве Anaconda Python

mpi4py.MPI.COMM_SELF.Spawn, похоже, выдает ошибки при использовании дистрибутива Anaconda Python. Мой вопрос заключается в том, возможно ли, что mpi4py каким-то образом построен против неправильной версии MPI (mpich v openmpi) в моей установке Anaconda.

Проблема в том, что следующий код

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

Я считаю, что mpi4py Анаконды использует mpich. Если я использую системный питон, он работает.

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

Система mpi4py использует openmpi. Может ли быть какая-то проблема со сборкой mpi4py с конфликтующими версиями MPI в Anaconda?

Кроме того, пакет 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

person wd15    schedule 21.03.2014    source источник


Ответы (2)


Я столкнулся с той же проблемой, и одним из решений была компиляция mpi4py с openmpi вместо mpich (см. пример «Compute Pi» в документации mpi4py).

См. эту нерешенную проблему.

Протестировано на: Ubuntu 16.04 Anaconda 4.0.0 python 3.5.0 mpich 3.2.0 openmpi 1.10.2 mpi4py 2.0.0

person neok    schedule 31.05.2016

Anaconda поставляется вместе с MPICH. Вместо того, чтобы использовать mpi4py anaconda, вам нужно будет собрать свою собственную установку из исходного кода, явно связав ее с системной установкой MPI.

person ngoldbaum    schedule 24.03.2014
comment
Я согласен с тем, что я мог бы собрать и установить mpi4py в среде Anaconda, используя системный openmpi, но было бы неплохо понять, почему spawn не работает с родным MPI Anaconda. Есть ли проблема, связанная с использованием команды spawn с mpich? - person wd15; 25.03.2014