Ошибка MPI_Recv: получено 168 байт, но размер буфера равен 0 - PullRequest
0 голосов
/ 10 апреля 2020

Я пытаюсь выполнить вычисления параллельно, используя mpi4py. Я получил код для успешной работы для -n 4, но у меня возникли проблемы с масштабированием до -n 64. Я пытаюсь решить проблему несколько дней назад и, похоже, не могу найти причину проблемы.

(data_no_div_m_0, data_no_div_m_1, data_no_div_m_2, data_no_div_m_3, data_no_div_m_4, data_no_div_m_5, data_no_div_m_6, data_no_div_m_7, data_no_div_m_8, data_no_div_m_9, data_no_div_m_10,
 data_no_div_m_11, data_no_div_m_12, data_no_div_m_13, data_no_div_m_14, data_no_div_m_15, data_no_div_m_16, data_no_div_m_17, data_no_div_m_18, data_no_div_m_19, data_no_div_m_20, 
 data_no_div_m_21, data_no_div_m_22, data_no_div_m_23, data_no_div_m_24, data_no_div_m_25, data_no_div_m_26, data_no_div_m_27, data_no_div_m_28, data_no_div_m_29, data_no_div_m_30, 
 data_no_div_m_31, data_no_div_m_32, data_no_div_m_33, data_no_div_m_34, data_no_div_m_35, data_no_div_m_36, data_no_div_m_37, data_no_div_m_38, data_no_div_m_39, data_no_div_m_40, 
 data_no_div_m_41, data_no_div_m_42, data_no_div_m_43, data_no_div_m_44, data_no_div_m_45, data_no_div_m_46, data_no_div_m_47, data_no_div_m_48, data_no_div_m_49, data_no_div_m_50, 
 data_no_div_m_51, data_no_div_m_52, data_no_div_m_53, data_no_div_m_54, data_no_div_m_55, data_no_div_m_56, data_no_div_m_57, data_no_div_m_58, data_no_div_m_59, data_no_div_m_60, 
 data_no_div_m_61, data_no_div_m_62, data_no_div_m_63) = np.array_split(data_no_div_m, cores_n) # <- split the original numpy data into 64 

data_no_div_m_6 = np.ascontiguousarray(data_no_div_m_6, dtype=float)
row_6_nd = np.size(data_no_div_m_6, 0)
col_nd = np.size(data_no_div_m_0, 1) # all 64 arrays have the same number of columns

.
.
.

elif rank == 6:
        data_no_div_m_6 = np.empty([row_6_nd,col_nd], dtype=float)
        comm.Recv(data_no_div_m_6, source=0) # <- this line causes the error

# File "MPI_tester_1.py", line 1160, in <module>
    comm.Recv(data_no_div_m_6, source=0)
  File "mpi4py/MPI/Comm.pyx", line 285, in mpi4py.MPI.Comm.Recv
mpi4py.MPI.Exception: Message truncated, error stack:
MPI_Recv(224).....................: MPI_Recv(buf=0x28b2160, count=0, MPI_DOUBLE, src=0, tag=MPI_ANY_TAG, MPI_COMM_WORLD, status=0x1) failed
MPIDI_CH3U_Receive_data_found(131): Message from rank 0 and tag 0 truncated; 168 bytes received but buffer size is 0

Означает ли эта ошибка, что строка

data_no_div_m_6 = np.empty([row_6_nd,col_nd], dtype=float)

создает массив 0x8? Как мне go исправить эту ошибку? Спасибо

...