使用MPI正确停止的方法

时间:2010-12-16 22:36:30

标签: fortran mpi

我正在使用MPI,并且在某些时候想要使用STOP(或其他方法)来退出程序并显示错误消息。

现在,我正在做这样的事情:

STOP 'Error'

但我有一种感觉,我做错了什么。我需要先调用MPI_FINALIZE吗?还有其他事情要做吗?

3 个答案:

答案 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