MPI程序的断言功能

时间:2018-05-24 23:15:08

标签: parallel-processing multiprocessing mpi assert

我必须验证MPI程序中某些数据的状态。该程序将在具有分布式内存系统的超级计算机上运行。对C标准的断言函数的快速研究表明,断言内部使用abort()函数进行程序终止。我还没有找到关于abort()如何在多进程程序上工作的信息,特别是在MPI的上下文中 - 它与POSIX环境非常不同。 abort()只会终止调用它的进程,还是可以终止所有进程?

最后,如果条件失败,我将如何真正终止MPI程序的所有进程? MPI库中是否有内置断言?

1 个答案:

答案 0 :(得分:3)

abort()仅终止调用它的MPI任务。

很可能会被mpirun和/或资源管理器检测到,并在此之后终止所有MPI作业(例如,所有节点上的所有MPI任务)。

话虽这么说,这是依赖于库/系统的,你应该先仔细检查一下。

终止MPI工作的正确方法是

MPI_Abort(MPI_COMM_WORLD, errorcode)

errorcodeint,通常会被赋予严格正值。