MPI_Finalize和断言?

时间:2011-11-16 02:12:26

标签: c error-handling mpi

MPI规范要求在退出前调用每个线程中的MPI_Finalize。如何处理运行错误,如断言?

如果我assert(cond)cond评估为false,我就无法调用MPI_Finalize,因为正常的程序流程已更改。我应该自己抓住SIGABRTSIGSEGV和上帝知道什么,或者MPI库是否以某种方式处理这个问题?

1 个答案:

答案 0 :(得分:1)

编写自己的断言版本,在断言后调用MPI_Finalize。

#define MY_ASSERT(cond) do { \
    if (!cond) { \
        printf ("Assert (%s) failed at %s:%d\n", #cond, __FILE__, __LINE__); \
        MPI_finalize (); \
    } \
} while (0);

请注意,在任何情况下,作业中的其他MPI流程也需要达到最终确定。