xref: /petsc/include/petsctime.h (revision 16a05f60a523f53ab316acaac9f77b7425611adc)
1c8281c7dSSatish Balay /*
2*16a05f60SBarry Smith        Low cost access to a system time. This, in general, should not be included in user programs.
3c8281c7dSSatish Balay */
46524c165SJacob Faibussowitsch #ifndef PETSCTIME_H
526bd1501SBarry Smith #define PETSCTIME_H
6ac09b921SBarry Smith 
72c8e378dSBarry Smith #include <petscsys.h>
88563dfccSBarry Smith 
9ac09b921SBarry Smith /* SUBMANSEC = Sys */
10ac09b921SBarry Smith 
118563dfccSBarry Smith PETSC_EXTERN PetscErrorCode PetscGetCPUTime(PetscLogDouble *);
12c8281c7dSSatish Balay 
1330a8c558SMatthew Knepley /* Global counters */
14014dd563SJed Brown PETSC_EXTERN PetscLogDouble petsc_BaseTime;
1530a8c558SMatthew Knepley 
1639975667SBarry Smith /*MC
17*16a05f60SBarry Smith    PetscTime - Returns the current time from some base time in the past in seconds.
18c8281c7dSSatish Balay 
19eca87e8dSBarry Smith    Synopsis:
20aaa7dc30SBarry Smith     #include <petsctime.h>
21fdd15c9aSJunchao Zhang     PetscErrorCode PetscTime(PetscLogDouble *v)
22eca87e8dSBarry Smith 
23eca87e8dSBarry Smith    Not Collective
24eca87e8dSBarry Smith 
25c8281c7dSSatish Balay    Output Parameter:
26c8281c7dSSatish Balay .  v - time counter
27c8281c7dSSatish Balay 
28c8281c7dSSatish Balay    Usage:
29*16a05f60SBarry Smith .vb
30c8281c7dSSatish Balay      PetscLogDouble v;
318563dfccSBarry Smith      PetscTime(&v);
32c8281c7dSSatish Balay      .... perform some calculation ...
33c8281c7dSSatish Balay      printf("Time for operation %g\n",v);
34*16a05f60SBarry Smith .ve
35c8281c7dSSatish Balay 
3639975667SBarry Smith    Level: developer
3739975667SBarry Smith 
38c8281c7dSSatish Balay    Notes:
39c8281c7dSSatish Balay    Since the PETSc libraries incorporate timing of phases and operations,
40822699f4SCameron Smith    we do not recommend ever using PetscTime()
41*16a05f60SBarry Smith    The options database command  `-log_view` activates
42*16a05f60SBarry Smith    PETSc library timing.
43c8281c7dSSatish Balay 
44db781477SPatrick Sanan .seealso: `PetscTimeSubtract()`, `PetscTimeAdd()`, `PetscLogStageRegister()`, `PetscLogEventRegister()`, `PetscLogEventBegin()`, `PetscLogEventEnd()`
4539975667SBarry Smith M*/
46c8281c7dSSatish Balay 
4739975667SBarry Smith /*MC
48*16a05f60SBarry Smith    PetscTimeSubtract - Subtracts the current time (in seconds) from the value `v`.
49c8281c7dSSatish Balay 
50eca87e8dSBarry Smith    Synopsis:
51aaa7dc30SBarry Smith     #include <petsctime.h>
52fdd15c9aSJunchao Zhang     PetscErrorCode PetscTimeSubtract(PetscLogDouble *v)
53eca87e8dSBarry Smith 
54eca87e8dSBarry Smith    Not Collective
55eca87e8dSBarry Smith 
56c8281c7dSSatish Balay    Input Parameter:
57c8281c7dSSatish Balay .  v - time counter
58c8281c7dSSatish Balay 
59c8281c7dSSatish Balay    Output Parameter:
60*16a05f60SBarry Smith .  v - time counter (`v` = `v` - current time)
61c8281c7dSSatish Balay 
6239975667SBarry Smith    Level: developer
63c8281c7dSSatish Balay 
64c8281c7dSSatish Balay    Notes:
65c8281c7dSSatish Balay    Since the PETSc libraries incorporate timing of phases and operations,
66*16a05f60SBarry Smith    we do not always recommend using `PetscTimeSubtract()`.
67*16a05f60SBarry Smith    The options database command  `-log_view` activates
68*16a05f60SBarry Smith    PETSc library timing. See `PetscLogStageRegister()`, `PetscLogEventRegister()`, `PetscLogEventBegin()`, `PetscLogEventEnd()` for how to register
6939975667SBarry Smith    stages and events in application codes.
70c8281c7dSSatish Balay 
71db781477SPatrick Sanan .seealso: `PetscTime()`, `PetscTimeAdd()`, `PetscLogStageRegister()`, `PetscLogEventRegister()`, `PetscLogEventBegin()`, `PetscLogEventEnd()`
7239975667SBarry Smith M*/
73c8281c7dSSatish Balay 
7439975667SBarry Smith /*MC
75*16a05f60SBarry Smith    PetscTimeAdd - Adds the current time (in seconds) to the value `v`.
76c8281c7dSSatish Balay 
77eca87e8dSBarry Smith    Synopsis:
78aaa7dc30SBarry Smith     #include <petsctime.h>
79fdd15c9aSJunchao Zhang     PetscErrorCode PetscTimeAdd(PetscLogDouble *v)
80eca87e8dSBarry Smith 
81eca87e8dSBarry Smith    Not Collective
82eca87e8dSBarry Smith 
83c8281c7dSSatish Balay    Input Parameter:
84c8281c7dSSatish Balay .  v - time counter
85c8281c7dSSatish Balay 
86c8281c7dSSatish Balay    Output Parameter:
87*16a05f60SBarry Smith .  v - time counter (`v` = `v` + current time)
88c8281c7dSSatish Balay 
8939975667SBarry Smith    Level: developer
9039975667SBarry Smith 
91c8281c7dSSatish Balay    Notes:
92c8281c7dSSatish Balay    Since the PETSc libraries incorporate timing of phases and operations,
93*16a05f60SBarry Smith    we do not ever recommend using `PetscTimeAdd()`.
94*16a05f60SBarry Smith    The options database command `-log_view` activates
95*16a05f60SBarry Smith    PETSc library timing.
96c8281c7dSSatish Balay 
97db781477SPatrick Sanan .seealso: `PetscTime()`, `PetscTimeSubtract()`, `PetscLogStageRegister()`, `PetscLogEventRegister()`, `PetscLogEventBegin()`, `PetscLogEventEnd()`
9839975667SBarry Smith M*/
99c8281c7dSSatish Balay 
100d71ae5a4SJacob Faibussowitsch static inline PetscErrorCode PetscTime(PetscLogDouble *v)
101d71ae5a4SJacob Faibussowitsch {
1028563dfccSBarry Smith   *v = MPI_Wtime();
1033ba16761SJacob Faibussowitsch   return PETSC_SUCCESS;
1048563dfccSBarry Smith }
105c8281c7dSSatish Balay 
106d71ae5a4SJacob Faibussowitsch static inline PetscErrorCode PetscTimeSubtract(PetscLogDouble *v)
107d71ae5a4SJacob Faibussowitsch {
1088563dfccSBarry Smith   *v -= MPI_Wtime();
1093ba16761SJacob Faibussowitsch   return PETSC_SUCCESS;
1108563dfccSBarry Smith }
111c8281c7dSSatish Balay 
112d71ae5a4SJacob Faibussowitsch static inline PetscErrorCode PetscTimeAdd(PetscLogDouble *v)
113d71ae5a4SJacob Faibussowitsch {
1148563dfccSBarry Smith   *v += MPI_Wtime();
1153ba16761SJacob Faibussowitsch   return PETSC_SUCCESS;
1168563dfccSBarry Smith }
117c8281c7dSSatish Balay 
118c8281c7dSSatish Balay #endif
119