Actual source code: dlregisvec.c
1: #define PETSCVEC_DLL
3: #include petscvec.h
4: #include petscpf.h
16: const char *NormTypes[] = {"1","2","FROBENIUS","INFINITY","1_AND_2","NormType","NORM_",0};
20: /*@C
21: VecInitializePackage - This function initializes everything in the Vec package. It is called
22: from PetscDLLibraryRegister() when using dynamic libraries, and on the first call to VecCreate()
23: when using static libraries.
25: Input Parameter:
26: path - The dynamic library path, or PETSC_NULL
28: Level: developer
30: .keywords: Vec, initialize, package
31: .seealso: PetscInitialize()
32: @*/
33: PetscErrorCode PETSCVEC_DLLEXPORT VecInitializePackage(char *path)
34: {
35: static PetscTruth initialized = PETSC_FALSE;
36: char logList[256];
37: char *className;
38: PetscTruth opt;
39: PetscErrorCode ierr;
42: if (initialized) return(0);
43: initialized = PETSC_TRUE;
44: /* Register Classes */
45: PetscLogClassRegister(&IS_COOKIE, "Index Set");
46: PetscLogClassRegister(&MAP_COOKIE, "Map");
47: PetscLogClassRegister(&VEC_COOKIE, "Vec");
48: PetscLogClassRegister(&VEC_SCATTER_COOKIE, "Vec Scatter");
49: PetscLogClassRegister(&PF_COOKIE, "PointFunction");
50: /* Register Constructors */
51: PetscMapRegisterAll(path);
52: VecRegisterAll(path);
53: PFRegisterAll(path);
54: /* Register Events */
55: PetscLogEventRegister(&VEC_View, "VecView", VEC_COOKIE);
56: PetscLogEventRegister(&VEC_Max, "VecMax", VEC_COOKIE);
57: PetscLogEventRegister(&VEC_Min, "VecMin", VEC_COOKIE);
58: PetscLogEventRegister(&VEC_DotBarrier, "VecDotBarrier", VEC_COOKIE);
59: PetscLogEventRegister(&VEC_Dot, "VecDot", VEC_COOKIE);
60: PetscLogEventRegister(&VEC_MDotBarrier, "VecMDotBarrier", VEC_COOKIE);
61: PetscLogEventRegister(&VEC_MDot, "VecMDot", VEC_COOKIE);
62: PetscLogEventRegister(&VEC_TDot, "VecTDot", VEC_COOKIE);
63: PetscLogEventRegister(&VEC_MTDot, "VecMTDot", VEC_COOKIE);
64: PetscLogEventRegister(&VEC_NormBarrier, "VecNormBarrier", VEC_COOKIE);
65: PetscLogEventRegister(&VEC_Norm, "VecNorm", VEC_COOKIE);
66: PetscLogEventRegister(&VEC_Scale, "VecScale", VEC_COOKIE);
67: PetscLogEventRegister(&VEC_Copy, "VecCopy", VEC_COOKIE);
68: PetscLogEventRegister(&VEC_Set, "VecSet", VEC_COOKIE);
69: PetscLogEventRegister(&VEC_AXPY, "VecAXPY", VEC_COOKIE);
70: PetscLogEventRegister(&VEC_AYPX, "VecAYPX", VEC_COOKIE);
71: PetscLogEventRegister(&VEC_WAXPY, "VecWAXPY", VEC_COOKIE);
72: PetscLogEventRegister(&VEC_MAXPY, "VecMAXPY", VEC_COOKIE);
73: PetscLogEventRegister(&VEC_Swap, "VecSwap", VEC_COOKIE);
74: PetscLogEventRegister(&VEC_AssemblyBegin, "VecAssemblyBegin", VEC_COOKIE);
75: PetscLogEventRegister(&VEC_AssemblyEnd, "VecAssemblyEnd", VEC_COOKIE);
76: PetscLogEventRegister(&VEC_PointwiseMult, "VecPointwiseMult", VEC_COOKIE);
77: PetscLogEventRegister(&VEC_SetValues, "VecSetValues", VEC_COOKIE);
78: PetscLogEventRegister(&VEC_Load, "VecLoad", VEC_COOKIE);
79: PetscLogEventRegister(&VEC_ScatterBarrier, "VecScatterBarrie", VEC_COOKIE);
80: PetscLogEventRegister(&VEC_ScatterBegin, "VecScatterBegin", VEC_COOKIE);
81: PetscLogEventRegister(&VEC_ScatterEnd, "VecScatterEnd", VEC_COOKIE);
82: PetscLogEventRegister(&VEC_SetRandom, "VecSetRandom", VEC_COOKIE);
83: PetscLogEventRegister(&VEC_ReduceArithmetic, "VecReduceArith", VEC_COOKIE);
84: PetscLogEventRegister(&VEC_ReduceBarrier, "VecReduceBarrier", VEC_COOKIE);
85: PetscLogEventRegister(&VEC_ReduceCommunication, "VecReduceComm", VEC_COOKIE);
86: PetscLogEventRegister(&VEC_Normalize, "VecNormalize", VEC_COOKIE);
87: /* Turn off high traffic events by default */
88: PetscLogEventSetActiveAll(VEC_DotBarrier, PETSC_FALSE);
89: PetscLogEventSetActiveAll(VEC_MDotBarrier, PETSC_FALSE);
90: PetscLogEventSetActiveAll(VEC_NormBarrier, PETSC_FALSE);
91: PetscLogEventSetActiveAll(VEC_SetValues, PETSC_FALSE);
92: PetscLogEventSetActiveAll(VEC_ScatterBarrier, PETSC_FALSE);
93: PetscLogEventSetActiveAll(VEC_ReduceBarrier, PETSC_FALSE);
94: /* Process info exclusions */
95: PetscOptionsGetString(PETSC_NULL, "-log_info_exclude", logList, 256, &opt);
96: if (opt) {
97: PetscStrstr(logList, "is", &className);
98: if (className) {
99: PetscLogInfoDeactivateClass(IS_COOKIE);
100: }
101: PetscStrstr(logList, "map", &className);
102: if (className) {
103: PetscLogInfoDeactivateClass(MAP_COOKIE);
104: }
105: PetscStrstr(logList, "vec", &className);
106: if (className) {
107: PetscLogInfoDeactivateClass(VEC_COOKIE);
108: }
109: }
110: /* Process summary exclusions */
111: PetscOptionsGetString(PETSC_NULL, "-log_summary_exclude", logList, 256, &opt);
112: if (opt) {
113: PetscStrstr(logList, "is", &className);
114: if (className) {
115: PetscLogEventDeactivateClass(IS_COOKIE);
116: }
117: PetscStrstr(logList, "map", &className);
118: if (className) {
119: PetscLogEventDeactivateClass(MAP_COOKIE);
120: }
121: PetscStrstr(logList, "vec", &className);
122: if (className) {
123: PetscLogEventDeactivateClass(VEC_COOKIE);
124: }
125: }
126: /* Special processing */
127: PetscOptionsHasName(PETSC_NULL, "-log_sync", &opt);
128: if (opt) {
129: PetscLogEventActivate(VEC_ScatterBarrier);
130: PetscLogEventActivate(VEC_NormBarrier);
131: PetscLogEventActivate(VEC_DotBarrier);
132: PetscLogEventActivate(VEC_MDotBarrier);
133: PetscLogEventActivate(VEC_ReduceBarrier);
134: }
136: /*
137: Create the special MPI reduction operation that may be used by VecNorm/DotBegin()
138: */
139: MPI_Op_create(PetscSplitReduction_Local,1,&PetscSplitReduction_Op);
140: MPI_Op_create(VecMax_Local,2,&VecMax_Local_Op);
141: MPI_Op_create(VecMin_Local,2,&VecMin_Local_Op);
142: return(0);
143: }
145: #ifdef PETSC_USE_DYNAMIC_LIBRARIES
149: /*
150: PetscDLLibraryRegister - This function is called when the dynamic library it is in is opened.
152: This one registers all the methods that are in the basic PETSc Vec library.
154: Input Parameter:
155: path - library path
156: */
157: PetscErrorCode PETSCVEC_DLLEXPORT PetscDLLibraryRegister_petscvec(char *path)
158: {
161: PetscInitializeNoArguments(); if (ierr) return 1;
164: /*
165: If we got here then PETSc was properly loaded
166: */
167: VecInitializePackage(path);
168: return(0);
169: }
172: #endif /* PETSC_USE_DYNAMIC_LIBRARIES */