Я пишу программу для проверки кратчайшего пути с использованием библиотеки MPI
.Есть два сценария:
Либо я нашел лучший путь, в случае, если первый слот буфера будет указывать resultBuff[0] = 1
, и мне нужно будет просмотреть оставшуюся часть содержимого буфера, чтобы получить лучший путь.
Другой случай - resultBuff[0] = 0
, и я не буду ожидать никаких значений в других ячейках буфера.
Могу ли я использовать отдельные MPI_Isend
вызовы:
В случае, если я нашел лучший путь и сохранил его в resultBuff[1]
до resultBuff[10]
:
MPI_Isend((void*)sendBuff, 11, MPI_INT, 0, 1, MPI_COMM_WORLD, &request);
Если не нашел лучшего пути:
MPI_Isend((void*)sendBuff, 1, MPI_INT, 0, 1, MPI_COMM_WORLD, &request);
Ив обоих случаях я буду использовать
MPI_Recv( (void*)resultBuff, 11, MPI_INT, MPI_ANY_SOURCE, 1, MPI_COMM_WORLD, &status);
для получения результата.
Будет ли это работать?
Если это произойдет, сэкономлю ли мне расходы на связь, если не отправлю лучшедорожка?
Примечание: resultBuff
имеет размер 11.