Я пишу обертку c++ mpi.
Я встретил странную ошибку с mpi: в моем случае ошибка появилась только тогда, когда сообщение достаточно велико, ошибка времени выполнения ниже:
Fatal error in MPI_Send: Other MPI error, error stack:
MPI_Send(173)...........................: MPI_Send(buf=0x7fffbd3db7f8, count=1, MPI_DOUBLE, dest=1, tag=2014, comm=0x84000004) failed
PIDI_CH3I_Progress(461)................:
MPID_nem_handle_pkt(636)................:
MPIDI_CH3_PktHandler_EagerShortSend(308): Failed to allocate memory for an unexpected message. 261895 unexpected messages queued.
Я использую MPI_Send (без MPI_Isend с запросом) и как эта ошибка может произойти (может ли это затормозить это срабатывание)?
Проблема заключается в том, что вы не отправляете соответствующие вызовы MPI_Recv
. Когда он говорит, что у вас 200000 сообщений в очереди неожиданных сообщений, это означает, что вы отправили 200000 сообщений, не сообщая о процессе приема, куда их можно отправить, когда они прибудут.
Это в конечном итоге произойдет независимо от размера вашего сообщения. Это происходит скорее, если ваши сообщения больше (из-за нехватки памяти).