在下面的代码的值xysize
得到改变,如果我不声明它作为一个参数(我一般不能做的)。 它只会发生在gfortran 4.7.2和1.6的openmpi优化-02等。 这怎么可能? 我无法找到确切的界面,我从进口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