Я столкнулся с проблемой, похожей на ту, что обсуждалась в этом разделе. код MPI, который суммирует строки вектора, который имеет определенное количество строк. Я прикрепляю код здесь.
Когда я пытаюсь скомпилировать с одним ядром онлайн mpirun -n 1 ./program
, я получаю:
500000 sum 125000250000.00000 calculated by root process.
The grand total is: 125000250000.00000
Поскольку у меня есть только одно ядро, которое вычисляет сумму, все выглядит нормально. Но когда я пытаюсь использовать многоядерный mpirun -n 4 ./program
, я получаю:
please enter the number of numbers to sum:
500000
[federico-C660:9540] *** An error occurred in MPI_Recv
[federico-C660:9540] *** on communicator MPI_COMM_WORLD
[federico-C660:9540] *** MPI_ERR_TRUNCATE: message truncated
[federico-C660:9540] *** MPI_ERRORS_ARE_FATAL (your MPI job will now abort)
sum 7812562500.0000000 calculated by root process.
--------------------------------------------------------------------------
mpirun has exited due to process rank 1 with PID 9539 on
node XXXXX1 exiting without calling "finalize".
Я также описал аналогичную проблему для программы C здесь. То же самое с 2 и 3 процессорами.
Может ли кто-нибудь помочь мне понять, в чем проблема? Я предполагаю, что я сделал ошибку в вызове MPI_RECV, связанном с «отправителем».