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