如何在 bash 中检查 mpi 代码是否成功?

How to check is a mpi code success or not in bash?

我想在bash.运行中自动检查很多可执行文件运行成功与否。

假设我有一个可执行文件 a.out

我可以在bash中通过

检查它是否成功
./a.out
if [ "$?" -ne "0" ]; then
    echo "code error!"
fi

如果可执行文件运行由mpi

mpirun -np 4 ./a.out // run the code by 4 processes

我无法用上面同样的方法检查可执行文件是否正常。因为在这种情况下 $? 表示 mpirun 是否成功。

那么如何在 bash 中检查 mpi 代码是否成功?

提前致谢。

编写良好的 MPI 程序应该 - 成功后:让所有任务调用 MPI_Finalize() 并结束 exit(0) - 失败时:调用 MPI_Abort() 并以非零错误代码结束 exit(rc)(注意很可能 MPI_Abort() 单个 MPI 任务将中止整个作业,即使 exit() 永远不会被调用。

然后由 MPI 库决定 mpirun 成功时以零错误状态退出,失败时以非零错误状态退出。

归根结底,如果a.out写得好,是不是MPI应用程序都没有关系。