Проблема со связью MPI в Python (с использованием MPI.COMM_WORLD.isend и MPI.COMM_WORLD.irecv) — нет полученияPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Проблема со связью MPI в Python (с использованием MPI.COMM_WORLD.isend и MPI.COMM_WORLD.irecv) — нет получения

Сообщение Anonymous »

Я работаю над параллельной программой, использующей mpi4py в Python, и столкнулся с проблемой, когда данные отправляются с помощью MPI.COMM_WORLD.isend, но когда принимающий процесс пытается получить данные с помощью MPI.COMM_WORLD.irecv, он получает None. Я не уверен, правильно ли происходит обмен данными или возникла проблема с моей логикой.
Вот часть моего кода, где происходит обмен данными:

Код: Выделить всё

if self.color == 0:
current_point = self.run_MD(self.atoms, self.dyn)
i += 1
logging.info(f"Sampled point {i}.")
for dest in range(1, MPI.COMM_WORLD.Get_size()):
MPI.COMM_WORLD.isend(current_point, dest=dest, tag=0)

if req is None:
req = MPI.COMM_WORLD.irecv(source=1, tag=1)

if req.Test():
sampled_points = req.wait()
logging.info(f"Received {sampled_points}.")
req = None

elif self.color == 1:
if req is None:
req = MPI.COMM_WORLD.irecv(source=0, tag=0)

# Get the current point (blocking)
current_point = req.wait()
i += 1

if RANK == 1:
logging.info(f"Recalculating point {i} with DFT.")
sampled_points.append(self.recalc_aims(current_point))

if RANK == 1:
logging.info(f'len(sampled_points): {len(sampled_points)}')
req_send = MPI.COMM_WORLD.isend(sampled_points, dest=0, tag=1)
req_send.wait()
req = None

Если я не проверяю с помощью .test(), т.е. не использую блокировку связи, все работает как задумано. Но каким-то образом, хотя .test() оценивается как True, цвет 0 получает значение None только для sampled_points. Кстати, в этом примере связь от 0 до 1 (отправка current_point) работает нормально.

Подробнее здесь: https://stackoverflow.com/questions/792 ... d-mpi-comm
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»