[petsc-dev] Avoid use of static in PETSc functions

Jed Brown jedbrown at mcs.anl.gov
Fri Nov 16 22:05:53 CST 2012

The particular instance of caching for performance might be able to be
removed after


since it removed several lookups and indirections.

The caching was always an ugly beast due to the ABA problem.

On Thu, Nov 15, 2012 at 7:56 PM, Barry Smith <bsmith at mcs.anl.gov> wrote:

>    PetscInitialize() and PetscFinalize() are reentrant. These means that
> one can call them several times in the same program (one must call
> MPI_Int() and MPI_Finalize() explicitly outside of these calls.
>    This means that PetscFinalize() should leave the data in the code in an
> equivalent  state as before the first PetscInitialize() is called.
>     I just spent a couple hours banging my head against the wall due to
> two static variables in a function placed there on the assumption that
> PETSc was not reentrant.
>     Please use static inside PETSc functions very carefully (if ever) and
> make sure they don't destroy the reentrancy.
>     Thanks
>      Barry
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20121116/f0d7bfa6/attachment.html>

More information about the petsc-dev mailing list