Actual source code: dlregissf.c

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

  3: static PetscBool PetscSFPackageInitialized = PETSC_FALSE;

  5: PetscClassId PETSCSF_CLASSID;

  7: PetscLogEvent PETSCSF_SetGraph;
  8: PetscLogEvent PETSCSF_SetUp;
  9: PetscLogEvent PETSCSF_BcastBegin;
 10: PetscLogEvent PETSCSF_BcastEnd;
 11: PetscLogEvent PETSCSF_ReduceBegin;
 12: PetscLogEvent PETSCSF_ReduceEnd;
 13: PetscLogEvent PETSCSF_FetchAndOpBegin;
 14: PetscLogEvent PETSCSF_FetchAndOpEnd;
 15: PetscLogEvent PETSCSF_EmbedSF;
 16: PetscLogEvent PETSCSF_DistSect;
 17: PetscLogEvent PETSCSF_SectSF;
 18: PetscLogEvent PETSCSF_RemoteOff;
 19: PetscLogEvent PETSCSF_Pack;
 20: PetscLogEvent PETSCSF_Unpack;

 22: /*@C
 23:    PetscSFInitializePackage - Initialize `PetscSF` package

 25:    Logically Collective

 27:    Level: developer

 29: .seealso: `PetscSF`, `PetscSFFinalizePackage()`
 30: @*/
 31: PetscErrorCode PetscSFInitializePackage(void)
 32: {
 33:   char      logList[256];
 34:   PetscBool opt, pkg;

 36:   if (PetscSFPackageInitialized) return 0;
 37:   PetscSFPackageInitialized = PETSC_TRUE;
 38:   /* Register Class */
 39:   PetscClassIdRegister("Star Forest Graph", &PETSCSF_CLASSID);
 40:   /* Register Constructors */
 41:   PetscSFRegisterAll();
 42:   /* Register Events */
 43:   PetscLogEventRegister("SFSetGraph", PETSCSF_CLASSID, &PETSCSF_SetGraph);
 44:   PetscLogEventRegister("SFSetUp", PETSCSF_CLASSID, &PETSCSF_SetUp);
 45:   PetscLogEventRegister("SFBcastBegin", PETSCSF_CLASSID, &PETSCSF_BcastBegin);
 46:   PetscLogEventRegister("SFBcastEnd", PETSCSF_CLASSID, &PETSCSF_BcastEnd);
 47:   PetscLogEventRegister("SFReduceBegin", PETSCSF_CLASSID, &PETSCSF_ReduceBegin);
 48:   PetscLogEventRegister("SFReduceEnd", PETSCSF_CLASSID, &PETSCSF_ReduceEnd);
 49:   PetscLogEventRegister("SFFetchOpBegin", PETSCSF_CLASSID, &PETSCSF_FetchAndOpBegin);
 50:   PetscLogEventRegister("SFFetchOpEnd", PETSCSF_CLASSID, &PETSCSF_FetchAndOpEnd);
 51:   PetscLogEventRegister("SFCreateEmbed", PETSCSF_CLASSID, &PETSCSF_EmbedSF);
 52:   PetscLogEventRegister("SFDistSection", PETSCSF_CLASSID, &PETSCSF_DistSect);
 53:   PetscLogEventRegister("SFSectionSF", PETSCSF_CLASSID, &PETSCSF_SectSF);
 54:   PetscLogEventRegister("SFRemoteOff", PETSCSF_CLASSID, &PETSCSF_RemoteOff);
 55:   PetscLogEventRegister("SFPack", PETSCSF_CLASSID, &PETSCSF_Pack);
 56:   PetscLogEventRegister("SFUnpack", PETSCSF_CLASSID, &PETSCSF_Unpack);
 57:   /* Process Info */
 58:   {
 59:     PetscClassId classids[1];

 61:     classids[0] = PETSCSF_CLASSID;
 62:     PetscInfoProcessClass("sf", 1, classids);
 63:   }
 64:   /* Process summary exclusions */
 65:   PetscOptionsGetString(NULL, NULL, "-log_exclude", logList, sizeof(logList), &opt);
 66:   if (opt) {
 67:     PetscStrInList("sf", logList, ',', &pkg);
 68:     if (pkg) PetscLogEventExcludeClass(PETSCSF_CLASSID);
 69:   }
 70:   /* Register package finalizer */
 71:   PetscRegisterFinalize(PetscSFFinalizePackage);
 72:   return 0;
 73: }

 75: /*@C
 76:    PetscSFFinalizePackage - Finalize `PetscSF` package, it is called from `PetscFinalize()`

 78:    Logically Collective

 80:    Level: developer

 82: .seealso: `PetscSF`, `PetscSFInitializePackage()`
 83: @*/
 84: PetscErrorCode PetscSFFinalizePackage(void)
 85: {
 86:   PetscFunctionListDestroy(&PetscSFList);
 87:   PetscSFPackageInitialized = PETSC_FALSE;
 88:   PetscSFRegisterAllCalled  = PETSC_FALSE;
 89:   return 0;
 90: }