xref: /petsc/src/vec/is/sf/interface/dlregissf.c (revision cd62000487352d7c447823794a883667dfb859d7)
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;
113482bfa8SJunchao Zhang PetscLogEvent PETSCSF_BcastAndOpBegin;
123482bfa8SJunchao Zhang PetscLogEvent PETSCSF_BcastAndOpEnd;
1329046d53SLisandro Dalcin PetscLogEvent PETSCSF_ReduceBegin;
1429046d53SLisandro Dalcin PetscLogEvent PETSCSF_ReduceEnd;
1529046d53SLisandro Dalcin PetscLogEvent PETSCSF_FetchAndOpBegin;
1629046d53SLisandro Dalcin PetscLogEvent PETSCSF_FetchAndOpEnd;
17524e35f8SStefano Zampini PetscLogEvent PETSCSF_EmbedSF;
18524e35f8SStefano Zampini PetscLogEvent PETSCSF_DistSect;
19524e35f8SStefano Zampini PetscLogEvent PETSCSF_SectSF;
20524e35f8SStefano Zampini PetscLogEvent PETSCSF_RemoteOff;
21*cd620004SJunchao Zhang PetscLogEvent PETSCSF_Pack;
22*cd620004SJunchao Zhang PetscLogEvent PETSCSF_Unpack;
2395fce210SBarry Smith 
2495fce210SBarry Smith /*@C
2595fce210SBarry Smith    PetscSFInitializePackage - Initialize SF package
2695fce210SBarry Smith 
2795fce210SBarry Smith    Logically Collective
2895fce210SBarry Smith 
2995fce210SBarry Smith    Level: developer
3095fce210SBarry Smith 
3195fce210SBarry Smith .seealso: PetscSFFinalizePackage()
3295fce210SBarry Smith @*/
33607a6623SBarry Smith PetscErrorCode PetscSFInitializePackage(void)
3495fce210SBarry Smith {
3529046d53SLisandro Dalcin   char           logList[256];
368e81d068SLisandro Dalcin   PetscBool      opt,pkg;
3795fce210SBarry Smith   PetscErrorCode ierr;
3895fce210SBarry Smith 
3995fce210SBarry Smith   PetscFunctionBegin;
4095fce210SBarry Smith   if (PetscSFPackageInitialized) PetscFunctionReturn(0);
4195fce210SBarry Smith   PetscSFPackageInitialized = PETSC_TRUE;
428e81d068SLisandro Dalcin   /* Register Class */
433c2f6d5dSBarry Smith   ierr = PetscClassIdRegister("Star Forest Graph", &PETSCSF_CLASSID);CHKERRQ(ierr);
448e81d068SLisandro Dalcin   /* Register Constructors */
45607a6623SBarry Smith   ierr = PetscSFRegisterAll();CHKERRQ(ierr);
468e81d068SLisandro Dalcin   /* Register Events */
47acd23793SJed Brown   ierr = PetscLogEventRegister("SFSetGraph"     , PETSCSF_CLASSID, &PETSCSF_SetGraph);CHKERRQ(ierr);
4829046d53SLisandro Dalcin   ierr = PetscLogEventRegister("SFSetUp"        , PETSCSF_CLASSID, &PETSCSF_SetUp);CHKERRQ(ierr);
49acd23793SJed Brown   ierr = PetscLogEventRegister("SFBcastBegin"   , PETSCSF_CLASSID, &PETSCSF_BcastBegin);CHKERRQ(ierr);
50acd23793SJed Brown   ierr = PetscLogEventRegister("SFBcastEnd"     , PETSCSF_CLASSID, &PETSCSF_BcastEnd);CHKERRQ(ierr);
513482bfa8SJunchao Zhang   ierr = PetscLogEventRegister("SFBcastOpBegin" , PETSCSF_CLASSID, &PETSCSF_BcastAndOpBegin);CHKERRQ(ierr);
523482bfa8SJunchao Zhang   ierr = PetscLogEventRegister("SFBcastOpEnd"   , PETSCSF_CLASSID, &PETSCSF_BcastAndOpEnd);CHKERRQ(ierr);
53acd23793SJed Brown   ierr = PetscLogEventRegister("SFReduceBegin"  , PETSCSF_CLASSID, &PETSCSF_ReduceBegin);CHKERRQ(ierr);
54acd23793SJed Brown   ierr = PetscLogEventRegister("SFReduceEnd"    , PETSCSF_CLASSID, &PETSCSF_ReduceEnd);CHKERRQ(ierr);
55acd23793SJed Brown   ierr = PetscLogEventRegister("SFFetchOpBegin" , PETSCSF_CLASSID, &PETSCSF_FetchAndOpBegin);CHKERRQ(ierr);
56acd23793SJed Brown   ierr = PetscLogEventRegister("SFFetchOpEnd"   , PETSCSF_CLASSID, &PETSCSF_FetchAndOpEnd);CHKERRQ(ierr);
57524e35f8SStefano Zampini   ierr = PetscLogEventRegister("SFCreateEmbed"  , PETSCSF_CLASSID, &PETSCSF_EmbedSF);CHKERRQ(ierr);
58524e35f8SStefano Zampini   ierr = PetscLogEventRegister("SFDistSection"  , PETSCSF_CLASSID, &PETSCSF_DistSect);CHKERRQ(ierr);
59524e35f8SStefano Zampini   ierr = PetscLogEventRegister("SFSectionSF"    , PETSCSF_CLASSID, &PETSCSF_SectSF);CHKERRQ(ierr);
60524e35f8SStefano Zampini   ierr = PetscLogEventRegister("SFRemoteOff"    , PETSCSF_CLASSID, &PETSCSF_RemoteOff);CHKERRQ(ierr);
61*cd620004SJunchao Zhang   ierr = PetscLogEventRegister("SFPack"         , PETSCSF_CLASSID, &PETSCSF_Pack);CHKERRQ(ierr);
62*cd620004SJunchao Zhang   ierr = PetscLogEventRegister("SFUnpack"       , PETSCSF_CLASSID, &PETSCSF_Unpack);CHKERRQ(ierr);
6329046d53SLisandro Dalcin   /* Process info exclusions */
6429046d53SLisandro Dalcin   ierr = PetscOptionsGetString(NULL,NULL,"-info_exclude",logList,sizeof(logList),&opt);CHKERRQ(ierr);
6529046d53SLisandro Dalcin   if (opt) {
668e81d068SLisandro Dalcin     ierr = PetscStrInList("sf",logList,',',&pkg);CHKERRQ(ierr);
678e81d068SLisandro Dalcin     if (pkg) {ierr = PetscInfoDeactivateClass(PETSCSF_CLASSID);CHKERRQ(ierr);}
6829046d53SLisandro Dalcin   }
6929046d53SLisandro Dalcin   /* Process summary exclusions */
7029046d53SLisandro Dalcin   ierr = PetscOptionsGetString(NULL,NULL,"-log_exclude",logList,sizeof(logList),&opt);CHKERRQ(ierr);
7129046d53SLisandro Dalcin   if (opt) {
728e81d068SLisandro Dalcin     ierr = PetscStrInList("sf",logList,',',&pkg);CHKERRQ(ierr);
73fa2bb9feSLisandro Dalcin     if (pkg) {ierr = PetscLogEventExcludeClass(PETSCSF_CLASSID);CHKERRQ(ierr);}
7429046d53SLisandro Dalcin   }
758e81d068SLisandro Dalcin   /* Register package finalizer */
7695fce210SBarry Smith   ierr = PetscRegisterFinalize(PetscSFFinalizePackage);CHKERRQ(ierr);
7795fce210SBarry Smith   PetscFunctionReturn(0);
7895fce210SBarry Smith }
7995fce210SBarry Smith 
8095fce210SBarry Smith /*@C
8195fce210SBarry Smith    PetscSFFinalizePackage - Finalize PetscSF package, it is called from PetscFinalize()
8295fce210SBarry Smith 
8395fce210SBarry Smith    Logically Collective
8495fce210SBarry Smith 
8595fce210SBarry Smith    Level: developer
8695fce210SBarry Smith 
8795fce210SBarry Smith .seealso: PetscSFInitializePackage()
8895fce210SBarry Smith @*/
8995fce210SBarry Smith PetscErrorCode PetscSFFinalizePackage(void)
9095fce210SBarry Smith {
9137e93019SBarry Smith   PetscErrorCode ierr;
9295fce210SBarry Smith 
9395fce210SBarry Smith   PetscFunctionBegin;
9437e93019SBarry Smith   ierr = PetscFunctionListDestroy(&PetscSFList);CHKERRQ(ierr);
9595fce210SBarry Smith   PetscSFPackageInitialized = PETSC_FALSE;
9693ef888dSBarry Smith   PetscSFRegisterAllCalled  = PETSC_FALSE;
9795fce210SBarry Smith   PetscFunctionReturn(0);
9895fce210SBarry Smith }
99