MPI を使用して Fortran コードを並列化しました。共有ポイントでは、MPI_Isend を使用して、モデル内のすべてのプロセスからすべてのデータをバッファーに送信します。次に、各プロセスは MPI_Recv を使用して必要なデータを収集します。MPI_Recv がブロックされているため、各プロセスが計算に進む前に必要なデータを取得していることがわかります。したがって、MPI_Isend が提供するリクエスト コードを無視しました。保持していない整数に設定しました。MPI_Wait を呼び出すことはありません。コードを実行すると、反復ごとにより多くのメモリを消費していることに気付きます。これは、MPI_Wait を呼び出していないためではないかと考えています。ドキュメントでは、MPI_Wait は次のように述べています。
この要求に関連付けられた通信オブジェクトが非ブロッキングの送信または受信呼び出しによって作成された場合、オブジェクトはMPI_WAIT の呼び出しによって割り当てが解除 され、要求ハンドルは MPI_REQUEST_NULL に設定されます。
これが、実行中に私のプログラムがより多くのメモリを消費する理由だと思いますか?