我正在使用Fortran90编写代码,其中我将作业分开,每个处理器调用一个子程序,该子程序又返回一个非常大的数组(10 ^ 10)。
为此我定义了没有。如
integer,parameter::my_type_int = selected_int_kind(16)
integer(kind=my_type_int)::n
然后在root中定义,
call mpi_type_create_f90_integer(16,type_int,err)
call mpi_type_commit(type_int,err)
我使用`allocate'在所有处理器中分配数组以及子程序,接收或发送数据如下,
call mpi_send(n,1,type_int,id,send_data_tag,mpi_comm_world,err)
和数组发送如下,
call mpi_send(array,n,mpi_real8,root_process,return_data_tag,mpi_comm_world,err)
代码完美无缺,直到10 ^ 7,但是它给出了n 10 ^ 8及以上的跟随误差,
mpirun noticed that process rank 0 with PID 6053 on node *clustername* exited on signal 9 (Killed).
我很困惑,因为我不会改变代码中的任何内容,它适用于较小的数字,而分解为较大的数字。请帮忙。