相关疑难解决方法(0)

MPI_Recv 覆盖它不应访问的部分内存

在下面的代码中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
Run Code Online (Sandbox Code Playgroud)

输出:

1 receiving from           2 size        4096        4096
1 received size        4096        5000
Run Code Online (Sandbox Code Playgroud)

fortran mpi

2
推荐指数
1
解决办法
678
查看次数

标签 统计

fortran ×1

mpi ×1