xref: /petsc/src/vec/is/sf/interface/dlregissf.c (revision cab5436489e834181b0ebe29f8c17afa2aa8e653)
1af0996ceSBarry Smith #include <petsc/private/sfimpl.h>
295fce210SBarry Smith 
395fce210SBarry Smith static PetscBool PetscSFPackageInitialized = PETSC_FALSE;
495fce210SBarry Smith 
529046d53SLisandro Dalcin PetscClassId PETSCSF_CLASSID;
629046d53SLisandro Dalcin 
729046d53SLisandro Dalcin PetscLogEvent PETSCSF_SetGraph;
829046d53SLisandro Dalcin PetscLogEvent PETSCSF_SetUp;
929046d53SLisandro Dalcin PetscLogEvent PETSCSF_BcastBegin;
1029046d53SLisandro Dalcin PetscLogEvent PETSCSF_BcastEnd;
1129046d53SLisandro Dalcin PetscLogEvent PETSCSF_ReduceBegin;
1229046d53SLisandro Dalcin PetscLogEvent PETSCSF_ReduceEnd;
1329046d53SLisandro Dalcin PetscLogEvent PETSCSF_FetchAndOpBegin;
1429046d53SLisandro Dalcin PetscLogEvent PETSCSF_FetchAndOpEnd;
15524e35f8SStefano Zampini PetscLogEvent PETSCSF_EmbedSF;
16524e35f8SStefano Zampini PetscLogEvent PETSCSF_DistSect;
17524e35f8SStefano Zampini PetscLogEvent PETSCSF_SectSF;
18524e35f8SStefano Zampini PetscLogEvent PETSCSF_RemoteOff;
19cd620004SJunchao Zhang PetscLogEvent PETSCSF_Pack;
20cd620004SJunchao Zhang PetscLogEvent PETSCSF_Unpack;
2195fce210SBarry Smith 
2295fce210SBarry Smith /*@C
23*cab54364SBarry Smith    PetscSFInitializePackage - Initialize `PetscSF` package
2495fce210SBarry Smith 
2595fce210SBarry Smith    Logically Collective
2695fce210SBarry Smith 
2795fce210SBarry Smith    Level: developer
2895fce210SBarry Smith 
29*cab54364SBarry Smith .seealso: `PetscSF`, `PetscSFFinalizePackage()`
3095fce210SBarry Smith @*/
31d71ae5a4SJacob Faibussowitsch PetscErrorCode PetscSFInitializePackage(void)
32d71ae5a4SJacob Faibussowitsch {
3329046d53SLisandro Dalcin   char      logList[256];
348e81d068SLisandro Dalcin   PetscBool opt, pkg;
3595fce210SBarry Smith 
3695fce210SBarry Smith   PetscFunctionBegin;
3795fce210SBarry Smith   if (PetscSFPackageInitialized) PetscFunctionReturn(0);
3895fce210SBarry Smith   PetscSFPackageInitialized = PETSC_TRUE;
398e81d068SLisandro Dalcin   /* Register Class */
409566063dSJacob Faibussowitsch   PetscCall(PetscClassIdRegister("Star Forest Graph", &PETSCSF_CLASSID));
418e81d068SLisandro Dalcin   /* Register Constructors */
429566063dSJacob Faibussowitsch   PetscCall(PetscSFRegisterAll());
438e81d068SLisandro Dalcin   /* Register Events */
449566063dSJacob Faibussowitsch   PetscCall(PetscLogEventRegister("SFSetGraph", PETSCSF_CLASSID, &PETSCSF_SetGraph));
459566063dSJacob Faibussowitsch   PetscCall(PetscLogEventRegister("SFSetUp", PETSCSF_CLASSID, &PETSCSF_SetUp));
469566063dSJacob Faibussowitsch   PetscCall(PetscLogEventRegister("SFBcastBegin", PETSCSF_CLASSID, &PETSCSF_BcastBegin));
479566063dSJacob Faibussowitsch   PetscCall(PetscLogEventRegister("SFBcastEnd", PETSCSF_CLASSID, &PETSCSF_BcastEnd));
489566063dSJacob Faibussowitsch   PetscCall(PetscLogEventRegister("SFReduceBegin", PETSCSF_CLASSID, &PETSCSF_ReduceBegin));
499566063dSJacob Faibussowitsch   PetscCall(PetscLogEventRegister("SFReduceEnd", PETSCSF_CLASSID, &PETSCSF_ReduceEnd));
509566063dSJacob Faibussowitsch   PetscCall(PetscLogEventRegister("SFFetchOpBegin", PETSCSF_CLASSID, &PETSCSF_FetchAndOpBegin));
519566063dSJacob Faibussowitsch   PetscCall(PetscLogEventRegister("SFFetchOpEnd", PETSCSF_CLASSID, &PETSCSF_FetchAndOpEnd));
529566063dSJacob Faibussowitsch   PetscCall(PetscLogEventRegister("SFCreateEmbed", PETSCSF_CLASSID, &PETSCSF_EmbedSF));
539566063dSJacob Faibussowitsch   PetscCall(PetscLogEventRegister("SFDistSection", PETSCSF_CLASSID, &PETSCSF_DistSect));
549566063dSJacob Faibussowitsch   PetscCall(PetscLogEventRegister("SFSectionSF", PETSCSF_CLASSID, &PETSCSF_SectSF));
559566063dSJacob Faibussowitsch   PetscCall(PetscLogEventRegister("SFRemoteOff", PETSCSF_CLASSID, &PETSCSF_RemoteOff));
569566063dSJacob Faibussowitsch   PetscCall(PetscLogEventRegister("SFPack", PETSCSF_CLASSID, &PETSCSF_Pack));
579566063dSJacob Faibussowitsch   PetscCall(PetscLogEventRegister("SFUnpack", PETSCSF_CLASSID, &PETSCSF_Unpack));
58e94e781bSJacob Faibussowitsch   /* Process Info */
59e94e781bSJacob Faibussowitsch   {
60e94e781bSJacob Faibussowitsch     PetscClassId classids[1];
61e94e781bSJacob Faibussowitsch 
62e94e781bSJacob Faibussowitsch     classids[0] = PETSCSF_CLASSID;
639566063dSJacob Faibussowitsch     PetscCall(PetscInfoProcessClass("sf", 1, classids));
6429046d53SLisandro Dalcin   }
6529046d53SLisandro Dalcin   /* Process summary exclusions */
669566063dSJacob Faibussowitsch   PetscCall(PetscOptionsGetString(NULL, NULL, "-log_exclude", logList, sizeof(logList), &opt));
6729046d53SLisandro Dalcin   if (opt) {
689566063dSJacob Faibussowitsch     PetscCall(PetscStrInList("sf", logList, ',', &pkg));
699566063dSJacob Faibussowitsch     if (pkg) PetscCall(PetscLogEventExcludeClass(PETSCSF_CLASSID));
7029046d53SLisandro Dalcin   }
718e81d068SLisandro Dalcin   /* Register package finalizer */
729566063dSJacob Faibussowitsch   PetscCall(PetscRegisterFinalize(PetscSFFinalizePackage));
7395fce210SBarry Smith   PetscFunctionReturn(0);
7495fce210SBarry Smith }
7595fce210SBarry Smith 
7695fce210SBarry Smith /*@C
77*cab54364SBarry Smith    PetscSFFinalizePackage - Finalize `PetscSF` package, it is called from `PetscFinalize()`
7895fce210SBarry Smith 
7995fce210SBarry Smith    Logically Collective
8095fce210SBarry Smith 
8195fce210SBarry Smith    Level: developer
8295fce210SBarry Smith 
83*cab54364SBarry Smith .seealso: `PetscSF`, `PetscSFInitializePackage()`
8495fce210SBarry Smith @*/
85d71ae5a4SJacob Faibussowitsch PetscErrorCode PetscSFFinalizePackage(void)
86d71ae5a4SJacob Faibussowitsch {
8795fce210SBarry Smith   PetscFunctionBegin;
889566063dSJacob Faibussowitsch   PetscCall(PetscFunctionListDestroy(&PetscSFList));
8995fce210SBarry Smith   PetscSFPackageInitialized = PETSC_FALSE;
9093ef888dSBarry Smith   PetscSFRegisterAllCalled  = PETSC_FALSE;
9195fce210SBarry Smith   PetscFunctionReturn(0);
9295fce210SBarry Smith }
93