1 #include <petsc/private/sfimpl.h> 2 3 static PetscBool PetscSFPackageInitialized = PETSC_FALSE; 4 5 PetscClassId PETSCSF_CLASSID; 6 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 16 /*@C 17 PetscSFInitializePackage - Initialize SF package 18 19 Logically Collective 20 21 Level: developer 22 23 .seealso: PetscSFFinalizePackage() 24 @*/ 25 PetscErrorCode PetscSFInitializePackage(void) 26 { 27 char logList[256]; 28 PetscBool opt,pkg; 29 PetscErrorCode ierr; 30 31 PetscFunctionBegin; 32 if (PetscSFPackageInitialized) PetscFunctionReturn(0); 33 PetscSFPackageInitialized = PETSC_TRUE; 34 /* Register Class */ 35 ierr = PetscClassIdRegister("Star Forest Graph", &PETSCSF_CLASSID);CHKERRQ(ierr); 36 /* Register Constructors */ 37 ierr = PetscSFRegisterAll();CHKERRQ(ierr); 38 /* Register Events */ 39 ierr = PetscLogEventRegister("SFSetGraph" , PETSCSF_CLASSID, &PETSCSF_SetGraph);CHKERRQ(ierr); 40 ierr = PetscLogEventRegister("SFSetUp" , PETSCSF_CLASSID, &PETSCSF_SetUp);CHKERRQ(ierr); 41 ierr = PetscLogEventRegister("SFBcastBegin" , PETSCSF_CLASSID, &PETSCSF_BcastBegin);CHKERRQ(ierr); 42 ierr = PetscLogEventRegister("SFBcastEnd" , PETSCSF_CLASSID, &PETSCSF_BcastEnd);CHKERRQ(ierr); 43 ierr = PetscLogEventRegister("SFReduceBegin" , PETSCSF_CLASSID, &PETSCSF_ReduceBegin);CHKERRQ(ierr); 44 ierr = PetscLogEventRegister("SFReduceEnd" , PETSCSF_CLASSID, &PETSCSF_ReduceEnd);CHKERRQ(ierr); 45 ierr = PetscLogEventRegister("SFFetchOpBegin" , PETSCSF_CLASSID, &PETSCSF_FetchAndOpBegin);CHKERRQ(ierr); 46 ierr = PetscLogEventRegister("SFFetchOpEnd" , PETSCSF_CLASSID, &PETSCSF_FetchAndOpEnd);CHKERRQ(ierr); 47 /* Process info exclusions */ 48 ierr = PetscOptionsGetString(NULL,NULL,"-info_exclude",logList,sizeof(logList),&opt);CHKERRQ(ierr); 49 if (opt) { 50 ierr = PetscStrInList("sf",logList,',',&pkg);CHKERRQ(ierr); 51 if (pkg) {ierr = PetscInfoDeactivateClass(PETSCSF_CLASSID);CHKERRQ(ierr);} 52 } 53 /* Process summary exclusions */ 54 ierr = PetscOptionsGetString(NULL,NULL,"-log_exclude",logList,sizeof(logList),&opt);CHKERRQ(ierr); 55 if (opt) { 56 ierr = PetscStrInList("sf",logList,',',&pkg);CHKERRQ(ierr); 57 if (pkg) {ierr = PetscLogEventDeactivateClass(PETSCSF_CLASSID);CHKERRQ(ierr);} 58 } 59 /* Register package finalizer */ 60 ierr = PetscRegisterFinalize(PetscSFFinalizePackage);CHKERRQ(ierr); 61 PetscFunctionReturn(0); 62 } 63 64 /*@C 65 PetscSFFinalizePackage - Finalize PetscSF package, it is called from PetscFinalize() 66 67 Logically Collective 68 69 Level: developer 70 71 .seealso: PetscSFInitializePackage() 72 @*/ 73 PetscErrorCode PetscSFFinalizePackage(void) 74 { 75 PetscErrorCode ierr; 76 77 PetscFunctionBegin; 78 ierr = PetscFunctionListDestroy(&PetscSFList);CHKERRQ(ierr); 79 PetscSFPackageInitialized = PETSC_FALSE; 80 PetscSFRegisterAllCalled = PETSC_FALSE; 81 PetscFunctionReturn(0); 82 } 83