1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240
|
<center><a href="https://gitlab.com/petsc/petsc/-/blob/966382dc56242773704ef5f5cee7aa2db3ebc577/include/petsclogtypes.h">Actual source code: petsclogtypes.h</a></center><br>
<html>
<head>
<title></title>
<meta name="generator" content="c2html 0.9.6">
<meta name="date" content="2025-04-30T18:14:50+00:00">
</head>
<body bgcolor="#FFFFFF">
<pre width=80>
<a name="line1"> 1: </a><font color="#A020F0">#pragma once</font>
<a name="line2"> 2: </a>#include <A href="../include/petscsystypes.h.html"><petscsystypes.h></A>
<a name="line4"> 4: </a><font color="#B22222">/* MANSEC = Sys */</font>
<a name="line5"> 5: </a><font color="#B22222">/* SUBMANSEC = Log */</font>
<a name="line7"> 7: </a><font color="#B22222">/*S</font>
<a name="line8"> 8: </a><font color="#B22222"> <a href="../manualpages/Log/PetscEventPerfInfo.html">PetscEventPerfInfo</a> - statistics on how many times the event is used, how much time it takes, etc.</font>
<a name="line10"> 10: </a><font color="#B22222"> Level: advanced</font>
<a name="line12"> 12: </a><font color="#B22222"> Note:</font>
<a name="line13"> 13: </a><font color="#B22222"> This is the data structure that describes profiling statsitics collected for an event from</font>
<a name="line14"> 14: </a><font color="#B22222"> the default log handler (`<a href="../manualpages/Log/PetscLogDefaultBegin.html">PetscLogDefaultBegin</a>()`) using `<a href="../manualpages/Log/PetscLogEventGetPerfInfo.html">PetscLogEventGetPerfInfo</a>()`.</font>
<a name="line16"> 16: </a><font color="#B22222">.seealso(): [](ch_profiling)</font>
<a name="line17"> 17: </a><font color="#B22222">S*/</font>
<a name="line18"> 18: </a><font color="#4169E1">typedef</font> <font color="#4169E1">struct</font> {
<a name="line19"> 19: </a> int id; <font color="#B22222">/* The integer identifying this event / stage */</font>
<a name="line20"> 20: </a> <a href="../manualpages/Sys/PetscBool.html">PetscBool</a> active; <font color="#B22222">/* Deprecated */</font>
<a name="line21"> 21: </a> <a href="../manualpages/Sys/PetscBool.html">PetscBool</a> visible; <font color="#B22222">/* The flag to print info in summary */</font>
<a name="line22"> 22: </a> int depth; <font color="#B22222">/* The nesting depth of the event call */</font>
<a name="line23"> 23: </a> int count; <font color="#B22222">/* The number of times this event was executed */</font>
<a name="line24"> 24: </a> <a href="../manualpages/Sys/PetscLogDouble.html">PetscLogDouble</a> flops; <font color="#B22222">/* The flops used in this event */</font>
<a name="line25"> 25: </a> <a href="../manualpages/Sys/PetscLogDouble.html">PetscLogDouble</a> flops2; <font color="#B22222">/* The square of flops used in this event */</font>
<a name="line26"> 26: </a> <a href="../manualpages/Sys/PetscLogDouble.html">PetscLogDouble</a> flopsTmp; <font color="#B22222">/* The accumulator for flops used in this event */</font>
<a name="line27"> 27: </a> <a href="../manualpages/Sys/PetscLogDouble.html">PetscLogDouble</a> time; <font color="#B22222">/* The time taken for this event */</font>
<a name="line28"> 28: </a> <a href="../manualpages/Sys/PetscLogDouble.html">PetscLogDouble</a> time2; <font color="#B22222">/* The square of time taken for this event */</font>
<a name="line29"> 29: </a> <a href="../manualpages/Sys/PetscLogDouble.html">PetscLogDouble</a> timeTmp; <font color="#B22222">/* The accumulator for time taken for this event */</font>
<a name="line30"> 30: </a> <a href="../manualpages/Sys/PetscLogDouble.html">PetscLogDouble</a> syncTime; <font color="#B22222">/* The synchronization barrier time */</font>
<a name="line31"> 31: </a> <a href="../manualpages/Sys/PetscLogDouble.html">PetscLogDouble</a> dof[8]; <font color="#B22222">/* The number of degrees of freedom associated with this event */</font>
<a name="line32"> 32: </a> <a href="../manualpages/Sys/PetscLogDouble.html">PetscLogDouble</a> errors[8]; <font color="#B22222">/* The errors (user-defined) associated with this event */</font>
<a name="line33"> 33: </a> <a href="../manualpages/Sys/PetscLogDouble.html">PetscLogDouble</a> numMessages; <font color="#B22222">/* The number of messages in this event */</font>
<a name="line34"> 34: </a> <a href="../manualpages/Sys/PetscLogDouble.html">PetscLogDouble</a> messageLength; <font color="#B22222">/* The total message lengths in this event */</font>
<a name="line35"> 35: </a> <a href="../manualpages/Sys/PetscLogDouble.html">PetscLogDouble</a> numReductions; <font color="#B22222">/* The number of reductions in this event */</font>
<a name="line36"> 36: </a> <a href="../manualpages/Sys/PetscLogDouble.html">PetscLogDouble</a> memIncrease; <font color="#B22222">/* How much the resident memory has increased in this event */</font>
<a name="line37"> 37: </a> <a href="../manualpages/Sys/PetscLogDouble.html">PetscLogDouble</a> mallocIncrease; <font color="#B22222">/* How much the maximum malloced space has increased in this event */</font>
<a name="line38"> 38: </a> <a href="../manualpages/Sys/PetscLogDouble.html">PetscLogDouble</a> mallocSpace; <font color="#B22222">/* How much the space was malloced and kept during this event */</font>
<a name="line39"> 39: </a> <a href="../manualpages/Sys/PetscLogDouble.html">PetscLogDouble</a> mallocIncreaseEvent; <font color="#B22222">/* Maximum of the high water mark with in event minus memory available at the end of the event */</font>
<a name="line40"> 40: </a><font color="#A020F0">#if defined(PETSC_HAVE_DEVICE)</font>
<a name="line41"> 41: </a> <a href="../manualpages/Sys/PetscLogDouble.html">PetscLogDouble</a> CpuToGpuCount; <font color="#B22222">/* The total number of CPU to GPU copies */</font>
<a name="line42"> 42: </a> <a href="../manualpages/Sys/PetscLogDouble.html">PetscLogDouble</a> GpuToCpuCount; <font color="#B22222">/* The total number of GPU to CPU copies */</font>
<a name="line43"> 43: </a> <a href="../manualpages/Sys/PetscLogDouble.html">PetscLogDouble</a> CpuToGpuSize; <font color="#B22222">/* The total size of CPU to GPU copies */</font>
<a name="line44"> 44: </a> <a href="../manualpages/Sys/PetscLogDouble.html">PetscLogDouble</a> GpuToCpuSize; <font color="#B22222">/* The total size of GPU to CPU copies */</font>
<a name="line45"> 45: </a> <a href="../manualpages/Sys/PetscLogDouble.html">PetscLogDouble</a> GpuFlops; <font color="#B22222">/* The flops done on a GPU in this event */</font>
<a name="line46"> 46: </a> <a href="../manualpages/Sys/PetscLogDouble.html">PetscLogDouble</a> GpuTime; <font color="#B22222">/* The time spent on a GPU in this event */</font>
<a name="line47"> 47: </a><font color="#A020F0">#endif</font>
<a name="line48"> 48: </a>} <a href="../manualpages/Log/PetscEventPerfInfo.html">PetscEventPerfInfo</a>;
<a name="line50"> 50: </a><font color="#4169E1">typedef struct _n_PetscIntStack *PetscIntStack;</font>
<a name="line52"> 52: </a><font color="#B22222">/*MC</font>
<a name="line53"> 53: </a><font color="#B22222"> <a href="../manualpages/Log/PetscLogEvent.html">PetscLogEvent</a> - id used to identify PETSc or user events which timed portions (blocks of executable)</font>
<a name="line54"> 54: </a><font color="#B22222"> code.</font>
<a name="line56"> 56: </a><font color="#B22222"> Level: intermediate</font>
<a name="line58"> 58: </a><font color="#B22222">.seealso: [](ch_profiling), `<a href="../manualpages/Log/PetscLogEventRegister.html">PetscLogEventRegister</a>()`, `<a href="../manualpages/Log/PetscLogEventBegin.html">PetscLogEventBegin</a>()`, `<a href="../manualpages/Log/PetscLogEventEnd.html">PetscLogEventEnd</a>()`, `<a href="../manualpages/Log/PetscLogStage.html">PetscLogStage</a>`</font>
<a name="line59"> 59: </a><font color="#B22222">M*/</font>
<a name="line60"> 60: </a><font color="#4169E1">typedef int <a href="../manualpages/Log/PetscLogEvent.html">PetscLogEvent</a>;</font>
<a name="line62"> 62: </a><font color="#B22222">/*MC</font>
<a name="line63"> 63: </a><font color="#B22222"> <a href="../manualpages/Log/PetscLogStage.html">PetscLogStage</a> - id used to identify user stages (phases, sections) of runs - for logging</font>
<a name="line65"> 65: </a><font color="#B22222"> Level: intermediate</font>
<a name="line67"> 67: </a><font color="#B22222">.seealso: [](ch_profiling), `<a href="../manualpages/Log/PetscLogStageRegister.html">PetscLogStageRegister</a>()`, `<a href="../manualpages/Log/PetscLogStagePush.html">PetscLogStagePush</a>()`, `<a href="../manualpages/Log/PetscLogStagePop.html">PetscLogStagePop</a>()`, `<a href="../manualpages/Log/PetscLogEvent.html">PetscLogEvent</a>`</font>
<a name="line68"> 68: </a><font color="#B22222">M*/</font>
<a name="line69"> 69: </a><font color="#4169E1">typedef int <a href="../manualpages/Log/PetscLogStage.html">PetscLogStage</a>;</font>
<a name="line71"> 71: </a><font color="#B22222">/*MC</font>
<a name="line72"> 72: </a><font color="#B22222"> <a href="../manualpages/Log/PetscLogClass.html">PetscLogClass</a> - id used to identify classes for logging purposes only. It</font>
<a name="line73"> 73: </a><font color="#B22222"> is not equal to its `<a href="../manualpages/Sys/PetscClassId.html">PetscClassId</a>`, which is the identifier used for other</font>
<a name="line74"> 74: </a><font color="#B22222"> purposes.</font>
<a name="line76"> 76: </a><font color="#B22222"> Level: developer</font>
<a name="line78"> 78: </a><font color="#B22222">.seealso: [](ch_profiling), `<a href="../manualpages/Log/PetscLogStateClassRegister.html">PetscLogStateClassRegister</a>()`</font>
<a name="line79"> 79: </a><font color="#B22222">M*/</font>
<a name="line80"> 80: </a><font color="#4169E1">typedef int <a href="../manualpages/Log/PetscLogClass.html">PetscLogClass</a>;</font>
<a name="line82"> 82: </a><font color="#B22222">/*S</font>
<a name="line83"> 83: </a><font color="#B22222"> <a href="../manualpages/Log/PetscLogHandler.html">PetscLogHandler</a> - Interface for performance logging. A log handler receives a `<a href="../manualpages/Log/PetscLogState.html">PetscLogState</a>` that has</font>
<a name="line84"> 84: </a><font color="#B22222"> information about the events (`<a href="../manualpages/Log/PetscLogEvent.html">PetscLogEvent</a>`) and stages (`<a href="../manualpages/Log/PetscLogStage.html">PetscLogStage</a>`) in the logging environment.</font>
<a name="line85"> 85: </a><font color="#B22222"> When a handler is connected to PETSc's global logging stream (`<a href="../manualpages/Log/PetscLogHandlerStart.html">PetscLogHandlerStart</a>()`), it receives</font>
<a name="line86"> 86: </a><font color="#B22222"> updates about events (`<a href="../manualpages/Log/PetscLogEventBegin.html">PetscLogEventBegin</a>()` / `<a href="../manualpages/Log/PetscLogEventEnd.html">PetscLogEventEnd</a>()`), stages (`<a href="../manualpages/Log/PetscLogStagePush.html">PetscLogStagePush</a>()` /</font>
<a name="line87"> 87: </a><font color="#B22222"> `<a href="../manualpages/Log/PetscLogStagePop.html">PetscLogStagePop</a>()`), and objects (`<a href="../manualpages/Log/PetscLogObjectCreate.html">PetscLogObjectCreate</a>()` / `<a href="../manualpages/Log/PetscLogObjectDestroy.html">PetscLogObjectDestroy</a>()`). After</font>
<a name="line88"> 88: </a><font color="#B22222"> collecting information the logger can summarize its data with `<a href="../manualpages/Log/PetscLogHandlerView.html">PetscLogHandlerView</a>()`.</font>
<a name="line90"> 90: </a><font color="#B22222"> Example Usage:</font>
<a name="line91"> 91: </a><font color="#B22222">.vb</font>
<a name="line92"> 92: </a>#include <A href="../include/petscsys.h.html"><petscsys.h></A>
<a name="line94"> 94: </a><font color="#B22222">int main() {</font>
<a name="line95"> 95: </a><font color="#B22222"> UserCtx ctx;</font>
<a name="line96"> 96: </a><font color="#B22222"> <a href="../manualpages/Log/PetscLogHandlerType.html">PetscLogHandlerType</a> handler_type;</font>
<a name="line98"> 98: </a><font color="#B22222"> <a href="../manualpages/Sys/PetscInitialize.html">PetscInitialize</a>(...);</font>
<a name="line99"> 99: </a><font color="#B22222"> // ... fill in ctx</font>
<a name="line100">100: </a><font color="#B22222"> <a href="../manualpages/Log/PetscLogHandlerCreate.html">PetscLogHandlerCreate</a>(<a href="../manualpages/Sys/PETSC_COMM_WORLD.html">PETSC_COMM_WORLD</a>, &handler);</font>
<a name="line101">101: </a><font color="#B22222"> <a href="../manualpages/Log/PetscLogHandlerSetType.html">PetscLogHandlerSetType</a>(handler, handler_type);</font>
<a name="line102">102: </a><font color="#B22222"> <a href="../manualpages/Log/PetscLogHandlerStart.html">PetscLogHandlerStart</a>(handler); // connect your handler to global logging state</font>
<a name="line103">103: </a><font color="#B22222"> // ... run code to be profiled</font>
<a name="line104">104: </a><font color="#B22222"> <a href="../manualpages/Log/PetscLogHandlerStop.html">PetscLogHandlerStop</a>(handler); // disconnect your handler from the global logging state</font>
<a name="line105">105: </a><font color="#B22222"> <a href="../manualpages/Log/PetscLogHandlerView.html">PetscLogHandlerView</a>(handler, <a href="../manualpages/Viewer/PETSC_VIEWER_STDOUT_WORLD.html">PETSC_VIEWER_STDOUT_WORLD</a>); // view the results</font>
<a name="line106">106: </a><font color="#B22222"> <a href="../manualpages/Log/PetscLogHandlerDestroy.html">PetscLogHandlerDestroy</a>(&handler);</font>
<a name="line107">107: </a><font color="#B22222"> <a href="../manualpages/Sys/PetscFinalize.html">PetscFinalize</a>();</font>
<a name="line108">108: </a><font color="#B22222">}</font>
<a name="line109">109: </a><font color="#B22222">.ve</font>
<a name="line111">111: </a><font color="#B22222"> Level: developer</font>
<a name="line113">113: </a><font color="#B22222">.seealso: [](ch_profiling),</font>
<a name="line114">114: </a><font color="#B22222"> `<a href="../manualpages/Log/PetscLogHandlerCreate.html">PetscLogHandlerCreate</a>()`,</font>
<a name="line115">115: </a><font color="#B22222"> `<a href="../manualpages/Log/PetscLogHandlerStart.html">PetscLogHandlerStart</a>()`, `<a href="../manualpages/Log/PetscLogHandlerStop.html">PetscLogHandlerStop</a>()`,</font>
<a name="line116">116: </a><font color="#B22222"> `<a href="../manualpages/Log/PetscLogHandlerSetType.html">PetscLogHandlerSetType</a>()`, `<a href="../manualpages/Log/PetscLogHandlerGetType.html">PetscLogHandlerGetType</a>()`,</font>
<a name="line117">117: </a><font color="#B22222"> `<a href="../manualpages/Log/PetscLogHandlerSetState.html">PetscLogHandlerSetState</a>()`, `<a href="../manualpages/Log/PetscLogHandlerGetState.html">PetscLogHandlerGetState</a>()`,</font>
<a name="line118">118: </a><font color="#B22222"> `<a href="../manualpages/Log/PetscLogHandlerEventBegin.html">PetscLogHandlerEventBegin</a>()`, `<a href="../manualpages/Log/PetscLogHandlerEventEnd.html">PetscLogHandlerEventEnd</a>()`,</font>
<a name="line119">119: </a><font color="#B22222"> `<a href="../manualpages/Log/PetscLogHandlerEventSync.html">PetscLogHandlerEventSync</a>()`,</font>
<a name="line120">120: </a><font color="#B22222"> `<a href="../manualpages/Log/PetscLogHandlerObjectCreate.html">PetscLogHandlerObjectCreate</a>()`, `<a href="../manualpages/Log/PetscLogHandlerObjectDestroy.html">PetscLogHandlerObjectDestroy</a>()`,</font>
<a name="line121">121: </a><font color="#B22222"> `<a href="../manualpages/Log/PetscLogHandlerStagePush.html">PetscLogHandlerStagePush</a>()`, `<a href="../manualpages/Log/PetscLogHandlerStagePop.html">PetscLogHandlerStagePop</a>()`,</font>
<a name="line122">122: </a><font color="#B22222"> `<a href="../manualpages/Log/PetscLogHandlerView.html">PetscLogHandlerView</a>()`,</font>
<a name="line123">123: </a><font color="#B22222"> `<a href="../manualpages/Log/PetscLogHandlerDestroy.html">PetscLogHandlerDestroy</a>()`,</font>
<a name="line124">124: </a><font color="#B22222">S*/</font>
<a name="line125">125: </a><font color="#4169E1">typedef struct _p_PetscLogHandler *<a href="../manualpages/Log/PetscLogHandler.html">PetscLogHandler</a>;</font>
<a name="line127">127: </a><font color="#B22222">/*J</font>
<a name="line128">128: </a><font color="#B22222"> <a href="../manualpages/Log/PetscLogHandlerType.html">PetscLogHandlerType</a> - String with the name of a `<a href="../manualpages/Log/PetscLogHandler.html">PetscLogHandler</a>` type</font>
<a name="line130">130: </a><font color="#B22222"> Level: Developer</font>
<a name="line132">132: </a><font color="#B22222"> Note:</font>
<a name="line133">133: </a><font color="#B22222"> Implementations included with PETSc include\:</font>
<a name="line134">134: </a><font color="#B22222">+ `<a href="../manualpages/Log/PETSCLOGHANDLERDEFAULT.html">PETSCLOGHANDLERDEFAULT</a>` (`<a href="../manualpages/Log/PetscLogDefaultBegin.html">PetscLogDefaultBegin</a>()`) - formats data for PETSc's default summary (`<a href="../manualpages/Log/PetscLogView.html">PetscLogView</a>()`) and data-dump (`<a href="../manualpages/Log/PetscLogDump.html">PetscLogDump</a>()`) formats.</font>
<a name="line135">135: </a><font color="#B22222">. `<a href="../manualpages/Log/PETSCLOGHANDLERNESTED.html">PETSCLOGHANDLERNESTED</a>` (`<a href="../manualpages/Log/PetscLogNestedBegin.html">PetscLogNestedBegin</a>()`) - formats data for XML or flamegraph output</font>
<a name="line136">136: </a><font color="#B22222">. `<a href="../manualpages/Log/PETSCLOGHANDLERTRACE.html">PETSCLOGHANDLERTRACE</a>` (`<a href="../manualpages/Log/PetscLogTraceBegin.html">PetscLogTraceBegin</a>()`) - traces profiling events in an output stream</font>
<a name="line137">137: </a><font color="#B22222">. `<a href="../manualpages/Log/PETSCLOGHANDLERMPE.html">PETSCLOGHANDLERMPE</a>` (`<a href="../manualpages/Log/PetscLogMPEBegin.html">PetscLogMPEBegin</a>()`) - outputs parallel performance visualization using MPE</font>
<a name="line138">138: </a><font color="#B22222">. `<a href="../manualpages/Log/PETSCLOGHANDLERPERFSTUBS.html">PETSCLOGHANDLERPERFSTUBS</a>` (`<a href="../manualpages/Log/PetscLogPerfstubsBegin.html">PetscLogPerfstubsBegin</a>()`) - outputs instrumentation data for PerfStubs/TAU</font>
<a name="line139">139: </a><font color="#B22222">. `<a href="../manualpages/Log/PETSCLOGHANDLERLEGACY.html">PETSCLOGHANDLERLEGACY</a>` (`<a href="../manualpages/Log/PetscLogLegacyCallbacksBegin.html">PetscLogLegacyCallbacksBegin</a>()`) - adapts legacy callbacks to the `<a href="../manualpages/Log/PetscLogHandler.html">PetscLogHandler</a>` interface</font>
<a name="line140">140: </a><font color="#B22222">- `<a href="../manualpages/Log/PETSCLOGHANDLERNVTX.html">PETSCLOGHANDLERNVTX</a>` - creates NVTX ranges for events that are visible in Nsight</font>
<a name="line142">142: </a><font color="#B22222">.seealso: [](ch_profiling), `<a href="../manualpages/Log/PetscLogHandler.html">PetscLogHandler</a>`, `<a href="../manualpages/Log/PetscLogHandlerSetType.html">PetscLogHandlerSetType</a>()`, `<a href="../manualpages/Log/PetscLogHandlerGetType.html">PetscLogHandlerGetType</a>()`</font>
<a name="line143">143: </a><font color="#B22222">J*/</font>
<a name="line144">144: </a><font color="#4169E1">typedef const char *<a href="../manualpages/Log/PetscLogHandlerType.html">PetscLogHandlerType</a>;</font>
<a name="line146">146: </a><strong><font color="#228B22">#define <a href="../manualpages/Log/PETSCLOGHANDLERDEFAULT.html">PETSCLOGHANDLERDEFAULT</a> </font><font color="#666666">"default"</font><font color="#228B22"></font></strong>
<a name="line147">147: </a><strong><font color="#228B22">#define <a href="../manualpages/Log/PETSCLOGHANDLERNESTED.html">PETSCLOGHANDLERNESTED</a> </font><font color="#666666">"nested"</font><font color="#228B22"></font></strong>
<a name="line148">148: </a><strong><font color="#228B22">#define <a href="../manualpages/Log/PETSCLOGHANDLERTRACE.html">PETSCLOGHANDLERTRACE</a> </font><font color="#666666">"trace"</font><font color="#228B22"></font></strong>
<a name="line149">149: </a><strong><font color="#228B22">#define <a href="../manualpages/Log/PETSCLOGHANDLERMPE.html">PETSCLOGHANDLERMPE</a> </font><font color="#666666">"mpe"</font><font color="#228B22"></font></strong>
<a name="line150">150: </a><strong><font color="#228B22">#define <a href="../manualpages/Log/PETSCLOGHANDLERPERFSTUBS.html">PETSCLOGHANDLERPERFSTUBS</a> </font><font color="#666666">"perfstubs"</font><font color="#228B22"></font></strong>
<a name="line151">151: </a><strong><font color="#228B22">#define <a href="../manualpages/Log/PETSCLOGHANDLERLEGACY.html">PETSCLOGHANDLERLEGACY</a> </font><font color="#666666">"legacy"</font><font color="#228B22"></font></strong>
<a name="line152">152: </a><strong><font color="#228B22">#define <a href="../manualpages/Log/PETSCLOGHANDLERNVTX.html">PETSCLOGHANDLERNVTX</a> </font><font color="#666666">"nvtx"</font><font color="#228B22"></font></strong>
<a name="line154">154: </a><font color="#4169E1">typedef struct _n_PetscLogRegistry *PetscLogRegistry;</font>
<a name="line156">156: </a><font color="#B22222">/*S</font>
<a name="line157">157: </a><font color="#B22222"> <a href="../manualpages/Log/PetscLogState.html">PetscLogState</a> - Interface for the shared state information used by `<a href="../manualpages/Log/PetscLogHandler.html">PetscLogHandler</a>`s.</font>
<a name="line159">159: </a><font color="#B22222"> Most users will not need to reference a `<a href="../manualpages/Log/PetscLogState.html">PetscLogState</a>` directly: global logging routines</font>
<a name="line160">160: </a><font color="#B22222"> like `<a href="../manualpages/Log/PetscLogEventRegister.html">PetscLogEventRegister</a>()` and `<a href="../manualpages/Log/PetscLogStagePush.html">PetscLogStagePush</a>()` implicitly manipulate PETSc's global</font>
<a name="line161">161: </a><font color="#B22222"> logging state, `<a href="../manualpages/Log/PetscLogGetState.html">PetscLogGetState</a>()`.</font>
<a name="line163">163: </a><font color="#B22222"> Level: developer</font>
<a name="line165">165: </a><font color="#B22222"> Notes:</font>
<a name="line166">166: </a><font color="#B22222"> `<a href="../manualpages/Log/PetscLogState.html">PetscLogState</a>` holds a registry of events (`<a href="../manualpages/Log/PetscLogStateEventRegister.html">PetscLogStateEventRegister</a>()`), stages</font>
<a name="line167">167: </a><font color="#B22222"> (`<a href="../manualpages/Log/PetscLogStateStageRegister.html">PetscLogStateStageRegister</a>()`), and classes (`<a href="../manualpages/Log/PetscLogStateClassRegister.html">PetscLogStateClassRegister</a>()`).</font>
<a name="line168">168: </a><font color="#B22222"> It keeps track of when the user has activated events (`<a href="../manualpages/Log/PetscLogStateEventSetActive.html">PetscLogStateEventSetActive</a>()`) and</font>
<a name="line169">169: </a><font color="#B22222"> stages (`<a href="../manualpages/Log/PetscLogStateStageSetActive.html">PetscLogStateStageSetActive</a>()`). It also keeps a stack of running stages</font>
<a name="line170">170: </a><font color="#B22222"> (`<a href="../manualpages/Log/PetscLogStateStagePush.html">PetscLogStateStagePush</a>()`, `<a href="../manualpages/Log/PetscLogStateStagePop.html">PetscLogStateStagePop</a>()`).</font>
<a name="line172">172: </a><font color="#B22222"> The struct defining `<a href="../manualpages/Log/PetscLogState.html">PetscLogState</a>` is in a public header so that `<a href="../manualpages/Log/PetscLogEventBegin.html">PetscLogEventBegin</a>()`,</font>
<a name="line173">173: </a><font color="#B22222"> `<a href="../manualpages/Log/PetscLogEventEnd.html">PetscLogEventEnd</a>()`, `<a href="../manualpages/Log/PetscLogObjectCreate.html">PetscLogObjectCreate</a>()`, and `<a href="../manualpages/Log/PetscLogObjectDestroy.html">PetscLogObjectDestroy</a>()` can be defined</font>
<a name="line174">174: </a><font color="#B22222"> as macros rather than function calls, but users are discouraged from directly accessing</font>
<a name="line175">175: </a><font color="#B22222"> the struct's fields, which are subject to change.</font>
<a name="line177">177: </a><font color="#B22222">.seealso: [](ch_profiling), `<a href="../manualpages/Log/PetscLogStateCreate.html">PetscLogStateCreate</a>()`, `<a href="../manualpages/Log/PetscLogStateDestroy.html">PetscLogStateDestroy</a>()`</font>
<a name="line178">178: </a><font color="#B22222">S*/</font>
<a name="line179">179: </a><font color="#4169E1">typedef struct _n_PetscLogState *<a href="../manualpages/Log/PetscLogState.html">PetscLogState</a>;</font>
<a name="line180">180: </a><font color="#4169E1"><a name="_n_PetscLogState"></a>struct _n_PetscLogState </font>{
<a name="line181">181: </a> PetscLogRegistry registry;
<a name="line182">182: </a> <a href="../manualpages/Sys/PetscBT.html">PetscBT</a> active;
<a name="line183">183: </a> PetscIntStack stage_stack;
<a name="line184">184: </a> int current_stage;
<a name="line185">185: </a> int bt_num_stages;
<a name="line186">186: </a> int bt_num_events;
<a name="line187">187: </a> int refct;
<a name="line188">188: </a>};
<a name="line190">190: </a><font color="#B22222">/*S</font>
<a name="line191">191: </a><font color="#B22222"> <a href="../manualpages/Log/PetscLogEventInfo.html">PetscLogEventInfo</a> - A registry entry about a logging event for `<a href="../manualpages/Log/PetscLogState.html">PetscLogState</a>`.</font>
<a name="line193">193: </a><font color="#B22222"> Level: developer</font>
<a name="line195">195: </a><font color="#B22222">.seealso: [](ch_profiling), `<a href="../manualpages/Log/PetscLogEvent.html">PetscLogEvent</a>`, `<a href="../manualpages/Log/PetscLogState.html">PetscLogState</a>`, `<a href="../manualpages/Log/PetscLogStateEventGetInfo.html">PetscLogStateEventGetInfo</a>()`</font>
<a name="line196">196: </a><font color="#B22222">S*/</font>
<a name="line197">197: </a><font color="#4169E1">typedef</font> <font color="#4169E1">struct</font> {
<a name="line198">198: </a> char *name; <font color="#B22222">/* The name of this event */</font>
<a name="line199">199: </a> <a href="../manualpages/Sys/PetscClassId.html">PetscClassId</a> classid; <font color="#B22222">/* The class the event is associated with */</font>
<a name="line200">200: </a> <a href="../manualpages/Sys/PetscBool.html">PetscBool</a> collective; <font color="#B22222">/* Flag this event as collective */</font>
<a name="line201">201: </a>} <a href="../manualpages/Log/PetscLogEventInfo.html">PetscLogEventInfo</a>;
<a name="line203">203: </a><font color="#B22222">/*S</font>
<a name="line204">204: </a><font color="#B22222"> <a href="../manualpages/Log/PetscLogClassInfo.html">PetscLogClassInfo</a> - A registry entry about a class for `<a href="../manualpages/Log/PetscLogState.html">PetscLogState</a>`.</font>
<a name="line206">206: </a><font color="#B22222"> Level: developer</font>
<a name="line208">208: </a><font color="#B22222">.seealso: [](ch_profiling), `<a href="../manualpages/Log/PetscLogClass.html">PetscLogClass</a>`, `<a href="../manualpages/Log/PetscLogState.html">PetscLogState</a>`, `<a href="../manualpages/Log/PetscLogStateStageGetInfo.html">PetscLogStateStageGetInfo</a>()`</font>
<a name="line209">209: </a><font color="#B22222">S*/</font>
<a name="line210">210: </a><font color="#4169E1">typedef</font> <font color="#4169E1">struct</font> {
<a name="line211">211: </a> char *name; <font color="#B22222">/* The class name */</font>
<a name="line212">212: </a> <a href="../manualpages/Sys/PetscClassId.html">PetscClassId</a> classid; <font color="#B22222">/* The integer identifying this class */</font>
<a name="line213">213: </a>} <a href="../manualpages/Log/PetscLogClassInfo.html">PetscLogClassInfo</a>;
<a name="line215">215: </a><font color="#B22222">/*S</font>
<a name="line216">216: </a><font color="#B22222"> <a href="../manualpages/Log/PetscLogStageInfo.html">PetscLogStageInfo</a> - A registry entry about a class for `<a href="../manualpages/Log/PetscLogState.html">PetscLogState</a>`.</font>
<a name="line218">218: </a><font color="#B22222"> Level: developer</font>
<a name="line220">220: </a><font color="#B22222">.seealso: [](ch_profiling), `<a href="../manualpages/Log/PetscLogStage.html">PetscLogStage</a>`, `<a href="../manualpages/Log/PetscLogState.html">PetscLogState</a>`, `<a href="../manualpages/Log/PetscLogStateClassGetInfo.html">PetscLogStateClassGetInfo</a>()`</font>
<a name="line221">221: </a><font color="#B22222">S*/</font>
<a name="line222">222: </a><font color="#4169E1">typedef</font> <font color="#4169E1">struct</font> {
<a name="line223">223: </a> char *name; <font color="#B22222">/* The stage name */</font>
<a name="line224">224: </a>} <a href="../manualpages/Log/PetscLogStageInfo.html">PetscLogStageInfo</a>;
</pre>
</body>
</html>
|