特にFortranのMPIでは、ルートプロセスでのみ配列を定義することは可能であり、良い選択ですか? たとえば、次のようなものです。
program test
implicit none
include 'mpif.h'
all mpi_init(ierr)
call mpi_comm_rank(mpi_comm_world,myid,ierr)
call mpi_comm_size(mpi_comm_world,numproc,ierr)
if (myid .eq. 0) then
complex(8), dimension(:,:), allocatable :: array
end if
...
if (myid .eq. 0) then
allocate(array(2,2))
end if
...
end program
ご想像のとおり、私はすでにこれを試しましたが、Fortran 宣言が一番上にある必要があるため、機能しません。しかし、私はこれを回避する方法を望んでいましたか?
このように、配列も私の「仮想」メモリを食べませんか?それとも私は何かを誤解していますか?