The only way to do it is to put a broadcast after the call to METIS on
process 0 and have all the other processes wait for the result; if not 1 then
all processes call PetscFinalize() that the same time.
Barry
> On Nov 1, 2018, at 11:48 AM, Paula Sanematsu via petsc-users
> <[email protected]> wrote:
>
> Hi,
>
> I have a Fortran code that calls an external function only at the root
> processor. If this external function returns an error code that indicates
> that it failed, then I call PetscFinalize() only at the root processor. For
> example:
>
> if(rank==0) then
> metis_call_status = METIS_SetDefaultOptions(opts)
> if( metis_call_status /= 1 ) then
> call PetscFinalize(ierr)
> stop
> end if
> end if
>
> I noticed that this will cause the other processors to "hang". I don't want
> to change the Metis call. Do you have a suggestion on how to propagate
> PetscFinalize to other processors? Or another solution?
>
> Thank you,
>
> Paula