Сообщение с рангом 1 и тегом 3 усечено, получено 31050432 байта, но размер буфера составляет 30844800 - PullRequest
0 голосов
/ 13 сентября 2018

У меня есть проблемы с моим кодом 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

...