xref: /petsc/src/binding/petsc4py/src/petsc4py/PETSc/petsclog.pxi (revision 552edb6364df478b294b3111f33a8f37ca096b20)
1cdef extern from * nogil:
2
3    ctypedef double PetscLogDouble
4    ctypedef struct PetscEventPerfInfo:
5        int count
6        PetscLogDouble flops, time
7        PetscLogDouble numMessages
8        PetscLogDouble messageLength
9        PetscLogDouble numReductions
10
11    PetscErrorCode PetscLogDefaultBegin()
12    PetscErrorCode PetscLogView(PetscViewer)
13    PetscErrorCode PetscLogIsActive(PetscBool*)
14
15    PetscErrorCode PetscLogFlops(PetscLogDouble)
16    PetscErrorCode PetscGetFlops(PetscLogDouble*)
17    PetscErrorCode PetscGetCPUTime(PetscLogDouble*)
18    PetscErrorCode PetscMallocGetCurrentUsage(PetscLogDouble*)
19    PetscErrorCode PetscMemoryGetCurrentUsage(PetscLogDouble*)
20
21    PetscErrorCode PetscTime(PetscLogDouble*)
22    PetscErrorCode PetscTimeSubtract(PetscLogDouble*)
23    PetscErrorCode PetscTimeAdd(PetscLogDouble*)
24
25    ctypedef int PetscLogStage
26    PetscErrorCode PetscLogStageRegister(char[], PetscLogStage*)
27    PetscErrorCode PetscLogStagePush(PetscLogStage)
28    PetscErrorCode PetscLogStagePop()
29    PetscErrorCode PetscLogStageSetActive(PetscLogStage, PetscBool)
30    PetscErrorCode PetscLogStageGetActive(PetscLogStage, PetscBool*)
31    PetscErrorCode PetscLogStageSetVisible(PetscLogStage, PetscBool)
32    PetscErrorCode PetscLogStageGetVisible(PetscLogStage, PetscBool*)
33    PetscErrorCode PetscLogStageGetId(char[], PetscLogStage*)
34
35    ctypedef int PetscLogClass "PetscClassId"
36    PetscErrorCode PetscLogClassRegister"PetscClassIdRegister"(char[], PetscLogClass*)
37    PetscErrorCode PetscLogClassActivate"PetscLogEventActivateClass"(PetscLogClass)
38    PetscErrorCode PetscLogClassDeactivate"PetscLogEventDeactivateClass"(PetscLogClass)
39
40    ctypedef int PetscLogEvent
41    PetscErrorCode PetscLogEventRegister(char[], PetscLogClass, PetscLogEvent*)
42    PetscErrorCode PetscLogEventBegin(PetscLogEvent, PetscObject, PetscObject, PetscObject, PetscObject)
43    PetscErrorCode PetscLogEventEnd(PetscLogEvent, PetscObject, PetscObject, PetscObject, PetscObject)
44
45    PetscErrorCode PetscLogEventActivate(PetscLogEvent)
46    PetscErrorCode PetscLogEventDeactivate(PetscLogEvent)
47    PetscErrorCode PetscLogEventSetActiveAll(PetscLogEvent, PetscBool)
48    PetscErrorCode PetscLogEventGetPerfInfo(PetscLogStage, PetscLogEvent, PetscEventPerfInfo*)
49
50cdef extern from * nogil: # custom.h
51    PetscErrorCode PetscLogStageFindId(char[], PetscLogStage*)
52    PetscErrorCode PetscLogClassFindId(char[], PetscLogClass*)
53    PetscErrorCode PetscLogEventFindId(char[], PetscLogEvent*)
54    PetscErrorCode PetscLogStageFindName(PetscLogStage, char*[])
55    PetscErrorCode PetscLogClassFindName(PetscLogClass, char*[])
56    PetscErrorCode PetscLogEventFindName(PetscLogEvent, char*[])
57
58
59cdef inline int event_args2objs(object args, PetscObject o[4]) except -1:
60    o[0] = o[1] = o[2] = o[3] = NULL
61    cdef Py_ssize_t i=0, n = len(args)
62    cdef Object tmp = None
63    if n > 4: n = 4
64    for 0 <= i < n:
65        tmp = args[i]
66        if tmp is not None:
67            o[i] = tmp.obj[0]
68    return 0
69