MPI规范要求在退出前调用每个线程中的MPI_Finalize
。如何处理运行错误,如断言?
如果我assert(cond)
和cond
评估为false,我就无法调用MPI_Finalize
,因为正常的程序流程已更改。我应该自己抓住SIGABRT
,SIGSEGV
和上帝知道什么,或者MPI库是否以某种方式处理这个问题?
答案 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流程也需要达到最终确定。