私の 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
、プログラムがハングアップし、適切にファイナライズされないことに気付きました。
私の質問は、ルート プロセッサでプログラムを終了する適切な方法は何ですか?