xref: /petsc/src/vec/is/sf/interface/dlregissf.c (revision 29046d5344efe75540424556535089496c551ef5)
1af0996ceSBarry Smith #include <petsc/private/sfimpl.h>
295fce210SBarry Smith 
395fce210SBarry Smith static PetscBool PetscSFPackageInitialized = PETSC_FALSE;
495fce210SBarry Smith 
5*29046d53SLisandro Dalcin PetscClassId  PETSCSF_CLASSID;
6*29046d53SLisandro Dalcin 
7*29046d53SLisandro Dalcin PetscLogEvent PETSCSF_SetGraph;
8*29046d53SLisandro Dalcin PetscLogEvent PETSCSF_SetUp;
9*29046d53SLisandro Dalcin PetscLogEvent PETSCSF_BcastBegin;
10*29046d53SLisandro Dalcin PetscLogEvent PETSCSF_BcastEnd;
11*29046d53SLisandro Dalcin PetscLogEvent PETSCSF_ReduceBegin;
12*29046d53SLisandro Dalcin PetscLogEvent PETSCSF_ReduceEnd;
13*29046d53SLisandro Dalcin PetscLogEvent PETSCSF_FetchAndOpBegin;
14*29046d53SLisandro Dalcin PetscLogEvent PETSCSF_FetchAndOpEnd;
1595fce210SBarry Smith 
1695fce210SBarry Smith /*@C
1795fce210SBarry Smith    PetscSFInitializePackage - Initialize SF package
1895fce210SBarry Smith 
1995fce210SBarry Smith    Logically Collective
2095fce210SBarry Smith 
2195fce210SBarry Smith    Level: developer
2295fce210SBarry Smith 
2395fce210SBarry Smith .seealso: PetscSFFinalizePackage()
2495fce210SBarry Smith @*/
25607a6623SBarry Smith PetscErrorCode PetscSFInitializePackage(void)
2695fce210SBarry Smith {
27*29046d53SLisandro Dalcin   char           logList[256];
28*29046d53SLisandro Dalcin   char           *className;
29*29046d53SLisandro Dalcin   PetscBool      opt;
3095fce210SBarry Smith   PetscErrorCode ierr;
3195fce210SBarry Smith 
3295fce210SBarry Smith   PetscFunctionBegin;
3395fce210SBarry Smith   if (PetscSFPackageInitialized) PetscFunctionReturn(0);
3495fce210SBarry Smith   PetscSFPackageInitialized = PETSC_TRUE;
3595fce210SBarry Smith 
363c2f6d5dSBarry Smith   ierr = PetscClassIdRegister("Star Forest Graph", &PETSCSF_CLASSID);CHKERRQ(ierr);
37607a6623SBarry Smith   ierr = PetscSFRegisterAll();CHKERRQ(ierr);
38*29046d53SLisandro Dalcin   /* Register all events */
39acd23793SJed Brown   ierr = PetscLogEventRegister("SFSetGraph"     , PETSCSF_CLASSID, &PETSCSF_SetGraph);CHKERRQ(ierr);
40*29046d53SLisandro Dalcin   ierr = PetscLogEventRegister("SFSetUp"        , PETSCSF_CLASSID, &PETSCSF_SetUp);CHKERRQ(ierr);
41acd23793SJed Brown   ierr = PetscLogEventRegister("SFBcastBegin"   , PETSCSF_CLASSID, &PETSCSF_BcastBegin);CHKERRQ(ierr);
42acd23793SJed Brown   ierr = PetscLogEventRegister("SFBcastEnd"     , PETSCSF_CLASSID, &PETSCSF_BcastEnd);CHKERRQ(ierr);
43acd23793SJed Brown   ierr = PetscLogEventRegister("SFReduceBegin"  , PETSCSF_CLASSID, &PETSCSF_ReduceBegin);CHKERRQ(ierr);
44acd23793SJed Brown   ierr = PetscLogEventRegister("SFReduceEnd"    , PETSCSF_CLASSID, &PETSCSF_ReduceEnd);CHKERRQ(ierr);
45acd23793SJed Brown   ierr = PetscLogEventRegister("SFFetchOpBegin" , PETSCSF_CLASSID, &PETSCSF_FetchAndOpBegin);CHKERRQ(ierr);
46acd23793SJed Brown   ierr = PetscLogEventRegister("SFFetchOpEnd"   , PETSCSF_CLASSID, &PETSCSF_FetchAndOpEnd);CHKERRQ(ierr);
47*29046d53SLisandro Dalcin   /* Process info exclusions */
48*29046d53SLisandro Dalcin   ierr = PetscOptionsGetString(NULL,NULL, "-info_exclude", logList, sizeof(logList), &opt);CHKERRQ(ierr);
49*29046d53SLisandro Dalcin   if (opt) {
50*29046d53SLisandro Dalcin     ierr = PetscStrstr(logList, "sf", &className);CHKERRQ(ierr);
51*29046d53SLisandro Dalcin     if (className) {
52*29046d53SLisandro Dalcin       ierr = PetscInfoDeactivateClass(PETSCSF_CLASSID);CHKERRQ(ierr);
53*29046d53SLisandro Dalcin     }
54*29046d53SLisandro Dalcin   }
55*29046d53SLisandro Dalcin   /* Process summary exclusions */
56*29046d53SLisandro Dalcin   ierr = PetscOptionsGetString(NULL,NULL, "-log_exclude", logList, sizeof(logList), &opt);CHKERRQ(ierr);
57*29046d53SLisandro Dalcin   if (opt) {
58*29046d53SLisandro Dalcin     ierr = PetscStrstr(logList, "sf", &className);CHKERRQ(ierr);
59*29046d53SLisandro Dalcin     if (className) {
60*29046d53SLisandro Dalcin       ierr = PetscLogEventDeactivateClass(PETSCSF_CLASSID);CHKERRQ(ierr);
61*29046d53SLisandro Dalcin     }
62*29046d53SLisandro Dalcin   }
6395fce210SBarry Smith   ierr = PetscRegisterFinalize(PetscSFFinalizePackage);CHKERRQ(ierr);
6495fce210SBarry Smith   PetscFunctionReturn(0);
6595fce210SBarry Smith }
6695fce210SBarry Smith 
6795fce210SBarry Smith /*@C
6895fce210SBarry Smith    PetscSFFinalizePackage - Finalize PetscSF package, it is called from PetscFinalize()
6995fce210SBarry Smith 
7095fce210SBarry Smith    Logically Collective
7195fce210SBarry Smith 
7295fce210SBarry Smith    Level: developer
7395fce210SBarry Smith 
7495fce210SBarry Smith .seealso: PetscSFInitializePackage()
7595fce210SBarry Smith @*/
7695fce210SBarry Smith PetscErrorCode PetscSFFinalizePackage(void)
7795fce210SBarry Smith {
7837e93019SBarry Smith   PetscErrorCode ierr;
7995fce210SBarry Smith 
8095fce210SBarry Smith   PetscFunctionBegin;
8137e93019SBarry Smith   ierr = PetscFunctionListDestroy(&PetscSFList);CHKERRQ(ierr);
8295fce210SBarry Smith   PetscSFPackageInitialized = PETSC_FALSE;
8393ef888dSBarry Smith   PetscSFRegisterAllCalled  = PETSC_FALSE;
8495fce210SBarry Smith   PetscFunctionReturn(0);
8595fce210SBarry Smith }
86