Actual source code: petsctime.h
1: /*
2: Low cost access to a system time. This, in general, should not be included in user programs.
3: */
4: #pragma once
6: #include <petscsys.h>
8: /* SUBMANSEC = Sys */
10: PETSC_EXTERN PetscErrorCode PetscGetCPUTime(PetscLogDouble *);
12: /* Global counters */
13: PETSC_EXTERN PetscLogDouble petsc_BaseTime;
15: /*@
16: PetscTime - Returns the current time from some base time in the past in seconds.
18: Not Collective
20: Output Parameter:
21: . v - time counter
23: Usage:
24: .vb
25: PetscLogDouble v;
26: PetscTime(&v);
27: .... perform some calculation ...
28: printf("Time for operation %g\n",v);
29: .ve
31: Level: developer
33: Note:
34: Since the PETSc libraries incorporate timing of phases and operations, we do not recommend ever using `PetscTime()`.
35: The options database command `-log_view` activates PETSc library timing.
36: See `PetscLogStageRegister()`, `PetscLogEventRegister()`, `PetscLogEventBegin()`, `PetscLogEventEnd()` for how to register
37: stages and events in application codes.
39: .seealso: `PetscTimeSubtract()`, `PetscTimeAdd()`, `PetscLogStageRegister()`, `PetscLogEventRegister()`, `PetscLogEventBegin()`, `PetscLogEventEnd()`
40: @*/
41: static inline PetscErrorCode PetscTime(PetscLogDouble *v)
42: {
43: *v = MPI_Wtime();
44: return PETSC_SUCCESS;
45: }
47: /*@
48: PetscTimeSubtract - Subtracts the current time (in seconds) from the value `v`.
50: Not Collective
52: Input Parameter:
53: . v - time counter
55: Output Parameter:
56: . v - time counter (`v` = `v` - current time)
58: Level: developer
60: Note:
61: Since the PETSc libraries incorporate timing of phases and operations, we do not always recommend using `PetscTimeSubtract()`.
62: The options database command `-log_view` activates PETSc library timing.
63: See `PetscLogStageRegister()`, `PetscLogEventRegister()`, `PetscLogEventBegin()`, `PetscLogEventEnd()` for how to register
64: stages and events in application codes.
66: .seealso: `PetscTime()`, `PetscTimeAdd()`, `PetscLogStageRegister()`, `PetscLogEventRegister()`, `PetscLogEventBegin()`, `PetscLogEventEnd()`
67: @*/
68: static inline PetscErrorCode PetscTimeSubtract(PetscLogDouble *v)
69: {
70: *v -= MPI_Wtime();
71: return PETSC_SUCCESS;
72: }
74: /*@
75: PetscTimeAdd - Adds the current time (in seconds) to the value `v`.
77: Not Collective
79: Input Parameter:
80: . v - time counter
82: Output Parameter:
83: . v - time counter (`v` = `v` + current time)
85: Level: developer
87: Note:
88: Since the PETSc libraries incorporate timing of phases and operations, we do not ever recommend using `PetscTimeAdd()`.
89: The options database command `-log_view` activates PETSc library timing.
91: .seealso: `PetscTime()`, `PetscTimeSubtract()`, `PetscLogStageRegister()`, `PetscLogEventRegister()`, `PetscLogEventBegin()`, `PetscLogEventEnd()`
92: @*/
93: static inline PetscErrorCode PetscTimeAdd(PetscLogDouble *v)
94: {
95: *v += MPI_Wtime();
96: return PETSC_SUCCESS;
97: }