Всегда ли полученный счет соответствует количеству отправленных сообщений MPI? - PullRequest
0 голосов
/ 26 мая 2019

Когда вы отправляете одно сообщение MPI, которое состоит из n элементов некоторых MPI_type в одном процессе, а затем получаете в другом с получением count, равным > n, вы гарантированно всегда получаете все n элементы?

В сущности, если вы отправляете одно сообщение в режиме блокировки MPI_Send, а затем получаете его в одном режиме блокировки MPI_Recv с достаточно большим буфером приема, вы гарантированно получите все сообщение?

Или есть вероятность, что вы можете получить только первые k < n элементы и должны вызывать MPI_Recv несколько раз, пока не получите все это.

Я почти уверен, что ответ положительный, но, глядя на официальную документацию и примечания к спецификации Я не смог найти точного ответа.

1 Ответ

0 голосов
/ 03 июня 2019

Как Жиль и Дэвид сказали в комментариях, ответ - да. Как говорит Жиль, вы никогда не получите усеченное сообщение. Если n > count, то MPI сообщит об ошибке и не сможет.

Если n <= count, то receive завершится, но в общем случае вы не знаете, каково значение n (размер входящего сообщения). Вам нужно извлечь это из переменной состояния с помощью вызова MPI_Get_count().

...