大型项目的MPI编码实践多个MPI_Finalize();或者只是一个

MPI coding practices with large projects multiple MPI_Finalize(); or just one?

本文关键字:MPI 或者 一个 编码 大型项目 Finalize      更新时间:2023-10-16

Hi对于c++中具有多个.hp和.cpp文件的大型mpi项目,是否应该有mpi_Finalize();在每个使用mpi函数的头文件或cpp文件的末尾?还是应该在主cpp文件中只存在全局一个?这也与MPI以及的启动有关

MPI_Init()负责启动与其他进程的通信,因此如果可能,您只想调用一次。MPI_Finalize()表示您已经完成了MPI,并且不会再为程序的其余部分调用任何MPI函数。

来自MPI参考:

[MPI_Init]必须在任何其他MPI例程之前调用。一定是最多调用一次;后续调用是错误的(请参阅MPI_INITIALIZED)。

所有MPI程序都必须包含对MPI_INIT的调用;该例程必须在调用任何其他MPI例程(MPI_INITIALIZED除外)之前调用呼叫。

[…]

[MPI_Finalize]清除所有MPI状态。一旦调用此例程,否可以调用MPI例程(甚至MPI_INIT)。