File: | sys/logging/plog.c |
Warning: | line 1726, column 76 The left operand of '/' is a garbage value |
[?] Use j/k keys for keyboard navigation
1 | ||||
2 | /* | |||
3 | PETSc code to log object creation and destruction and PETSc events. | |||
4 | ||||
5 | This provides the public API used by the rest of PETSc and by users. | |||
6 | ||||
7 | These routines use a private API that is not used elsewhere in PETSc and is not | |||
8 | accessible to users. The private API is defined in logimpl.h and the utils directory. | |||
9 | ||||
10 | */ | |||
11 | #include <petsc/private/logimpl.h> /*I "petscsys.h" I*/ | |||
12 | #include <petsctime.h> | |||
13 | #include <petscviewer.h> | |||
14 | ||||
15 | PetscErrorCode PetscLogObjectParent(PetscObject p,PetscObject c) | |||
16 | { | |||
17 | if (!c || !p) return 0; | |||
18 | c->parent = p; | |||
19 | c->parentid = p->id; | |||
20 | return 0; | |||
21 | } | |||
22 | ||||
23 | /*@C | |||
24 | PetscLogObjectMemory - Adds to an object a count of additional amount of memory that is used by the object. | |||
25 | ||||
26 | Not collective. | |||
27 | ||||
28 | Input Parameters: | |||
29 | + obj - the PETSc object | |||
30 | - mem - the amount of memory that is being added to the object | |||
31 | ||||
32 | Level: developer | |||
33 | ||||
34 | Developer Notes: | |||
35 | Currently we do not always do a good job of associating all memory allocations with an object. | |||
36 | ||||
37 | .seealso: PetscFinalize(), PetscInitializeFortran(), PetscGetArgs(), PetscInitializeNoArguments() | |||
38 | ||||
39 | @*/ | |||
40 | PetscErrorCode PetscLogObjectMemory(PetscObject p,PetscLogDouble m) | |||
41 | { | |||
42 | if (!p) return 0; | |||
43 | p->mem += m; | |||
44 | return 0; | |||
45 | } | |||
46 | ||||
47 | PetscLogEvent PETSC_LARGEST_EVENT = PETSC_EVENT1311311; | |||
48 | ||||
49 | #if defined(PETSC_USE_LOG1) | |||
50 | #include <petscmachineinfo.h> | |||
51 | #include <petscconfiginfo.h> | |||
52 | ||||
53 | /* used in the MPI_XXX() count macros in petsclog.h */ | |||
54 | ||||
55 | /* Action and object logging variables */ | |||
56 | Action *petsc_actions = NULL((void*)0); | |||
57 | Object *petsc_objects = NULL((void*)0); | |||
58 | PetscBool petsc_logActions = PETSC_FALSE; | |||
59 | PetscBool petsc_logObjects = PETSC_FALSE; | |||
60 | int petsc_numActions = 0, petsc_maxActions = 100; | |||
61 | int petsc_numObjects = 0, petsc_maxObjects = 100; | |||
62 | int petsc_numObjectsDestroyed = 0; | |||
63 | ||||
64 | /* Global counters */ | |||
65 | PetscLogDouble petsc_BaseTime = 0.0; | |||
66 | PetscLogDouble petsc_TotalFlops = 0.0; /* The number of flops */ | |||
67 | PetscLogDouble petsc_tmp_flops = 0.0; /* The incremental number of flops */ | |||
68 | PetscLogDouble petsc_send_ct = 0.0; /* The number of sends */ | |||
69 | PetscLogDouble petsc_recv_ct = 0.0; /* The number of receives */ | |||
70 | PetscLogDouble petsc_send_len = 0.0; /* The total length of all sent messages */ | |||
71 | PetscLogDouble petsc_recv_len = 0.0; /* The total length of all received messages */ | |||
72 | PetscLogDouble petsc_isend_ct = 0.0; /* The number of immediate sends */ | |||
73 | PetscLogDouble petsc_irecv_ct = 0.0; /* The number of immediate receives */ | |||
74 | PetscLogDouble petsc_isend_len = 0.0; /* The total length of all immediate send messages */ | |||
75 | PetscLogDouble petsc_irecv_len = 0.0; /* The total length of all immediate receive messages */ | |||
76 | PetscLogDouble petsc_wait_ct = 0.0; /* The number of waits */ | |||
77 | PetscLogDouble petsc_wait_any_ct = 0.0; /* The number of anywaits */ | |||
78 | PetscLogDouble petsc_wait_all_ct = 0.0; /* The number of waitalls */ | |||
79 | PetscLogDouble petsc_sum_of_waits_ct = 0.0; /* The total number of waits */ | |||
80 | PetscLogDouble petsc_allreduce_ct = 0.0; /* The number of reductions */ | |||
81 | PetscLogDouble petsc_gather_ct = 0.0; /* The number of gathers and gathervs */ | |||
82 | PetscLogDouble petsc_scatter_ct = 0.0; /* The number of scatters and scattervs */ | |||
83 | #if defined(PETSC_HAVE_VIENNACL) || defined(PETSC_HAVE_CUDA) | |||
84 | PetscLogDouble petsc_ctog_ct = 0.0; /* The total number of CPU to GPU copies */ | |||
85 | PetscLogDouble petsc_gtoc_ct = 0.0; /* The total number of GPU to CPU copies */ | |||
86 | PetscLogDouble petsc_ctog_sz = 0.0; /* The total size of CPU to GPU copies */ | |||
87 | PetscLogDouble petsc_gtoc_sz = 0.0; /* The total size of GPU to CPU copies */ | |||
88 | #endif | |||
89 | ||||
90 | /* Logging functions */ | |||
91 | PetscErrorCode (*PetscLogPHC)(PetscObject) = NULL((void*)0); | |||
92 | PetscErrorCode (*PetscLogPHD)(PetscObject) = NULL((void*)0); | |||
93 | PetscErrorCode (*PetscLogPLB)(PetscLogEvent, int, PetscObject, PetscObject, PetscObject, PetscObject) = NULL((void*)0); | |||
94 | PetscErrorCode (*PetscLogPLE)(PetscLogEvent, int, PetscObject, PetscObject, PetscObject, PetscObject) = NULL((void*)0); | |||
95 | ||||
96 | /* Tracing event logging variables */ | |||
97 | FILE *petsc_tracefile = NULL((void*)0); | |||
98 | int petsc_tracelevel = 0; | |||
99 | const char *petsc_traceblanks = " "; | |||
100 | char petsc_tracespace[128] = " "; | |||
101 | PetscLogDouble petsc_tracetime = 0.0; | |||
102 | static PetscBool PetscLogInitializeCalled = PETSC_FALSE; | |||
103 | ||||
104 | PETSC_INTERNextern __attribute__((visibility ("hidden"))) PetscErrorCode PetscLogInitialize(void) | |||
105 | { | |||
106 | int stage; | |||
107 | PetscBool opt; | |||
108 | PetscErrorCode ierr; | |||
109 | ||||
110 | PetscFunctionBegindo { do { ; if (petscstack && (petscstack->currentsize < 64)) { petscstack->function[petscstack->currentsize ] = __func__; petscstack->file[petscstack->currentsize] = "/sandbox/petsc/petsc.next/src/sys/logging/plog.c"; petscstack ->line[petscstack->currentsize] = 110; petscstack->petscroutine [petscstack->currentsize] = PETSC_TRUE; petscstack->currentsize ++; } if (petscstack) { petscstack->hotdepth += (PETSC_FALSE || petscstack->hotdepth); } ; } while (0); ; } while (0); | |||
111 | if (PetscLogInitializeCalled) PetscFunctionReturn(0)do { do { ; if (petscstack && petscstack->currentsize > 0) { petscstack->currentsize--; petscstack->function [petscstack->currentsize] = 0; petscstack->file[petscstack ->currentsize] = 0; petscstack->line[petscstack->currentsize ] = 0; petscstack->petscroutine[petscstack->currentsize ] = PETSC_FALSE; } if (petscstack) { petscstack->hotdepth = (((petscstack->hotdepth-1)<(0)) ? (0) : (petscstack-> hotdepth-1)); } ; } while (0); return(0);} while (0); | |||
112 | PetscLogInitializeCalled = PETSC_TRUE; | |||
113 | ||||
114 | ierr = PetscOptionsHasName(NULL((void*)0),NULL((void*)0), "-log_exclude_actions", &opt);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),114,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
115 | if (opt) petsc_logActions = PETSC_FALSE; | |||
116 | ierr = PetscOptionsHasName(NULL((void*)0),NULL((void*)0), "-log_exclude_objects", &opt);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),116,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
117 | if (opt) petsc_logObjects = PETSC_FALSE; | |||
118 | if (petsc_logActions) { | |||
119 | ierr = PetscMalloc1(petsc_maxActions, &petsc_actions)PetscMallocA(1,PETSC_FALSE,119,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,(size_t)(petsc_maxActions)*sizeof(**(&petsc_actions)),(& petsc_actions));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),119,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
120 | } | |||
121 | if (petsc_logObjects) { | |||
122 | ierr = PetscMalloc1(petsc_maxObjects, &petsc_objects)PetscMallocA(1,PETSC_FALSE,122,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,(size_t)(petsc_maxObjects)*sizeof(**(&petsc_objects)),(& petsc_objects));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),122,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
123 | } | |||
124 | PetscLogPHC = PetscLogObjCreateDefault; | |||
125 | PetscLogPHD = PetscLogObjDestroyDefault; | |||
126 | /* Setup default logging structures */ | |||
127 | ierr = PetscStageLogCreate(&petsc_stageLog);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),127,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
128 | ierr = PetscStageLogRegister(petsc_stageLog, "Main Stage", &stage);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),128,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
129 | ||||
130 | /* All processors sync here for more consistent logging */ | |||
131 | ierr = MPI_Barrier(PETSC_COMM_WORLD);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),131,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
132 | PetscTime(&petsc_BaseTime); | |||
133 | ierr = PetscLogStagePush(stage);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),133,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
134 | PetscFunctionReturn(0)do { do { ; if (petscstack && petscstack->currentsize > 0) { petscstack->currentsize--; petscstack->function [petscstack->currentsize] = 0; petscstack->file[petscstack ->currentsize] = 0; petscstack->line[petscstack->currentsize ] = 0; petscstack->petscroutine[petscstack->currentsize ] = PETSC_FALSE; } if (petscstack) { petscstack->hotdepth = (((petscstack->hotdepth-1)<(0)) ? (0) : (petscstack-> hotdepth-1)); } ; } while (0); return(0);} while (0); | |||
135 | } | |||
136 | ||||
137 | PETSC_INTERNextern __attribute__((visibility ("hidden"))) PetscErrorCode PetscLogFinalize(void) | |||
138 | { | |||
139 | PetscStageLog stageLog; | |||
140 | PetscErrorCode ierr; | |||
141 | ||||
142 | PetscFunctionBegindo { do { ; if (petscstack && (petscstack->currentsize < 64)) { petscstack->function[petscstack->currentsize ] = __func__; petscstack->file[petscstack->currentsize] = "/sandbox/petsc/petsc.next/src/sys/logging/plog.c"; petscstack ->line[petscstack->currentsize] = 142; petscstack->petscroutine [petscstack->currentsize] = PETSC_TRUE; petscstack->currentsize ++; } if (petscstack) { petscstack->hotdepth += (PETSC_FALSE || petscstack->hotdepth); } ; } while (0); ; } while (0); | |||
143 | ierr = PetscFree(petsc_actions)((*PetscTrFree)((void*)(petsc_actions),143,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ) || ((petsc_actions) = 0,0));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),143,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
144 | ierr = PetscFree(petsc_objects)((*PetscTrFree)((void*)(petsc_objects),144,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ) || ((petsc_objects) = 0,0));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),144,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
145 | ierr = PetscLogNestedEnd();CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),145,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
146 | ierr = PetscLogSet(NULL((void*)0), NULL((void*)0));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),146,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
147 | ||||
148 | /* Resetting phase */ | |||
149 | ierr = PetscLogGetStageLog(&stageLog);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),149,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
150 | ierr = PetscStageLogDestroy(stageLog);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),150,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
151 | ||||
152 | petsc_TotalFlops = 0.0; | |||
153 | petsc_numActions = 0; | |||
154 | petsc_numObjects = 0; | |||
155 | petsc_numObjectsDestroyed = 0; | |||
156 | petsc_maxActions = 100; | |||
157 | petsc_maxObjects = 100; | |||
158 | petsc_actions = NULL((void*)0); | |||
159 | petsc_objects = NULL((void*)0); | |||
160 | petsc_logActions = PETSC_FALSE; | |||
161 | petsc_logObjects = PETSC_FALSE; | |||
162 | petsc_BaseTime = 0.0; | |||
163 | petsc_TotalFlops = 0.0; | |||
164 | petsc_tmp_flops = 0.0; | |||
165 | petsc_send_ct = 0.0; | |||
166 | petsc_recv_ct = 0.0; | |||
167 | petsc_send_len = 0.0; | |||
168 | petsc_recv_len = 0.0; | |||
169 | petsc_isend_ct = 0.0; | |||
170 | petsc_irecv_ct = 0.0; | |||
171 | petsc_isend_len = 0.0; | |||
172 | petsc_irecv_len = 0.0; | |||
173 | petsc_wait_ct = 0.0; | |||
174 | petsc_wait_any_ct = 0.0; | |||
175 | petsc_wait_all_ct = 0.0; | |||
176 | petsc_sum_of_waits_ct = 0.0; | |||
177 | petsc_allreduce_ct = 0.0; | |||
178 | petsc_gather_ct = 0.0; | |||
179 | petsc_scatter_ct = 0.0; | |||
180 | #if defined(PETSC_HAVE_VIENNACL) || defined(PETSC_HAVE_CUDA) | |||
181 | petsc_ctog_ct = 0.0; | |||
182 | petsc_gtoc_ct = 0.0; | |||
183 | petsc_ctog_sz = 0.0; | |||
184 | petsc_gtoc_sz = 0.0; | |||
185 | #endif | |||
186 | PETSC_LARGEST_EVENT = PETSC_EVENT1311311; | |||
187 | PetscLogPHC = NULL((void*)0); | |||
188 | PetscLogPHD = NULL((void*)0); | |||
189 | petsc_tracefile = NULL((void*)0); | |||
190 | petsc_tracelevel = 0; | |||
191 | petsc_traceblanks = " "; | |||
192 | petsc_tracespace[0] = ' '; petsc_tracespace[1] = 0; | |||
193 | petsc_tracetime = 0.0; | |||
194 | PETSC_LARGEST_CLASSID = PETSC_SMALLEST_CLASSID1211211; | |||
195 | PETSC_OBJECT_CLASSID = 0; | |||
196 | petsc_stageLog = 0; | |||
197 | PetscLogInitializeCalled = PETSC_FALSE; | |||
198 | PetscFunctionReturn(0)do { do { ; if (petscstack && petscstack->currentsize > 0) { petscstack->currentsize--; petscstack->function [petscstack->currentsize] = 0; petscstack->file[petscstack ->currentsize] = 0; petscstack->line[petscstack->currentsize ] = 0; petscstack->petscroutine[petscstack->currentsize ] = PETSC_FALSE; } if (petscstack) { petscstack->hotdepth = (((petscstack->hotdepth-1)<(0)) ? (0) : (petscstack-> hotdepth-1)); } ; } while (0); return(0);} while (0); | |||
199 | } | |||
200 | ||||
201 | /*@C | |||
202 | PetscLogSet - Sets the logging functions called at the beginning and ending of every event. | |||
203 | ||||
204 | Not Collective | |||
205 | ||||
206 | Input Parameters: | |||
207 | + b - The function called at beginning of event | |||
208 | - e - The function called at end of event | |||
209 | ||||
210 | Level: developer | |||
211 | ||||
212 | .seealso: PetscLogDump(), PetscLogDefaultBegin(), PetscLogAllBegin(), PetscLogTraceBegin() | |||
213 | @*/ | |||
214 | PetscErrorCode PetscLogSet(PetscErrorCode (*b)(PetscLogEvent, int, PetscObject, PetscObject, PetscObject, PetscObject), | |||
215 | PetscErrorCode (*e)(PetscLogEvent, int, PetscObject, PetscObject, PetscObject, PetscObject)) | |||
216 | { | |||
217 | PetscFunctionBegindo { do { ; if (petscstack && (petscstack->currentsize < 64)) { petscstack->function[petscstack->currentsize ] = __func__; petscstack->file[petscstack->currentsize] = "/sandbox/petsc/petsc.next/src/sys/logging/plog.c"; petscstack ->line[petscstack->currentsize] = 217; petscstack->petscroutine [petscstack->currentsize] = PETSC_TRUE; petscstack->currentsize ++; } if (petscstack) { petscstack->hotdepth += (PETSC_FALSE || petscstack->hotdepth); } ; } while (0); ; } while (0); | |||
218 | PetscLogPLB = b; | |||
219 | PetscLogPLE = e; | |||
220 | PetscFunctionReturn(0)do { do { ; if (petscstack && petscstack->currentsize > 0) { petscstack->currentsize--; petscstack->function [petscstack->currentsize] = 0; petscstack->file[petscstack ->currentsize] = 0; petscstack->line[petscstack->currentsize ] = 0; petscstack->petscroutine[petscstack->currentsize ] = PETSC_FALSE; } if (petscstack) { petscstack->hotdepth = (((petscstack->hotdepth-1)<(0)) ? (0) : (petscstack-> hotdepth-1)); } ; } while (0); return(0);} while (0); | |||
221 | } | |||
222 | ||||
223 | /*@C | |||
224 | PetscLogDefaultBegin - Turns on logging of objects and events. This logs flop | |||
225 | rates and object creation and should not slow programs down too much. | |||
226 | This routine may be called more than once. | |||
227 | ||||
228 | Logically Collective over PETSC_COMM_WORLD | |||
229 | ||||
230 | Options Database Keys: | |||
231 | . -log_view [viewertype:filename:viewerformat] - Prints summary of flop and timing information to the | |||
232 | screen (for code configured with --with-log=1 (which is the default)) | |||
233 | ||||
234 | Usage: | |||
235 | .vb | |||
236 | PetscInitialize(...); | |||
237 | PetscLogDefaultBegin(); | |||
238 | ... code ... | |||
239 | PetscLogView(viewer); or PetscLogDump(); | |||
240 | PetscFinalize(); | |||
241 | .ve | |||
242 | ||||
243 | Notes: | |||
244 | PetscLogView(viewer) or PetscLogDump() actually cause the printing of | |||
245 | the logging information. | |||
246 | ||||
247 | Level: advanced | |||
248 | ||||
249 | .seealso: PetscLogDump(), PetscLogAllBegin(), PetscLogView(), PetscLogTraceBegin() | |||
250 | @*/ | |||
251 | PetscErrorCode PetscLogDefaultBegin(void) | |||
252 | { | |||
253 | PetscErrorCode ierr; | |||
254 | ||||
255 | PetscFunctionBegindo { do { ; if (petscstack && (petscstack->currentsize < 64)) { petscstack->function[petscstack->currentsize ] = __func__; petscstack->file[petscstack->currentsize] = "/sandbox/petsc/petsc.next/src/sys/logging/plog.c"; petscstack ->line[petscstack->currentsize] = 255; petscstack->petscroutine [petscstack->currentsize] = PETSC_TRUE; petscstack->currentsize ++; } if (petscstack) { petscstack->hotdepth += (PETSC_FALSE || petscstack->hotdepth); } ; } while (0); ; } while (0); | |||
256 | ierr = PetscLogSet(PetscLogEventBeginDefault, PetscLogEventEndDefault);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),256,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
257 | PetscFunctionReturn(0)do { do { ; if (petscstack && petscstack->currentsize > 0) { petscstack->currentsize--; petscstack->function [petscstack->currentsize] = 0; petscstack->file[petscstack ->currentsize] = 0; petscstack->line[petscstack->currentsize ] = 0; petscstack->petscroutine[petscstack->currentsize ] = PETSC_FALSE; } if (petscstack) { petscstack->hotdepth = (((petscstack->hotdepth-1)<(0)) ? (0) : (petscstack-> hotdepth-1)); } ; } while (0); return(0);} while (0); | |||
258 | } | |||
259 | ||||
260 | /*@C | |||
261 | PetscLogAllBegin - Turns on extensive logging of objects and events. Logs | |||
262 | all events. This creates large log files and slows the program down. | |||
263 | ||||
264 | Logically Collective on PETSC_COMM_WORLD | |||
265 | ||||
266 | Options Database Keys: | |||
267 | . -log_all - Prints extensive log information | |||
268 | ||||
269 | Usage: | |||
270 | .vb | |||
271 | PetscInitialize(...); | |||
272 | PetscLogAllBegin(); | |||
273 | ... code ... | |||
274 | PetscLogDump(filename); | |||
275 | PetscFinalize(); | |||
276 | .ve | |||
277 | ||||
278 | Notes: | |||
279 | A related routine is PetscLogDefaultBegin() (with the options key -log), which is | |||
280 | intended for production runs since it logs only flop rates and object | |||
281 | creation (and shouldn't significantly slow the programs). | |||
282 | ||||
283 | Level: advanced | |||
284 | ||||
285 | .seealso: PetscLogDump(), PetscLogDefaultBegin(), PetscLogTraceBegin() | |||
286 | @*/ | |||
287 | PetscErrorCode PetscLogAllBegin(void) | |||
288 | { | |||
289 | PetscErrorCode ierr; | |||
290 | ||||
291 | PetscFunctionBegindo { do { ; if (petscstack && (petscstack->currentsize < 64)) { petscstack->function[petscstack->currentsize ] = __func__; petscstack->file[petscstack->currentsize] = "/sandbox/petsc/petsc.next/src/sys/logging/plog.c"; petscstack ->line[petscstack->currentsize] = 291; petscstack->petscroutine [petscstack->currentsize] = PETSC_TRUE; petscstack->currentsize ++; } if (petscstack) { petscstack->hotdepth += (PETSC_FALSE || petscstack->hotdepth); } ; } while (0); ; } while (0); | |||
292 | ierr = PetscLogSet(PetscLogEventBeginComplete, PetscLogEventEndComplete);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),292,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
293 | PetscFunctionReturn(0)do { do { ; if (petscstack && petscstack->currentsize > 0) { petscstack->currentsize--; petscstack->function [petscstack->currentsize] = 0; petscstack->file[petscstack ->currentsize] = 0; petscstack->line[petscstack->currentsize ] = 0; petscstack->petscroutine[petscstack->currentsize ] = PETSC_FALSE; } if (petscstack) { petscstack->hotdepth = (((petscstack->hotdepth-1)<(0)) ? (0) : (petscstack-> hotdepth-1)); } ; } while (0); return(0);} while (0); | |||
294 | } | |||
295 | ||||
296 | /*@ | |||
297 | PetscLogTraceBegin - Activates trace logging. Every time a PETSc event | |||
298 | begins or ends, the event name is printed. | |||
299 | ||||
300 | Logically Collective on PETSC_COMM_WORLD | |||
301 | ||||
302 | Input Parameter: | |||
303 | . file - The file to print trace in (e.g. stdout) | |||
304 | ||||
305 | Options Database Key: | |||
306 | . -log_trace [filename] - Activates PetscLogTraceBegin() | |||
307 | ||||
308 | Notes: | |||
309 | PetscLogTraceBegin() prints the processor number, the execution time (sec), | |||
310 | then "Event begin:" or "Event end:" followed by the event name. | |||
311 | ||||
312 | PetscLogTraceBegin() allows tracing of all PETSc calls, which is useful | |||
313 | to determine where a program is hanging without running in the | |||
314 | debugger. Can be used in conjunction with the -info option. | |||
315 | ||||
316 | Level: intermediate | |||
317 | ||||
318 | .seealso: PetscLogDump(), PetscLogAllBegin(), PetscLogView(), PetscLogDefaultBegin() | |||
319 | @*/ | |||
320 | PetscErrorCode PetscLogTraceBegin(FILE *file) | |||
321 | { | |||
322 | PetscErrorCode ierr; | |||
323 | ||||
324 | PetscFunctionBegindo { do { ; if (petscstack && (petscstack->currentsize < 64)) { petscstack->function[petscstack->currentsize ] = __func__; petscstack->file[petscstack->currentsize] = "/sandbox/petsc/petsc.next/src/sys/logging/plog.c"; petscstack ->line[petscstack->currentsize] = 324; petscstack->petscroutine [petscstack->currentsize] = PETSC_TRUE; petscstack->currentsize ++; } if (petscstack) { petscstack->hotdepth += (PETSC_FALSE || petscstack->hotdepth); } ; } while (0); ; } while (0); | |||
325 | petsc_tracefile = file; | |||
326 | ||||
327 | ierr = PetscLogSet(PetscLogEventBeginTrace, PetscLogEventEndTrace);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),327,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
328 | PetscFunctionReturn(0)do { do { ; if (petscstack && petscstack->currentsize > 0) { petscstack->currentsize--; petscstack->function [petscstack->currentsize] = 0; petscstack->file[petscstack ->currentsize] = 0; petscstack->line[petscstack->currentsize ] = 0; petscstack->petscroutine[petscstack->currentsize ] = PETSC_FALSE; } if (petscstack) { petscstack->hotdepth = (((petscstack->hotdepth-1)<(0)) ? (0) : (petscstack-> hotdepth-1)); } ; } while (0); return(0);} while (0); | |||
329 | } | |||
330 | ||||
331 | /*@ | |||
332 | PetscLogActions - Determines whether actions are logged for the graphical viewer. | |||
333 | ||||
334 | Not Collective | |||
335 | ||||
336 | Input Parameter: | |||
337 | . flag - PETSC_TRUE if actions are to be logged | |||
338 | ||||
339 | Level: intermediate | |||
340 | ||||
341 | Note: Logging of actions continues to consume more memory as the program | |||
342 | runs. Long running programs should consider turning this feature off. | |||
343 | ||||
344 | Options Database Keys: | |||
345 | . -log_exclude_actions - Turns off actions logging | |||
346 | ||||
347 | .seealso: PetscLogStagePush(), PetscLogStagePop() | |||
348 | @*/ | |||
349 | PetscErrorCode PetscLogActions(PetscBool flag) | |||
350 | { | |||
351 | PetscFunctionBegindo { do { ; if (petscstack && (petscstack->currentsize < 64)) { petscstack->function[petscstack->currentsize ] = __func__; petscstack->file[petscstack->currentsize] = "/sandbox/petsc/petsc.next/src/sys/logging/plog.c"; petscstack ->line[petscstack->currentsize] = 351; petscstack->petscroutine [petscstack->currentsize] = PETSC_TRUE; petscstack->currentsize ++; } if (petscstack) { petscstack->hotdepth += (PETSC_FALSE || petscstack->hotdepth); } ; } while (0); ; } while (0); | |||
352 | petsc_logActions = flag; | |||
353 | PetscFunctionReturn(0)do { do { ; if (petscstack && petscstack->currentsize > 0) { petscstack->currentsize--; petscstack->function [petscstack->currentsize] = 0; petscstack->file[petscstack ->currentsize] = 0; petscstack->line[petscstack->currentsize ] = 0; petscstack->petscroutine[petscstack->currentsize ] = PETSC_FALSE; } if (petscstack) { petscstack->hotdepth = (((petscstack->hotdepth-1)<(0)) ? (0) : (petscstack-> hotdepth-1)); } ; } while (0); return(0);} while (0); | |||
354 | } | |||
355 | ||||
356 | /*@ | |||
357 | PetscLogObjects - Determines whether objects are logged for the graphical viewer. | |||
358 | ||||
359 | Not Collective | |||
360 | ||||
361 | Input Parameter: | |||
362 | . flag - PETSC_TRUE if objects are to be logged | |||
363 | ||||
364 | Level: intermediate | |||
365 | ||||
366 | Note: Logging of objects continues to consume more memory as the program | |||
367 | runs. Long running programs should consider turning this feature off. | |||
368 | ||||
369 | Options Database Keys: | |||
370 | . -log_exclude_objects - Turns off objects logging | |||
371 | ||||
372 | .seealso: PetscLogStagePush(), PetscLogStagePop() | |||
373 | @*/ | |||
374 | PetscErrorCode PetscLogObjects(PetscBool flag) | |||
375 | { | |||
376 | PetscFunctionBegindo { do { ; if (petscstack && (petscstack->currentsize < 64)) { petscstack->function[petscstack->currentsize ] = __func__; petscstack->file[petscstack->currentsize] = "/sandbox/petsc/petsc.next/src/sys/logging/plog.c"; petscstack ->line[petscstack->currentsize] = 376; petscstack->petscroutine [petscstack->currentsize] = PETSC_TRUE; petscstack->currentsize ++; } if (petscstack) { petscstack->hotdepth += (PETSC_FALSE || petscstack->hotdepth); } ; } while (0); ; } while (0); | |||
377 | petsc_logObjects = flag; | |||
378 | PetscFunctionReturn(0)do { do { ; if (petscstack && petscstack->currentsize > 0) { petscstack->currentsize--; petscstack->function [petscstack->currentsize] = 0; petscstack->file[petscstack ->currentsize] = 0; petscstack->line[petscstack->currentsize ] = 0; petscstack->petscroutine[petscstack->currentsize ] = PETSC_FALSE; } if (petscstack) { petscstack->hotdepth = (((petscstack->hotdepth-1)<(0)) ? (0) : (petscstack-> hotdepth-1)); } ; } while (0); return(0);} while (0); | |||
379 | } | |||
380 | ||||
381 | /*------------------------------------------------ Stage Functions --------------------------------------------------*/ | |||
382 | /*@C | |||
383 | PetscLogStageRegister - Attaches a character string name to a logging stage. | |||
384 | ||||
385 | Not Collective | |||
386 | ||||
387 | Input Parameter: | |||
388 | . sname - The name to associate with that stage | |||
389 | ||||
390 | Output Parameter: | |||
391 | . stage - The stage number | |||
392 | ||||
393 | Level: intermediate | |||
394 | ||||
395 | .seealso: PetscLogStagePush(), PetscLogStagePop() | |||
396 | @*/ | |||
397 | PetscErrorCode PetscLogStageRegister(const char sname[],PetscLogStage *stage) | |||
398 | { | |||
399 | PetscStageLog stageLog; | |||
400 | PetscLogEvent event; | |||
401 | PetscErrorCode ierr; | |||
402 | ||||
403 | PetscFunctionBegindo { do { ; if (petscstack && (petscstack->currentsize < 64)) { petscstack->function[petscstack->currentsize ] = __func__; petscstack->file[petscstack->currentsize] = "/sandbox/petsc/petsc.next/src/sys/logging/plog.c"; petscstack ->line[petscstack->currentsize] = 403; petscstack->petscroutine [petscstack->currentsize] = PETSC_TRUE; petscstack->currentsize ++; } if (petscstack) { petscstack->hotdepth += (PETSC_FALSE || petscstack->hotdepth); } ; } while (0); ; } while (0); | |||
404 | ierr = PetscLogGetStageLog(&stageLog);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),404,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
405 | ierr = PetscStageLogRegister(stageLog, sname, stage);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),405,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
406 | /* Copy events already changed in the main stage, this sucks */ | |||
407 | ierr = PetscEventPerfLogEnsureSize(stageLog->stageInfo[*stage].eventLog, stageLog->eventLog->numEvents);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),407,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
408 | for (event = 0; event < stageLog->eventLog->numEvents; event++) { | |||
409 | ierr = PetscEventPerfInfoCopy(&stageLog->stageInfo[0].eventLog->eventInfo[event],&stageLog->stageInfo[*stage].eventLog->eventInfo[event]);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),409,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
410 | } | |||
411 | ierr = PetscClassPerfLogEnsureSize(stageLog->stageInfo[*stage].classLog, stageLog->classLog->numClasses);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),411,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
412 | PetscFunctionReturn(0)do { do { ; if (petscstack && petscstack->currentsize > 0) { petscstack->currentsize--; petscstack->function [petscstack->currentsize] = 0; petscstack->file[petscstack ->currentsize] = 0; petscstack->line[petscstack->currentsize ] = 0; petscstack->petscroutine[petscstack->currentsize ] = PETSC_FALSE; } if (petscstack) { petscstack->hotdepth = (((petscstack->hotdepth-1)<(0)) ? (0) : (petscstack-> hotdepth-1)); } ; } while (0); return(0);} while (0); | |||
413 | } | |||
414 | ||||
415 | /*@C | |||
416 | PetscLogStagePush - This function pushes a stage on the stack. | |||
417 | ||||
418 | Not Collective | |||
419 | ||||
420 | Input Parameter: | |||
421 | . stage - The stage on which to log | |||
422 | ||||
423 | Usage: | |||
424 | If the option -log_sumary is used to run the program containing the | |||
425 | following code, then 2 sets of summary data will be printed during | |||
426 | PetscFinalize(). | |||
427 | .vb | |||
428 | PetscInitialize(int *argc,char ***args,0,0); | |||
429 | [stage 0 of code] | |||
430 | PetscLogStagePush(1); | |||
431 | [stage 1 of code] | |||
432 | PetscLogStagePop(); | |||
433 | PetscBarrier(...); | |||
434 | [more stage 0 of code] | |||
435 | PetscFinalize(); | |||
436 | .ve | |||
437 | ||||
438 | Notes: | |||
439 | Use PetscLogStageRegister() to register a stage. | |||
440 | ||||
441 | Level: intermediate | |||
442 | ||||
443 | .seealso: PetscLogStagePop(), PetscLogStageRegister(), PetscBarrier() | |||
444 | @*/ | |||
445 | PetscErrorCode PetscLogStagePush(PetscLogStage stage) | |||
446 | { | |||
447 | PetscStageLog stageLog; | |||
448 | PetscErrorCode ierr; | |||
449 | ||||
450 | PetscFunctionBegindo { do { ; if (petscstack && (petscstack->currentsize < 64)) { petscstack->function[petscstack->currentsize ] = __func__; petscstack->file[petscstack->currentsize] = "/sandbox/petsc/petsc.next/src/sys/logging/plog.c"; petscstack ->line[petscstack->currentsize] = 450; petscstack->petscroutine [petscstack->currentsize] = PETSC_TRUE; petscstack->currentsize ++; } if (petscstack) { petscstack->hotdepth += (PETSC_FALSE || petscstack->hotdepth); } ; } while (0); ; } while (0); | |||
451 | ierr = PetscLogGetStageLog(&stageLog);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),451,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
452 | ierr = PetscStageLogPush(stageLog, stage);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),452,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
453 | PetscFunctionReturn(0)do { do { ; if (petscstack && petscstack->currentsize > 0) { petscstack->currentsize--; petscstack->function [petscstack->currentsize] = 0; petscstack->file[petscstack ->currentsize] = 0; petscstack->line[petscstack->currentsize ] = 0; petscstack->petscroutine[petscstack->currentsize ] = PETSC_FALSE; } if (petscstack) { petscstack->hotdepth = (((petscstack->hotdepth-1)<(0)) ? (0) : (petscstack-> hotdepth-1)); } ; } while (0); return(0);} while (0); | |||
454 | } | |||
455 | ||||
456 | /*@C | |||
457 | PetscLogStagePop - This function pops a stage from the stack. | |||
458 | ||||
459 | Not Collective | |||
460 | ||||
461 | Usage: | |||
462 | If the option -log_sumary is used to run the program containing the | |||
463 | following code, then 2 sets of summary data will be printed during | |||
464 | PetscFinalize(). | |||
465 | .vb | |||
466 | PetscInitialize(int *argc,char ***args,0,0); | |||
467 | [stage 0 of code] | |||
468 | PetscLogStagePush(1); | |||
469 | [stage 1 of code] | |||
470 | PetscLogStagePop(); | |||
471 | PetscBarrier(...); | |||
472 | [more stage 0 of code] | |||
473 | PetscFinalize(); | |||
474 | .ve | |||
475 | ||||
476 | Notes: | |||
477 | Use PetscLogStageRegister() to register a stage. | |||
478 | ||||
479 | Level: intermediate | |||
480 | ||||
481 | .seealso: PetscLogStagePush(), PetscLogStageRegister(), PetscBarrier() | |||
482 | @*/ | |||
483 | PetscErrorCode PetscLogStagePop(void) | |||
484 | { | |||
485 | PetscStageLog stageLog; | |||
486 | PetscErrorCode ierr; | |||
487 | ||||
488 | PetscFunctionBegindo { do { ; if (petscstack && (petscstack->currentsize < 64)) { petscstack->function[petscstack->currentsize ] = __func__; petscstack->file[petscstack->currentsize] = "/sandbox/petsc/petsc.next/src/sys/logging/plog.c"; petscstack ->line[petscstack->currentsize] = 488; petscstack->petscroutine [petscstack->currentsize] = PETSC_TRUE; petscstack->currentsize ++; } if (petscstack) { petscstack->hotdepth += (PETSC_FALSE || petscstack->hotdepth); } ; } while (0); ; } while (0); | |||
489 | ierr = PetscLogGetStageLog(&stageLog);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),489,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
490 | ierr = PetscStageLogPop(stageLog);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),490,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
491 | PetscFunctionReturn(0)do { do { ; if (petscstack && petscstack->currentsize > 0) { petscstack->currentsize--; petscstack->function [petscstack->currentsize] = 0; petscstack->file[petscstack ->currentsize] = 0; petscstack->line[petscstack->currentsize ] = 0; petscstack->petscroutine[petscstack->currentsize ] = PETSC_FALSE; } if (petscstack) { petscstack->hotdepth = (((petscstack->hotdepth-1)<(0)) ? (0) : (petscstack-> hotdepth-1)); } ; } while (0); return(0);} while (0); | |||
492 | } | |||
493 | ||||
494 | /*@ | |||
495 | PetscLogStageSetActive - Determines stage activity for PetscLogEventBegin() and PetscLogEventEnd(). | |||
496 | ||||
497 | Not Collective | |||
498 | ||||
499 | Input Parameters: | |||
500 | + stage - The stage | |||
501 | - isActive - The activity flag, PETSC_TRUE for logging, else PETSC_FALSE (defaults to PETSC_TRUE) | |||
502 | ||||
503 | Level: intermediate | |||
504 | ||||
505 | .seealso: PetscLogStagePush(), PetscLogStagePop(), PetscLogEventBegin(), PetscLogEventEnd(), PetscPreLoadBegin(), PetscPreLoadEnd(), PetscPreLoadStage() | |||
506 | @*/ | |||
507 | PetscErrorCode PetscLogStageSetActive(PetscLogStage stage, PetscBool isActive) | |||
508 | { | |||
509 | PetscStageLog stageLog; | |||
510 | PetscErrorCode ierr; | |||
511 | ||||
512 | PetscFunctionBegindo { do { ; if (petscstack && (petscstack->currentsize < 64)) { petscstack->function[petscstack->currentsize ] = __func__; petscstack->file[petscstack->currentsize] = "/sandbox/petsc/petsc.next/src/sys/logging/plog.c"; petscstack ->line[petscstack->currentsize] = 512; petscstack->petscroutine [petscstack->currentsize] = PETSC_TRUE; petscstack->currentsize ++; } if (petscstack) { petscstack->hotdepth += (PETSC_FALSE || petscstack->hotdepth); } ; } while (0); ; } while (0); | |||
513 | ierr = PetscLogGetStageLog(&stageLog);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),513,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
514 | ierr = PetscStageLogSetActive(stageLog, stage, isActive);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),514,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
515 | PetscFunctionReturn(0)do { do { ; if (petscstack && petscstack->currentsize > 0) { petscstack->currentsize--; petscstack->function [petscstack->currentsize] = 0; petscstack->file[petscstack ->currentsize] = 0; petscstack->line[petscstack->currentsize ] = 0; petscstack->petscroutine[petscstack->currentsize ] = PETSC_FALSE; } if (petscstack) { petscstack->hotdepth = (((petscstack->hotdepth-1)<(0)) ? (0) : (petscstack-> hotdepth-1)); } ; } while (0); return(0);} while (0); | |||
516 | } | |||
517 | ||||
518 | /*@ | |||
519 | PetscLogStageGetActive - Returns stage activity for PetscLogEventBegin() and PetscLogEventEnd(). | |||
520 | ||||
521 | Not Collective | |||
522 | ||||
523 | Input Parameter: | |||
524 | . stage - The stage | |||
525 | ||||
526 | Output Parameter: | |||
527 | . isActive - The activity flag, PETSC_TRUE for logging, else PETSC_FALSE (defaults to PETSC_TRUE) | |||
528 | ||||
529 | Level: intermediate | |||
530 | ||||
531 | .seealso: PetscLogStagePush(), PetscLogStagePop(), PetscLogEventBegin(), PetscLogEventEnd(), PetscPreLoadBegin(), PetscPreLoadEnd(), PetscPreLoadStage() | |||
532 | @*/ | |||
533 | PetscErrorCode PetscLogStageGetActive(PetscLogStage stage, PetscBool *isActive) | |||
534 | { | |||
535 | PetscStageLog stageLog; | |||
536 | PetscErrorCode ierr; | |||
537 | ||||
538 | PetscFunctionBegindo { do { ; if (petscstack && (petscstack->currentsize < 64)) { petscstack->function[petscstack->currentsize ] = __func__; petscstack->file[petscstack->currentsize] = "/sandbox/petsc/petsc.next/src/sys/logging/plog.c"; petscstack ->line[petscstack->currentsize] = 538; petscstack->petscroutine [petscstack->currentsize] = PETSC_TRUE; petscstack->currentsize ++; } if (petscstack) { petscstack->hotdepth += (PETSC_FALSE || petscstack->hotdepth); } ; } while (0); ; } while (0); | |||
539 | ierr = PetscLogGetStageLog(&stageLog);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),539,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
540 | ierr = PetscStageLogGetActive(stageLog, stage, isActive);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),540,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
541 | PetscFunctionReturn(0)do { do { ; if (petscstack && petscstack->currentsize > 0) { petscstack->currentsize--; petscstack->function [petscstack->currentsize] = 0; petscstack->file[petscstack ->currentsize] = 0; petscstack->line[petscstack->currentsize ] = 0; petscstack->petscroutine[petscstack->currentsize ] = PETSC_FALSE; } if (petscstack) { petscstack->hotdepth = (((petscstack->hotdepth-1)<(0)) ? (0) : (petscstack-> hotdepth-1)); } ; } while (0); return(0);} while (0); | |||
542 | } | |||
543 | ||||
544 | /*@ | |||
545 | PetscLogStageSetVisible - Determines stage visibility in PetscLogView() | |||
546 | ||||
547 | Not Collective | |||
548 | ||||
549 | Input Parameters: | |||
550 | + stage - The stage | |||
551 | - isVisible - The visibility flag, PETSC_TRUE to print, else PETSC_FALSE (defaults to PETSC_TRUE) | |||
552 | ||||
553 | Level: intermediate | |||
554 | ||||
555 | .seealso: PetscLogStagePush(), PetscLogStagePop(), PetscLogView() | |||
556 | @*/ | |||
557 | PetscErrorCode PetscLogStageSetVisible(PetscLogStage stage, PetscBool isVisible) | |||
558 | { | |||
559 | PetscStageLog stageLog; | |||
560 | PetscErrorCode ierr; | |||
561 | ||||
562 | PetscFunctionBegindo { do { ; if (petscstack && (petscstack->currentsize < 64)) { petscstack->function[petscstack->currentsize ] = __func__; petscstack->file[petscstack->currentsize] = "/sandbox/petsc/petsc.next/src/sys/logging/plog.c"; petscstack ->line[petscstack->currentsize] = 562; petscstack->petscroutine [petscstack->currentsize] = PETSC_TRUE; petscstack->currentsize ++; } if (petscstack) { petscstack->hotdepth += (PETSC_FALSE || petscstack->hotdepth); } ; } while (0); ; } while (0); | |||
563 | ierr = PetscLogGetStageLog(&stageLog);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),563,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
564 | ierr = PetscStageLogSetVisible(stageLog, stage, isVisible);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),564,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
565 | PetscFunctionReturn(0)do { do { ; if (petscstack && petscstack->currentsize > 0) { petscstack->currentsize--; petscstack->function [petscstack->currentsize] = 0; petscstack->file[petscstack ->currentsize] = 0; petscstack->line[petscstack->currentsize ] = 0; petscstack->petscroutine[petscstack->currentsize ] = PETSC_FALSE; } if (petscstack) { petscstack->hotdepth = (((petscstack->hotdepth-1)<(0)) ? (0) : (petscstack-> hotdepth-1)); } ; } while (0); return(0);} while (0); | |||
566 | } | |||
567 | ||||
568 | /*@ | |||
569 | PetscLogStageGetVisible - Returns stage visibility in PetscLogView() | |||
570 | ||||
571 | Not Collective | |||
572 | ||||
573 | Input Parameter: | |||
574 | . stage - The stage | |||
575 | ||||
576 | Output Parameter: | |||
577 | . isVisible - The visibility flag, PETSC_TRUE to print, else PETSC_FALSE (defaults to PETSC_TRUE) | |||
578 | ||||
579 | Level: intermediate | |||
580 | ||||
581 | .seealso: PetscLogStagePush(), PetscLogStagePop(), PetscLogView() | |||
582 | @*/ | |||
583 | PetscErrorCode PetscLogStageGetVisible(PetscLogStage stage, PetscBool *isVisible) | |||
584 | { | |||
585 | PetscStageLog stageLog; | |||
586 | PetscErrorCode ierr; | |||
587 | ||||
588 | PetscFunctionBegindo { do { ; if (petscstack && (petscstack->currentsize < 64)) { petscstack->function[petscstack->currentsize ] = __func__; petscstack->file[petscstack->currentsize] = "/sandbox/petsc/petsc.next/src/sys/logging/plog.c"; petscstack ->line[petscstack->currentsize] = 588; petscstack->petscroutine [petscstack->currentsize] = PETSC_TRUE; petscstack->currentsize ++; } if (petscstack) { petscstack->hotdepth += (PETSC_FALSE || petscstack->hotdepth); } ; } while (0); ; } while (0); | |||
589 | ierr = PetscLogGetStageLog(&stageLog);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),589,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
590 | ierr = PetscStageLogGetVisible(stageLog, stage, isVisible);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),590,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
591 | PetscFunctionReturn(0)do { do { ; if (petscstack && petscstack->currentsize > 0) { petscstack->currentsize--; petscstack->function [petscstack->currentsize] = 0; petscstack->file[petscstack ->currentsize] = 0; petscstack->line[petscstack->currentsize ] = 0; petscstack->petscroutine[petscstack->currentsize ] = PETSC_FALSE; } if (petscstack) { petscstack->hotdepth = (((petscstack->hotdepth-1)<(0)) ? (0) : (petscstack-> hotdepth-1)); } ; } while (0); return(0);} while (0); | |||
592 | } | |||
593 | ||||
594 | /*@C | |||
595 | PetscLogStageGetId - Returns the stage id when given the stage name. | |||
596 | ||||
597 | Not Collective | |||
598 | ||||
599 | Input Parameter: | |||
600 | . name - The stage name | |||
601 | ||||
602 | Output Parameter: | |||
603 | . stage - The stage, , or -1 if no stage with that name exists | |||
604 | ||||
605 | Level: intermediate | |||
606 | ||||
607 | .seealso: PetscLogStagePush(), PetscLogStagePop(), PetscPreLoadBegin(), PetscPreLoadEnd(), PetscPreLoadStage() | |||
608 | @*/ | |||
609 | PetscErrorCode PetscLogStageGetId(const char name[], PetscLogStage *stage) | |||
610 | { | |||
611 | PetscStageLog stageLog; | |||
612 | PetscErrorCode ierr; | |||
613 | ||||
614 | PetscFunctionBegindo { do { ; if (petscstack && (petscstack->currentsize < 64)) { petscstack->function[petscstack->currentsize ] = __func__; petscstack->file[petscstack->currentsize] = "/sandbox/petsc/petsc.next/src/sys/logging/plog.c"; petscstack ->line[petscstack->currentsize] = 614; petscstack->petscroutine [petscstack->currentsize] = PETSC_TRUE; petscstack->currentsize ++; } if (petscstack) { petscstack->hotdepth += (PETSC_FALSE || petscstack->hotdepth); } ; } while (0); ; } while (0); | |||
615 | ierr = PetscLogGetStageLog(&stageLog);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),615,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
616 | ierr = PetscStageLogGetStage(stageLog, name, stage);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),616,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
617 | PetscFunctionReturn(0)do { do { ; if (petscstack && petscstack->currentsize > 0) { petscstack->currentsize--; petscstack->function [petscstack->currentsize] = 0; petscstack->file[petscstack ->currentsize] = 0; petscstack->line[petscstack->currentsize ] = 0; petscstack->petscroutine[petscstack->currentsize ] = PETSC_FALSE; } if (petscstack) { petscstack->hotdepth = (((petscstack->hotdepth-1)<(0)) ? (0) : (petscstack-> hotdepth-1)); } ; } while (0); return(0);} while (0); | |||
618 | } | |||
619 | ||||
620 | /*------------------------------------------------ Event Functions --------------------------------------------------*/ | |||
621 | /*@C | |||
622 | PetscLogEventRegister - Registers an event name for logging operations in an application code. | |||
623 | ||||
624 | Not Collective | |||
625 | ||||
626 | Input Parameter: | |||
627 | + name - The name associated with the event | |||
628 | - classid - The classid associated to the class for this event, obtain either with | |||
629 | PetscClassIdRegister() or use a predefined one such as KSP_CLASSID, SNES_CLASSID, the predefined ones | |||
630 | are only available in C code | |||
631 | ||||
632 | Output Parameter: | |||
633 | . event - The event id for use with PetscLogEventBegin() and PetscLogEventEnd(). | |||
634 | ||||
635 | Example of Usage: | |||
636 | .vb | |||
637 | PetscLogEvent USER_EVENT; | |||
638 | PetscClassId classid; | |||
639 | PetscLogDouble user_event_flops; | |||
640 | PetscClassIdRegister("class name",&classid); | |||
641 | PetscLogEventRegister("User event name",classid,&USER_EVENT); | |||
642 | PetscLogEventBegin(USER_EVENT,0,0,0,0); | |||
643 | [code segment to monitor] | |||
644 | PetscLogFlops(user_event_flops); | |||
645 | PetscLogEventEnd(USER_EVENT,0,0,0,0); | |||
646 | .ve | |||
647 | ||||
648 | Notes: | |||
649 | PETSc automatically logs library events if the code has been | |||
650 | configured with --with-log (which is the default) and | |||
651 | -log_view or -log_all is specified. PetscLogEventRegister() is | |||
652 | intended for logging user events to supplement this PETSc | |||
653 | information. | |||
654 | ||||
655 | PETSc can gather data for use with the utilities Jumpshot | |||
656 | (part of the MPICH distribution). If PETSc has been compiled | |||
657 | with flag -DPETSC_HAVE_MPE (MPE is an additional utility within | |||
658 | MPICH), the user can employ another command line option, -log_mpe, | |||
659 | to create a logfile, "mpe.log", which can be visualized | |||
660 | Jumpshot. | |||
661 | ||||
662 | The classid is associated with each event so that classes of events | |||
663 | can be disabled simultaneously, such as all matrix events. The user | |||
664 | can either use an existing classid, such as MAT_CLASSID, or create | |||
665 | their own as shown in the example. | |||
666 | ||||
667 | If an existing event with the same name exists, its event handle is | |||
668 | returned instead of creating a new event. | |||
669 | ||||
670 | Level: intermediate | |||
671 | ||||
672 | .seealso: PetscLogEventBegin(), PetscLogEventEnd(), PetscLogFlops(), | |||
673 | PetscLogEventActivate(), PetscLogEventDeactivate(), PetscClassIdRegister() | |||
674 | @*/ | |||
675 | PetscErrorCode PetscLogEventRegister(const char name[],PetscClassId classid,PetscLogEvent *event) | |||
676 | { | |||
677 | PetscStageLog stageLog; | |||
678 | int stage; | |||
679 | PetscErrorCode ierr; | |||
680 | ||||
681 | PetscFunctionBegindo { do { ; if (petscstack && (petscstack->currentsize < 64)) { petscstack->function[petscstack->currentsize ] = __func__; petscstack->file[petscstack->currentsize] = "/sandbox/petsc/petsc.next/src/sys/logging/plog.c"; petscstack ->line[petscstack->currentsize] = 681; petscstack->petscroutine [petscstack->currentsize] = PETSC_TRUE; petscstack->currentsize ++; } if (petscstack) { petscstack->hotdepth += (PETSC_FALSE || petscstack->hotdepth); } ; } while (0); ; } while (0); | |||
682 | *event = PETSC_DECIDE-1; | |||
683 | ierr = PetscLogGetStageLog(&stageLog);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),683,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
684 | ierr = PetscEventRegLogGetEvent(stageLog->eventLog, name, event);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),684,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
685 | if (*event > 0) PetscFunctionReturn(0)do { do { ; if (petscstack && petscstack->currentsize > 0) { petscstack->currentsize--; petscstack->function [petscstack->currentsize] = 0; petscstack->file[petscstack ->currentsize] = 0; petscstack->line[petscstack->currentsize ] = 0; petscstack->petscroutine[petscstack->currentsize ] = PETSC_FALSE; } if (petscstack) { petscstack->hotdepth = (((petscstack->hotdepth-1)<(0)) ? (0) : (petscstack-> hotdepth-1)); } ; } while (0); return(0);} while (0); | |||
686 | ierr = PetscEventRegLogRegister(stageLog->eventLog, name, classid, event);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),686,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
687 | for (stage = 0; stage < stageLog->numStages; stage++) { | |||
688 | ierr = PetscEventPerfLogEnsureSize(stageLog->stageInfo[stage].eventLog, stageLog->eventLog->numEvents);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),688,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
689 | ierr = PetscClassPerfLogEnsureSize(stageLog->stageInfo[stage].classLog, stageLog->classLog->numClasses);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),689,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
690 | } | |||
691 | PetscFunctionReturn(0)do { do { ; if (petscstack && petscstack->currentsize > 0) { petscstack->currentsize--; petscstack->function [petscstack->currentsize] = 0; petscstack->file[petscstack ->currentsize] = 0; petscstack->line[petscstack->currentsize ] = 0; petscstack->petscroutine[petscstack->currentsize ] = PETSC_FALSE; } if (petscstack) { petscstack->hotdepth = (((petscstack->hotdepth-1)<(0)) ? (0) : (petscstack-> hotdepth-1)); } ; } while (0); return(0);} while (0); | |||
692 | } | |||
693 | ||||
694 | /*@ | |||
695 | PetscLogEventSetCollective - Indicates that a particular event is collective. | |||
696 | ||||
697 | Not Collective | |||
698 | ||||
699 | Input Parameter: | |||
700 | + event - The event id | |||
701 | - collective - Bolean flag indicating whether a particular event is collective | |||
702 | ||||
703 | Note: | |||
704 | New events returned from PetscLogEventRegister() are collective by default. | |||
705 | ||||
706 | Level: developer | |||
707 | ||||
708 | .seealso: PetscLogEventRegister() | |||
709 | @*/ | |||
710 | PetscErrorCode PetscLogEventSetCollective(PetscLogEvent event,PetscBool collective) | |||
711 | { | |||
712 | PetscStageLog stageLog; | |||
713 | PetscEventRegLog eventRegLog; | |||
714 | PetscErrorCode ierr; | |||
715 | ||||
716 | PetscFunctionBegindo { do { ; if (petscstack && (petscstack->currentsize < 64)) { petscstack->function[petscstack->currentsize ] = __func__; petscstack->file[petscstack->currentsize] = "/sandbox/petsc/petsc.next/src/sys/logging/plog.c"; petscstack ->line[petscstack->currentsize] = 716; petscstack->petscroutine [petscstack->currentsize] = PETSC_TRUE; petscstack->currentsize ++; } if (petscstack) { petscstack->hotdepth += (PETSC_FALSE || petscstack->hotdepth); } ; } while (0); ; } while (0); | |||
717 | ierr = PetscLogGetStageLog(&stageLog);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),717,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
718 | ierr = PetscStageLogGetEventRegLog(stageLog,&eventRegLog);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),718,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
719 | if (event < 0 || event > eventRegLog->numEvents) SETERRQ(PETSC_COMM_SELF,PETSC_ERR_ARG_OUTOFRANGE,"Invalid event id")return PetscError(((MPI_Comm)0x44000001),719,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,63,PETSC_ERROR_INITIAL,"Invalid event id"); | |||
720 | eventRegLog->eventInfo[event].collective = collective; | |||
721 | PetscFunctionReturn(0)do { do { ; if (petscstack && petscstack->currentsize > 0) { petscstack->currentsize--; petscstack->function [petscstack->currentsize] = 0; petscstack->file[petscstack ->currentsize] = 0; petscstack->line[petscstack->currentsize ] = 0; petscstack->petscroutine[petscstack->currentsize ] = PETSC_FALSE; } if (petscstack) { petscstack->hotdepth = (((petscstack->hotdepth-1)<(0)) ? (0) : (petscstack-> hotdepth-1)); } ; } while (0); return(0);} while (0); | |||
722 | } | |||
723 | ||||
724 | /*@ | |||
725 | PetscLogEventIncludeClass - Activates event logging for a PETSc object class in every stage. | |||
726 | ||||
727 | Not Collective | |||
728 | ||||
729 | Input Parameter: | |||
730 | . classid - The object class, for example MAT_CLASSID, SNES_CLASSID, etc. | |||
731 | ||||
732 | Level: developer | |||
733 | ||||
734 | .seealso: PetscLogEventActivateClass(),PetscLogEventDeactivateClass(),PetscLogEventActivate(),PetscLogEventDeactivate() | |||
735 | @*/ | |||
736 | PetscErrorCode PetscLogEventIncludeClass(PetscClassId classid) | |||
737 | { | |||
738 | PetscStageLog stageLog; | |||
739 | int stage; | |||
740 | PetscErrorCode ierr; | |||
741 | ||||
742 | PetscFunctionBegindo { do { ; if (petscstack && (petscstack->currentsize < 64)) { petscstack->function[petscstack->currentsize ] = __func__; petscstack->file[petscstack->currentsize] = "/sandbox/petsc/petsc.next/src/sys/logging/plog.c"; petscstack ->line[petscstack->currentsize] = 742; petscstack->petscroutine [petscstack->currentsize] = PETSC_TRUE; petscstack->currentsize ++; } if (petscstack) { petscstack->hotdepth += (PETSC_FALSE || petscstack->hotdepth); } ; } while (0); ; } while (0); | |||
743 | ierr = PetscLogGetStageLog(&stageLog);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),743,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
744 | for (stage = 0; stage < stageLog->numStages; stage++) { | |||
745 | ierr = PetscEventPerfLogActivateClass(stageLog->stageInfo[stage].eventLog, stageLog->eventLog, classid);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),745,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
746 | } | |||
747 | PetscFunctionReturn(0)do { do { ; if (petscstack && petscstack->currentsize > 0) { petscstack->currentsize--; petscstack->function [petscstack->currentsize] = 0; petscstack->file[petscstack ->currentsize] = 0; petscstack->line[petscstack->currentsize ] = 0; petscstack->petscroutine[petscstack->currentsize ] = PETSC_FALSE; } if (petscstack) { petscstack->hotdepth = (((petscstack->hotdepth-1)<(0)) ? (0) : (petscstack-> hotdepth-1)); } ; } while (0); return(0);} while (0); | |||
748 | } | |||
749 | ||||
750 | /*@ | |||
751 | PetscLogEventExcludeClass - Deactivates event logging for a PETSc object class in every stage. | |||
752 | ||||
753 | Not Collective | |||
754 | ||||
755 | Input Parameter: | |||
756 | . classid - The object class, for example MAT_CLASSID, SNES_CLASSID, etc. | |||
757 | ||||
758 | Level: developer | |||
759 | ||||
760 | .seealso: PetscLogEventDeactivateClass(),PetscLogEventActivateClass(),PetscLogEventDeactivate(),PetscLogEventActivate() | |||
761 | @*/ | |||
762 | PetscErrorCode PetscLogEventExcludeClass(PetscClassId classid) | |||
763 | { | |||
764 | PetscStageLog stageLog; | |||
765 | int stage; | |||
766 | PetscErrorCode ierr; | |||
767 | ||||
768 | PetscFunctionBegindo { do { ; if (petscstack && (petscstack->currentsize < 64)) { petscstack->function[petscstack->currentsize ] = __func__; petscstack->file[petscstack->currentsize] = "/sandbox/petsc/petsc.next/src/sys/logging/plog.c"; petscstack ->line[petscstack->currentsize] = 768; petscstack->petscroutine [petscstack->currentsize] = PETSC_TRUE; petscstack->currentsize ++; } if (petscstack) { petscstack->hotdepth += (PETSC_FALSE || petscstack->hotdepth); } ; } while (0); ; } while (0); | |||
769 | ierr = PetscLogGetStageLog(&stageLog);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),769,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
770 | for (stage = 0; stage < stageLog->numStages; stage++) { | |||
771 | ierr = PetscEventPerfLogDeactivateClass(stageLog->stageInfo[stage].eventLog, stageLog->eventLog, classid);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),771,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
772 | } | |||
773 | PetscFunctionReturn(0)do { do { ; if (petscstack && petscstack->currentsize > 0) { petscstack->currentsize--; petscstack->function [petscstack->currentsize] = 0; petscstack->file[petscstack ->currentsize] = 0; petscstack->line[petscstack->currentsize ] = 0; petscstack->petscroutine[petscstack->currentsize ] = PETSC_FALSE; } if (petscstack) { petscstack->hotdepth = (((petscstack->hotdepth-1)<(0)) ? (0) : (petscstack-> hotdepth-1)); } ; } while (0); return(0);} while (0); | |||
774 | } | |||
775 | ||||
776 | /*@ | |||
777 | PetscLogEventActivate - Indicates that a particular event should be logged. | |||
778 | ||||
779 | Not Collective | |||
780 | ||||
781 | Input Parameter: | |||
782 | . event - The event id | |||
783 | ||||
784 | Usage: | |||
785 | .vb | |||
786 | PetscLogEventDeactivate(VEC_SetValues); | |||
787 | [code where you do not want to log VecSetValues()] | |||
788 | PetscLogEventActivate(VEC_SetValues); | |||
789 | [code where you do want to log VecSetValues()] | |||
790 | .ve | |||
791 | ||||
792 | Note: | |||
793 | The event may be either a pre-defined PETSc event (found in include/petsclog.h) | |||
794 | or an event number obtained with PetscLogEventRegister(). | |||
795 | ||||
796 | Level: advanced | |||
797 | ||||
798 | .seealso: PlogEventDeactivate() | |||
799 | @*/ | |||
800 | PetscErrorCode PetscLogEventActivate(PetscLogEvent event) | |||
801 | { | |||
802 | PetscStageLog stageLog; | |||
803 | int stage; | |||
804 | PetscErrorCode ierr; | |||
805 | ||||
806 | PetscFunctionBegindo { do { ; if (petscstack && (petscstack->currentsize < 64)) { petscstack->function[petscstack->currentsize ] = __func__; petscstack->file[petscstack->currentsize] = "/sandbox/petsc/petsc.next/src/sys/logging/plog.c"; petscstack ->line[petscstack->currentsize] = 806; petscstack->petscroutine [petscstack->currentsize] = PETSC_TRUE; petscstack->currentsize ++; } if (petscstack) { petscstack->hotdepth += (PETSC_FALSE || petscstack->hotdepth); } ; } while (0); ; } while (0); | |||
807 | ierr = PetscLogGetStageLog(&stageLog);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),807,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
808 | ierr = PetscStageLogGetCurrent(stageLog, &stage);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),808,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
809 | ierr = PetscEventPerfLogActivate(stageLog->stageInfo[stage].eventLog, event);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),809,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
810 | PetscFunctionReturn(0)do { do { ; if (petscstack && petscstack->currentsize > 0) { petscstack->currentsize--; petscstack->function [petscstack->currentsize] = 0; petscstack->file[petscstack ->currentsize] = 0; petscstack->line[petscstack->currentsize ] = 0; petscstack->petscroutine[petscstack->currentsize ] = PETSC_FALSE; } if (petscstack) { petscstack->hotdepth = (((petscstack->hotdepth-1)<(0)) ? (0) : (petscstack-> hotdepth-1)); } ; } while (0); return(0);} while (0); | |||
811 | } | |||
812 | ||||
813 | /*@ | |||
814 | PetscLogEventDeactivate - Indicates that a particular event should not be logged. | |||
815 | ||||
816 | Not Collective | |||
817 | ||||
818 | Input Parameter: | |||
819 | . event - The event id | |||
820 | ||||
821 | Usage: | |||
822 | .vb | |||
823 | PetscLogEventDeactivate(VEC_SetValues); | |||
824 | [code where you do not want to log VecSetValues()] | |||
825 | PetscLogEventActivate(VEC_SetValues); | |||
826 | [code where you do want to log VecSetValues()] | |||
827 | .ve | |||
828 | ||||
829 | Note: | |||
830 | The event may be either a pre-defined PETSc event (found in | |||
831 | include/petsclog.h) or an event number obtained with PetscLogEventRegister()). | |||
832 | ||||
833 | Level: advanced | |||
834 | ||||
835 | .seealso: PlogEventActivate() | |||
836 | @*/ | |||
837 | PetscErrorCode PetscLogEventDeactivate(PetscLogEvent event) | |||
838 | { | |||
839 | PetscStageLog stageLog; | |||
840 | int stage; | |||
841 | PetscErrorCode ierr; | |||
842 | ||||
843 | PetscFunctionBegindo { do { ; if (petscstack && (petscstack->currentsize < 64)) { petscstack->function[petscstack->currentsize ] = __func__; petscstack->file[petscstack->currentsize] = "/sandbox/petsc/petsc.next/src/sys/logging/plog.c"; petscstack ->line[petscstack->currentsize] = 843; petscstack->petscroutine [petscstack->currentsize] = PETSC_TRUE; petscstack->currentsize ++; } if (petscstack) { petscstack->hotdepth += (PETSC_FALSE || petscstack->hotdepth); } ; } while (0); ; } while (0); | |||
844 | ierr = PetscLogGetStageLog(&stageLog);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),844,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
845 | ierr = PetscStageLogGetCurrent(stageLog, &stage);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),845,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
846 | ierr = PetscEventPerfLogDeactivate(stageLog->stageInfo[stage].eventLog, event);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),846,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
847 | PetscFunctionReturn(0)do { do { ; if (petscstack && petscstack->currentsize > 0) { petscstack->currentsize--; petscstack->function [petscstack->currentsize] = 0; petscstack->file[petscstack ->currentsize] = 0; petscstack->line[petscstack->currentsize ] = 0; petscstack->petscroutine[petscstack->currentsize ] = PETSC_FALSE; } if (petscstack) { petscstack->hotdepth = (((petscstack->hotdepth-1)<(0)) ? (0) : (petscstack-> hotdepth-1)); } ; } while (0); return(0);} while (0); | |||
848 | } | |||
849 | ||||
850 | /*@ | |||
851 | PetscLogEventSetActiveAll - Sets the event activity in every stage. | |||
852 | ||||
853 | Not Collective | |||
854 | ||||
855 | Input Parameters: | |||
856 | + event - The event id | |||
857 | - isActive - The activity flag determining whether the event is logged | |||
858 | ||||
859 | Level: advanced | |||
860 | ||||
861 | .seealso: PlogEventActivate(),PlogEventDeactivate() | |||
862 | @*/ | |||
863 | PetscErrorCode PetscLogEventSetActiveAll(PetscLogEvent event, PetscBool isActive) | |||
864 | { | |||
865 | PetscStageLog stageLog; | |||
866 | int stage; | |||
867 | PetscErrorCode ierr; | |||
868 | ||||
869 | PetscFunctionBegindo { do { ; if (petscstack && (petscstack->currentsize < 64)) { petscstack->function[petscstack->currentsize ] = __func__; petscstack->file[petscstack->currentsize] = "/sandbox/petsc/petsc.next/src/sys/logging/plog.c"; petscstack ->line[petscstack->currentsize] = 869; petscstack->petscroutine [petscstack->currentsize] = PETSC_TRUE; petscstack->currentsize ++; } if (petscstack) { petscstack->hotdepth += (PETSC_FALSE || petscstack->hotdepth); } ; } while (0); ; } while (0); | |||
870 | ierr = PetscLogGetStageLog(&stageLog);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),870,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
871 | for (stage = 0; stage < stageLog->numStages; stage++) { | |||
872 | if (isActive) { | |||
873 | ierr = PetscEventPerfLogActivate(stageLog->stageInfo[stage].eventLog, event);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),873,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
874 | } else { | |||
875 | ierr = PetscEventPerfLogDeactivate(stageLog->stageInfo[stage].eventLog, event);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),875,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
876 | } | |||
877 | } | |||
878 | PetscFunctionReturn(0)do { do { ; if (petscstack && petscstack->currentsize > 0) { petscstack->currentsize--; petscstack->function [petscstack->currentsize] = 0; petscstack->file[petscstack ->currentsize] = 0; petscstack->line[petscstack->currentsize ] = 0; petscstack->petscroutine[petscstack->currentsize ] = PETSC_FALSE; } if (petscstack) { petscstack->hotdepth = (((petscstack->hotdepth-1)<(0)) ? (0) : (petscstack-> hotdepth-1)); } ; } while (0); return(0);} while (0); | |||
879 | } | |||
880 | ||||
881 | /*@ | |||
882 | PetscLogEventActivateClass - Activates event logging for a PETSc object class. | |||
883 | ||||
884 | Not Collective | |||
885 | ||||
886 | Input Parameter: | |||
887 | . classid - The event class, for example MAT_CLASSID, SNES_CLASSID, etc. | |||
888 | ||||
889 | Level: developer | |||
890 | ||||
891 | .seealso: PetscLogEventDeactivateClass(),PetscLogEventActivate(),PetscLogEventDeactivate() | |||
892 | @*/ | |||
893 | PetscErrorCode PetscLogEventActivateClass(PetscClassId classid) | |||
894 | { | |||
895 | PetscStageLog stageLog; | |||
896 | int stage; | |||
897 | PetscErrorCode ierr; | |||
898 | ||||
899 | PetscFunctionBegindo { do { ; if (petscstack && (petscstack->currentsize < 64)) { petscstack->function[petscstack->currentsize ] = __func__; petscstack->file[petscstack->currentsize] = "/sandbox/petsc/petsc.next/src/sys/logging/plog.c"; petscstack ->line[petscstack->currentsize] = 899; petscstack->petscroutine [petscstack->currentsize] = PETSC_TRUE; petscstack->currentsize ++; } if (petscstack) { petscstack->hotdepth += (PETSC_FALSE || petscstack->hotdepth); } ; } while (0); ; } while (0); | |||
900 | ierr = PetscLogGetStageLog(&stageLog);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),900,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
901 | ierr = PetscStageLogGetCurrent(stageLog, &stage);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),901,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
902 | ierr = PetscEventPerfLogActivateClass(stageLog->stageInfo[stage].eventLog, stageLog->eventLog, classid);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),902,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
903 | PetscFunctionReturn(0)do { do { ; if (petscstack && petscstack->currentsize > 0) { petscstack->currentsize--; petscstack->function [petscstack->currentsize] = 0; petscstack->file[petscstack ->currentsize] = 0; petscstack->line[petscstack->currentsize ] = 0; petscstack->petscroutine[petscstack->currentsize ] = PETSC_FALSE; } if (petscstack) { petscstack->hotdepth = (((petscstack->hotdepth-1)<(0)) ? (0) : (petscstack-> hotdepth-1)); } ; } while (0); return(0);} while (0); | |||
904 | } | |||
905 | ||||
906 | /*@ | |||
907 | PetscLogEventDeactivateClass - Deactivates event logging for a PETSc object class. | |||
908 | ||||
909 | Not Collective | |||
910 | ||||
911 | Input Parameter: | |||
912 | . classid - The event class, for example MAT_CLASSID, SNES_CLASSID, etc. | |||
913 | ||||
914 | Level: developer | |||
915 | ||||
916 | .seealso: PetscLogEventActivateClass(),PetscLogEventActivate(),PetscLogEventDeactivate() | |||
917 | @*/ | |||
918 | PetscErrorCode PetscLogEventDeactivateClass(PetscClassId classid) | |||
919 | { | |||
920 | PetscStageLog stageLog; | |||
921 | int stage; | |||
922 | PetscErrorCode ierr; | |||
923 | ||||
924 | PetscFunctionBegindo { do { ; if (petscstack && (petscstack->currentsize < 64)) { petscstack->function[petscstack->currentsize ] = __func__; petscstack->file[petscstack->currentsize] = "/sandbox/petsc/petsc.next/src/sys/logging/plog.c"; petscstack ->line[petscstack->currentsize] = 924; petscstack->petscroutine [petscstack->currentsize] = PETSC_TRUE; petscstack->currentsize ++; } if (petscstack) { petscstack->hotdepth += (PETSC_FALSE || petscstack->hotdepth); } ; } while (0); ; } while (0); | |||
925 | ierr = PetscLogGetStageLog(&stageLog);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),925,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
926 | ierr = PetscStageLogGetCurrent(stageLog, &stage);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),926,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
927 | ierr = PetscEventPerfLogDeactivateClass(stageLog->stageInfo[stage].eventLog, stageLog->eventLog, classid);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),927,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
928 | PetscFunctionReturn(0)do { do { ; if (petscstack && petscstack->currentsize > 0) { petscstack->currentsize--; petscstack->function [petscstack->currentsize] = 0; petscstack->file[petscstack ->currentsize] = 0; petscstack->line[petscstack->currentsize ] = 0; petscstack->petscroutine[petscstack->currentsize ] = PETSC_FALSE; } if (petscstack) { petscstack->hotdepth = (((petscstack->hotdepth-1)<(0)) ? (0) : (petscstack-> hotdepth-1)); } ; } while (0); return(0);} while (0); | |||
929 | } | |||
930 | ||||
931 | /*MC | |||
932 | PetscLogEventSync - Synchronizes the beginning of a user event. | |||
933 | ||||
934 | Synopsis: | |||
935 | #include <petsclog.h> | |||
936 | PetscErrorCode PetscLogEventSync(int e,MPI_Comm comm) | |||
937 | ||||
938 | Collective | |||
939 | ||||
940 | Input Parameters: | |||
941 | + e - integer associated with the event obtained from PetscLogEventRegister() | |||
942 | - comm - an MPI communicator | |||
943 | ||||
944 | Usage: | |||
945 | .vb | |||
946 | PetscLogEvent USER_EVENT; | |||
947 | PetscLogEventRegister("User event",0,&USER_EVENT); | |||
948 | PetscLogEventSync(USER_EVENT,PETSC_COMM_WORLD); | |||
949 | PetscLogEventBegin(USER_EVENT,0,0,0,0); | |||
950 | [code segment to monitor] | |||
951 | PetscLogEventEnd(USER_EVENT,0,0,0,0); | |||
952 | .ve | |||
953 | ||||
954 | Notes: | |||
955 | This routine should be called only if there is not a | |||
956 | PetscObject available to pass to PetscLogEventBegin(). | |||
957 | ||||
958 | Level: developer | |||
959 | ||||
960 | .seealso: PetscLogEventRegister(), PetscLogEventBegin(), PetscLogEventEnd() | |||
961 | ||||
962 | M*/ | |||
963 | ||||
964 | /*MC | |||
965 | PetscLogEventBegin - Logs the beginning of a user event. | |||
966 | ||||
967 | Synopsis: | |||
968 | #include <petsclog.h> | |||
969 | PetscErrorCode PetscLogEventBegin(int e,PetscObject o1,PetscObject o2,PetscObject o3,PetscObject o4) | |||
970 | ||||
971 | Not Collective | |||
972 | ||||
973 | Input Parameters: | |||
974 | + e - integer associated with the event obtained from PetscLogEventRegister() | |||
975 | - o1,o2,o3,o4 - objects associated with the event, or 0 | |||
976 | ||||
977 | ||||
978 | Fortran Synopsis: | |||
979 | void PetscLogEventBegin(int e,PetscErrorCode ierr) | |||
980 | ||||
981 | Usage: | |||
982 | .vb | |||
983 | PetscLogEvent USER_EVENT; | |||
984 | PetscLogDouble user_event_flops; | |||
985 | PetscLogEventRegister("User event",0,&USER_EVENT); | |||
986 | PetscLogEventBegin(USER_EVENT,0,0,0,0); | |||
987 | [code segment to monitor] | |||
988 | PetscLogFlops(user_event_flops); | |||
989 | PetscLogEventEnd(USER_EVENT,0,0,0,0); | |||
990 | .ve | |||
991 | ||||
992 | Notes: | |||
993 | You need to register each integer event with the command | |||
994 | PetscLogEventRegister(). | |||
995 | ||||
996 | Level: intermediate | |||
997 | ||||
998 | .seealso: PetscLogEventRegister(), PetscLogEventEnd(), PetscLogFlops() | |||
999 | ||||
1000 | M*/ | |||
1001 | ||||
1002 | /*MC | |||
1003 | PetscLogEventEnd - Log the end of a user event. | |||
1004 | ||||
1005 | Synopsis: | |||
1006 | #include <petsclog.h> | |||
1007 | PetscErrorCode PetscLogEventEnd(int e,PetscObject o1,PetscObject o2,PetscObject o3,PetscObject o4) | |||
1008 | ||||
1009 | Not Collective | |||
1010 | ||||
1011 | Input Parameters: | |||
1012 | + e - integer associated with the event obtained with PetscLogEventRegister() | |||
1013 | - o1,o2,o3,o4 - objects associated with the event, or 0 | |||
1014 | ||||
1015 | ||||
1016 | Fortran Synopsis: | |||
1017 | void PetscLogEventEnd(int e,PetscErrorCode ierr) | |||
1018 | ||||
1019 | Usage: | |||
1020 | .vb | |||
1021 | PetscLogEvent USER_EVENT; | |||
1022 | PetscLogDouble user_event_flops; | |||
1023 | PetscLogEventRegister("User event",0,&USER_EVENT,); | |||
1024 | PetscLogEventBegin(USER_EVENT,0,0,0,0); | |||
1025 | [code segment to monitor] | |||
1026 | PetscLogFlops(user_event_flops); | |||
1027 | PetscLogEventEnd(USER_EVENT,0,0,0,0); | |||
1028 | .ve | |||
1029 | ||||
1030 | Notes: | |||
1031 | You should also register each additional integer event with the command | |||
1032 | PetscLogEventRegister(). | |||
1033 | ||||
1034 | Level: intermediate | |||
1035 | ||||
1036 | .seealso: PetscLogEventRegister(), PetscLogEventBegin(), PetscLogFlops() | |||
1037 | ||||
1038 | M*/ | |||
1039 | ||||
1040 | /*@C | |||
1041 | PetscLogEventGetId - Returns the event id when given the event name. | |||
1042 | ||||
1043 | Not Collective | |||
1044 | ||||
1045 | Input Parameter: | |||
1046 | . name - The event name | |||
1047 | ||||
1048 | Output Parameter: | |||
1049 | . event - The event, or -1 if no event with that name exists | |||
1050 | ||||
1051 | Level: intermediate | |||
1052 | ||||
1053 | .seealso: PetscLogEventBegin(), PetscLogEventEnd(), PetscLogStageGetId() | |||
1054 | @*/ | |||
1055 | PetscErrorCode PetscLogEventGetId(const char name[], PetscLogEvent *event) | |||
1056 | { | |||
1057 | PetscStageLog stageLog; | |||
1058 | PetscErrorCode ierr; | |||
1059 | ||||
1060 | PetscFunctionBegindo { do { ; if (petscstack && (petscstack->currentsize < 64)) { petscstack->function[petscstack->currentsize ] = __func__; petscstack->file[petscstack->currentsize] = "/sandbox/petsc/petsc.next/src/sys/logging/plog.c"; petscstack ->line[petscstack->currentsize] = 1060; petscstack-> petscroutine[petscstack->currentsize] = PETSC_TRUE; petscstack ->currentsize++; } if (petscstack) { petscstack->hotdepth += (PETSC_FALSE || petscstack->hotdepth); } ; } while (0) ; ; } while (0); | |||
1061 | ierr = PetscLogGetStageLog(&stageLog);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1061,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1062 | ierr = PetscEventRegLogGetEvent(stageLog->eventLog, name, event);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1062,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1063 | PetscFunctionReturn(0)do { do { ; if (petscstack && petscstack->currentsize > 0) { petscstack->currentsize--; petscstack->function [petscstack->currentsize] = 0; petscstack->file[petscstack ->currentsize] = 0; petscstack->line[petscstack->currentsize ] = 0; petscstack->petscroutine[petscstack->currentsize ] = PETSC_FALSE; } if (petscstack) { petscstack->hotdepth = (((petscstack->hotdepth-1)<(0)) ? (0) : (petscstack-> hotdepth-1)); } ; } while (0); return(0);} while (0); | |||
1064 | } | |||
1065 | ||||
1066 | ||||
1067 | /*------------------------------------------------ Output Functions -------------------------------------------------*/ | |||
1068 | /*@C | |||
1069 | PetscLogDump - Dumps logs of objects to a file. This file is intended to | |||
1070 | be read by bin/petscview. This program no longer exists. | |||
1071 | ||||
1072 | Collective on PETSC_COMM_WORLD | |||
1073 | ||||
1074 | Input Parameter: | |||
1075 | . name - an optional file name | |||
1076 | ||||
1077 | Usage: | |||
1078 | .vb | |||
1079 | PetscInitialize(...); | |||
1080 | PetscLogDefaultBegin(); or PetscLogAllBegin(); | |||
1081 | ... code ... | |||
1082 | PetscLogDump(filename); | |||
1083 | PetscFinalize(); | |||
1084 | .ve | |||
1085 | ||||
1086 | Notes: | |||
1087 | The default file name is | |||
1088 | $ Log.<rank> | |||
1089 | where <rank> is the processor number. If no name is specified, | |||
1090 | this file will be used. | |||
1091 | ||||
1092 | Level: advanced | |||
1093 | ||||
1094 | .seealso: PetscLogDefaultBegin(), PetscLogAllBegin(), PetscLogView() | |||
1095 | @*/ | |||
1096 | PetscErrorCode PetscLogDump(const char sname[]) | |||
1097 | { | |||
1098 | PetscStageLog stageLog; | |||
1099 | PetscEventPerfInfo *eventInfo; | |||
1100 | FILE *fd; | |||
1101 | char file[PETSC_MAX_PATH_LEN4096], fname[PETSC_MAX_PATH_LEN4096]; | |||
1102 | PetscLogDouble flops, _TotalTime; | |||
1103 | PetscMPIInt rank; | |||
1104 | int action, object, curStage; | |||
1105 | PetscLogEvent event; | |||
1106 | PetscErrorCode ierr; | |||
1107 | ||||
1108 | PetscFunctionBegindo { do { ; if (petscstack && (petscstack->currentsize < 64)) { petscstack->function[petscstack->currentsize ] = __func__; petscstack->file[petscstack->currentsize] = "/sandbox/petsc/petsc.next/src/sys/logging/plog.c"; petscstack ->line[petscstack->currentsize] = 1108; petscstack-> petscroutine[petscstack->currentsize] = PETSC_TRUE; petscstack ->currentsize++; } if (petscstack) { petscstack->hotdepth += (PETSC_FALSE || petscstack->hotdepth); } ; } while (0) ; ; } while (0); | |||
1109 | /* Calculate the total elapsed time */ | |||
1110 | PetscTime(&_TotalTime); | |||
1111 | _TotalTime -= petsc_BaseTime; | |||
1112 | /* Open log file */ | |||
1113 | ierr = MPI_Comm_rank(PETSC_COMM_WORLD, &rank);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1113,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1114 | if (sname && sname[0]) sprintf(file, "%s.%d", sname, rank); | |||
1115 | else sprintf(file, "Log.%d", rank); | |||
1116 | ierr = PetscFixFilename(file, fname);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1116,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1117 | ierr = PetscFOpen(PETSC_COMM_WORLD, fname, "w", &fd);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1117,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1118 | if ((!rank) && (!fd)) SETERRQ1(PETSC_COMM_SELF,PETSC_ERR_FILE_OPEN, "Cannot open file: %s", fname)return PetscError(((MPI_Comm)0x44000001),1118,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,65,PETSC_ERROR_INITIAL,"Cannot open file: %s",fname); | |||
1119 | /* Output totals */ | |||
1120 | ierr = PetscFPrintf(PETSC_COMM_WORLD, fd, "Total Flop %14e %16.8e\n", petsc_TotalFlops, _TotalTime);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1120,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1121 | ierr = PetscFPrintf(PETSC_COMM_WORLD, fd, "Clock Resolution %g\n", 0.0);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1121,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1122 | /* Output actions */ | |||
1123 | if (petsc_logActions) { | |||
1124 | ierr = PetscFPrintf(PETSC_COMM_WORLD, fd, "Actions accomplished %d\n", petsc_numActions);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1124,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1125 | for (action = 0; action < petsc_numActions; action++) { | |||
1126 | ierr = PetscFPrintf(PETSC_COMM_WORLD, fd, "%g %d %d %d %d %d %d %g %g %g\n", | |||
1127 | petsc_actions[action].time, petsc_actions[action].action, (int)petsc_actions[action].event, (int)petsc_actions[action].classid, petsc_actions[action].id1, | |||
1128 | petsc_actions[action].id2, petsc_actions[action].id3, petsc_actions[action].flops, petsc_actions[action].mem, petsc_actions[action].maxmem);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1128,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1129 | } | |||
1130 | } | |||
1131 | /* Output objects */ | |||
1132 | if (petsc_logObjects) { | |||
1133 | ierr = PetscFPrintf(PETSC_COMM_WORLD, fd, "Objects created %d destroyed %d\n", petsc_numObjects, petsc_numObjectsDestroyed);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1133,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1134 | for (object = 0; object < petsc_numObjects; object++) { | |||
1135 | ierr = PetscFPrintf(PETSC_COMM_WORLD, fd, "Parent ID: %d Memory: %d\n", petsc_objects[object].parent, (int) petsc_objects[object].mem);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1135,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1136 | if (!petsc_objects[object].name[0]) { | |||
1137 | ierr = PetscFPrintf(PETSC_COMM_WORLD, fd,"No Name\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1137,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1138 | } else { | |||
1139 | ierr = PetscFPrintf(PETSC_COMM_WORLD, fd, "Name: %s\n", petsc_objects[object].name);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1139,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1140 | } | |||
1141 | if (petsc_objects[object].info[0] != 0) { | |||
1142 | ierr = PetscFPrintf(PETSC_COMM_WORLD, fd, "No Info\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1142,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1143 | } else { | |||
1144 | ierr = PetscFPrintf(PETSC_COMM_WORLD, fd, "Info: %s\n", petsc_objects[object].info);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1144,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1145 | } | |||
1146 | } | |||
1147 | } | |||
1148 | /* Output events */ | |||
1149 | ierr = PetscFPrintf(PETSC_COMM_WORLD, fd, "Event log:\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1149,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1150 | ierr = PetscLogGetStageLog(&stageLog);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1150,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1151 | ierr = PetscIntStackTop(stageLog->stack, &curStage);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1151,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1152 | eventInfo = stageLog->stageInfo[curStage].eventLog->eventInfo; | |||
1153 | for (event = 0; event < stageLog->stageInfo[curStage].eventLog->numEvents; event++) { | |||
1154 | if (eventInfo[event].time != 0.0) flops = eventInfo[event].flops/eventInfo[event].time; | |||
1155 | else flops = 0.0; | |||
1156 | ierr = PetscFPrintf(PETSC_COMM_WORLD, fd, "%d %16d %16g %16g %16g\n", event, eventInfo[event].count, | |||
1157 | eventInfo[event].flops, eventInfo[event].time, flops);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1157,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1158 | } | |||
1159 | ierr = PetscFClose(PETSC_COMM_WORLD, fd);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1159,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1160 | PetscFunctionReturn(0)do { do { ; if (petscstack && petscstack->currentsize > 0) { petscstack->currentsize--; petscstack->function [petscstack->currentsize] = 0; petscstack->file[petscstack ->currentsize] = 0; petscstack->line[petscstack->currentsize ] = 0; petscstack->petscroutine[petscstack->currentsize ] = PETSC_FALSE; } if (petscstack) { petscstack->hotdepth = (((petscstack->hotdepth-1)<(0)) ? (0) : (petscstack-> hotdepth-1)); } ; } while (0); return(0);} while (0); | |||
1161 | } | |||
1162 | ||||
1163 | /* | |||
1164 | PetscLogView_Detailed - Each process prints the times for its own events | |||
1165 | ||||
1166 | */ | |||
1167 | PetscErrorCode PetscLogView_Detailed(PetscViewer viewer) | |||
1168 | { | |||
1169 | PetscStageLog stageLog; | |||
1170 | PetscEventPerfInfo *eventInfo = NULL((void*)0), *stageInfo = NULL((void*)0); | |||
1171 | PetscLogDouble locTotalTime, numRed, maxMem; | |||
1172 | int numStages,numEvents,stage,event; | |||
1173 | MPI_Comm comm = PetscObjectComm((PetscObject) viewer); | |||
1174 | PetscMPIInt rank,size; | |||
1175 | PetscErrorCode ierr; | |||
1176 | ||||
1177 | PetscFunctionBegindo { do { ; if (petscstack && (petscstack->currentsize < 64)) { petscstack->function[petscstack->currentsize ] = __func__; petscstack->file[petscstack->currentsize] = "/sandbox/petsc/petsc.next/src/sys/logging/plog.c"; petscstack ->line[petscstack->currentsize] = 1177; petscstack-> petscroutine[petscstack->currentsize] = PETSC_TRUE; petscstack ->currentsize++; } if (petscstack) { petscstack->hotdepth += (PETSC_FALSE || petscstack->hotdepth); } ; } while (0) ; ; } while (0); | |||
1178 | ierr = MPI_Comm_size(comm, &size);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1178,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1179 | ierr = MPI_Comm_rank(comm, &rank);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1179,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1180 | /* Must preserve reduction count before we go on */ | |||
1181 | numRed = petsc_allreduce_ct + petsc_gather_ct + petsc_scatter_ct; | |||
1182 | /* Get the total elapsed time */ | |||
1183 | PetscTime(&locTotalTime); locTotalTime -= petsc_BaseTime; | |||
1184 | ierr = PetscViewerASCIIPrintf(viewer,"size = %d\n",size);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1184,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1185 | ierr = PetscViewerASCIIPrintf(viewer,"LocalTimes = {}\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1185,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1186 | ierr = PetscViewerASCIIPrintf(viewer,"LocalMessages = {}\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1186,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1187 | ierr = PetscViewerASCIIPrintf(viewer,"LocalMessageLens = {}\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1187,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1188 | ierr = PetscViewerASCIIPrintf(viewer,"LocalReductions = {}\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1188,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1189 | ierr = PetscViewerASCIIPrintf(viewer,"LocalFlop = {}\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1189,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1190 | ierr = PetscViewerASCIIPrintf(viewer,"LocalObjects = {}\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1190,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1191 | ierr = PetscViewerASCIIPrintf(viewer,"LocalMemory = {}\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1191,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1192 | ierr = PetscLogGetStageLog(&stageLog);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1192,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1193 | ierr = MPIU_Allreduce(&stageLog->numStages, &numStages, 1, MPI_INT, MPI_MAX, comm)(PetscAllreduceBarrierCheck(comm,1,1193,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ) || ((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce((&stageLog->numStages),(&numStages) ,(1),(((MPI_Datatype)0x4c000405)),((MPI_Op)(0x58000001)),(comm ))));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1193,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1194 | ierr = PetscViewerASCIIPrintf(viewer,"Stages = {}\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1194,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1195 | for (stage=0; stage<numStages; stage++) { | |||
1196 | ierr = PetscViewerASCIIPrintf(viewer,"Stages[\"%s\"] = {}\n",stageLog->stageInfo[stage].name);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1196,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1197 | ierr = PetscViewerASCIIPrintf(viewer,"Stages[\"%s\"][\"summary\"] = {}\n",stageLog->stageInfo[stage].name);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1197,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1198 | ierr = MPIU_Allreduce(&stageLog->stageInfo[stage].eventLog->numEvents, &numEvents, 1, MPI_INT, MPI_MAX, comm)(PetscAllreduceBarrierCheck(comm,1,1198,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ) || ((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce((&stageLog->stageInfo[stage].eventLog-> numEvents),(&numEvents),(1),(((MPI_Datatype)0x4c000405)), ((MPI_Op)(0x58000001)),(comm))));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1198,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1199 | for (event = 0; event < numEvents; event++) { | |||
1200 | ierr = PetscViewerASCIIPrintf(viewer,"Stages[\"%s\"][\"%s\"] = {}\n",stageLog->stageInfo[stage].name,stageLog->eventLog->eventInfo[event].name);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1200,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1201 | } | |||
1202 | } | |||
1203 | ierr = PetscMallocGetMaximumUsage(&maxMem);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1203,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1204 | ierr = PetscViewerASCIIPushSynchronized(viewer);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1204,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1205 | ierr = PetscViewerASCIISynchronizedPrintf(viewer,"LocalTimes[%d] = %g\n",rank,locTotalTime);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1205,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1206 | ierr = PetscViewerASCIISynchronizedPrintf(viewer,"LocalMessages[%d] = %g\n",rank,(petsc_irecv_ct + petsc_isend_ct + petsc_recv_ct + petsc_send_ct));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1206,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1207 | ierr = PetscViewerASCIISynchronizedPrintf(viewer,"LocalMessageLens[%d] = %g\n",rank,(petsc_irecv_len + petsc_isend_len + petsc_recv_len + petsc_send_len));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1207,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1208 | ierr = PetscViewerASCIISynchronizedPrintf(viewer,"LocalReductions[%d] = %g\n",rank,numRed);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1208,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1209 | ierr = PetscViewerASCIISynchronizedPrintf(viewer,"LocalFlop[%d] = %g\n",rank,petsc_TotalFlops);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1209,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1210 | ierr = PetscViewerASCIISynchronizedPrintf(viewer,"LocalObjects[%d] = %d\n",rank,petsc_numObjects);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1210,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1211 | ierr = PetscViewerASCIISynchronizedPrintf(viewer,"LocalMemory[%d] = %g\n",rank,maxMem);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1211,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1212 | ierr = PetscViewerFlush(viewer);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1212,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1213 | for (stage=0; stage<numStages; stage++) { | |||
1214 | stageInfo = &stageLog->stageInfo[stage].perfInfo; | |||
1215 | ierr = PetscViewerASCIISynchronizedPrintf(viewer,"Stages[\"%s\"][\"summary\"][%d] = {\"time\" : %g, \"numMessages\" : %g, \"messageLength\" : %g, \"numReductions\" : %g, \"flop\" : %g}\n", | |||
1216 | stageLog->stageInfo[stage].name,rank, | |||
1217 | stageInfo->time,stageInfo->numMessages,stageInfo->messageLength,stageInfo->numReductions,stageInfo->flops);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1217,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1218 | ierr = MPIU_Allreduce(&stageLog->stageInfo[stage].eventLog->numEvents, &numEvents, 1, MPI_INT, MPI_MAX, comm)(PetscAllreduceBarrierCheck(comm,1,1218,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ) || ((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce((&stageLog->stageInfo[stage].eventLog-> numEvents),(&numEvents),(1),(((MPI_Datatype)0x4c000405)), ((MPI_Op)(0x58000001)),(comm))));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1218,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1219 | for (event = 0; event < numEvents; event++) { | |||
1220 | eventInfo = &stageLog->stageInfo[stage].eventLog->eventInfo[event]; | |||
1221 | ierr = PetscViewerASCIISynchronizedPrintf(viewer,"Stages[\"%s\"][\"%s\"][%d] = {\"count\" : %D, \"time\" : %g, \"syncTime\" : %g, \"numMessages\" : %g, \"messageLength\" : %g, \"numReductions\" : %g, \"flop\" : %g", | |||
1222 | stageLog->stageInfo[stage].name,stageLog->eventLog->eventInfo[event].name,rank, | |||
1223 | eventInfo->count,eventInfo->time,eventInfo->syncTime,eventInfo->numMessages,eventInfo->messageLength,eventInfo->numReductions,eventInfo->flops);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1223,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1224 | if (eventInfo->dof[0] >= 0.) { | |||
1225 | PetscInt d, e; | |||
1226 | ||||
1227 | ierr = PetscViewerASCIISynchronizedPrintf(viewer, ", \"dof\" : [");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1227,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1228 | for (d = 0; d < 8; ++d) { | |||
1229 | if (d > 0) {ierr = PetscViewerASCIISynchronizedPrintf(viewer, ", ");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1229,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0);} | |||
1230 | ierr = PetscViewerASCIISynchronizedPrintf(viewer, "%g", eventInfo->dof[d]);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1230,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1231 | } | |||
1232 | ierr = PetscViewerASCIISynchronizedPrintf(viewer, "]");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1232,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1233 | ierr = PetscViewerASCIISynchronizedPrintf(viewer, ", \"error\" : [");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1233,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1234 | for (e = 0; e < 8; ++e) { | |||
1235 | if (e > 0) {ierr = PetscViewerASCIISynchronizedPrintf(viewer, ", ");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1235,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0);} | |||
1236 | ierr = PetscViewerASCIISynchronizedPrintf(viewer, "%g", eventInfo->errors[e]);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1236,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1237 | } | |||
1238 | ierr = PetscViewerASCIISynchronizedPrintf(viewer, "]");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1238,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1239 | } | |||
1240 | ierr = PetscViewerASCIISynchronizedPrintf(viewer,"}\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1240,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1241 | } | |||
1242 | } | |||
1243 | ierr = PetscViewerFlush(viewer);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1243,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1244 | ierr = PetscViewerASCIIPopSynchronized(viewer);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1244,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1245 | PetscFunctionReturn(0)do { do { ; if (petscstack && petscstack->currentsize > 0) { petscstack->currentsize--; petscstack->function [petscstack->currentsize] = 0; petscstack->file[petscstack ->currentsize] = 0; petscstack->line[petscstack->currentsize ] = 0; petscstack->petscroutine[petscstack->currentsize ] = PETSC_FALSE; } if (petscstack) { petscstack->hotdepth = (((petscstack->hotdepth-1)<(0)) ? (0) : (petscstack-> hotdepth-1)); } ; } while (0); return(0);} while (0); | |||
1246 | } | |||
1247 | ||||
1248 | /* | |||
1249 | PetscLogView_CSV - Each process prints the times for its own events in Comma-Separated Value Format | |||
1250 | */ | |||
1251 | PetscErrorCode PetscLogView_CSV(PetscViewer viewer) | |||
1252 | { | |||
1253 | PetscStageLog stageLog; | |||
1254 | PetscEventPerfInfo *eventInfo = NULL((void*)0); | |||
1255 | PetscLogDouble locTotalTime, maxMem; | |||
1256 | int numStages,numEvents,stage,event; | |||
1257 | MPI_Comm comm = PetscObjectComm((PetscObject) viewer); | |||
1258 | PetscMPIInt rank,size; | |||
1259 | PetscErrorCode ierr; | |||
1260 | ||||
1261 | PetscFunctionBegindo { do { ; if (petscstack && (petscstack->currentsize < 64)) { petscstack->function[petscstack->currentsize ] = __func__; petscstack->file[petscstack->currentsize] = "/sandbox/petsc/petsc.next/src/sys/logging/plog.c"; petscstack ->line[petscstack->currentsize] = 1261; petscstack-> petscroutine[petscstack->currentsize] = PETSC_TRUE; petscstack ->currentsize++; } if (petscstack) { petscstack->hotdepth += (PETSC_FALSE || petscstack->hotdepth); } ; } while (0) ; ; } while (0); | |||
1262 | ierr = MPI_Comm_size(comm, &size);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1262,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1263 | ierr = MPI_Comm_rank(comm, &rank);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1263,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1264 | /* Must preserve reduction count before we go on */ | |||
1265 | /* Get the total elapsed time */ | |||
1266 | PetscTime(&locTotalTime); locTotalTime -= petsc_BaseTime; | |||
1267 | ierr = PetscLogGetStageLog(&stageLog);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1267,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1268 | ierr = MPIU_Allreduce(&stageLog->numStages, &numStages, 1, MPI_INT, MPI_MAX, comm)(PetscAllreduceBarrierCheck(comm,1,1268,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ) || ((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce((&stageLog->numStages),(&numStages) ,(1),(((MPI_Datatype)0x4c000405)),((MPI_Op)(0x58000001)),(comm ))));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1268,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1269 | ierr = PetscMallocGetMaximumUsage(&maxMem);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1269,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1270 | ierr = PetscViewerASCIIPushSynchronized(viewer);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1270,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1271 | ierr = PetscViewerASCIIPrintf(viewer,"Stage Name,Event Name,Rank,Time,Num Messages,Message Length,Num Reductions,FLOP,dof0,dof1,dof2,dof3,dof4,dof5,dof6,dof7,e0,e1,e2,e3,e4,e5,e6,e7,%d\n", size); | |||
1272 | ierr = PetscViewerFlush(viewer);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1272,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1273 | for (stage=0; stage<numStages; stage++) { | |||
1274 | PetscEventPerfInfo *stageInfo = &stageLog->stageInfo[stage].perfInfo; | |||
1275 | ||||
1276 | ierr = PetscViewerASCIISynchronizedPrintf(viewer,"%s,summary,%d,%g,%g,%g,%g,%g\n", | |||
1277 | stageLog->stageInfo[stage].name,rank,stageInfo->time,stageInfo->numMessages,stageInfo->messageLength,stageInfo->numReductions,stageInfo->flops);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1277,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1278 | ierr = MPIU_Allreduce(&stageLog->stageInfo[stage].eventLog->numEvents, &numEvents, 1, MPI_INT, MPI_MAX, comm)(PetscAllreduceBarrierCheck(comm,1,1278,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ) || ((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce((&stageLog->stageInfo[stage].eventLog-> numEvents),(&numEvents),(1),(((MPI_Datatype)0x4c000405)), ((MPI_Op)(0x58000001)),(comm))));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1278,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1279 | for (event = 0; event < numEvents; event++) { | |||
1280 | eventInfo = &stageLog->stageInfo[stage].eventLog->eventInfo[event]; | |||
1281 | ierr = PetscViewerASCIISynchronizedPrintf(viewer,"%s,%s,%d,%g,%g,%g,%g,%g",stageLog->stageInfo[stage].name, | |||
1282 | stageLog->eventLog->eventInfo[event].name,rank,eventInfo->time,eventInfo->numMessages, | |||
1283 | eventInfo->messageLength,eventInfo->numReductions,eventInfo->flops);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1283,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1284 | if (eventInfo->dof[0] >= 0.) { | |||
1285 | PetscInt d, e; | |||
1286 | ||||
1287 | for (d = 0; d < 8; ++d) { | |||
1288 | ierr = PetscViewerASCIISynchronizedPrintf(viewer, ",%g", eventInfo->dof[d]);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1288,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1289 | } | |||
1290 | for (e = 0; e < 8; ++e) { | |||
1291 | ierr = PetscViewerASCIISynchronizedPrintf(viewer, ",%g", eventInfo->errors[e]);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1291,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1292 | } | |||
1293 | } | |||
1294 | ierr = PetscViewerASCIISynchronizedPrintf(viewer,"\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1294,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1295 | } | |||
1296 | } | |||
1297 | ierr = PetscViewerFlush(viewer);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1297,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1298 | ierr = PetscViewerASCIIPopSynchronized(viewer);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1298,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1299 | PetscFunctionReturn(0)do { do { ; if (petscstack && petscstack->currentsize > 0) { petscstack->currentsize--; petscstack->function [petscstack->currentsize] = 0; petscstack->file[petscstack ->currentsize] = 0; petscstack->line[petscstack->currentsize ] = 0; petscstack->petscroutine[petscstack->currentsize ] = PETSC_FALSE; } if (petscstack) { petscstack->hotdepth = (((petscstack->hotdepth-1)<(0)) ? (0) : (petscstack-> hotdepth-1)); } ; } while (0); return(0);} while (0); | |||
1300 | } | |||
1301 | ||||
1302 | static PetscErrorCode PetscLogViewWarnSync(MPI_Comm comm,FILE *fd) | |||
1303 | { | |||
1304 | PetscErrorCode ierr; | |||
1305 | PetscFunctionBegindo { do { ; if (petscstack && (petscstack->currentsize < 64)) { petscstack->function[petscstack->currentsize ] = __func__; petscstack->file[petscstack->currentsize] = "/sandbox/petsc/petsc.next/src/sys/logging/plog.c"; petscstack ->line[petscstack->currentsize] = 1305; petscstack-> petscroutine[petscstack->currentsize] = PETSC_TRUE; petscstack ->currentsize++; } if (petscstack) { petscstack->hotdepth += (PETSC_FALSE || petscstack->hotdepth); } ; } while (0) ; ; } while (0); | |||
1306 | if (!PetscLogSyncOn) PetscFunctionReturn(0)do { do { ; if (petscstack && petscstack->currentsize > 0) { petscstack->currentsize--; petscstack->function [petscstack->currentsize] = 0; petscstack->file[petscstack ->currentsize] = 0; petscstack->line[petscstack->currentsize ] = 0; petscstack->petscroutine[petscstack->currentsize ] = PETSC_FALSE; } if (petscstack) { petscstack->hotdepth = (((petscstack->hotdepth-1)<(0)) ? (0) : (petscstack-> hotdepth-1)); } ; } while (0); return(0);} while (0); | |||
1307 | ierr = PetscFPrintf(comm, fd, "\n\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1307,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1308 | ierr = PetscFPrintf(comm, fd, " ##########################################################\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1308,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1309 | ierr = PetscFPrintf(comm, fd, " # #\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1309,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1310 | ierr = PetscFPrintf(comm, fd, " # WARNING!!! #\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1310,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1311 | ierr = PetscFPrintf(comm, fd, " # #\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1311,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1312 | ierr = PetscFPrintf(comm, fd, " # This program was run with logging synchronization. #\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1312,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1313 | ierr = PetscFPrintf(comm, fd, " # This option provides more meaningful imbalance #\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1313,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1314 | ierr = PetscFPrintf(comm, fd, " # figures at the expense of slowing things down and #\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1314,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1315 | ierr = PetscFPrintf(comm, fd, " # providing a distorted view of the overall runtime. #\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1315,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1316 | ierr = PetscFPrintf(comm, fd, " # #\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1316,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1317 | ierr = PetscFPrintf(comm, fd, " ##########################################################\n\n\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1317,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1318 | PetscFunctionReturn(0)do { do { ; if (petscstack && petscstack->currentsize > 0) { petscstack->currentsize--; petscstack->function [petscstack->currentsize] = 0; petscstack->file[petscstack ->currentsize] = 0; petscstack->line[petscstack->currentsize ] = 0; petscstack->petscroutine[petscstack->currentsize ] = PETSC_FALSE; } if (petscstack) { petscstack->hotdepth = (((petscstack->hotdepth-1)<(0)) ? (0) : (petscstack-> hotdepth-1)); } ; } while (0); return(0);} while (0); | |||
1319 | PetscFunctionReturn(0)do { do { ; if (petscstack && petscstack->currentsize > 0) { petscstack->currentsize--; petscstack->function [petscstack->currentsize] = 0; petscstack->file[petscstack ->currentsize] = 0; petscstack->line[petscstack->currentsize ] = 0; petscstack->petscroutine[petscstack->currentsize ] = PETSC_FALSE; } if (petscstack) { petscstack->hotdepth = (((petscstack->hotdepth-1)<(0)) ? (0) : (petscstack-> hotdepth-1)); } ; } while (0); return(0);} while (0); | |||
1320 | } | |||
1321 | ||||
1322 | static PetscErrorCode PetscLogViewWarnDebugging(MPI_Comm comm,FILE *fd) | |||
1323 | { | |||
1324 | #if defined(PETSC_USE_DEBUG1) | |||
1325 | PetscErrorCode ierr; | |||
1326 | ||||
1327 | PetscFunctionBegindo { do { ; if (petscstack && (petscstack->currentsize < 64)) { petscstack->function[petscstack->currentsize ] = __func__; petscstack->file[petscstack->currentsize] = "/sandbox/petsc/petsc.next/src/sys/logging/plog.c"; petscstack ->line[petscstack->currentsize] = 1327; petscstack-> petscroutine[petscstack->currentsize] = PETSC_TRUE; petscstack ->currentsize++; } if (petscstack) { petscstack->hotdepth += (PETSC_FALSE || petscstack->hotdepth); } ; } while (0) ; ; } while (0); | |||
1328 | ierr = PetscFPrintf(comm, fd, "\n\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1328,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1329 | ierr = PetscFPrintf(comm, fd, " ##########################################################\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1329,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1330 | ierr = PetscFPrintf(comm, fd, " # #\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1330,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1331 | ierr = PetscFPrintf(comm, fd, " # WARNING!!! #\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1331,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1332 | ierr = PetscFPrintf(comm, fd, " # #\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1332,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1333 | ierr = PetscFPrintf(comm, fd, " # This code was compiled with a debugging option. #\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1333,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1334 | ierr = PetscFPrintf(comm, fd, " # To get timing results run ./configure #\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1334,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1335 | ierr = PetscFPrintf(comm, fd, " # using --with-debugging=no, the performance will #\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1335,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1336 | ierr = PetscFPrintf(comm, fd, " # be generally two or three times faster. #\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1336,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1337 | ierr = PetscFPrintf(comm, fd, " # #\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1337,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1338 | ierr = PetscFPrintf(comm, fd, " ##########################################################\n\n\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1338,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1339 | PetscFunctionReturn(0)do { do { ; if (petscstack && petscstack->currentsize > 0) { petscstack->currentsize--; petscstack->function [petscstack->currentsize] = 0; petscstack->file[petscstack ->currentsize] = 0; petscstack->line[petscstack->currentsize ] = 0; petscstack->petscroutine[petscstack->currentsize ] = PETSC_FALSE; } if (petscstack) { petscstack->hotdepth = (((petscstack->hotdepth-1)<(0)) ? (0) : (petscstack-> hotdepth-1)); } ; } while (0); return(0);} while (0); | |||
1340 | #else | |||
1341 | return 0; | |||
1342 | #endif | |||
1343 | } | |||
1344 | ||||
1345 | #if defined(PETSC_HAVE_OPENMP) | |||
1346 | extern PetscInt PetscNumOMPThreads; | |||
1347 | #endif | |||
1348 | ||||
1349 | PetscErrorCode PetscLogView_Default(PetscViewer viewer) | |||
1350 | { | |||
1351 | FILE *fd; | |||
1352 | PetscLogDouble zero = 0.0; | |||
1353 | PetscStageLog stageLog; | |||
1354 | PetscStageInfo *stageInfo = NULL((void*)0); | |||
1355 | PetscEventPerfInfo *eventInfo = NULL((void*)0); | |||
1356 | PetscClassPerfInfo *classInfo; | |||
1357 | char arch[128],hostname[128],username[128],pname[PETSC_MAX_PATH_LEN4096],date[128]; | |||
1358 | const char *name; | |||
1359 | PetscLogDouble locTotalTime, TotalTime, TotalFlops; | |||
1360 | PetscLogDouble numMessages, messageLength, avgMessLen, numReductions; | |||
1361 | PetscLogDouble stageTime, flops, flopr, mem, mess, messLen, red; | |||
1362 | PetscLogDouble fracTime, fracFlops, fracMessages, fracLength, fracReductions, fracMess, fracMessLen, fracRed; | |||
1363 | PetscLogDouble fracStageTime, fracStageFlops, fracStageMess, fracStageMessLen, fracStageRed; | |||
1364 | PetscLogDouble min, max, tot, ratio, avg, x, y; | |||
1365 | PetscLogDouble minf, maxf, totf, ratf, mint, maxt, tott, ratt, ratC, totm, totml, totr, mal, malmax, emalmax; | |||
| ||||
1366 | #if defined(PETSC_HAVE_VIENNACL) || defined(PETSC_HAVE_CUDA) | |||
1367 | PetscLogDouble cct, gct, csz, gsz; | |||
1368 | #endif | |||
1369 | PetscMPIInt minC, maxC; | |||
1370 | PetscMPIInt size, rank; | |||
1371 | PetscBool *localStageUsed, *stageUsed; | |||
1372 | PetscBool *localStageVisible, *stageVisible; | |||
1373 | int numStages, localNumEvents, numEvents; | |||
1374 | int stage, oclass; | |||
1375 | PetscLogEvent event; | |||
1376 | PetscErrorCode ierr; | |||
1377 | char version[256]; | |||
1378 | MPI_Comm comm; | |||
1379 | ||||
1380 | PetscFunctionBegindo { do { ; if (petscstack && (petscstack->currentsize < 64)) { petscstack->function[petscstack->currentsize ] = __func__; petscstack->file[petscstack->currentsize] = "/sandbox/petsc/petsc.next/src/sys/logging/plog.c"; petscstack ->line[petscstack->currentsize] = 1380; petscstack-> petscroutine[petscstack->currentsize] = PETSC_TRUE; petscstack ->currentsize++; } if (petscstack) { petscstack->hotdepth += (PETSC_FALSE || petscstack->hotdepth); } ; } while (0) ; ; } while (0); | |||
1381 | ierr = PetscObjectGetComm((PetscObject)viewer,&comm);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1381,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1382 | ierr = PetscViewerASCIIGetPointer(viewer,&fd);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1382,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1383 | ierr = MPI_Comm_size(comm, &size);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1383,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1384 | ierr = MPI_Comm_rank(comm, &rank);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1384,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1385 | /* Get the total elapsed time */ | |||
1386 | PetscTime(&locTotalTime); locTotalTime -= petsc_BaseTime; | |||
1387 | ||||
1388 | ierr = PetscFPrintf(comm, fd, "************************************************************************************************************************\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1388,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1389 | ierr = PetscFPrintf(comm, fd, "*** WIDEN YOUR WINDOW TO 120 CHARACTERS. Use 'enscript -r -fCourier9' to print this document ***\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1389,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1390 | ierr = PetscFPrintf(comm, fd, "************************************************************************************************************************\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1390,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1391 | ierr = PetscFPrintf(comm, fd, "\n---------------------------------------------- PETSc Performance Summary: ----------------------------------------------\n\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1391,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1392 | ierr = PetscLogViewWarnSync(comm,fd);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1392,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1393 | ierr = PetscLogViewWarnDebugging(comm,fd);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1393,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1394 | ierr = PetscGetArchType(arch,sizeof(arch));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1394,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1395 | ierr = PetscGetHostName(hostname,sizeof(hostname));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1395,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1396 | ierr = PetscGetUserName(username,sizeof(username));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1396,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1397 | ierr = PetscGetProgramName(pname,sizeof(pname));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1397,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1398 | ierr = PetscGetDate(date,sizeof(date));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1398,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1399 | ierr = PetscGetVersion(version,sizeof(version));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1399,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1400 | if (size == 1) { | |||
1401 | ierr = PetscFPrintf(comm,fd,"%s on a %s named %s with %d processor, by %s %s\n", pname, arch, hostname, size, username, date);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1401,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1402 | } else { | |||
1403 | ierr = PetscFPrintf(comm,fd,"%s on a %s named %s with %d processors, by %s %s\n", pname, arch, hostname, size, username, date);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1403,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1404 | } | |||
1405 | #if defined(PETSC_HAVE_OPENMP) | |||
1406 | ierr = PetscFPrintf(comm,fd,"Using %D OpenMP threads\n", PetscNumOMPThreads);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1406,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1407 | #endif | |||
1408 | ierr = PetscFPrintf(comm, fd, "Using %s\n", version);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1408,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1409 | ||||
1410 | /* Must preserve reduction count before we go on */ | |||
1411 | red = petsc_allreduce_ct + petsc_gather_ct + petsc_scatter_ct; | |||
1412 | ||||
1413 | /* Calculate summary information */ | |||
1414 | ierr = PetscFPrintf(comm, fd, "\n Max Max/Min Avg Total \n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1414,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1415 | /* Time */ | |||
1416 | ierr = MPIU_Allreduce(&locTotalTime, &min, 1, MPIU_PETSCLOGDOUBLE, MPI_MIN, comm)(PetscAllreduceBarrierCheck(comm,1,1416,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ) || ((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce((&locTotalTime),(&min),(1),(((MPI_Datatype )0x4c00080b)),((MPI_Op)(0x58000002)),(comm))));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1416,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1417 | ierr = MPIU_Allreduce(&locTotalTime, &max, 1, MPIU_PETSCLOGDOUBLE, MPI_MAX, comm)(PetscAllreduceBarrierCheck(comm,1,1417,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ) || ((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce((&locTotalTime),(&max),(1),(((MPI_Datatype )0x4c00080b)),((MPI_Op)(0x58000001)),(comm))));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1417,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1418 | ierr = MPIU_Allreduce(&locTotalTime, &tot, 1, MPIU_PETSCLOGDOUBLE, MPI_SUM, comm)(PetscAllreduceBarrierCheck(comm,1,1418,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ) || ((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce((&locTotalTime),(&tot),(1),(((MPI_Datatype )0x4c00080b)),((MPI_Op)(0x58000003)),(comm))));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1418,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1419 | avg = tot/((PetscLogDouble) size); | |||
1420 | if (min != 0.0) ratio = max/min; else ratio = 0.0; | |||
1421 | ierr = PetscFPrintf(comm, fd, "Time (sec): %5.3e %7.3f %5.3e\n", max, ratio, avg);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1421,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1422 | TotalTime = tot; | |||
1423 | /* Objects */ | |||
1424 | avg = (PetscLogDouble) petsc_numObjects; | |||
1425 | ierr = MPIU_Allreduce(&avg, &min, 1, MPIU_PETSCLOGDOUBLE, MPI_MIN, comm)(PetscAllreduceBarrierCheck(comm,1,1425,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ) || ((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce((&avg),(&min),(1),(((MPI_Datatype)0x4c00080b )),((MPI_Op)(0x58000002)),(comm))));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1425,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1426 | ierr = MPIU_Allreduce(&avg, &max, 1, MPIU_PETSCLOGDOUBLE, MPI_MAX, comm)(PetscAllreduceBarrierCheck(comm,1,1426,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ) || ((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce((&avg),(&max),(1),(((MPI_Datatype)0x4c00080b )),((MPI_Op)(0x58000001)),(comm))));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1426,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1427 | ierr = MPIU_Allreduce(&avg, &tot, 1, MPIU_PETSCLOGDOUBLE, MPI_SUM, comm)(PetscAllreduceBarrierCheck(comm,1,1427,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ) || ((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce((&avg),(&tot),(1),(((MPI_Datatype)0x4c00080b )),((MPI_Op)(0x58000003)),(comm))));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1427,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1428 | avg = tot/((PetscLogDouble) size); | |||
1429 | if (min != 0.0) ratio = max/min; else ratio = 0.0; | |||
1430 | ierr = PetscFPrintf(comm, fd, "Objects: %5.3e %7.3f %5.3e\n", max, ratio, avg);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1430,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1431 | /* Flops */ | |||
1432 | ierr = MPIU_Allreduce(&petsc_TotalFlops, &min, 1, MPIU_PETSCLOGDOUBLE, MPI_MIN, comm)(PetscAllreduceBarrierCheck(comm,1,1432,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ) || ((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce((&petsc_TotalFlops),(&min),(1),(((MPI_Datatype )0x4c00080b)),((MPI_Op)(0x58000002)),(comm))));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1432,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1433 | ierr = MPIU_Allreduce(&petsc_TotalFlops, &max, 1, MPIU_PETSCLOGDOUBLE, MPI_MAX, comm)(PetscAllreduceBarrierCheck(comm,1,1433,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ) || ((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce((&petsc_TotalFlops),(&max),(1),(((MPI_Datatype )0x4c00080b)),((MPI_Op)(0x58000001)),(comm))));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1433,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1434 | ierr = MPIU_Allreduce(&petsc_TotalFlops, &tot, 1, MPIU_PETSCLOGDOUBLE, MPI_SUM, comm)(PetscAllreduceBarrierCheck(comm,1,1434,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ) || ((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce((&petsc_TotalFlops),(&tot),(1),(((MPI_Datatype )0x4c00080b)),((MPI_Op)(0x58000003)),(comm))));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1434,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1435 | avg = tot/((PetscLogDouble) size); | |||
1436 | if (min != 0.0) ratio = max/min; else ratio = 0.0; | |||
1437 | ierr = PetscFPrintf(comm, fd, "Flop: %5.3e %7.3f %5.3e %5.3e\n", max, ratio, avg, tot);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1437,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1438 | TotalFlops = tot; | |||
1439 | /* Flops/sec -- Must talk to Barry here */ | |||
1440 | if (locTotalTime != 0.0) flops = petsc_TotalFlops/locTotalTime; else flops = 0.0; | |||
1441 | ierr = MPIU_Allreduce(&flops, &min, 1, MPIU_PETSCLOGDOUBLE, MPI_MIN, comm)(PetscAllreduceBarrierCheck(comm,1,1441,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ) || ((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce((&flops),(&min),(1),(((MPI_Datatype)0x4c00080b )),((MPI_Op)(0x58000002)),(comm))));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1441,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1442 | ierr = MPIU_Allreduce(&flops, &max, 1, MPIU_PETSCLOGDOUBLE, MPI_MAX, comm)(PetscAllreduceBarrierCheck(comm,1,1442,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ) || ((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce((&flops),(&max),(1),(((MPI_Datatype)0x4c00080b )),((MPI_Op)(0x58000001)),(comm))));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1442,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1443 | ierr = MPIU_Allreduce(&flops, &tot, 1, MPIU_PETSCLOGDOUBLE, MPI_SUM, comm)(PetscAllreduceBarrierCheck(comm,1,1443,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ) || ((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce((&flops),(&tot),(1),(((MPI_Datatype)0x4c00080b )),((MPI_Op)(0x58000003)),(comm))));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1443,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1444 | avg = tot/((PetscLogDouble) size); | |||
1445 | if (min != 0.0) ratio = max/min; else ratio = 0.0; | |||
1446 | ierr = PetscFPrintf(comm, fd, "Flop/sec: %5.3e %7.3f %5.3e %5.3e\n", max, ratio, avg, tot);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1446,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1447 | /* Memory */ | |||
1448 | ierr = PetscMallocGetMaximumUsage(&mem);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1448,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1449 | if (mem > 0.0) { | |||
1450 | ierr = MPIU_Allreduce(&mem, &min, 1, MPIU_PETSCLOGDOUBLE, MPI_MIN, comm)(PetscAllreduceBarrierCheck(comm,1,1450,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ) || ((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce((&mem),(&min),(1),(((MPI_Datatype)0x4c00080b )),((MPI_Op)(0x58000002)),(comm))));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1450,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1451 | ierr = MPIU_Allreduce(&mem, &max, 1, MPIU_PETSCLOGDOUBLE, MPI_MAX, comm)(PetscAllreduceBarrierCheck(comm,1,1451,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ) || ((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce((&mem),(&max),(1),(((MPI_Datatype)0x4c00080b )),((MPI_Op)(0x58000001)),(comm))));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1451,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1452 | ierr = MPIU_Allreduce(&mem, &tot, 1, MPIU_PETSCLOGDOUBLE, MPI_SUM, comm)(PetscAllreduceBarrierCheck(comm,1,1452,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ) || ((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce((&mem),(&tot),(1),(((MPI_Datatype)0x4c00080b )),((MPI_Op)(0x58000003)),(comm))));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1452,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1453 | avg = tot/((PetscLogDouble) size); | |||
1454 | if (min != 0.0) ratio = max/min; else ratio = 0.0; | |||
1455 | ierr = PetscFPrintf(comm, fd, "Memory: %5.3e %7.3f %5.3e %5.3e\n", max, ratio, avg, tot);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1455,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1456 | } | |||
1457 | /* Messages */ | |||
1458 | mess = 0.5*(petsc_irecv_ct + petsc_isend_ct + petsc_recv_ct + petsc_send_ct); | |||
1459 | ierr = MPIU_Allreduce(&mess, &min, 1, MPIU_PETSCLOGDOUBLE, MPI_MIN, comm)(PetscAllreduceBarrierCheck(comm,1,1459,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ) || ((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce((&mess),(&min),(1),(((MPI_Datatype)0x4c00080b )),((MPI_Op)(0x58000002)),(comm))));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1459,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1460 | ierr = MPIU_Allreduce(&mess, &max, 1, MPIU_PETSCLOGDOUBLE, MPI_MAX, comm)(PetscAllreduceBarrierCheck(comm,1,1460,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ) || ((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce((&mess),(&max),(1),(((MPI_Datatype)0x4c00080b )),((MPI_Op)(0x58000001)),(comm))));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1460,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1461 | ierr = MPIU_Allreduce(&mess, &tot, 1, MPIU_PETSCLOGDOUBLE, MPI_SUM, comm)(PetscAllreduceBarrierCheck(comm,1,1461,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ) || ((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce((&mess),(&tot),(1),(((MPI_Datatype)0x4c00080b )),((MPI_Op)(0x58000003)),(comm))));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1461,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1462 | avg = tot/((PetscLogDouble) size); | |||
1463 | if (min != 0.0) ratio = max/min; else ratio = 0.0; | |||
1464 | ierr = PetscFPrintf(comm, fd, "MPI Messages: %5.3e %7.3f %5.3e %5.3e\n", max, ratio, avg, tot);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1464,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1465 | numMessages = tot; | |||
1466 | /* Message Lengths */ | |||
1467 | mess = 0.5*(petsc_irecv_len + petsc_isend_len + petsc_recv_len + petsc_send_len); | |||
1468 | ierr = MPIU_Allreduce(&mess, &min, 1, MPIU_PETSCLOGDOUBLE, MPI_MIN, comm)(PetscAllreduceBarrierCheck(comm,1,1468,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ) || ((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce((&mess),(&min),(1),(((MPI_Datatype)0x4c00080b )),((MPI_Op)(0x58000002)),(comm))));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1468,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1469 | ierr = MPIU_Allreduce(&mess, &max, 1, MPIU_PETSCLOGDOUBLE, MPI_MAX, comm)(PetscAllreduceBarrierCheck(comm,1,1469,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ) || ((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce((&mess),(&max),(1),(((MPI_Datatype)0x4c00080b )),((MPI_Op)(0x58000001)),(comm))));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1469,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1470 | ierr = MPIU_Allreduce(&mess, &tot, 1, MPIU_PETSCLOGDOUBLE, MPI_SUM, comm)(PetscAllreduceBarrierCheck(comm,1,1470,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ) || ((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce((&mess),(&tot),(1),(((MPI_Datatype)0x4c00080b )),((MPI_Op)(0x58000003)),(comm))));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1470,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1471 | if (numMessages != 0) avg = tot/numMessages; else avg = 0.0; | |||
1472 | if (min != 0.0) ratio = max/min; else ratio = 0.0; | |||
1473 | ierr = PetscFPrintf(comm, fd, "MPI Message Lengths: %5.3e %7.3f %5.3e %5.3e\n", max, ratio, avg, tot);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1473,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1474 | messageLength = tot; | |||
1475 | /* Reductions */ | |||
1476 | ierr = MPIU_Allreduce(&red, &min, 1, MPIU_PETSCLOGDOUBLE, MPI_MIN, comm)(PetscAllreduceBarrierCheck(comm,1,1476,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ) || ((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce((&red),(&min),(1),(((MPI_Datatype)0x4c00080b )),((MPI_Op)(0x58000002)),(comm))));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1476,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1477 | ierr = MPIU_Allreduce(&red, &max, 1, MPIU_PETSCLOGDOUBLE, MPI_MAX, comm)(PetscAllreduceBarrierCheck(comm,1,1477,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ) || ((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce((&red),(&max),(1),(((MPI_Datatype)0x4c00080b )),((MPI_Op)(0x58000001)),(comm))));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1477,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1478 | ierr = MPIU_Allreduce(&red, &tot, 1, MPIU_PETSCLOGDOUBLE, MPI_SUM, comm)(PetscAllreduceBarrierCheck(comm,1,1478,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ) || ((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce((&red),(&tot),(1),(((MPI_Datatype)0x4c00080b )),((MPI_Op)(0x58000003)),(comm))));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1478,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1479 | if (min != 0.0) ratio = max/min; else ratio = 0.0; | |||
1480 | ierr = PetscFPrintf(comm, fd, "MPI Reductions: %5.3e %7.3f\n", max, ratio);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1480,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1481 | numReductions = red; /* wrong because uses count from process zero */ | |||
1482 | ierr = PetscFPrintf(comm, fd, "\nFlop counting convention: 1 flop = 1 real number operation of type (multiply/divide/add/subtract)\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1482,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1483 | ierr = PetscFPrintf(comm, fd, " e.g., VecAXPY() for real vectors of length N --> 2N flop\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1483,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1484 | ierr = PetscFPrintf(comm, fd, " and VecAXPY() for complex vectors of length N --> 8N flop\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1484,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1485 | ||||
1486 | /* Get total number of stages -- | |||
1487 | Currently, a single processor can register more stages than another, but stages must all be registered in order. | |||
1488 | We can removed this requirement if necessary by having a global stage numbering and indirection on the stage ID. | |||
1489 | This seems best accomplished by assoicating a communicator with each stage. | |||
1490 | */ | |||
1491 | ierr = PetscLogGetStageLog(&stageLog);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1491,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1492 | ierr = MPIU_Allreduce(&stageLog->numStages, &numStages, 1, MPI_INT, MPI_MAX, comm)(PetscAllreduceBarrierCheck(comm,1,1492,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ) || ((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce((&stageLog->numStages),(&numStages) ,(1),(((MPI_Datatype)0x4c000405)),((MPI_Op)(0x58000001)),(comm ))));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1492,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1493 | ierr = PetscMalloc1(numStages, &localStageUsed)PetscMallocA(1,PETSC_FALSE,1493,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,(size_t)(numStages)*sizeof(**(&localStageUsed)),(&localStageUsed ));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1493,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1494 | ierr = PetscMalloc1(numStages, &stageUsed)PetscMallocA(1,PETSC_FALSE,1494,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,(size_t)(numStages)*sizeof(**(&stageUsed)),(&stageUsed ));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1494,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1495 | ierr = PetscMalloc1(numStages, &localStageVisible)PetscMallocA(1,PETSC_FALSE,1495,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,(size_t)(numStages)*sizeof(**(&localStageVisible)),(& localStageVisible));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1495,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1496 | ierr = PetscMalloc1(numStages, &stageVisible)PetscMallocA(1,PETSC_FALSE,1496,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,(size_t)(numStages)*sizeof(**(&stageVisible)),(&stageVisible ));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1496,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1497 | if (numStages > 0) { | |||
1498 | stageInfo = stageLog->stageInfo; | |||
1499 | for (stage = 0; stage < numStages; stage++) { | |||
1500 | if (stage < stageLog->numStages) { | |||
1501 | localStageUsed[stage] = stageInfo[stage].used; | |||
1502 | localStageVisible[stage] = stageInfo[stage].perfInfo.visible; | |||
1503 | } else { | |||
1504 | localStageUsed[stage] = PETSC_FALSE; | |||
1505 | localStageVisible[stage] = PETSC_TRUE; | |||
1506 | } | |||
1507 | } | |||
1508 | ierr = MPIU_Allreduce(localStageUsed, stageUsed, numStages, MPIU_BOOL, MPI_LOR, comm)(PetscAllreduceBarrierCheck(comm,numStages,1508,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ) || ((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce((localStageUsed),(stageUsed),(numStages),(MPIU_BOOL ),((MPI_Op)(0x58000007)),(comm))));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1508,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1509 | ierr = MPIU_Allreduce(localStageVisible, stageVisible, numStages, MPIU_BOOL, MPI_LAND, comm)(PetscAllreduceBarrierCheck(comm,numStages,1509,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ) || ((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce((localStageVisible),(stageVisible),(numStages) ,(MPIU_BOOL),((MPI_Op)(0x58000005)),(comm))));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1509,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1510 | for (stage = 0; stage < numStages; stage++) { | |||
1511 | if (stageUsed[stage]) { | |||
1512 | ierr = PetscFPrintf(comm, fd, "\nSummary of Stages: ----- Time ------ ----- Flop ------ --- Messages --- -- Message Lengths -- -- Reductions --\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1512,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1513 | ierr = PetscFPrintf(comm, fd, " Avg %%Total Avg %%Total Count %%Total Avg %%Total Count %%Total \n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1513,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1514 | break; | |||
1515 | } | |||
1516 | } | |||
1517 | for (stage = 0; stage < numStages; stage++) { | |||
1518 | if (!stageUsed[stage]) continue; | |||
1519 | /* CANNOT use MPIU_Allreduce() since it might fail the line number check */ | |||
1520 | if (localStageUsed[stage]) { | |||
1521 | ierr = MPI_Allreduce(&stageInfo[stage].perfInfo.time, &stageTime, 1, MPIU_PETSCLOGDOUBLE, MPI_SUM, comm)((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce ((&stageInfo[stage].perfInfo.time),(&stageTime),(1),( ((MPI_Datatype)0x4c00080b)),((MPI_Op)(0x58000003)),(comm)));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1521,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1522 | ierr = MPI_Allreduce(&stageInfo[stage].perfInfo.flops, &flops, 1, MPIU_PETSCLOGDOUBLE, MPI_SUM, comm)((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce ((&stageInfo[stage].perfInfo.flops),(&flops),(1),(((MPI_Datatype )0x4c00080b)),((MPI_Op)(0x58000003)),(comm)));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1522,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1523 | ierr = MPI_Allreduce(&stageInfo[stage].perfInfo.numMessages, &mess, 1, MPIU_PETSCLOGDOUBLE, MPI_SUM, comm)((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce ((&stageInfo[stage].perfInfo.numMessages),(&mess),(1) ,(((MPI_Datatype)0x4c00080b)),((MPI_Op)(0x58000003)),(comm)));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1523,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1524 | ierr = MPI_Allreduce(&stageInfo[stage].perfInfo.messageLength, &messLen, 1, MPIU_PETSCLOGDOUBLE, MPI_SUM, comm)((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce ((&stageInfo[stage].perfInfo.messageLength),(&messLen ),(1),(((MPI_Datatype)0x4c00080b)),((MPI_Op)(0x58000003)),(comm )));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1524,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1525 | ierr = MPI_Allreduce(&stageInfo[stage].perfInfo.numReductions, &red, 1, MPIU_PETSCLOGDOUBLE, MPI_SUM, comm)((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce ((&stageInfo[stage].perfInfo.numReductions),(&red),(1 ),(((MPI_Datatype)0x4c00080b)),((MPI_Op)(0x58000003)),(comm)) );CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1525,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1526 | name = stageInfo[stage].name; | |||
1527 | } else { | |||
1528 | ierr = MPI_Allreduce(&zero, &stageTime, 1, MPIU_PETSCLOGDOUBLE, MPI_SUM, comm)((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce ((&zero),(&stageTime),(1),(((MPI_Datatype)0x4c00080b) ),((MPI_Op)(0x58000003)),(comm)));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1528,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1529 | ierr = MPI_Allreduce(&zero, &flops, 1, MPIU_PETSCLOGDOUBLE, MPI_SUM, comm)((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce ((&zero),(&flops),(1),(((MPI_Datatype)0x4c00080b)),(( MPI_Op)(0x58000003)),(comm)));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1529,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1530 | ierr = MPI_Allreduce(&zero, &mess, 1, MPIU_PETSCLOGDOUBLE, MPI_SUM, comm)((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce ((&zero),(&mess),(1),(((MPI_Datatype)0x4c00080b)),((MPI_Op )(0x58000003)),(comm)));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1530,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1531 | ierr = MPI_Allreduce(&zero, &messLen, 1, MPIU_PETSCLOGDOUBLE, MPI_SUM, comm)((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce ((&zero),(&messLen),(1),(((MPI_Datatype)0x4c00080b)), ((MPI_Op)(0x58000003)),(comm)));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1531,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1532 | ierr = MPI_Allreduce(&zero, &red, 1, MPIU_PETSCLOGDOUBLE, MPI_SUM, comm)((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce ((&zero),(&red),(1),(((MPI_Datatype)0x4c00080b)),((MPI_Op )(0x58000003)),(comm)));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1532,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1533 | name = ""; | |||
1534 | } | |||
1535 | mess *= 0.5; messLen *= 0.5; red /= size; | |||
1536 | if (TotalTime != 0.0) fracTime = stageTime/TotalTime; else fracTime = 0.0; | |||
1537 | if (TotalFlops != 0.0) fracFlops = flops/TotalFlops; else fracFlops = 0.0; | |||
1538 | /* Talk to Barry if (stageTime != 0.0) flops = (size*flops)/stageTime; else flops = 0.0; */ | |||
1539 | if (numMessages != 0.0) fracMessages = mess/numMessages; else fracMessages = 0.0; | |||
1540 | if (mess != 0.0) avgMessLen = messLen/mess; else avgMessLen = 0.0; | |||
1541 | if (messageLength != 0.0) fracLength = messLen/messageLength; else fracLength = 0.0; | |||
1542 | if (numReductions != 0.0) fracReductions = red/numReductions; else fracReductions = 0.0; | |||
1543 | ierr = PetscFPrintf(comm, fd, "%2d: %15s: %6.4e %5.1f%% %6.4e %5.1f%% %5.3e %5.1f%% %5.3e %5.1f%% %5.3e %5.1f%% \n", | |||
1544 | stage, name, stageTime/size, 100.0*fracTime, flops, 100.0*fracFlops, | |||
1545 | mess, 100.0*fracMessages, avgMessLen, 100.0*fracLength, red, 100.0*fracReductions);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1545,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1546 | } | |||
1547 | } | |||
1548 | ||||
1549 | ierr = PetscFPrintf(comm, fd,"\n------------------------------------------------------------------------------------------------------------------------\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1549,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1550 | ierr = PetscFPrintf(comm, fd, "See the 'Profiling' chapter of the users' manual for details on interpreting output.\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1550,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1551 | ierr = PetscFPrintf(comm, fd, "Phase summary info:\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1551,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1552 | ierr = PetscFPrintf(comm, fd, " Count: number of times phase was executed\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1552,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1553 | ierr = PetscFPrintf(comm, fd, " Time and Flop: Max - maximum over all processors\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1553,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1554 | ierr = PetscFPrintf(comm, fd, " Ratio - ratio of maximum to minimum over all processors\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1554,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1555 | ierr = PetscFPrintf(comm, fd, " Mess: number of messages sent\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1555,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1556 | ierr = PetscFPrintf(comm, fd, " AvgLen: average message length (bytes)\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1556,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1557 | ierr = PetscFPrintf(comm, fd, " Reduct: number of global reductions\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1557,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1558 | ierr = PetscFPrintf(comm, fd, " Global: entire computation\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1558,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1559 | ierr = PetscFPrintf(comm, fd, " Stage: stages of a computation. Set stages with PetscLogStagePush() and PetscLogStagePop().\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1559,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1560 | ierr = PetscFPrintf(comm, fd, " %%T - percent time in this phase %%F - percent flop in this phase\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1560,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1561 | ierr = PetscFPrintf(comm, fd, " %%M - percent messages in this phase %%L - percent message lengths in this phase\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1561,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1562 | ierr = PetscFPrintf(comm, fd, " %%R - percent reductions in this phase\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1562,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1563 | ierr = PetscFPrintf(comm, fd, " Total Mflop/s: 10e-6 * (sum of flop over all processors)/(max time over all processors)\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1563,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1564 | if (PetscLogMemory) { | |||
1565 | ierr = PetscFPrintf(comm, fd, " Malloc Mbytes: Memory allocated and kept during event (sum over all calls to event)\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1565,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1566 | ierr = PetscFPrintf(comm, fd, " EMalloc Mbytes: extra memory allocated during event and then freed (maximum over all calls to events)\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1566,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1567 | ierr = PetscFPrintf(comm, fd, " MMalloc Mbytes: Increase in high water mark of allocated memory (sum over all calls to event)\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1567,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1568 | ierr = PetscFPrintf(comm, fd, " RMI Mbytes: Increase in resident memory (sum over all calls to event)\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1568,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1569 | } | |||
1570 | #if defined(PETSC_HAVE_VIENNACL) || defined(PETSC_HAVE_CUDA) | |||
1571 | ierr = PetscFPrintf(comm, fd, " CpuToGpu Count: total number of CPU to GPU copies per processor\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1571,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1572 | ierr = PetscFPrintf(comm, fd, " CpuToGpu Size (Mbytes): 10e-6 * (total size of CPU to GPU copies per processor)\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1572,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1573 | ierr = PetscFPrintf(comm, fd, " GpuToCpu Count: total number of GPU to CPU copies per processor\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1573,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1574 | ierr = PetscFPrintf(comm, fd, " GpuToCpu Size (Mbytes): 10e-6 * (total size of GPU to CPU copies per processor)\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1574,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1575 | #endif | |||
1576 | ierr = PetscFPrintf(comm, fd, "------------------------------------------------------------------------------------------------------------------------\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1576,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1577 | ||||
1578 | ierr = PetscLogViewWarnDebugging(comm,fd);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1578,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1579 | ||||
1580 | /* Report events */ | |||
1581 | ierr = PetscFPrintf(comm, fd,"Event Count Time (sec) Flop --- Global --- --- Stage ---- Total");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1581,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1582 | if (PetscLogMemory) { | |||
1583 | ierr = PetscFPrintf(comm, fd," Malloc EMalloc MMalloc RMI");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1583,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1584 | } | |||
1585 | #if defined(PETSC_HAVE_VIENNACL) || defined(PETSC_HAVE_CUDA) | |||
1586 | ierr = PetscFPrintf(comm, fd," - CpuToGpu - - GpuToCpu -");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1586,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1587 | #endif | |||
1588 | ierr = PetscFPrintf(comm, fd,"\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1588,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1589 | ierr = PetscFPrintf(comm, fd," Max Ratio Max Ratio Max Ratio Mess AvgLen Reduct %%T %%F %%M %%L %%R %%T %%F %%M %%L %%R Mflop/s");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1589,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1590 | if (PetscLogMemory) { | |||
1591 | ierr = PetscFPrintf(comm, fd," Mbytes Mbytes Mbytes Mbytes");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1591,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1592 | } | |||
1593 | #if defined(PETSC_HAVE_VIENNACL) || defined(PETSC_HAVE_CUDA) | |||
1594 | ierr = PetscFPrintf(comm, fd," Count Size Count Size");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1594,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1595 | #endif | |||
1596 | ierr = PetscFPrintf(comm, fd,"\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1596,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1597 | ierr = PetscFPrintf(comm, fd,"------------------------------------------------------------------------------------------------------------------------");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1597,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1598 | if (PetscLogMemory) { | |||
1599 | ierr = PetscFPrintf(comm, fd,"-----------------------------");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1599,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1600 | } | |||
1601 | #if defined(PETSC_HAVE_VIENNACL) || defined(PETSC_HAVE_CUDA) | |||
1602 | ierr = PetscFPrintf(comm, fd,"-----------------------------");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1602,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1603 | #endif | |||
1604 | ierr = PetscFPrintf(comm, fd,"\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1604,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1605 | ||||
1606 | /* Problem: The stage name will not show up unless the stage executed on proc 1 */ | |||
1607 | for (stage = 0; stage < numStages; stage++) { | |||
1608 | if (!stageVisible[stage]) continue; | |||
1609 | /* CANNOT use MPIU_Allreduce() since it might fail the line number check */ | |||
1610 | if (localStageUsed[stage]) { | |||
1611 | ierr = PetscFPrintf(comm, fd, "\n--- Event Stage %d: %s\n\n", stage, stageInfo[stage].name);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1611,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1612 | ierr = MPI_Allreduce(&stageInfo[stage].perfInfo.time, &stageTime, 1, MPIU_PETSCLOGDOUBLE, MPI_SUM, comm)((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce ((&stageInfo[stage].perfInfo.time),(&stageTime),(1),( ((MPI_Datatype)0x4c00080b)),((MPI_Op)(0x58000003)),(comm)));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1612,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1613 | ierr = MPI_Allreduce(&stageInfo[stage].perfInfo.flops, &flops, 1, MPIU_PETSCLOGDOUBLE, MPI_SUM, comm)((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce ((&stageInfo[stage].perfInfo.flops),(&flops),(1),(((MPI_Datatype )0x4c00080b)),((MPI_Op)(0x58000003)),(comm)));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1613,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1614 | ierr = MPI_Allreduce(&stageInfo[stage].perfInfo.numMessages, &mess, 1, MPIU_PETSCLOGDOUBLE, MPI_SUM, comm)((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce ((&stageInfo[stage].perfInfo.numMessages),(&mess),(1) ,(((MPI_Datatype)0x4c00080b)),((MPI_Op)(0x58000003)),(comm)));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1614,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1615 | ierr = MPI_Allreduce(&stageInfo[stage].perfInfo.messageLength, &messLen, 1, MPIU_PETSCLOGDOUBLE, MPI_SUM, comm)((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce ((&stageInfo[stage].perfInfo.messageLength),(&messLen ),(1),(((MPI_Datatype)0x4c00080b)),((MPI_Op)(0x58000003)),(comm )));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1615,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1616 | ierr = MPI_Allreduce(&stageInfo[stage].perfInfo.numReductions, &red, 1, MPIU_PETSCLOGDOUBLE, MPI_SUM, comm)((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce ((&stageInfo[stage].perfInfo.numReductions),(&red),(1 ),(((MPI_Datatype)0x4c00080b)),((MPI_Op)(0x58000003)),(comm)) );CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1616,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1617 | } else { | |||
1618 | ierr = PetscFPrintf(comm, fd, "\n--- Event Stage %d: Unknown\n\n", stage);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1618,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1619 | ierr = MPI_Allreduce(&zero, &stageTime, 1, MPIU_PETSCLOGDOUBLE, MPI_SUM, comm)((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce ((&zero),(&stageTime),(1),(((MPI_Datatype)0x4c00080b) ),((MPI_Op)(0x58000003)),(comm)));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1619,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1620 | ierr = MPI_Allreduce(&zero, &flops, 1, MPIU_PETSCLOGDOUBLE, MPI_SUM, comm)((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce ((&zero),(&flops),(1),(((MPI_Datatype)0x4c00080b)),(( MPI_Op)(0x58000003)),(comm)));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1620,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1621 | ierr = MPI_Allreduce(&zero, &mess, 1, MPIU_PETSCLOGDOUBLE, MPI_SUM, comm)((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce ((&zero),(&mess),(1),(((MPI_Datatype)0x4c00080b)),((MPI_Op )(0x58000003)),(comm)));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1621,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1622 | ierr = MPI_Allreduce(&zero, &messLen, 1, MPIU_PETSCLOGDOUBLE, MPI_SUM, comm)((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce ((&zero),(&messLen),(1),(((MPI_Datatype)0x4c00080b)), ((MPI_Op)(0x58000003)),(comm)));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1622,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1623 | ierr = MPI_Allreduce(&zero, &red, 1, MPIU_PETSCLOGDOUBLE, MPI_SUM, comm)((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce ((&zero),(&red),(1),(((MPI_Datatype)0x4c00080b)),((MPI_Op )(0x58000003)),(comm)));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1623,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1624 | } | |||
1625 | mess *= 0.5; messLen *= 0.5; red /= size; | |||
1626 | ||||
1627 | /* Get total number of events in this stage -- | |||
1628 | Currently, a single processor can register more events than another, but events must all be registered in order, | |||
1629 | just like stages. We can removed this requirement if necessary by having a global event numbering and indirection | |||
1630 | on the event ID. This seems best accomplished by associating a communicator with each stage. | |||
1631 | ||||
1632 | Problem: If the event did not happen on proc 1, its name will not be available. | |||
1633 | Problem: Event visibility is not implemented | |||
1634 | */ | |||
1635 | if (localStageUsed[stage]) { | |||
1636 | eventInfo = stageLog->stageInfo[stage].eventLog->eventInfo; | |||
1637 | localNumEvents = stageLog->stageInfo[stage].eventLog->numEvents; | |||
1638 | } else localNumEvents = 0; | |||
1639 | ierr = MPIU_Allreduce(&localNumEvents, &numEvents, 1, MPI_INT, MPI_MAX, comm)(PetscAllreduceBarrierCheck(comm,1,1639,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ) || ((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce((&localNumEvents),(&numEvents),(1),((( MPI_Datatype)0x4c000405)),((MPI_Op)(0x58000001)),(comm))));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1639,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1640 | for (event = 0; event < numEvents; event++) { | |||
1641 | /* CANNOT use MPIU_Allreduce() since it might fail the line number check */ | |||
1642 | if (localStageUsed[stage] && (event < stageLog->stageInfo[stage].eventLog->numEvents) && (eventInfo[event].depth == 0)) { | |||
1643 | if ((eventInfo[event].count > 0) && (eventInfo[event].time > 0.0)) flopr = eventInfo[event].flops; else flopr = 0.0; | |||
1644 | ierr = MPI_Allreduce(&flopr, &minf, 1, MPIU_PETSCLOGDOUBLE, MPI_MIN, comm)((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce ((&flopr),(&minf),(1),(((MPI_Datatype)0x4c00080b)),(( MPI_Op)(0x58000002)),(comm)));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1644,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1645 | ierr = MPI_Allreduce(&flopr, &maxf, 1, MPIU_PETSCLOGDOUBLE, MPI_MAX, comm)((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce ((&flopr),(&maxf),(1),(((MPI_Datatype)0x4c00080b)),(( MPI_Op)(0x58000001)),(comm)));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1645,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1646 | ierr = MPI_Allreduce(&eventInfo[event].flops, &totf, 1, MPIU_PETSCLOGDOUBLE, MPI_SUM, comm)((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce ((&eventInfo[event].flops),(&totf),(1),(((MPI_Datatype )0x4c00080b)),((MPI_Op)(0x58000003)),(comm)));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1646,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1647 | ierr = MPI_Allreduce(&eventInfo[event].time, &mint, 1, MPIU_PETSCLOGDOUBLE, MPI_MIN, comm)((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce ((&eventInfo[event].time),(&mint),(1),(((MPI_Datatype )0x4c00080b)),((MPI_Op)(0x58000002)),(comm)));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1647,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1648 | ierr = MPI_Allreduce(&eventInfo[event].time, &maxt, 1, MPIU_PETSCLOGDOUBLE, MPI_MAX, comm)((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce ((&eventInfo[event].time),(&maxt),(1),(((MPI_Datatype )0x4c00080b)),((MPI_Op)(0x58000001)),(comm)));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1648,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1649 | ierr = MPI_Allreduce(&eventInfo[event].time, &tott, 1, MPIU_PETSCLOGDOUBLE, MPI_SUM, comm)((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce ((&eventInfo[event].time),(&tott),(1),(((MPI_Datatype )0x4c00080b)),((MPI_Op)(0x58000003)),(comm)));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1649,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1650 | ierr = MPI_Allreduce(&eventInfo[event].numMessages, &totm, 1, MPIU_PETSCLOGDOUBLE, MPI_SUM, comm)((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce ((&eventInfo[event].numMessages),(&totm),(1),(((MPI_Datatype )0x4c00080b)),((MPI_Op)(0x58000003)),(comm)));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1650,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1651 | ierr = MPI_Allreduce(&eventInfo[event].messageLength, &totml, 1, MPIU_PETSCLOGDOUBLE, MPI_SUM, comm)((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce ((&eventInfo[event].messageLength),(&totml),(1),(((MPI_Datatype )0x4c00080b)),((MPI_Op)(0x58000003)),(comm)));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1651,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1652 | ierr = MPI_Allreduce(&eventInfo[event].numReductions, &totr, 1, MPIU_PETSCLOGDOUBLE, MPI_SUM, comm)((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce ((&eventInfo[event].numReductions),(&totr),(1),(((MPI_Datatype )0x4c00080b)),((MPI_Op)(0x58000003)),(comm)));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1652,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1653 | ierr = MPI_Allreduce(&eventInfo[event].count, &minC, 1, MPI_INT, MPI_MIN, comm)((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce ((&eventInfo[event].count),(&minC),(1),(((MPI_Datatype )0x4c000405)),((MPI_Op)(0x58000002)),(comm)));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1653,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1654 | ierr = MPI_Allreduce(&eventInfo[event].count, &maxC, 1, MPI_INT, MPI_MAX, comm)((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce ((&eventInfo[event].count),(&maxC),(1),(((MPI_Datatype )0x4c000405)),((MPI_Op)(0x58000001)),(comm)));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1654,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1655 | if (PetscLogMemory) { | |||
1656 | ierr = MPI_Allreduce(&eventInfo[event].memIncrease, &mem, 1, MPIU_PETSCLOGDOUBLE, MPI_SUM, comm)((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce ((&eventInfo[event].memIncrease),(&mem),(1),(((MPI_Datatype )0x4c00080b)),((MPI_Op)(0x58000003)),(comm)));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1656,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1657 | ierr = MPI_Allreduce(&eventInfo[event].mallocSpace, &mal, 1, MPIU_PETSCLOGDOUBLE, MPI_SUM, comm)((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce ((&eventInfo[event].mallocSpace),(&mal),(1),(((MPI_Datatype )0x4c00080b)),((MPI_Op)(0x58000003)),(comm)));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1657,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1658 | ierr = MPI_Allreduce(&eventInfo[event].mallocIncrease, &malmax,1, MPIU_PETSCLOGDOUBLE, MPI_SUM, comm)((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce ((&eventInfo[event].mallocIncrease),(&malmax),(1),((( MPI_Datatype)0x4c00080b)),((MPI_Op)(0x58000003)),(comm)));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1658,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1659 | ierr = MPI_Allreduce(&eventInfo[event].mallocIncreaseEvent, &emalmax,1, MPIU_PETSCLOGDOUBLE, MPI_SUM, comm)((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce ((&eventInfo[event].mallocIncreaseEvent),(&emalmax),( 1),(((MPI_Datatype)0x4c00080b)),((MPI_Op)(0x58000003)),(comm) ));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1659,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1660 | } | |||
1661 | #if defined(PETSC_HAVE_VIENNACL) || defined(PETSC_HAVE_CUDA) | |||
1662 | ierr = MPI_Allreduce(&eventInfo[event].CpuToGpuCount, &cct, 1, MPIU_PETSCLOGDOUBLE, MPI_SUM, comm)((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce ((&eventInfo[event].CpuToGpuCount),(&cct),(1),(((MPI_Datatype )0x4c00080b)),((MPI_Op)(0x58000003)),(comm)));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1662,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1663 | ierr = MPI_Allreduce(&eventInfo[event].GpuToCpuCount, &gct, 1, MPIU_PETSCLOGDOUBLE, MPI_SUM, comm)((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce ((&eventInfo[event].GpuToCpuCount),(&gct),(1),(((MPI_Datatype )0x4c00080b)),((MPI_Op)(0x58000003)),(comm)));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1663,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1664 | ierr = MPI_Allreduce(&eventInfo[event].CpuToGpuSize, &csz, 1, MPIU_PETSCLOGDOUBLE, MPI_SUM, comm)((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce ((&eventInfo[event].CpuToGpuSize),(&csz),(1),(((MPI_Datatype )0x4c00080b)),((MPI_Op)(0x58000003)),(comm)));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1664,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1665 | ierr = MPI_Allreduce(&eventInfo[event].GpuToCpuSize, &gsz, 1, MPIU_PETSCLOGDOUBLE, MPI_SUM, comm)((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce ((&eventInfo[event].GpuToCpuSize),(&gsz),(1),(((MPI_Datatype )0x4c00080b)),((MPI_Op)(0x58000003)),(comm)));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1665,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1666 | #endif | |||
1667 | name = stageLog->eventLog->eventInfo[event].name; | |||
1668 | } else { | |||
1669 | flopr = 0.0; | |||
1670 | ierr = MPI_Allreduce(&flopr, &minf, 1, MPIU_PETSCLOGDOUBLE, MPI_MIN, comm)((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce ((&flopr),(&minf),(1),(((MPI_Datatype)0x4c00080b)),(( MPI_Op)(0x58000002)),(comm)));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1670,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1671 | ierr = MPI_Allreduce(&flopr, &maxf, 1, MPIU_PETSCLOGDOUBLE, MPI_MAX, comm)((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce ((&flopr),(&maxf),(1),(((MPI_Datatype)0x4c00080b)),(( MPI_Op)(0x58000001)),(comm)));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1671,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1672 | ierr = MPI_Allreduce(&zero, &totf, 1, MPIU_PETSCLOGDOUBLE, MPI_SUM, comm)((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce ((&zero),(&totf),(1),(((MPI_Datatype)0x4c00080b)),((MPI_Op )(0x58000003)),(comm)));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1672,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1673 | ierr = MPI_Allreduce(&zero, &mint, 1, MPIU_PETSCLOGDOUBLE, MPI_MIN, comm)((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce ((&zero),(&mint),(1),(((MPI_Datatype)0x4c00080b)),((MPI_Op )(0x58000002)),(comm)));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1673,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1674 | ierr = MPI_Allreduce(&zero, &maxt, 1, MPIU_PETSCLOGDOUBLE, MPI_MAX, comm)((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce ((&zero),(&maxt),(1),(((MPI_Datatype)0x4c00080b)),((MPI_Op )(0x58000001)),(comm)));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1674,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1675 | ierr = MPI_Allreduce(&zero, &tott, 1, MPIU_PETSCLOGDOUBLE, MPI_SUM, comm)((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce ((&zero),(&tott),(1),(((MPI_Datatype)0x4c00080b)),((MPI_Op )(0x58000003)),(comm)));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1675,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1676 | ierr = MPI_Allreduce(&zero, &totm, 1, MPIU_PETSCLOGDOUBLE, MPI_SUM, comm)((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce ((&zero),(&totm),(1),(((MPI_Datatype)0x4c00080b)),((MPI_Op )(0x58000003)),(comm)));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1676,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1677 | ierr = MPI_Allreduce(&zero, &totml, 1, MPIU_PETSCLOGDOUBLE, MPI_SUM, comm)((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce ((&zero),(&totml),(1),(((MPI_Datatype)0x4c00080b)),(( MPI_Op)(0x58000003)),(comm)));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1677,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1678 | ierr = MPI_Allreduce(&zero, &totr, 1, MPIU_PETSCLOGDOUBLE, MPI_SUM, comm)((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce ((&zero),(&totr),(1),(((MPI_Datatype)0x4c00080b)),((MPI_Op )(0x58000003)),(comm)));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1678,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1679 | ierr = MPI_Allreduce(&ierr, &minC, 1, MPI_INT, MPI_MIN, comm)((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce ((&ierr),(&minC),(1),(((MPI_Datatype)0x4c000405)),((MPI_Op )(0x58000002)),(comm)));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1679,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1680 | ierr = MPI_Allreduce(&ierr, &maxC, 1, MPI_INT, MPI_MAX, comm)((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce ((&ierr),(&maxC),(1),(((MPI_Datatype)0x4c000405)),((MPI_Op )(0x58000001)),(comm)));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1680,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1681 | if (PetscLogMemory) { | |||
1682 | ierr = MPI_Allreduce(&zero, &mem, 1, MPIU_PETSCLOGDOUBLE, MPI_SUM, comm)((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce ((&zero),(&mem),(1),(((MPI_Datatype)0x4c00080b)),((MPI_Op )(0x58000003)),(comm)));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1682,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1683 | ierr = MPI_Allreduce(&zero, &mal, 1, MPIU_PETSCLOGDOUBLE, MPI_SUM, comm)((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce ((&zero),(&mal),(1),(((MPI_Datatype)0x4c00080b)),((MPI_Op )(0x58000003)),(comm)));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1683,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1684 | ierr = MPI_Allreduce(&zero, &malmax, 1, MPIU_PETSCLOGDOUBLE, MPI_SUM, comm)((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce ((&zero),(&malmax),(1),(((MPI_Datatype)0x4c00080b)),( (MPI_Op)(0x58000003)),(comm)));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1684,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1685 | ierr = MPI_Allreduce(&zero, &emalmax,1, MPIU_PETSCLOGDOUBLE, MPI_SUM, comm)((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce ((&zero),(&emalmax),(1),(((MPI_Datatype)0x4c00080b)), ((MPI_Op)(0x58000003)),(comm)));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1685,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1686 | } | |||
1687 | #if defined(PETSC_HAVE_VIENNACL) || defined(PETSC_HAVE_CUDA) | |||
1688 | ierr = MPI_Allreduce(&zero, &cct, 1, MPIU_PETSCLOGDOUBLE, MPI_SUM, comm)((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce ((&zero),(&cct),(1),(((MPI_Datatype)0x4c00080b)),((MPI_Op )(0x58000003)),(comm)));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1688,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1689 | ierr = MPI_Allreduce(&zero, &gct, 1, MPIU_PETSCLOGDOUBLE, MPI_SUM, comm)((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce ((&zero),(&gct),(1),(((MPI_Datatype)0x4c00080b)),((MPI_Op )(0x58000003)),(comm)));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1689,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1690 | ierr = MPI_Allreduce(&zero, &csz, 1, MPIU_PETSCLOGDOUBLE, MPI_SUM, comm)((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce ((&zero),(&csz),(1),(((MPI_Datatype)0x4c00080b)),((MPI_Op )(0x58000003)),(comm)));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1690,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1691 | ierr = MPI_Allreduce(&zero, &gsz, 1, MPIU_PETSCLOGDOUBLE, MPI_SUM, comm)((petsc_allreduce_ct += PetscMPIParallelComm((comm)),0) || MPI_Allreduce ((&zero),(&gsz),(1),(((MPI_Datatype)0x4c00080b)),((MPI_Op )(0x58000003)),(comm)));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1691,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1692 | #endif | |||
1693 | name = ""; | |||
1694 | } | |||
1695 | if (mint < 0.0) { | |||
1696 | ierr = PetscFPrintf(comm, fd, "WARNING!!! Minimum time %g over all processors for %s is negative! This happens\n on some machines whose times cannot handle too rapid calls.!\n artificially changing minimum to zero.\n",mint,name); | |||
1697 | mint = 0; | |||
1698 | } | |||
1699 | if (minf < 0.0) SETERRQ2(PETSC_COMM_SELF,PETSC_ERR_PLIB,"Minimum flop %g over all processors for %s is negative! Not possible!",minf,name)return PetscError(((MPI_Comm)0x44000001),1699,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,77,PETSC_ERROR_INITIAL,"Minimum flop %g over all processors for %s is negative! Not possible!" ,minf,name); | |||
1700 | totm *= 0.5; totml *= 0.5; totr /= size; | |||
1701 | ||||
1702 | if (maxC != 0) { | |||
1703 | if (minC != 0) ratC = ((PetscLogDouble)maxC)/minC;else ratC = 0.0; | |||
1704 | if (mint != 0.0) ratt = maxt/mint; else ratt = 0.0; | |||
1705 | if (minf != 0.0) ratf = maxf/minf; else ratf = 0.0; | |||
1706 | if (TotalTime != 0.0) fracTime = tott/TotalTime; else fracTime = 0.0; | |||
1707 | if (TotalFlops != 0.0) fracFlops = totf/TotalFlops; else fracFlops = 0.0; | |||
1708 | if (stageTime != 0.0) fracStageTime = tott/stageTime; else fracStageTime = 0.0; | |||
1709 | if (flops != 0.0) fracStageFlops = totf/flops; else fracStageFlops = 0.0; | |||
1710 | if (numMessages != 0.0) fracMess = totm/numMessages; else fracMess = 0.0; | |||
1711 | if (messageLength != 0.0) fracMessLen = totml/messageLength; else fracMessLen = 0.0; | |||
1712 | if (numReductions != 0.0) fracRed = totr/numReductions; else fracRed = 0.0; | |||
1713 | if (mess != 0.0) fracStageMess = totm/mess; else fracStageMess = 0.0; | |||
1714 | if (messLen != 0.0) fracStageMessLen = totml/messLen; else fracStageMessLen = 0.0; | |||
1715 | if (red != 0.0) fracStageRed = totr/red; else fracStageRed = 0.0; | |||
1716 | if (totm != 0.0) totml /= totm; else totml = 0.0; | |||
1717 | if (maxt != 0.0) flopr = totf/maxt; else flopr = 0.0; | |||
1718 | if (fracStageTime > 1.00) ierr = PetscFPrintf(comm, fd,"Warning -- total time of event greater than time of entire stage -- something is wrong with the timer\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1718,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1719 | ierr = PetscFPrintf(comm, fd, | |||
1720 | "%-16s %7d%4.1f %5.4e%4.1f %3.2e%4.1f %2.1e %2.1e %2.1e%3.0f%3.0f%3.0f%3.0f%3.0f %3.0f%3.0f%3.0f%3.0f%3.0f %5.0f", | |||
1721 | name, maxC, ratC, maxt, ratt, maxf, ratf, totm, totml, totr, | |||
1722 | 100.0*fracTime, 100.0*fracFlops, 100.0*fracMess, 100.0*fracMessLen, 100.0*fracRed, | |||
1723 | 100.0*fracStageTime, 100.0*fracStageFlops, 100.0*fracStageMess, 100.0*fracStageMessLen, 100.0*fracStageRed, | |||
1724 | PetscAbs(flopr)(((flopr) >= 0) ? (flopr) : (-(flopr)))/1.0e6);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1724,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1725 | if (PetscLogMemory) { | |||
1726 | ierr = PetscFPrintf(comm, fd," %5.0f %5.0f %5.0f %5.0f",mal/1.0e6,emalmax/1.0e6,malmax/1.0e6,mem/1.0e6);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1726,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
| ||||
1727 | } | |||
1728 | #if defined(PETSC_HAVE_VIENNACL) || defined(PETSC_HAVE_CUDA) | |||
1729 | ierr = PetscFPrintf(comm, fd," %4.0f %3.2e %4.0f %3.2e",cct/size,csz/(1.0e6*size),gct/size,gsz/(1.0e6*size));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1729,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1730 | #endif | |||
1731 | ierr = PetscFPrintf(comm, fd,"\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1731,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1732 | } | |||
1733 | } | |||
1734 | } | |||
1735 | ||||
1736 | /* Memory usage and object creation */ | |||
1737 | ierr = PetscFPrintf(comm, fd, "------------------------------------------------------------------------------------------------------------------------");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1737,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1738 | if (PetscLogMemory) { | |||
1739 | ierr = PetscFPrintf(comm, fd, "-----------------------------");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1739,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1740 | } | |||
1741 | #if defined(PETSC_HAVE_VIENNACL) || defined(PETSC_HAVE_CUDA) | |||
1742 | ierr = PetscFPrintf(comm, fd, "-----------------------------");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1742,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1743 | #endif | |||
1744 | ierr = PetscFPrintf(comm, fd, "\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1744,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1745 | ierr = PetscFPrintf(comm, fd, "\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1745,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1746 | ierr = PetscFPrintf(comm, fd, "Memory usage is given in bytes:\n\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1746,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1747 | ||||
1748 | /* Right now, only stages on the first processor are reported here, meaning only objects associated with | |||
1749 | the global communicator, or MPI_COMM_SELF for proc 1. We really should report global stats and then | |||
1750 | stats for stages local to processor sets. | |||
1751 | */ | |||
1752 | /* We should figure out the longest object name here (now 20 characters) */ | |||
1753 | ierr = PetscFPrintf(comm, fd, "Object Type Creations Destructions Memory Descendants' Mem.\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1753,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1754 | ierr = PetscFPrintf(comm, fd, "Reports information only for process 0.\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1754,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1755 | for (stage = 0; stage < numStages; stage++) { | |||
1756 | if (localStageUsed[stage]) { | |||
1757 | classInfo = stageLog->stageInfo[stage].classLog->classInfo; | |||
1758 | ierr = PetscFPrintf(comm, fd, "\n--- Event Stage %d: %s\n\n", stage, stageInfo[stage].name);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1758,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1759 | for (oclass = 0; oclass < stageLog->stageInfo[stage].classLog->numClasses; oclass++) { | |||
1760 | if ((classInfo[oclass].creations > 0) || (classInfo[oclass].destructions > 0)) { | |||
1761 | ierr = PetscFPrintf(comm, fd, "%20s %5d %5d %11.0f %g\n", stageLog->classLog->classInfo[oclass].name, | |||
1762 | classInfo[oclass].creations, classInfo[oclass].destructions, classInfo[oclass].mem, | |||
1763 | classInfo[oclass].descMem);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1763,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1764 | } | |||
1765 | } | |||
1766 | } else { | |||
1767 | if (!localStageVisible[stage]) continue; | |||
1768 | ierr = PetscFPrintf(comm, fd, "\n--- Event Stage %d: Unknown\n\n", stage);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1768,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1769 | } | |||
1770 | } | |||
1771 | ||||
1772 | ierr = PetscFree(localStageUsed)((*PetscTrFree)((void*)(localStageUsed),1772,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ) || ((localStageUsed) = 0,0));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1772,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1773 | ierr = PetscFree(stageUsed)((*PetscTrFree)((void*)(stageUsed),1773,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ) || ((stageUsed) = 0,0));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1773,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1774 | ierr = PetscFree(localStageVisible)((*PetscTrFree)((void*)(localStageVisible),1774,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ) || ((localStageVisible) = 0,0));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1774,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1775 | ierr = PetscFree(stageVisible)((*PetscTrFree)((void*)(stageVisible),1775,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ) || ((stageVisible) = 0,0));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1775,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1776 | ||||
1777 | /* Information unrelated to this particular run */ | |||
1778 | ierr = PetscFPrintf(comm, fd, "========================================================================================================================\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1778,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1779 | PetscTime(&y); | |||
1780 | PetscTime(&x); | |||
1781 | PetscTime(&y); PetscTime(&y); PetscTime(&y); PetscTime(&y); PetscTime(&y); | |||
1782 | PetscTime(&y); PetscTime(&y); PetscTime(&y); PetscTime(&y); PetscTime(&y); | |||
1783 | ierr = PetscFPrintf(comm,fd,"Average time to get PetscTime(): %g\n", (y-x)/10.0);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1783,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1784 | /* MPI information */ | |||
1785 | if (size > 1) { | |||
1786 | MPI_Status status; | |||
1787 | PetscMPIInt tag; | |||
1788 | MPI_Comm newcomm; | |||
1789 | ||||
1790 | ierr = MPI_Barrier(comm);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1790,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1791 | PetscTime(&x); | |||
1792 | ierr = MPI_Barrier(comm);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1792,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1793 | ierr = MPI_Barrier(comm);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1793,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1794 | ierr = MPI_Barrier(comm);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1794,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1795 | ierr = MPI_Barrier(comm);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1795,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1796 | ierr = MPI_Barrier(comm);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1796,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1797 | PetscTime(&y); | |||
1798 | ierr = PetscFPrintf(comm, fd, "Average time for MPI_Barrier(): %g\n", (y-x)/5.0);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1798,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1799 | ierr = PetscCommDuplicate(comm,&newcomm, &tag);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1799,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1800 | ierr = MPI_Barrier(comm);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1800,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1801 | if (rank) { | |||
1802 | ierr = MPI_Recv(NULL, 0, MPI_INT, rank-1, tag, newcomm, &status)((petsc_recv_ct++,0) || PetscMPITypeSize((&petsc_recv_len ),(0),(((MPI_Datatype)0x4c000405))) || MPI_Recv((((void*)0)), (0),(((MPI_Datatype)0x4c000405)),(rank-1),(tag),(newcomm),(& status)));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1802,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1803 | ierr = MPI_Send(NULL, 0, MPI_INT, (rank+1)%size, tag, newcomm)((petsc_send_ct++,0) || PetscMPITypeSize((&petsc_send_len ),(0),(((MPI_Datatype)0x4c000405))) || MPI_Send((((void*)0)), (0),(((MPI_Datatype)0x4c000405)),((rank+1)%size),(tag),(newcomm )));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1803,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1804 | } else { | |||
1805 | PetscTime(&x); | |||
1806 | ierr = MPI_Send(NULL, 0, MPI_INT, 1, tag, newcomm)((petsc_send_ct++,0) || PetscMPITypeSize((&petsc_send_len ),(0),(((MPI_Datatype)0x4c000405))) || MPI_Send((((void*)0)), (0),(((MPI_Datatype)0x4c000405)),(1),(tag),(newcomm)));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1806,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1807 | ierr = MPI_Recv(NULL, 0, MPI_INT, size-1, tag, newcomm, &status)((petsc_recv_ct++,0) || PetscMPITypeSize((&petsc_recv_len ),(0),(((MPI_Datatype)0x4c000405))) || MPI_Recv((((void*)0)), (0),(((MPI_Datatype)0x4c000405)),(size-1),(tag),(newcomm),(& status)));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1807,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1808 | PetscTime(&y); | |||
1809 | ierr = PetscFPrintf(comm,fd,"Average time for zero size MPI_Send(): %g\n", (y-x)/size);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1809,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1810 | } | |||
1811 | ierr = PetscCommDestroy(&newcomm);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1811,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1812 | } | |||
1813 | ierr = PetscOptionsView(NULL((void*)0),viewer);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1813,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1814 | ||||
1815 | /* Machine and compile information */ | |||
1816 | #if defined(PETSC_USE_FORTRAN_KERNELS) | |||
1817 | ierr = PetscFPrintf(comm, fd, "Compiled with FORTRAN kernels\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1817,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1818 | #else | |||
1819 | ierr = PetscFPrintf(comm, fd, "Compiled without FORTRAN kernels\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1819,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1820 | #endif | |||
1821 | #if defined(PETSC_USE_64BIT_INDICES) | |||
1822 | ierr = PetscFPrintf(comm, fd, "Compiled with 64 bit PetscInt\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1822,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1823 | #elif defined(PETSC_USE___FLOAT128) | |||
1824 | ierr = PetscFPrintf(comm, fd, "Compiled with 32 bit PetscInt\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1824,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1825 | #endif | |||
1826 | #if defined(PETSC_USE_REAL_SINGLE) | |||
1827 | ierr = PetscFPrintf(comm, fd, "Compiled with single precision PetscScalar and PetscReal\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1827,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1828 | #elif defined(PETSC_USE___FLOAT128) | |||
1829 | ierr = PetscFPrintf(comm, fd, "Compiled with 128 bit precision PetscScalar and PetscReal\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1829,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1830 | #endif | |||
1831 | #if defined(PETSC_USE_REAL_MAT_SINGLE) | |||
1832 | ierr = PetscFPrintf(comm, fd, "Compiled with single precision matrices\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1832,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1833 | #else | |||
1834 | ierr = PetscFPrintf(comm, fd, "Compiled with full precision matrices (default)\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1834,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1835 | #endif | |||
1836 | ierr = PetscFPrintf(comm, fd, "sizeof(short) %d sizeof(int) %d sizeof(long) %d sizeof(void*) %d sizeof(PetscScalar) %d sizeof(PetscInt) %d\n", | |||
1837 | (int) sizeof(short), (int) sizeof(int), (int) sizeof(long), (int) sizeof(void*),(int) sizeof(PetscScalar),(int) sizeof(PetscInt));CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1837,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1838 | ||||
1839 | ierr = PetscFPrintf(comm, fd, "Configure options: %s",petscconfigureoptions);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1839,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1840 | ierr = PetscFPrintf(comm, fd, "%s", petscmachineinfo);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1840,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1841 | ierr = PetscFPrintf(comm, fd, "%s", petsccompilerinfo);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1841,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1842 | ierr = PetscFPrintf(comm, fd, "%s", petsccompilerflagsinfo);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1842,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1843 | ierr = PetscFPrintf(comm, fd, "%s", petsclinkerinfo);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1843,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1844 | ||||
1845 | /* Cleanup */ | |||
1846 | ierr = PetscFPrintf(comm, fd, "\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1846,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1847 | ierr = PetscLogViewWarnDebugging(comm,fd);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1847,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1848 | PetscFunctionReturn(0)do { do { ; if (petscstack && petscstack->currentsize > 0) { petscstack->currentsize--; petscstack->function [petscstack->currentsize] = 0; petscstack->file[petscstack ->currentsize] = 0; petscstack->line[petscstack->currentsize ] = 0; petscstack->petscroutine[petscstack->currentsize ] = PETSC_FALSE; } if (petscstack) { petscstack->hotdepth = (((petscstack->hotdepth-1)<(0)) ? (0) : (petscstack-> hotdepth-1)); } ; } while (0); return(0);} while (0); | |||
1849 | } | |||
1850 | ||||
1851 | /*@C | |||
1852 | PetscLogView - Prints a summary of the logging. | |||
1853 | ||||
1854 | Collective over MPI_Comm | |||
1855 | ||||
1856 | Input Parameter: | |||
1857 | . viewer - an ASCII viewer | |||
1858 | ||||
1859 | Options Database Keys: | |||
1860 | + -log_view [:filename] - Prints summary of log information | |||
1861 | . -log_view :filename.py:ascii_info_detail - Saves logging information from each process as a Python file | |||
1862 | . -log_view :filename.xml:ascii_xml - Saves a summary of the logging information in a nested format (see below for how to view it) | |||
1863 | . -log_all - Saves a file Log.rank for each MPI process with details of each step of the computation | |||
1864 | - -log_trace [filename] - Displays a trace of what each process is doing | |||
1865 | ||||
1866 | Notes: | |||
1867 | It is possible to control the logging programatically but we recommend using the options database approach whenever possible | |||
1868 | By default the summary is printed to stdout. | |||
1869 | ||||
1870 | Before calling this routine you must have called either PetscLogDefaultBegin() or PetscLogNestedBegin() | |||
1871 | ||||
1872 | If PETSc is configured with --with-logging=0 then this functionality is not available | |||
1873 | ||||
1874 | To view the nested XML format filename.xml first copy ${PETSC_DIR}/share/petsc/xml/performance_xml2html.xsl to the current | |||
1875 | directory then open filename.xml with your browser. Specific notes for certain browsers | |||
1876 | $ Firefox and Internet explorer - simply open the file | |||
1877 | $ Google Chrome - you must start up Chrome with the option --allow-file-access-from-files | |||
1878 | $ Safari - see https://ccm.net/faq/36342-safari-how-to-enable-local-file-access | |||
1879 | or one can use the package http://xmlsoft.org/XSLT/xsltproc2.html to translate the xml file to html and then open it with | |||
1880 | your browser. | |||
1881 | Alternatively, use the script ${PETSC_DIR}/lib/petsc/bin/petsc-performance-view to automatically open a new browser | |||
1882 | window and render the XML log file contents. | |||
1883 | ||||
1884 | The nested XML format was kindly donated by Koos Huijssen and Christiaan M. Klaij MARITIME RESEARCH INSTITUTE NETHERLANDS | |||
1885 | ||||
1886 | Level: beginner | |||
1887 | ||||
1888 | .seealso: PetscLogDefaultBegin(), PetscLogDump() | |||
1889 | @*/ | |||
1890 | PetscErrorCode PetscLogView(PetscViewer viewer) | |||
1891 | { | |||
1892 | PetscErrorCode ierr; | |||
1893 | PetscBool isascii; | |||
1894 | PetscViewerFormat format; | |||
1895 | int stage, lastStage; | |||
1896 | PetscStageLog stageLog; | |||
1897 | ||||
1898 | PetscFunctionBegindo { do { ; if (petscstack && (petscstack->currentsize < 64)) { petscstack->function[petscstack->currentsize ] = __func__; petscstack->file[petscstack->currentsize] = "/sandbox/petsc/petsc.next/src/sys/logging/plog.c"; petscstack ->line[petscstack->currentsize] = 1898; petscstack-> petscroutine[petscstack->currentsize] = PETSC_TRUE; petscstack ->currentsize++; } if (petscstack) { petscstack->hotdepth += (PETSC_FALSE || petscstack->hotdepth); } ; } while (0) ; ; } while (0); | |||
1899 | if (!PetscLogPLB) SETERRQ(PETSC_COMM_SELF,PETSC_ERR_SUP,"Must use -log_view or PetscLogDefaultBegin() before calling this routine")return PetscError(((MPI_Comm)0x44000001),1899,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,56,PETSC_ERROR_INITIAL,"Must use -log_view or PetscLogDefaultBegin() before calling this routine" ); | |||
1900 | /* Pop off any stages the user forgot to remove */ | |||
1901 | lastStage = 0; | |||
1902 | ierr = PetscLogGetStageLog(&stageLog);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1902,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1903 | ierr = PetscStageLogGetCurrent(stageLog, &stage);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1903,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1904 | while (stage >= 0) { | |||
1905 | lastStage = stage; | |||
1906 | ierr = PetscStageLogPop(stageLog);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1906,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1907 | ierr = PetscStageLogGetCurrent(stageLog, &stage);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1907,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1908 | } | |||
1909 | ierr = PetscObjectTypeCompare((PetscObject)viewer,PETSCVIEWERASCII"ascii",&isascii);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1909,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1910 | if (!isascii) SETERRQ(PetscObjectComm((PetscObject)viewer),PETSC_ERR_SUP,"Currently can only view logging to ASCII")return PetscError(PetscObjectComm((PetscObject)viewer),1910,__func__ ,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c",56,PETSC_ERROR_INITIAL ,"Currently can only view logging to ASCII"); | |||
1911 | ierr = PetscViewerGetFormat(viewer,&format);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1911,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1912 | if (format == PETSC_VIEWER_DEFAULT || format == PETSC_VIEWER_ASCII_INFO) { | |||
1913 | ierr = PetscLogView_Default(viewer);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1913,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1914 | } else if (format == PETSC_VIEWER_ASCII_INFO_DETAIL) { | |||
1915 | ierr = PetscLogView_Detailed(viewer);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1915,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1916 | } else if (format == PETSC_VIEWER_ASCII_CSV) { | |||
1917 | ierr = PetscLogView_CSV(viewer);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1917,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1918 | } else if (format == PETSC_VIEWER_ASCII_XML) { | |||
1919 | ierr = PetscLogView_Nested(viewer);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1919,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1920 | } | |||
1921 | ierr = PetscStageLogPush(stageLog, lastStage);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1921,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1922 | PetscFunctionReturn(0)do { do { ; if (petscstack && petscstack->currentsize > 0) { petscstack->currentsize--; petscstack->function [petscstack->currentsize] = 0; petscstack->file[petscstack ->currentsize] = 0; petscstack->line[petscstack->currentsize ] = 0; petscstack->petscroutine[petscstack->currentsize ] = PETSC_FALSE; } if (petscstack) { petscstack->hotdepth = (((petscstack->hotdepth-1)<(0)) ? (0) : (petscstack-> hotdepth-1)); } ; } while (0); return(0);} while (0); | |||
1923 | } | |||
1924 | ||||
1925 | /*@C | |||
1926 | PetscLogViewFromOptions - Processes command line options to determine if/how a PetscLog is to be viewed. | |||
1927 | ||||
1928 | Collective on PETSC_COMM_WORLD | |||
1929 | ||||
1930 | Not normally called by user | |||
1931 | ||||
1932 | Level: intermediate | |||
1933 | ||||
1934 | @*/ | |||
1935 | PetscErrorCode PetscLogViewFromOptions(void) | |||
1936 | { | |||
1937 | PetscErrorCode ierr; | |||
1938 | PetscViewer viewer; | |||
1939 | PetscBool flg; | |||
1940 | PetscViewerFormat format; | |||
1941 | ||||
1942 | PetscFunctionBegindo { do { ; if (petscstack && (petscstack->currentsize < 64)) { petscstack->function[petscstack->currentsize ] = __func__; petscstack->file[petscstack->currentsize] = "/sandbox/petsc/petsc.next/src/sys/logging/plog.c"; petscstack ->line[petscstack->currentsize] = 1942; petscstack-> petscroutine[petscstack->currentsize] = PETSC_TRUE; petscstack ->currentsize++; } if (petscstack) { petscstack->hotdepth += (PETSC_FALSE || petscstack->hotdepth); } ; } while (0) ; ; } while (0); | |||
1943 | ierr = PetscOptionsGetViewer(PETSC_COMM_WORLD,NULL((void*)0),NULL((void*)0),"-log_view",&viewer,&format,&flg);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1943,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1944 | if (flg) { | |||
1945 | ierr = PetscViewerPushFormat(viewer,format);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1945,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1946 | ierr = PetscLogView(viewer);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1946,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1947 | ierr = PetscViewerPopFormat(viewer);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1947,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1948 | ierr = PetscViewerDestroy(&viewer);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1948,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1949 | } | |||
1950 | PetscFunctionReturn(0)do { do { ; if (petscstack && petscstack->currentsize > 0) { petscstack->currentsize--; petscstack->function [petscstack->currentsize] = 0; petscstack->file[petscstack ->currentsize] = 0; petscstack->line[petscstack->currentsize ] = 0; petscstack->petscroutine[petscstack->currentsize ] = PETSC_FALSE; } if (petscstack) { petscstack->hotdepth = (((petscstack->hotdepth-1)<(0)) ? (0) : (petscstack-> hotdepth-1)); } ; } while (0); return(0);} while (0); | |||
1951 | } | |||
1952 | ||||
1953 | ||||
1954 | ||||
1955 | /*----------------------------------------------- Counter Functions -------------------------------------------------*/ | |||
1956 | /*@C | |||
1957 | PetscGetFlops - Returns the number of flops used on this processor | |||
1958 | since the program began. | |||
1959 | ||||
1960 | Not Collective | |||
1961 | ||||
1962 | Output Parameter: | |||
1963 | flops - number of floating point operations | |||
1964 | ||||
1965 | Notes: | |||
1966 | A global counter logs all PETSc flop counts. The user can use | |||
1967 | PetscLogFlops() to increment this counter to include flops for the | |||
1968 | application code. | |||
1969 | ||||
1970 | Level: intermediate | |||
1971 | ||||
1972 | .seealso: PetscTime(), PetscLogFlops() | |||
1973 | @*/ | |||
1974 | PetscErrorCode PetscGetFlops(PetscLogDouble *flops) | |||
1975 | { | |||
1976 | PetscFunctionBegindo { do { ; if (petscstack && (petscstack->currentsize < 64)) { petscstack->function[petscstack->currentsize ] = __func__; petscstack->file[petscstack->currentsize] = "/sandbox/petsc/petsc.next/src/sys/logging/plog.c"; petscstack ->line[petscstack->currentsize] = 1976; petscstack-> petscroutine[petscstack->currentsize] = PETSC_TRUE; petscstack ->currentsize++; } if (petscstack) { petscstack->hotdepth += (PETSC_FALSE || petscstack->hotdepth); } ; } while (0) ; ; } while (0); | |||
1977 | *flops = petsc_TotalFlops; | |||
1978 | PetscFunctionReturn(0)do { do { ; if (petscstack && petscstack->currentsize > 0) { petscstack->currentsize--; petscstack->function [petscstack->currentsize] = 0; petscstack->file[petscstack ->currentsize] = 0; petscstack->line[petscstack->currentsize ] = 0; petscstack->petscroutine[petscstack->currentsize ] = PETSC_FALSE; } if (petscstack) { petscstack->hotdepth = (((petscstack->hotdepth-1)<(0)) ? (0) : (petscstack-> hotdepth-1)); } ; } while (0); return(0);} while (0); | |||
1979 | } | |||
1980 | ||||
1981 | PetscErrorCode PetscLogObjectState(PetscObject obj, const char format[], ...) | |||
1982 | { | |||
1983 | PetscErrorCode ierr; | |||
1984 | size_t fullLength; | |||
1985 | va_list Argp; | |||
1986 | ||||
1987 | PetscFunctionBegindo { do { ; if (petscstack && (petscstack->currentsize < 64)) { petscstack->function[petscstack->currentsize ] = __func__; petscstack->file[petscstack->currentsize] = "/sandbox/petsc/petsc.next/src/sys/logging/plog.c"; petscstack ->line[petscstack->currentsize] = 1987; petscstack-> petscroutine[petscstack->currentsize] = PETSC_TRUE; petscstack ->currentsize++; } if (petscstack) { petscstack->hotdepth += (PETSC_FALSE || petscstack->hotdepth); } ; } while (0) ; ; } while (0); | |||
1988 | if (!petsc_logObjects) PetscFunctionReturn(0)do { do { ; if (petscstack && petscstack->currentsize > 0) { petscstack->currentsize--; petscstack->function [petscstack->currentsize] = 0; petscstack->file[petscstack ->currentsize] = 0; petscstack->line[petscstack->currentsize ] = 0; petscstack->petscroutine[petscstack->currentsize ] = PETSC_FALSE; } if (petscstack) { petscstack->hotdepth = (((petscstack->hotdepth-1)<(0)) ? (0) : (petscstack-> hotdepth-1)); } ; } while (0); return(0);} while (0); | |||
1989 | va_start(Argp, format)__builtin_va_start(Argp, format); | |||
1990 | ierr = PetscVSNPrintf(petsc_objects[obj->id].info, 64,format,&fullLength, Argp);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),1990,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
1991 | va_end(Argp)__builtin_va_end(Argp); | |||
1992 | PetscFunctionReturn(0)do { do { ; if (petscstack && petscstack->currentsize > 0) { petscstack->currentsize--; petscstack->function [petscstack->currentsize] = 0; petscstack->file[petscstack ->currentsize] = 0; petscstack->line[petscstack->currentsize ] = 0; petscstack->petscroutine[petscstack->currentsize ] = PETSC_FALSE; } if (petscstack) { petscstack->hotdepth = (((petscstack->hotdepth-1)<(0)) ? (0) : (petscstack-> hotdepth-1)); } ; } while (0); return(0);} while (0); | |||
1993 | } | |||
1994 | ||||
1995 | ||||
1996 | /*MC | |||
1997 | PetscLogFlops - Adds floating point operations to the global counter. | |||
1998 | ||||
1999 | Synopsis: | |||
2000 | #include <petsclog.h> | |||
2001 | PetscErrorCode PetscLogFlops(PetscLogDouble f) | |||
2002 | ||||
2003 | Not Collective | |||
2004 | ||||
2005 | Input Parameter: | |||
2006 | . f - flop counter | |||
2007 | ||||
2008 | ||||
2009 | Usage: | |||
2010 | .vb | |||
2011 | PetscLogEvent USER_EVENT; | |||
2012 | PetscLogEventRegister("User event",0,&USER_EVENT); | |||
2013 | PetscLogEventBegin(USER_EVENT,0,0,0,0); | |||
2014 | [code segment to monitor] | |||
2015 | PetscLogFlops(user_flops) | |||
2016 | PetscLogEventEnd(USER_EVENT,0,0,0,0); | |||
2017 | .ve | |||
2018 | ||||
2019 | Notes: | |||
2020 | A global counter logs all PETSc flop counts. The user can use | |||
2021 | PetscLogFlops() to increment this counter to include flops for the | |||
2022 | application code. | |||
2023 | ||||
2024 | Level: intermediate | |||
2025 | ||||
2026 | .seealso: PetscLogEventRegister(), PetscLogEventBegin(), PetscLogEventEnd(), PetscGetFlops() | |||
2027 | ||||
2028 | M*/ | |||
2029 | ||||
2030 | /*MC | |||
2031 | PetscPreLoadBegin - Begin a segment of code that may be preloaded (run twice) | |||
2032 | to get accurate timings | |||
2033 | ||||
2034 | Synopsis: | |||
2035 | #include <petsclog.h> | |||
2036 | void PetscPreLoadBegin(PetscBool flag,char *name); | |||
2037 | ||||
2038 | Not Collective | |||
2039 | ||||
2040 | Input Parameter: | |||
2041 | + flag - PETSC_TRUE to run twice, PETSC_FALSE to run once, may be overridden | |||
2042 | with command line option -preload true or -preload false | |||
2043 | - name - name of first stage (lines of code timed separately with -log_view) to | |||
2044 | be preloaded | |||
2045 | ||||
2046 | Usage: | |||
2047 | .vb | |||
2048 | PetscPreLoadBegin(PETSC_TRUE,"first stage); | |||
2049 | lines of code | |||
2050 | PetscPreLoadStage("second stage"); | |||
2051 | lines of code | |||
2052 | PetscPreLoadEnd(); | |||
2053 | .ve | |||
2054 | ||||
2055 | Notes: | |||
2056 | Only works in C/C++, not Fortran | |||
2057 | ||||
2058 | Flags available within the macro. | |||
2059 | + PetscPreLoadingUsed - true if we are or have done preloading | |||
2060 | . PetscPreLoadingOn - true if it is CURRENTLY doing preload | |||
2061 | . PetscPreLoadIt - 0 for the first computation (with preloading turned off it is only 0) 1 for the second | |||
2062 | - PetscPreLoadMax - number of times it will do the computation, only one when preloading is turned on | |||
2063 | The first two variables are available throughout the program, the second two only between the PetscPreLoadBegin() | |||
2064 | and PetscPreLoadEnd() | |||
2065 | ||||
2066 | Level: intermediate | |||
2067 | ||||
2068 | .seealso: PetscLogEventRegister(), PetscLogEventBegin(), PetscLogEventEnd(), PetscPreLoadEnd(), PetscPreLoadStage() | |||
2069 | ||||
2070 | ||||
2071 | M*/ | |||
2072 | ||||
2073 | /*MC | |||
2074 | PetscPreLoadEnd - End a segment of code that may be preloaded (run twice) | |||
2075 | to get accurate timings | |||
2076 | ||||
2077 | Synopsis: | |||
2078 | #include <petsclog.h> | |||
2079 | void PetscPreLoadEnd(void); | |||
2080 | ||||
2081 | Not Collective | |||
2082 | ||||
2083 | Usage: | |||
2084 | .vb | |||
2085 | PetscPreLoadBegin(PETSC_TRUE,"first stage); | |||
2086 | lines of code | |||
2087 | PetscPreLoadStage("second stage"); | |||
2088 | lines of code | |||
2089 | PetscPreLoadEnd(); | |||
2090 | .ve | |||
2091 | ||||
2092 | Notes: | |||
2093 | only works in C/C++ not fortran | |||
2094 | ||||
2095 | Level: intermediate | |||
2096 | ||||
2097 | .seealso: PetscLogEventRegister(), PetscLogEventBegin(), PetscLogEventEnd(), PetscPreLoadBegin(), PetscPreLoadStage() | |||
2098 | ||||
2099 | M*/ | |||
2100 | ||||
2101 | /*MC | |||
2102 | PetscPreLoadStage - Start a new segment of code to be timed separately. | |||
2103 | to get accurate timings | |||
2104 | ||||
2105 | Synopsis: | |||
2106 | #include <petsclog.h> | |||
2107 | void PetscPreLoadStage(char *name); | |||
2108 | ||||
2109 | Not Collective | |||
2110 | ||||
2111 | Usage: | |||
2112 | .vb | |||
2113 | PetscPreLoadBegin(PETSC_TRUE,"first stage); | |||
2114 | lines of code | |||
2115 | PetscPreLoadStage("second stage"); | |||
2116 | lines of code | |||
2117 | PetscPreLoadEnd(); | |||
2118 | .ve | |||
2119 | ||||
2120 | Notes: | |||
2121 | only works in C/C++ not fortran | |||
2122 | ||||
2123 | Level: intermediate | |||
2124 | ||||
2125 | .seealso: PetscLogEventRegister(), PetscLogEventBegin(), PetscLogEventEnd(), PetscPreLoadBegin(), PetscPreLoadEnd() | |||
2126 | ||||
2127 | M*/ | |||
2128 | ||||
2129 | ||||
2130 | #else /* end of -DPETSC_USE_LOG section */ | |||
2131 | ||||
2132 | PetscErrorCode PetscLogObjectState(PetscObject obj, const char format[], ...) | |||
2133 | { | |||
2134 | PetscFunctionBegindo { do { ; if (petscstack && (petscstack->currentsize < 64)) { petscstack->function[petscstack->currentsize ] = __func__; petscstack->file[petscstack->currentsize] = "/sandbox/petsc/petsc.next/src/sys/logging/plog.c"; petscstack ->line[petscstack->currentsize] = 2134; petscstack-> petscroutine[petscstack->currentsize] = PETSC_TRUE; petscstack ->currentsize++; } if (petscstack) { petscstack->hotdepth += (PETSC_FALSE || petscstack->hotdepth); } ; } while (0) ; ; } while (0); | |||
2135 | PetscFunctionReturn(0)do { do { ; if (petscstack && petscstack->currentsize > 0) { petscstack->currentsize--; petscstack->function [petscstack->currentsize] = 0; petscstack->file[petscstack ->currentsize] = 0; petscstack->line[petscstack->currentsize ] = 0; petscstack->petscroutine[petscstack->currentsize ] = PETSC_FALSE; } if (petscstack) { petscstack->hotdepth = (((petscstack->hotdepth-1)<(0)) ? (0) : (petscstack-> hotdepth-1)); } ; } while (0); return(0);} while (0); | |||
2136 | } | |||
2137 | ||||
2138 | #endif /* PETSC_USE_LOG*/ | |||
2139 | ||||
2140 | ||||
2141 | PetscClassId PETSC_LARGEST_CLASSID = PETSC_SMALLEST_CLASSID1211211; | |||
2142 | PetscClassId PETSC_OBJECT_CLASSID = 0; | |||
2143 | ||||
2144 | /*@C | |||
2145 | PetscClassIdRegister - Registers a new class name for objects and logging operations in an application code. | |||
2146 | ||||
2147 | Not Collective | |||
2148 | ||||
2149 | Input Parameter: | |||
2150 | . name - The class name | |||
2151 | ||||
2152 | Output Parameter: | |||
2153 | . oclass - The class id or classid | |||
2154 | ||||
2155 | Level: developer | |||
2156 | ||||
2157 | @*/ | |||
2158 | PetscErrorCode PetscClassIdRegister(const char name[],PetscClassId *oclass) | |||
2159 | { | |||
2160 | #if defined(PETSC_USE_LOG1) | |||
2161 | PetscStageLog stageLog; | |||
2162 | PetscInt stage; | |||
2163 | PetscErrorCode ierr; | |||
2164 | #endif | |||
2165 | ||||
2166 | PetscFunctionBegindo { do { ; if (petscstack && (petscstack->currentsize < 64)) { petscstack->function[petscstack->currentsize ] = __func__; petscstack->file[petscstack->currentsize] = "/sandbox/petsc/petsc.next/src/sys/logging/plog.c"; petscstack ->line[petscstack->currentsize] = 2166; petscstack-> petscroutine[petscstack->currentsize] = PETSC_TRUE; petscstack ->currentsize++; } if (petscstack) { petscstack->hotdepth += (PETSC_FALSE || petscstack->hotdepth); } ; } while (0) ; ; } while (0); | |||
2167 | *oclass = ++PETSC_LARGEST_CLASSID; | |||
2168 | #if defined(PETSC_USE_LOG1) | |||
2169 | ierr = PetscLogGetStageLog(&stageLog);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),2169,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
2170 | ierr = PetscClassRegLogRegister(stageLog->classLog, name, *oclass);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),2170,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
2171 | for (stage = 0; stage < stageLog->numStages; stage++) { | |||
2172 | ierr = PetscClassPerfLogEnsureSize(stageLog->stageInfo[stage].classLog, stageLog->classLog->numClasses);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),2172,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
2173 | } | |||
2174 | #endif | |||
2175 | PetscFunctionReturn(0)do { do { ; if (petscstack && petscstack->currentsize > 0) { petscstack->currentsize--; petscstack->function [petscstack->currentsize] = 0; petscstack->file[petscstack ->currentsize] = 0; petscstack->line[petscstack->currentsize ] = 0; petscstack->petscroutine[petscstack->currentsize ] = PETSC_FALSE; } if (petscstack) { petscstack->hotdepth = (((petscstack->hotdepth-1)<(0)) ? (0) : (petscstack-> hotdepth-1)); } ; } while (0); return(0);} while (0); | |||
2176 | } | |||
2177 | ||||
2178 | #if defined(PETSC_USE_LOG1) && defined(PETSC_HAVE_MPE) | |||
2179 | #include <mpe.h> | |||
2180 | ||||
2181 | PetscBool PetscBeganMPE = PETSC_FALSE; | |||
2182 | ||||
2183 | PETSC_INTERNextern __attribute__((visibility ("hidden"))) PetscErrorCode PetscLogEventBeginMPE(PetscLogEvent,int,PetscObject,PetscObject,PetscObject,PetscObject); | |||
2184 | PETSC_INTERNextern __attribute__((visibility ("hidden"))) PetscErrorCode PetscLogEventEndMPE(PetscLogEvent,int,PetscObject,PetscObject,PetscObject,PetscObject); | |||
2185 | ||||
2186 | /*@C | |||
2187 | PetscLogMPEBegin - Turns on MPE logging of events. This creates large log files | |||
2188 | and slows the program down. | |||
2189 | ||||
2190 | Collective over PETSC_COMM_WORLD | |||
2191 | ||||
2192 | Options Database Keys: | |||
2193 | . -log_mpe - Prints extensive log information | |||
2194 | ||||
2195 | Notes: | |||
2196 | A related routine is PetscLogDefaultBegin() (with the options key -log_view), which is | |||
2197 | intended for production runs since it logs only flop rates and object | |||
2198 | creation (and should not significantly slow the programs). | |||
2199 | ||||
2200 | Level: advanced | |||
2201 | ||||
2202 | ||||
2203 | .seealso: PetscLogDump(), PetscLogDefaultBegin(), PetscLogAllBegin(), PetscLogEventActivate(), | |||
2204 | PetscLogEventDeactivate() | |||
2205 | @*/ | |||
2206 | PetscErrorCode PetscLogMPEBegin(void) | |||
2207 | { | |||
2208 | PetscErrorCode ierr; | |||
2209 | ||||
2210 | PetscFunctionBegindo { do { ; if (petscstack && (petscstack->currentsize < 64)) { petscstack->function[petscstack->currentsize ] = __func__; petscstack->file[petscstack->currentsize] = "/sandbox/petsc/petsc.next/src/sys/logging/plog.c"; petscstack ->line[petscstack->currentsize] = 2210; petscstack-> petscroutine[petscstack->currentsize] = PETSC_TRUE; petscstack ->currentsize++; } if (petscstack) { petscstack->hotdepth += (PETSC_FALSE || petscstack->hotdepth); } ; } while (0) ; ; } while (0); | |||
2211 | /* Do MPE initialization */ | |||
2212 | if (!MPE_Initialized_logging()) { /* This function exists in mpich 1.1.2 and higher */ | |||
2213 | ierr = PetscInfo(0,"Initializing MPE.\n")PetscInfo_Private(__func__,0,"Initializing MPE.\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),2213,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
2214 | ierr = MPE_Init_log();CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),2214,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
2215 | ||||
2216 | PetscBeganMPE = PETSC_TRUE; | |||
2217 | } else { | |||
2218 | ierr = PetscInfo(0,"MPE already initialized. Not attempting to reinitialize.\n")PetscInfo_Private(__func__,0,"MPE already initialized. Not attempting to reinitialize.\n" );CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),2218,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
2219 | } | |||
2220 | ierr = PetscLogSet(PetscLogEventBeginMPE, PetscLogEventEndMPE);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),2220,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
2221 | PetscFunctionReturn(0)do { do { ; if (petscstack && petscstack->currentsize > 0) { petscstack->currentsize--; petscstack->function [petscstack->currentsize] = 0; petscstack->file[petscstack ->currentsize] = 0; petscstack->line[petscstack->currentsize ] = 0; petscstack->petscroutine[petscstack->currentsize ] = PETSC_FALSE; } if (petscstack) { petscstack->hotdepth = (((petscstack->hotdepth-1)<(0)) ? (0) : (petscstack-> hotdepth-1)); } ; } while (0); return(0);} while (0); | |||
2222 | } | |||
2223 | ||||
2224 | /*@C | |||
2225 | PetscLogMPEDump - Dumps the MPE logging info to file for later use with Jumpshot. | |||
2226 | ||||
2227 | Collective over PETSC_COMM_WORLD | |||
2228 | ||||
2229 | Level: advanced | |||
2230 | ||||
2231 | .seealso: PetscLogDump(), PetscLogAllBegin(), PetscLogMPEBegin() | |||
2232 | @*/ | |||
2233 | PetscErrorCode PetscLogMPEDump(const char sname[]) | |||
2234 | { | |||
2235 | char name[PETSC_MAX_PATH_LEN4096]; | |||
2236 | PetscErrorCode ierr; | |||
2237 | ||||
2238 | PetscFunctionBegindo { do { ; if (petscstack && (petscstack->currentsize < 64)) { petscstack->function[petscstack->currentsize ] = __func__; petscstack->file[petscstack->currentsize] = "/sandbox/petsc/petsc.next/src/sys/logging/plog.c"; petscstack ->line[petscstack->currentsize] = 2238; petscstack-> petscroutine[petscstack->currentsize] = PETSC_TRUE; petscstack ->currentsize++; } if (petscstack) { petscstack->hotdepth += (PETSC_FALSE || petscstack->hotdepth); } ; } while (0) ; ; } while (0); | |||
2239 | if (PetscBeganMPE) { | |||
2240 | ierr = PetscInfo(0,"Finalizing MPE.\n")PetscInfo_Private(__func__,0,"Finalizing MPE.\n");CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),2240,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
2241 | if (sname) { | |||
2242 | ierr = PetscStrcpy(name,sname);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),2242,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
2243 | } else { | |||
2244 | ierr = PetscGetProgramName(name,PETSC_MAX_PATH_LEN4096);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),2244,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
2245 | } | |||
2246 | ierr = MPE_Finish_log(name);CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),2246,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
2247 | } else { | |||
2248 | ierr = PetscInfo(0,"Not finalizing MPE (not started by PETSc).\n")PetscInfo_Private(__func__,0,"Not finalizing MPE (not started by PETSc).\n" );CHKERRQ(ierr)do {if (__builtin_expect(!!(ierr),0)) return PetscError(((MPI_Comm )0x44000001),2248,__func__,"/sandbox/petsc/petsc.next/src/sys/logging/plog.c" ,ierr,PETSC_ERROR_REPEAT," ");} while (0); | |||
2249 | } | |||
2250 | PetscFunctionReturn(0)do { do { ; if (petscstack && petscstack->currentsize > 0) { petscstack->currentsize--; petscstack->function [petscstack->currentsize] = 0; petscstack->file[petscstack ->currentsize] = 0; petscstack->line[petscstack->currentsize ] = 0; petscstack->petscroutine[petscstack->currentsize ] = PETSC_FALSE; } if (petscstack) { petscstack->hotdepth = (((petscstack->hotdepth-1)<(0)) ? (0) : (petscstack-> hotdepth-1)); } ; } while (0); return(0);} while (0); | |||
2251 | } | |||
2252 | ||||
2253 | #define PETSC_RGB_COLORS_MAX 39 | |||
2254 | static const char *PetscLogMPERGBColors[PETSC_RGB_COLORS_MAX] = { | |||
2255 | "OliveDrab: ", | |||
2256 | "BlueViolet: ", | |||
2257 | "CadetBlue: ", | |||
2258 | "CornflowerBlue: ", | |||
2259 | "DarkGoldenrod: ", | |||
2260 | "DarkGreen: ", | |||
2261 | "DarkKhaki: ", | |||
2262 | "DarkOliveGreen: ", | |||
2263 | "DarkOrange: ", | |||
2264 | "DarkOrchid: ", | |||
2265 | "DarkSeaGreen: ", | |||
2266 | "DarkSlateGray: ", | |||
2267 | "DarkTurquoise: ", | |||
2268 | "DeepPink: ", | |||
2269 | "DarkKhaki: ", | |||
2270 | "DimGray: ", | |||
2271 | "DodgerBlue: ", | |||
2272 | "GreenYellow: ", | |||
2273 | "HotPink: ", | |||
2274 | "IndianRed: ", | |||
2275 | "LavenderBlush: ", | |||
2276 | "LawnGreen: ", | |||
2277 | "LemonChiffon: ", | |||
2278 | "LightCoral: ", | |||
2279 | "LightCyan: ", | |||
2280 | "LightPink: ", | |||
2281 | "LightSalmon: ", | |||
2282 | "LightSlateGray: ", | |||
2283 | "LightYellow: ", | |||
2284 | "LimeGreen: ", | |||
2285 | "MediumPurple: ", | |||
2286 | "MediumSeaGreen: ", | |||
2287 | "MediumSlateBlue:", | |||
2288 | "MidnightBlue: ", | |||
2289 | "MintCream: ", | |||
2290 | "MistyRose: ", | |||
2291 | "NavajoWhite: ", | |||
2292 | "NavyBlue: ", | |||
2293 | "OliveDrab: " | |||
2294 | }; | |||
2295 | ||||
2296 | /*@C | |||
2297 | PetscLogMPEGetRGBColor - This routine returns a rgb color useable with PetscLogEventRegister() | |||
2298 | ||||
2299 | Not collective. Maybe it should be? | |||
2300 | ||||
2301 | Output Parameter | |||
2302 | . str - character string representing the color | |||
2303 | ||||
2304 | Level: developer | |||
2305 | ||||
2306 | .seealso: PetscLogEventRegister | |||
2307 | @*/ | |||
2308 | PetscErrorCode PetscLogMPEGetRGBColor(const char *str[]) | |||
2309 | { | |||
2310 | static int idx = 0; | |||
2311 | ||||
2312 | PetscFunctionBegindo { do { ; if (petscstack && (petscstack->currentsize < 64)) { petscstack->function[petscstack->currentsize ] = __func__; petscstack->file[petscstack->currentsize] = "/sandbox/petsc/petsc.next/src/sys/logging/plog.c"; petscstack ->line[petscstack->currentsize] = 2312; petscstack-> petscroutine[petscstack->currentsize] = PETSC_TRUE; petscstack ->currentsize++; } if (petscstack) { petscstack->hotdepth += (PETSC_FALSE || petscstack->hotdepth); } ; } while (0) ; ; } while (0); | |||
2313 | *str = PetscLogMPERGBColors[idx]; | |||
2314 | idx = (idx + 1)% PETSC_RGB_COLORS_MAX; | |||
2315 | PetscFunctionReturn(0)do { do { ; if (petscstack && petscstack->currentsize > 0) { petscstack->currentsize--; petscstack->function [petscstack->currentsize] = 0; petscstack->file[petscstack ->currentsize] = 0; petscstack->line[petscstack->currentsize ] = 0; petscstack->petscroutine[petscstack->currentsize ] = PETSC_FALSE; } if (petscstack) { petscstack->hotdepth = (((petscstack->hotdepth-1)<(0)) ? (0) : (petscstack-> hotdepth-1)); } ; } while (0); return(0);} while (0); | |||
2316 | } | |||
2317 | ||||
2318 | #endif /* PETSC_USE_LOG && PETSC_HAVE_MPE */ |