Actual source code: dlregissf.c
1: #include <petsc/private/sfimpl.h>
3: static PetscBool PetscSFPackageInitialized = PETSC_FALSE;
5: PetscClassId PETSCSF_CLASSID;
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: PetscLogEvent PETSCSF_EmbedSF;
16: PetscLogEvent PETSCSF_DistSect;
17: PetscLogEvent PETSCSF_SectSF;
18: PetscLogEvent PETSCSF_RemoteOff;
19: PetscLogEvent PETSCSF_Pack;
20: PetscLogEvent PETSCSF_Unpack;
22: /*@C
23: PetscSFInitializePackage - Initialize `PetscSF` package
25: Logically Collective
27: Level: developer
29: .seealso: `PetscSF`, `PetscSFFinalizePackage()`
30: @*/
31: PetscErrorCode PetscSFInitializePackage(void)
32: {
33: char logList[256];
34: PetscBool opt, pkg;
36: if (PetscSFPackageInitialized) return 0;
37: PetscSFPackageInitialized = PETSC_TRUE;
38: /* Register Class */
39: PetscClassIdRegister("Star Forest Graph", &PETSCSF_CLASSID);
40: /* Register Constructors */
41: PetscSFRegisterAll();
42: /* Register Events */
43: PetscLogEventRegister("SFSetGraph", PETSCSF_CLASSID, &PETSCSF_SetGraph);
44: PetscLogEventRegister("SFSetUp", PETSCSF_CLASSID, &PETSCSF_SetUp);
45: PetscLogEventRegister("SFBcastBegin", PETSCSF_CLASSID, &PETSCSF_BcastBegin);
46: PetscLogEventRegister("SFBcastEnd", PETSCSF_CLASSID, &PETSCSF_BcastEnd);
47: PetscLogEventRegister("SFReduceBegin", PETSCSF_CLASSID, &PETSCSF_ReduceBegin);
48: PetscLogEventRegister("SFReduceEnd", PETSCSF_CLASSID, &PETSCSF_ReduceEnd);
49: PetscLogEventRegister("SFFetchOpBegin", PETSCSF_CLASSID, &PETSCSF_FetchAndOpBegin);
50: PetscLogEventRegister("SFFetchOpEnd", PETSCSF_CLASSID, &PETSCSF_FetchAndOpEnd);
51: PetscLogEventRegister("SFCreateEmbed", PETSCSF_CLASSID, &PETSCSF_EmbedSF);
52: PetscLogEventRegister("SFDistSection", PETSCSF_CLASSID, &PETSCSF_DistSect);
53: PetscLogEventRegister("SFSectionSF", PETSCSF_CLASSID, &PETSCSF_SectSF);
54: PetscLogEventRegister("SFRemoteOff", PETSCSF_CLASSID, &PETSCSF_RemoteOff);
55: PetscLogEventRegister("SFPack", PETSCSF_CLASSID, &PETSCSF_Pack);
56: PetscLogEventRegister("SFUnpack", PETSCSF_CLASSID, &PETSCSF_Unpack);
57: /* Process Info */
58: {
59: PetscClassId classids[1];
61: classids[0] = PETSCSF_CLASSID;
62: PetscInfoProcessClass("sf", 1, classids);
63: }
64: /* Process summary exclusions */
65: PetscOptionsGetString(NULL, NULL, "-log_exclude", logList, sizeof(logList), &opt);
66: if (opt) {
67: PetscStrInList("sf", logList, ',', &pkg);
68: if (pkg) PetscLogEventExcludeClass(PETSCSF_CLASSID);
69: }
70: /* Register package finalizer */
71: PetscRegisterFinalize(PetscSFFinalizePackage);
72: return 0;
73: }
75: /*@C
76: PetscSFFinalizePackage - Finalize `PetscSF` package, it is called from `PetscFinalize()`
78: Logically Collective
80: Level: developer
82: .seealso: `PetscSF`, `PetscSFInitializePackage()`
83: @*/
84: PetscErrorCode PetscSFFinalizePackage(void)
85: {
86: PetscFunctionListDestroy(&PetscSFList);
87: PetscSFPackageInitialized = PETSC_FALSE;
88: PetscSFRegisterAllCalled = PETSC_FALSE;
89: return 0;
90: }