Date: 2022-03-31T04:46:08+00:00

Actual source code: devicereg.cxx

      1: #include <petsc/private/deviceimpl.h>

      3: static PetscBool PetscDevicePackageInitialized = PETSC_FALSE;

      5: /*@C
      6:   PetscDeviceFinalizePackage - This function cleans up all components of the PetscDevice package.
      7:   It is called from PetscFinalize().

      9:   Developer Notes:
     10:   This function is automatically registered to be called during PetscFinalize() by
     11:   PetscDeviceInitializePackage() so there should be no need to call it yourself.

     13:   Level: developer

     15: .seealso: PetscFinalize(), PetscDeviceInitializePackage()
     16: @*/
     17: PetscErrorCode PetscDeviceFinalizePackage(void)
     18: {
     19:   PetscDevicePackageInitialized = PETSC_FALSE;
     20:   return 0;
     21: }

     23: /*@C
     24:   PetscDeviceInitializePackage - This function initializes everything in the PetscDevice
     25:   package. It is called on the first call to PetscDeviceContextCreate() or PetscDeviceCreate()
     26:   when using shared or static libraries.

     28:   Level: developer

     30: .seealso: PetscInitialize(), PetscDeviceFinalizePackage(), PetscDeviceContextCreate(), PetscDeviceCreate()
     31: @*/
     32: PetscErrorCode PetscDeviceInitializePackage(void)
     33: {
     34:   if (PetscLikely(PetscDevicePackageInitialized)) return 0;
     36:   PetscDevicePackageInitialized = PETSC_TRUE;
     37:   PetscRegisterFinalize(PetscDeviceFinalizePackage);
     38:   return 0;
     39: }