У меня есть проблемы с моим кодом MPI. Эта проблема не возникает с двумя процессами (процессор), но возникает, когда у меня более 3 рангов (процессор). Я думал, что тег может быть причиной этой ошибки, потому что во время вычисления, но соответствующий прием имеет тот же тег отправки.
в чем проблема? Учитывая, что несколько рангов (процессоров) сталкиваются с одним и тем же тегом?
часть моего кода:
if (id != 0)
{
MPI_Isend(liquidx[1][0], 1, new_dtype, id - 1, 0, MPI_COMM_WORLD,
&req[0]);
MPI_Isend(liquidy[1][0], 1, new_dtype, id - 1, 1, MPI_COMM_WORLD,
&req[1]);
}
if (id != p - 1)
{
MPI_Irecv(liquidx[memory_size - 1][0], 1, new_dtype, id + 1, 0,
MPI_COMM_WORLD, &req[0]);
MPI_Irecv(liquidy[memory_size - 1][0], 1, new_dtype, id + 1, 1,
MPI_COMM_WORLD, &req[1]);
}
MPI_Waitall(2, req, status);
Ошибка:
[0] фатальная ошибка Фатальная ошибка в PMPI_Gather: сообщение обрезано, ошибка
стек: PMPI_Gather (583) .......................:
MPI_Gather (sbuf = 0x00000000084463C0, scount = 150, dtype = USER,
rbuf = 0x000000000FB9C080, rcount = 150, dtype = USER, root = 0,
MPI_COMM_WORLD) не удалось MPIR_Gather (210) .......................:
MPIDI_CH3U_Post_data_receive_found (193): сообщение ранга 1 и тега 3
усеченный; Получено 31050432 байта, но размер буфера составляет 30844800