次のコードでは、値をxysize
パラメーターとして宣言しないと (通常はできません)、 の値が変更されます。これは、gfortran 4.7.2 および OpenMPI 1.6 の -O2 などの最適化でのみ発生します。それはどのように可能ですか?からインポートした正確なインターフェイスを見つけることができませんmpi.mod
が、C プロトタイプには が値渡しされることが明確に記載されてcount
いるため、変更できません。
write(*,*) im,"receiving from",image_index([iim,jim,kim+1]),"size",&
size(D%A(D%starti:D%endi,D%startj:D%endj,D%endk)),xysize
call MPI_RECV(D%A(D%starti:D%endi,D%startj:D%endj,D%endk+1),xysize , MPI_REAL, image_index([iim,jim,kim+1])-1,&
5000, comm, status, ierr)
write(*,*) im,"received size",&
size(D%A(D%starti:D%endi,D%startj:D%endj,D%endk)),xysize
出力:
1 receiving from 2 size 4096 4096
1 received size 4096 5000