我使用 MPI 并行化了 Fortran 代码。在共享点,我使用 MPI_Isend 从模型中的所有进程将所有数据发送到缓冲区。然后,每个进程使用 MPI_Recv 收集它需要的数据。由于 MPI_Recv 是阻塞的,我知道每个进程在继续计算之前都在获取它需要的数据。因此,我只是忽略了 MPI_Isend 给我的请求代码。我将它设置为一些我不保留的整数。我从不调用 MPI_Wait。当我运行我的代码时,我注意到它在每次迭代时都会占用更多的内存,我想知道是不是因为我没有调用 MPI_Wait,因为在文档中,MPI_Wait 说:
如果与此请求关联的通信对象是由非阻塞发送或接收调用创建的,则通过调用 MPI_WAIT释放对象 ,并将请求句柄设置为 MPI_REQUEST_NULL。
你认为这就是我的程序在整个运行过程中消耗更多内存的原因吗?