2016-02-27 130 views
1

我正在学Python自己的MPI。我刚从MPI4py的基本文档开始。我开始使用此代码:MPI_Send(100):无效的等级有值1,但必须是非负的,小于1

from mpi4py import MPI 

comm = MPI.COMM_WORLD 
rank = comm.Get_rank() 

if rank == 0: 
    data = {'a': 7, 'b': 3.14} 
    comm.send(data, dest=1, tag=11) 
elif rank == 1: 
    data = comm.recv(source=0, tag=11) 

当我运行这个程序,我得到了以下错误:

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "MPI/Comm.pyx", line 1175, in mpi4py.MPI.Comm.send (src/mpi4py.MPI.c:106424) 
    File "MPI/msgpickle.pxi", line 211, in mpi4py.MPI.PyMPI_send (src/mpi4py.MPI.c:42120) 
mpi4py.MPI.Exception: Invalid rank, error stack: 
MPI_Send(174): MPI_Send(buf=0x10e137554, count=25, MPI_BYTE, dest=1, tag=11, MPI_COMM_WORLD) failed 
MPI_Send(100): Invalid rank has value 1 but must be nonnegative and less than 1 

我没有找到这个问题的任何可行的解决方案。我正在使用Mac OS X El Capitan

在此先感谢!

回答

0

该程序抱怨1不是MPI_Send()的有效排名:这意味着您的程序在单个进程上运行。

您是否正在使用python main.py运行?尝试使用mpirun -np 2 python main.py,其中2是进程数。后者是运行mpi程序的常用方式。

相关问题