大型项目的MPI编码实践多个MPI_Finalize();或者只是一个
MPI coding practices with large projects multiple MPI_Finalize(); or just one?
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)。
相关文章:
- 用MacOS Mojave编译C++:致命错误:mpi.h:没有这样的文件或目录
- MPI突然停止了对多个核心的操作
- 地图计数确实很重要,或者只是检查是否存在
- 设置 Visual Studio for MPI: 找不到标识符错误
- 错误 C2679:二进制"<<":未找到采用类型 'std::string_view' 的右侧操作数的运算符(或者没有可接受的转换)
- 使用 make 编译 MPI,几个命名空间错误,例如"错误:未知类型名称'使用'?
- 如何使用 MPI 的远程内存访问 (RMA) 功能并行化数据聚合?
- 为什么文件不是由 F 流创建的,或者即使它是输出只是垃圾值?
- 重载 MPI 中的运算符 ()
- C2678 二进制 '==':未找到采用 'Card' 类型左操作数的运算符(或者没有可接受的转换)
- 使用宏编译时使用用户定义的数学函数,或者仅使用 c++ 中标准数学库中的函数
- MPI:检查是否有任何进程已终止
- 使用 pybind11 共享 MPI 通信器
- 使用 CMake,Microsoft MPI 和 Visual Studio 2017 找不到 mpi.h
- 在具有 MPI 的超立方体中广播
- 通过 mpi 发送 c++ 标准::矢量<bool>
- 如何仅使用一次固定<<设置精度(2)?或者至少恢复到默认行为?
- 使用 MPI 的 C++ 中的并行 for 循环
- 如何将 OpenMP 和 MPI 导入到大型 CLion CMake 项目中?
- 大型项目的MPI编码实践多个MPI_Finalize();或者只是一个