MPI_Send(100): неверный ранг имеет значение 1, но должен быть неотрицательным и меньше 1

Я изучаю MPI в Python самостоятельно. Я только начал с базовой документации MPI4py, Я начал с этого кода:

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,

Заранее спасибо!

1 ответ

Решение

Программа жалуется, что 1 не является действительным званием для MPI_Send(): это означает, что ваша программа выполняется в одном процессе.

Вы запускаете его с помощью python main.py? Попробуй использовать mpirun -np 2 python main.py, где 2 это число процессов. Последний является обычным способом запуска программ MPI.

Другие вопросы по тегам