mpiexec和mpi4py之间的通信不工作?

2024-04-29 15:24:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我用mpi4py编写了一个脚本,在python2.7中的ubuntu14.04lts机器上运行。以下是开头的片段:

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我会得到答案:

^{pr2}$

我最近开始将我的软件迁移到一个新的ubuntu14.04lts服务器上。当我在那里运行相同的命令时,我得到的答案是:

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端?似乎有三个进程正在启动,只是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'}

Tags: srchomeincludeworkavailablechannelsmpinemesis