Actual source code: petsctime.h
petsc-3.13.6 2020-09-29
1: /*
2: Low cost access to system time. This, in general, should not
3: be included in user programs.
4: */
6: #if !defined(PETSCTIME_H)
7: #define PETSCTIME_H
8: #include <petscsys.h>
10: PETSC_EXTERN PetscErrorCode PetscGetCPUTime(PetscLogDouble*);
12: /* Global counters */
13: PETSC_EXTERN PetscLogDouble petsc_BaseTime;
15: /*MC
16: PetscTime - Returns the current time of day in seconds.
18: Synopsis:
19: #include <petsctime.h>
20: PetscErrorCode PetscTime(PetscLogDouble *v)
22: Not Collective
24: Output Parameter:
25: . v - time counter
28: Usage:
29: PetscLogDouble v;
30: PetscTime(&v);
31: .... perform some calculation ...
32: printf("Time for operation %g\n",v);
34: Level: developer
36: Notes:
37: Since the PETSc libraries incorporate timing of phases and operations,
38: we do not recommend ever using PetscTime()
39: The options database command -log_view activate
40: PETSc library timing. See Users-Manual: Chapter 13 Profiling for more details.
42: .seealso: PetscTimeSubtract(), PetscTimeAdd(), PetscLogStageRegister(), PetscLogEventRegister(), PetscLogEventBegin(), PetscLogEventEnd()
44: M*/
46: /*MC
47: PetscTimeSubtract - Subtracts the current time of day (in seconds) from
48: the value v.
50: Synopsis:
51: #include <petsctime.h>
52: PetscErrorCode PetscTimeSubtract(PetscLogDouble *v)
54: Not Collective
56: Input Parameter:
57: . v - time counter
59: Output Parameter:
60: . v - time counter (v = v - current time)
62: Level: developer
64: Notes:
65: Since the PETSc libraries incorporate timing of phases and operations,
66: we do not every recommend using PetscTimeSubtract()
67: The options database command -log_view activates
68: PETSc library timing. See Users-Manual: Chapter 13 Profiling for more details, also
69: see PetscLogStageRegister(), PetscLogEventRegister(), PetscLogEventBegin(), PetscLogEventEnd() for how to register
70: stages and events in Section 1.5 Writing Application Codes with PETSc codes.
72: .seealso: PetscTime(), PetscTimeAdd(), PetscLogStageRegister(), PetscLogEventRegister(), PetscLogEventBegin(), PetscLogEventEnd()
74: M*/
76: /*MC
77: PetscTimeAdd - Adds the current time of day (in seconds) to the value v.
79: Synopsis:
80: #include <petsctime.h>
81: PetscErrorCode PetscTimeAdd(PetscLogDouble *v)
83: Not Collective
85: Input Parameter:
86: . v - time counter
88: Output Parameter:
89: . v - time counter (v = v + current time)
91: Level: developer
93: Notes:
94: Since the PETSc libraries incorporate timing of phases and operations,
95: we do not ever recommend using PetscTimeAdd().
96: The options database command -log_view activate
97: PETSc library timing. See Users-Manual: Chapter 13 Profiling for more details.
99: .seealso: PetscTime(), PetscTimeSubtract(), PetscLogStageRegister(), PetscLogEventRegister(), PetscLogEventBegin(), PetscLogEventEnd()
101: M*/
103: PETSC_STATIC_INLINE PetscErrorCode PetscTime(PetscLogDouble *v)
104: {
105: *v = MPI_Wtime();
106: return 0;
107: }
109: PETSC_STATIC_INLINE PetscErrorCode PetscTimeSubtract(PetscLogDouble *v)
110: {
111: *v -= MPI_Wtime();
112: return 0;
113: }
115: PETSC_STATIC_INLINE PetscErrorCode PetscTimeAdd(PetscLogDouble *v)
116: {
117: *v += MPI_Wtime();
118: return 0;
119: }
121: #endif