MPI编码实践与大型项目MPI_Finalize();还是只有一个?

时间:2012-02-22 02:33:53

标签: c++ mpi

嗨,对于带有多个.hp和.cpp文件的c ++中的大型mpi项目,应该有一个MPI_Finalize();在每个使用mpi函数的头文件或cpp文件的末尾?或者应该只在主cpp文件中的全局一个?这也适用于启动MPI

2 个答案:

答案 0 :(得分:3)

MPI_Init()负责启动与其他进程的通信,因此您只想在可能的情况下调用一次。 MPI_Finalize()意味着你已经完成了MPI,并且不会再为该程序的其余部分调用MPI函数。

答案 1 :(得分:3)

来自MPI Reference

  

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

     

所有MPI程序必须包含对MPI_INIT的调用;这个例程必须是   在任何其他MPI例程(除了MPI_INITIALIZED)之前调用的是   调用。

     

[...]

     

[MPI_Finalize]清理所有MPI状态。调用此例程后,不会   可以调用MPI例程(甚至是MPI_INIT)。