我正在使用MPI,并且在某些时候想要使用STOP(或其他方法)来退出程序并显示错误消息。
现在,我正在做这样的事情:
STOP 'Error'
但我有一种感觉,我做错了什么。我需要先调用MPI_FINALIZE吗?还有其他事情要做吗?
答案 0 :(得分:9)
在灾难性错误情况下,退出的常用方法是call MPI_Abort(MPI_COMM_WORLD, errcode, ierr)
。在大多数实现中,这将终止所有任务。在不太激烈的情况下,您可以确保所有任务都知道条件,然后使用MPI_Finalize
更优雅地激发它们。
答案 1 :(得分:6)
看看MPI_Abort:
MPI_ABORT的行为 (comm,errorcode),对于其他通讯,然后是MPI_COMM_WORLD, 是依赖于实现的。另一方面,打电话给 MPI_ABORT(MPI_COMM_WORLD,错误代码)应始终引起所有 MPI_COMM_WORLD组中的流程将中止。
答案 2 :(得分:0)
在NERSC超级计算机上进行测试,我发现
call MPI_FINALIZE(ierr)
stop
无法停止整个程序。以下作品:
call MPI_Abort(MPI_COMM_WORLD, errcode, ierr)
stop