Actual source code: dlregis.c
1: /*$Id: dlregis.c,v 1.19 2001/03/23 23:24:34 balay Exp $*/
3: #include petscvec.h
4: #include petscpf.h
8: /*@C
9: VecInitializePackage - This function initializes everything in the Vec package. It is called
10: from PetscDLLibraryRegister() when using dynamic libraries, and on the first call to VecCreate()
11: when using static libraries.
13: Input Parameter:
14: path - The dynamic library path, or PETSC_NULL
16: Level: developer
18: .keywords: Vec, initialize, package
19: .seealso: PetscInitialize()
20: @*/
21: int VecInitializePackage(char *path) {
22: static PetscTruth initialized = PETSC_FALSE;
23: char logList[256];
24: char *className;
25: PetscTruth opt;
26: int ierr;
29: if (initialized == PETSC_TRUE) return(0);
30: initialized = PETSC_TRUE;
31: /* Register Classes */
32: PetscLogClassRegister(&IS_COOKIE, "Index Set");
33: PetscLogClassRegister(&MAP_COOKIE, "Map");
34: PetscLogClassRegister(&VEC_COOKIE, "Vec");
35: PetscLogClassRegister(&VEC_SCATTER_COOKIE, "Vec Scatter");
36: PetscLogClassRegister(&PF_COOKIE, "PointFunction");
37: /* Register Constructors */
38: PetscMapRegisterAll(path);
39: VecRegisterAll(path);
40: PFRegisterAll(path);
41: /* Register Events */
42: PetscLogEventRegister(&VEC_View, "VecView", VEC_COOKIE);
43: PetscLogEventRegister(&VEC_Max, "VecMax", VEC_COOKIE);
44: PetscLogEventRegister(&VEC_Min, "VecMin", VEC_COOKIE);
45: PetscLogEventRegister(&VEC_DotBarrier, "VecDotBarrier", VEC_COOKIE);
46: PetscLogEventRegister(&VEC_Dot, "VecDot", VEC_COOKIE);
47: PetscLogEventRegister(&VEC_MDotBarrier, "VecMDotBarrier", VEC_COOKIE);
48: PetscLogEventRegister(&VEC_MDot, "VecMDot", VEC_COOKIE);
49: PetscLogEventRegister(&VEC_TDot, "VecTDot", VEC_COOKIE);
50: PetscLogEventRegister(&VEC_MTDot, "VecMTDot", VEC_COOKIE);
51: PetscLogEventRegister(&VEC_NormBarrier, "VecNormBarrier", VEC_COOKIE);
52: PetscLogEventRegister(&VEC_Norm, "VecNorm", VEC_COOKIE);
53: PetscLogEventRegister(&VEC_Scale, "VecScale", VEC_COOKIE);
54: PetscLogEventRegister(&VEC_Copy, "VecCopy", VEC_COOKIE);
55: PetscLogEventRegister(&VEC_Set, "VecSet", VEC_COOKIE);
56: PetscLogEventRegister(&VEC_AXPY, "VecAXPY", VEC_COOKIE);
57: PetscLogEventRegister(&VEC_AYPX, "VecAYPX", VEC_COOKIE);
58: PetscLogEventRegister(&VEC_WAXPY, "VecWAXPY", VEC_COOKIE);
59: PetscLogEventRegister(&VEC_MAXPY, "VecMAXPY", VEC_COOKIE);
60: PetscLogEventRegister(&VEC_Swap, "VecSwap", VEC_COOKIE);
61: PetscLogEventRegister(&VEC_AssemblyBegin, "VecAssemblyBegin", VEC_COOKIE);
62: PetscLogEventRegister(&VEC_AssemblyEnd, "VecAssemblyEnd", VEC_COOKIE);
63: PetscLogEventRegister(&VEC_PointwiseMult, "VecPointwiseMult", VEC_COOKIE);
64: PetscLogEventRegister(&VEC_SetValues, "VecSetValues", VEC_COOKIE);
65: PetscLogEventRegister(&VEC_Load, "VecLoad", VEC_COOKIE);
66: PetscLogEventRegister(&VEC_ScatterBarrier, "VecScatterBarrie", VEC_COOKIE);
67: PetscLogEventRegister(&VEC_ScatterBegin, "VecScatterBegin", VEC_COOKIE);
68: PetscLogEventRegister(&VEC_ScatterEnd, "VecScatterEnd", VEC_COOKIE);
69: PetscLogEventRegister(&VEC_SetRandom, "VecSetRandom", VEC_COOKIE);
70: PetscLogEventRegister(&VEC_ReduceArithmetic, "VecReduceArith", VEC_COOKIE);
71: PetscLogEventRegister(&VEC_ReduceBarrier, "VecReduceBarrier", VEC_COOKIE);
72: PetscLogEventRegister(&VEC_ReduceCommunication, "VecReduceComm", VEC_COOKIE);
73: PetscLogEventRegister(&VEC_Normalize, "VecNormalize", VEC_COOKIE);
74: /* Turn off high traffic events by default */
75: PetscLogEventSetActiveAll(VEC_DotBarrier, PETSC_FALSE);
76: PetscLogEventSetActiveAll(VEC_MDotBarrier, PETSC_FALSE);
77: PetscLogEventSetActiveAll(VEC_NormBarrier, PETSC_FALSE);
78: PetscLogEventSetActiveAll(VEC_SetValues, PETSC_FALSE);
79: PetscLogEventSetActiveAll(VEC_ScatterBarrier, PETSC_FALSE);
80: PetscLogEventSetActiveAll(VEC_ReduceBarrier, PETSC_FALSE);
81: /* Process info exclusions */
82: PetscOptionsGetString(PETSC_NULL, "-log_info_exclude", logList, 256, &opt);
83: if (opt == PETSC_TRUE) {
84: PetscStrstr(logList, "is", &className);
85: if (className) {
86: PetscLogInfoDeactivateClass(IS_COOKIE);
87: }
88: PetscStrstr(logList, "map", &className);
89: if (className) {
90: PetscLogInfoDeactivateClass(MAP_COOKIE);
91: }
92: PetscStrstr(logList, "vec", &className);
93: if (className) {
94: PetscLogInfoDeactivateClass(VEC_COOKIE);
95: }
96: }
97: /* Process summary exclusions */
98: PetscOptionsGetString(PETSC_NULL, "-log_summary_exclude", logList, 256, &opt);
99: if (opt == PETSC_TRUE) {
100: PetscStrstr(logList, "is", &className);
101: if (className) {
102: PetscLogEventDeactivateClass(IS_COOKIE);
103: }
104: PetscStrstr(logList, "map", &className);
105: if (className) {
106: PetscLogEventDeactivateClass(MAP_COOKIE);
107: }
108: PetscStrstr(logList, "vec", &className);
109: if (className) {
110: PetscLogEventDeactivateClass(VEC_COOKIE);
111: }
112: }
113: /* Special processing */
114: PetscOptionsHasName(PETSC_NULL, "-log_sync", &opt);
115: if (opt == PETSC_TRUE) {
116: PetscLogEventActivate(VEC_ScatterBarrier);
117: PetscLogEventActivate(VEC_NormBarrier);
118: PetscLogEventActivate(VEC_DotBarrier);
119: PetscLogEventActivate(VEC_MDotBarrier);
120: PetscLogEventActivate(VEC_ReduceBarrier);
121: }
122: return(0);
123: }
125: #ifdef PETSC_USE_DYNAMIC_LIBRARIES
126: EXTERN_C_BEGIN
129: /*
130: PetscDLLibraryRegister - This function is called when the dynamic library it is in is opened.
132: This one registers all the methods that are in the basic PETSc Vec library.
134: Input Parameter:
135: path - library path
136: */
137: int PetscDLLibraryRegister(char *path)
138: {
141: PetscInitializeNoArguments(); if (ierr) return 1;
144: /*
145: If we got here then PETSc was properly loaded
146: */
147: VecInitializePackage(path);
148: return(0);
149: }
150: EXTERN_C_END
152: /* --------------------------------------------------------------------------*/
153: static const char *contents = "PETSc Vector library. \n";
154: static const char *authors = PETSC_AUTHOR_INFO;
156: #include src/sys/src/utils/dlregis.h
158: #endif /* PETSC_USE_DYNAMIC_LIBRARIES */