xref: /petsc/include/petsctime.h (revision 9fbee5477fd88ea4536ebb185f3c80da15fb55c0)
1c8281c7dSSatish Balay /*
2c8281c7dSSatish Balay        Low cost access to system time. This, in general, should not
3c8281c7dSSatish Balay      be included in user programs.
4c8281c7dSSatish Balay */
5c8281c7dSSatish Balay 
626bd1501SBarry Smith #if !defined(PETSCTIME_H)
726bd1501SBarry Smith #define PETSCTIME_H
82c8e378dSBarry Smith #include <petscsys.h>
98563dfccSBarry Smith 
108563dfccSBarry Smith PETSC_EXTERN PetscErrorCode PetscGetCPUTime(PetscLogDouble*);
11c8281c7dSSatish Balay 
1230a8c558SMatthew Knepley /* Global counters */
13014dd563SJed Brown PETSC_EXTERN PetscLogDouble petsc_BaseTime;
1430a8c558SMatthew Knepley 
1539975667SBarry Smith /*MC
16c8281c7dSSatish Balay    PetscTime - Returns the current time of day in seconds.
17c8281c7dSSatish Balay 
18eca87e8dSBarry Smith    Synopsis:
19aaa7dc30SBarry Smith     #include <petsctime.h>
20fdd15c9aSJunchao Zhang     PetscErrorCode PetscTime(PetscLogDouble *v)
21eca87e8dSBarry Smith 
22eca87e8dSBarry Smith    Not Collective
23eca87e8dSBarry Smith 
24c8281c7dSSatish Balay    Output Parameter:
25c8281c7dSSatish Balay .  v - time counter
26c8281c7dSSatish Balay 
27c8281c7dSSatish Balay    Usage:
28c8281c7dSSatish Balay      PetscLogDouble v;
298563dfccSBarry Smith      PetscTime(&v);
30c8281c7dSSatish Balay      .... perform some calculation ...
31c8281c7dSSatish Balay      printf("Time for operation %g\n",v);
32c8281c7dSSatish Balay 
3339975667SBarry Smith    Level: developer
3439975667SBarry Smith 
35c8281c7dSSatish Balay    Notes:
36c8281c7dSSatish Balay    Since the PETSc libraries incorporate timing of phases and operations,
37822699f4SCameron Smith    we do not recommend ever using PetscTime()
38609bdbeeSBarry Smith    The options database command  -log_view activate
39a7f22e61SSatish Balay    PETSc library timing. See Users-Manual: ch_profiling for more details.
40c8281c7dSSatish Balay 
4139975667SBarry Smith .seealso:  PetscTimeSubtract(), PetscTimeAdd(), PetscLogStageRegister(), PetscLogEventRegister(), PetscLogEventBegin(), PetscLogEventEnd()
42c8281c7dSSatish Balay 
4339975667SBarry Smith M*/
44c8281c7dSSatish Balay 
4539975667SBarry Smith /*MC
46c8281c7dSSatish Balay    PetscTimeSubtract - Subtracts the current time of day (in seconds) from
47c8281c7dSSatish Balay    the value v.
48c8281c7dSSatish Balay 
49eca87e8dSBarry Smith    Synopsis:
50aaa7dc30SBarry Smith     #include <petsctime.h>
51fdd15c9aSJunchao Zhang     PetscErrorCode PetscTimeSubtract(PetscLogDouble *v)
52eca87e8dSBarry Smith 
53eca87e8dSBarry Smith    Not Collective
54eca87e8dSBarry Smith 
55c8281c7dSSatish Balay    Input Parameter:
56c8281c7dSSatish Balay .  v - time counter
57c8281c7dSSatish Balay 
58c8281c7dSSatish Balay    Output Parameter:
59c8281c7dSSatish Balay .  v - time counter (v = v - current time)
60c8281c7dSSatish Balay 
6139975667SBarry Smith    Level: developer
62c8281c7dSSatish Balay 
63c8281c7dSSatish Balay    Notes:
64c8281c7dSSatish Balay    Since the PETSc libraries incorporate timing of phases and operations,
6539975667SBarry Smith    we do not every recommend using PetscTimeSubtract()
66609bdbeeSBarry Smith    The options database command  -log_view activates
67a7f22e61SSatish Balay    PETSc library timing.  See Users-Manual: ch_profiling for more details, also
6839975667SBarry Smith    see PetscLogStageRegister(), PetscLogEventRegister(), PetscLogEventBegin(), PetscLogEventEnd() for how to register
6939975667SBarry Smith    stages and events in application codes.
70c8281c7dSSatish Balay 
7139975667SBarry Smith .seealso:  PetscTime(), PetscTimeAdd(), PetscLogStageRegister(), PetscLogEventRegister(), PetscLogEventBegin(), PetscLogEventEnd()
72c8281c7dSSatish Balay 
7339975667SBarry Smith M*/
74c8281c7dSSatish Balay 
7539975667SBarry Smith /*MC
76c8281c7dSSatish Balay    PetscTimeAdd - Adds the current time of day (in seconds) to the value v.
77c8281c7dSSatish Balay 
78eca87e8dSBarry Smith    Synopsis:
79aaa7dc30SBarry Smith     #include <petsctime.h>
80fdd15c9aSJunchao Zhang     PetscErrorCode PetscTimeAdd(PetscLogDouble *v)
81eca87e8dSBarry Smith 
82eca87e8dSBarry Smith    Not Collective
83eca87e8dSBarry Smith 
84c8281c7dSSatish Balay    Input Parameter:
85c8281c7dSSatish Balay .  v - time counter
86c8281c7dSSatish Balay 
87c8281c7dSSatish Balay    Output Parameter:
88c8281c7dSSatish Balay .  v - time counter (v = v + current time)
89c8281c7dSSatish Balay 
9039975667SBarry Smith    Level: developer
9139975667SBarry Smith 
92c8281c7dSSatish Balay    Notes:
93c8281c7dSSatish Balay    Since the PETSc libraries incorporate timing of phases and operations,
9439975667SBarry Smith    we do not ever recommend using PetscTimeAdd().
95609bdbeeSBarry Smith    The options database command -log_view activate
96a7f22e61SSatish Balay    PETSc library timing. See Users-Manual: ch_profiling for more details.
97c8281c7dSSatish Balay 
9839975667SBarry Smith .seealso:  PetscTime(), PetscTimeSubtract(), PetscLogStageRegister(), PetscLogEventRegister(), PetscLogEventBegin(), PetscLogEventEnd()
99c8281c7dSSatish Balay 
10039975667SBarry Smith M*/
101c8281c7dSSatish Balay 
102*9fbee547SJacob Faibussowitsch static inline PetscErrorCode PetscTime(PetscLogDouble *v)
1038563dfccSBarry Smith {
1048563dfccSBarry Smith   *v = MPI_Wtime();
1058563dfccSBarry Smith   return 0;
1068563dfccSBarry Smith }
107c8281c7dSSatish Balay 
108*9fbee547SJacob Faibussowitsch static inline PetscErrorCode PetscTimeSubtract(PetscLogDouble *v)
1098563dfccSBarry Smith {
1108563dfccSBarry Smith   *v -= MPI_Wtime();
1118563dfccSBarry Smith   return 0;
1128563dfccSBarry Smith }
113c8281c7dSSatish Balay 
114*9fbee547SJacob Faibussowitsch static inline PetscErrorCode PetscTimeAdd(PetscLogDouble *v)
1158563dfccSBarry Smith {
1168563dfccSBarry Smith   *v += MPI_Wtime();
1178563dfccSBarry Smith   return 0;
1188563dfccSBarry Smith }
119c8281c7dSSatish Balay 
120c8281c7dSSatish Balay #endif
121