Процесс умножения mpi4py вместо параллелизации

Я пытаюсь запустить существующий код параллельно. Распараллеливание сделано раньше и отлично используется коллегами. На моей машине я столкнулся с некоторыми проблемами, для которых не смог найти решение.

Я сузил проблему до простой вещи:

from mpi4py import MPI
comm = MPI.COMM_WORLD
rank = comm.Get_rank()
size = comm.Get_size()
print "Rank: %i; size: %i"%(rank, size)

Я бегу с этим mpirun -np 5 python test.py и получите следующий вывод:

Rank: 0; size: 1
Rank: 0; size: 1
Rank: 0; size: 1
Rank: 0; size: 1
Rank: 0; size: 1

Что в основном дублирует код, а не учитывает количество указанных процессов.

Добавление этих строк приводит к тому же сообщению об ошибке из моего основного кода:

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)

Появляется следующее сообщение об ошибке:

mpi4py.MPI.Exception: Invalid rank, error stack:
MPI_Send(174): MPI_Send(buf=0x7f31851f3a54, 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

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

Я использую Python 2.7 и работаю на Centos 6.7. Заранее спасибо!

0 ответов

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