MPI_SEND对超大阵列不起作用

这是一个代码演示。

program main
  use mpi
  implicit none
  real(8) :: a(5,1201,200)
  integer(4) :: ierr,my_id,num_procs,status(MPI_STATUS_SIZE)

  call MPI_INIT(ierr)
  call MPI_COMM_RANK(MPI_COMM_WORLD,ierr)
  call MPI_COMM_SIZE(MPI_COMM_WORLD,ierr)

  a=1.0

  if(my_id<num_procs-1) then
    call MPI_SEND(a(1,1,1),5*1201*2,MPI_DOUBLE_PRECISION,my_id+1,10,MPI_COMM_WORLD,ierr)
  elseif(my_id==num_procs-1) then
    call MPI_SEND(a(1,ierr)
  endif

  if(my_id>0) then
    call MPI_RECV(a(1,my_id-1,status,ierr)
  elseif(my_id==0) then
    call MPI_RECV(a(1,num_procs-1,ierr)
  endif

  call MPI_FINALIZE(ierr)
end program

当我在命令窗口中使用多个处理器运行代码时,它就挂在那里。但是,如果我在代码演示中将所有的“ 1201”更改为“ 601”,它就会通过。有没有一种方法可以使用MPI函数发送大尺寸的数组?

wuliangshow 回答:MPI_SEND对超大阵列不起作用

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3073227.html

大家都在问