嗨,对于带有多个.hp和.cpp文件的c ++中的大型mpi项目,应该有一个MPI_Finalize();在每个使用mpi函数的头文件或cpp文件的末尾?或者应该只在主cpp文件中的全局一个?这也适用于启动MPI
答案 0 :(得分:3)
MPI_Init()负责启动与其他进程的通信,因此您只想在可能的情况下调用一次。 MPI_Finalize()意味着你已经完成了MPI,并且不会再为该程序的其余部分调用MPI函数。
答案 1 :(得分:3)
[MPI_Init]必须在任何其他MPI例程之前调用。肯定是 最多叫一次;后续的电话是错误的(见 MPI_INITIALIZED)。
所有MPI程序必须包含对MPI_INIT的调用;这个例程必须是 在任何其他MPI例程(除了MPI_INITIALIZED)之前调用的是 调用。
[...]
[MPI_Finalize]清理所有MPI状态。调用此例程后,不会 可以调用MPI例程(甚至是MPI_INIT)。