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