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 char *className; 29 PetscBool opt; 30 PetscErrorCode ierr; 31 32 PetscFunctionBegin; 33 if (PetscSFPackageInitialized) PetscFunctionReturn(0); 34 PetscSFPackageInitialized = PETSC_TRUE; 35 36 ierr = PetscClassIdRegister("Star Forest Graph", &PETSCSF_CLASSID);CHKERRQ(ierr); 37 ierr = PetscSFRegisterAll();CHKERRQ(ierr); 38 /* Register all 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 = PetscStrstr(logList, "sf", &className);CHKERRQ(ierr); 51 if (className) { 52 ierr = PetscInfoDeactivateClass(PETSCSF_CLASSID);CHKERRQ(ierr); 53 } 54 } 55 /* Process summary exclusions */ 56 ierr = PetscOptionsGetString(NULL,NULL, "-log_exclude", logList, sizeof(logList), &opt);CHKERRQ(ierr); 57 if (opt) { 58 ierr = PetscStrstr(logList, "sf", &className);CHKERRQ(ierr); 59 if (className) { 60 ierr = PetscLogEventDeactivateClass(PETSCSF_CLASSID);CHKERRQ(ierr); 61 } 62 } 63 ierr = PetscRegisterFinalize(PetscSFFinalizePackage);CHKERRQ(ierr); 64 PetscFunctionReturn(0); 65 } 66 67 /*@C 68 PetscSFFinalizePackage - Finalize PetscSF package, it is called from PetscFinalize() 69 70 Logically Collective 71 72 Level: developer 73 74 .seealso: PetscSFInitializePackage() 75 @*/ 76 PetscErrorCode PetscSFFinalizePackage(void) 77 { 78 PetscErrorCode ierr; 79 80 PetscFunctionBegin; 81 ierr = PetscFunctionListDestroy(&PetscSFList);CHKERRQ(ierr); 82 PetscSFPackageInitialized = PETSC_FALSE; 83 PetscSFRegisterAllCalled = PETSC_FALSE; 84 PetscFunctionReturn(0); 85 } 86