首页 > 解决方案 > 如何仅从根处理器调用 PetscFinalize?

问题描述

在我的 Fortran 程序中,我只根处理器调用外部函数。我进行了一些检查以确保该功能正常工作。如果它不起作用,那么我stop程序并调用PetscFinalize. 例如:

if(rank==0) then
   call_status = external_function(x)

   ! function failed
   if (call_status/=1) then
      write(6,*) "external_function failed"
      call PetscFinalize(ierr)
      stop
   end if
end if

但是,我注意到在运行时,如果出现错误external_function,程序会挂起并且没有正确完成。

我的问题是:在根处理器处终止程序的适当方法是什么?

标签: petsc

解决方案


调用退出。PetscFinalize(ierr) 不是为停止程序而设计的。


推荐阅读