如何在 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应用程序都没有关系。
我想在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应用程序都没有关系。