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