Связь между mpiexec и mpi4py не работает?
Я написал скрипт, который выполнял на машине Ubuntu 14.04 LTS в python2.7 с использованием mpi4py. Вот фрагмент с самого начала:
from mpi4py import MPI
comm = MPI.COMM_WORLD
rank = comm.Get_rank()
size = comm.Get_size()
print comm.Get_size()
На моем старом компьютере, если я запустил mpiexec -n 3 python2.7 foo.py
Я получаю ответ:
3
3
3
Недавно я начал миграцию своего программного обеспечения на новый сервер Ubuntu 14.04 LTS. Когда я запускаю ту же команду, я получаю ответ:
1
1
1
Очевидно, что здесь что-то идет не так, хотя я не уверен, где искать, поскольку мои знания MPI недостаточны. Я попытался проверить версию MPI и работает mpiexec --version
на старый компьютер возвращается:
HYDRA build details:
Version: 1.4.1p1
Release Date: Thu Sep 1 13:53:02 CDT 2011
CC: gcc
CXX: c++
F77: gfortran
F90: f95
Configure options: '--enable-shared' '--prefix=/opt/anaconda1anaconda2anaconda3' '--disable-option-checking' 'CC=gcc' 'CFLAGS= -O2' 'LDFLAGS= ' 'LIBS=-lrt -lpthread ' 'CPPFLAGS= -I/home/ilan/aroot/work/mpich2-1.4.1p1/src/mpl/include -I/home/ilan/aroot/work/mpich2-1.4.1p1/src/mpl/include -I/home/ilan/aroot/work/mpich2-1.4.1p1/src/openpa/src -I/home/ilan/aroot/work/mpich2-1.4.1p1/src/openpa/src -I/home/ilan/aroot/work/mpich2-1.4.1p1/src/mpid/ch3/include -I/home/ilan/aroot/work/mpich2-1.4.1p1/src/mpid/ch3/include -I/home/ilan/aroot/work/mpich2-1.4.1p1/src/mpid/common/datatype -I/home/ilan/aroot/work/mpich2-1.4.1p1/src/mpid/common/datatype -I/home/ilan/aroot/work/mpich2-1.4.1p1/src/mpid/common/locks -I/home/ilan/aroot/work/mpich2-1.4.1p1/src/mpid/common/locks -I/home/ilan/aroot/work/mpich2-1.4.1p1/src/mpid/ch3/channels/nemesis/include -I/home/ilan/aroot/work/mpich2-1.4.1p1/src/mpid/ch3/channels/nemesis/include -I/home/ilan/aroot/work/mpich2-1.4.1p1/src/mpid/ch3/channels/nemesis/nemesis/include -I/home/ilan/aroot/work/mpich2-1.4.1p1/src/mpid/ch3/channels/nemesis/nemesis/include -I/home/ilan/aroot/work/mpich2-1.4.1p1/src/mpid/ch3/channels/nemesis/nemesis/utils/monitor -I/home/ilan/aroot/work/mpich2-1.4.1p1/src/mpid/ch3/channels/nemesis/nemesis/utils/monitor -I/home/ilan/aroot/work/mpich2-1.4.1p1/src/util/wrappers -I/home/ilan/aroot/work/mpich2-1.4.1p1/src/util/wrappers'
Process Manager: pmi
Launchers available: ssh rsh fork slurm ll lsf sge manual persist
Topology libraries available: hwloc plpa
Resource management kernels available: user slurm ll lsf sge pbs
Checkpointing libraries available:
Demux engines available: poll select
Если я запускаю его на новом компьютере, я получаю ответ:
mpiexec (OpenRTE) 1.6.5
Report bugs to http://www.open-mpi.org/community/help/
Я использую здесь разные реализации MPI, которые могут вызвать проблему? Как бы я это сказал? Или проблема в конце питона? Кажется, запускаются три процесса, но Python не совсем понял. Я понимаю, что последнее может быть вызвано mpi4py и mpiexec, использующими разные реализации MPI.
Если я бегу which mpiexec
на любой машине он возвращает:
/home/pmj27/anaconda2/bin/mpiexec
Бег mpi4py.get_config()
возвращает:
{'mpicxx': '/home/pmj27/anaconda2/bin/mpicxx', 'mpif77': '/home/pmj27/anaconda2/bin/mpif77', 'mpicc': '/home/pmj27/anaconda2/bin/mpicc', 'mpif90': '/home/pmj27/anaconda2/bin/mpif90'}