Преимущество MPI_SEND перед MPI_ISEND? - PullRequest
0 голосов
/ 02 октября 2019

Использование MPI_SEND (стандартная блокирующая отправка) проще, чем использование MPI_ISEND (стандартная неблокирующая отправка), потому что последняя должна использоваться вместе с другой функцией MPI, чтобы гарантировать, что связь была "завершена", так что буфер отправки может быть использован повторно. Но кроме этого, имеет MPI_SEND какие-либо преимущества перед MPI_ISEND? Похоже, что в общем случае MPI_ISEND предотвращает взаимоблокировку, а также обеспечивает лучшую производительность (поскольку вызывающий процесс может выполнять другие функции, пока связь осуществляется в фоновом режиме посредством реализации MPI).

Итак, это хорошо? идея вообще использовать блокирующую версию?

1 Ответ

1 голос
/ 03 октября 2019

С точки зрения производительности, MPI_Send() может быть быстрее, чем сразу за MPI_Isend() следует MPI_Wait() (а в Open MPI быстрее ).

Но самое главноеЕсли ваша библиотека MPI не предоставляет поток выполнения, ваше сообщение может находиться на узле отправителя до тех пор, пока ваш код не обработает MPI (что обычно происходит при вызове подпрограммы MPI и определенно происходит при вызове MPI_Wait()).

...