Я пытаюсь выполнить вычисления параллельно, используя 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 исправить эту ошибку? Спасибо