xref: /petsc/include/petsctime.h (revision ac09b9214d23ea9ad238aa607de9fa447fd4e91b)
1c8281c7dSSatish Balay /*
2c8281c7dSSatish Balay        Low cost access to system time. This, in general, should not
3c8281c7dSSatish Balay      be included in user programs.
4c8281c7dSSatish Balay */
526bd1501SBarry Smith #if !defined(PETSCTIME_H)
626bd1501SBarry Smith #define PETSCTIME_H
7*ac09b921SBarry Smith 
82c8e378dSBarry Smith #include <petscsys.h>
98563dfccSBarry Smith 
10*ac09b921SBarry Smith /* SUBMANSEC = Sys */
11*ac09b921SBarry Smith 
128563dfccSBarry Smith PETSC_EXTERN PetscErrorCode PetscGetCPUTime(PetscLogDouble*);
13c8281c7dSSatish Balay 
1430a8c558SMatthew Knepley /* Global counters */
15014dd563SJed Brown PETSC_EXTERN PetscLogDouble petsc_BaseTime;
1630a8c558SMatthew Knepley 
1739975667SBarry Smith /*MC
18c8281c7dSSatish Balay    PetscTime - Returns the current time of day in seconds.
19c8281c7dSSatish Balay 
20eca87e8dSBarry Smith    Synopsis:
21aaa7dc30SBarry Smith     #include <petsctime.h>
22fdd15c9aSJunchao Zhang     PetscErrorCode PetscTime(PetscLogDouble *v)
23eca87e8dSBarry Smith 
24eca87e8dSBarry Smith    Not Collective
25eca87e8dSBarry Smith 
26c8281c7dSSatish Balay    Output Parameter:
27c8281c7dSSatish Balay .  v - time counter
28c8281c7dSSatish Balay 
29c8281c7dSSatish Balay    Usage:
30c8281c7dSSatish Balay      PetscLogDouble v;
318563dfccSBarry Smith      PetscTime(&v);
32c8281c7dSSatish Balay      .... perform some calculation ...
33c8281c7dSSatish Balay      printf("Time for operation %g\n",v);
34c8281c7dSSatish Balay 
3539975667SBarry Smith    Level: developer
3639975667SBarry Smith 
37c8281c7dSSatish Balay    Notes:
38c8281c7dSSatish Balay    Since the PETSc libraries incorporate timing of phases and operations,
39822699f4SCameron Smith    we do not recommend ever using PetscTime()
40609bdbeeSBarry Smith    The options database command  -log_view activate
41a7f22e61SSatish Balay    PETSc library timing. See Users-Manual: ch_profiling for more details.
42c8281c7dSSatish Balay 
43db781477SPatrick Sanan .seealso: `PetscTimeSubtract()`, `PetscTimeAdd()`, `PetscLogStageRegister()`, `PetscLogEventRegister()`, `PetscLogEventBegin()`, `PetscLogEventEnd()`
44c8281c7dSSatish Balay 
4539975667SBarry Smith M*/
46c8281c7dSSatish Balay 
4739975667SBarry Smith /*MC
48c8281c7dSSatish Balay    PetscTimeSubtract - Subtracts the current time of day (in seconds) from
49c8281c7dSSatish Balay    the value v.
50c8281c7dSSatish Balay 
51eca87e8dSBarry Smith    Synopsis:
52aaa7dc30SBarry Smith     #include <petsctime.h>
53fdd15c9aSJunchao Zhang     PetscErrorCode PetscTimeSubtract(PetscLogDouble *v)
54eca87e8dSBarry Smith 
55eca87e8dSBarry Smith    Not Collective
56eca87e8dSBarry Smith 
57c8281c7dSSatish Balay    Input Parameter:
58c8281c7dSSatish Balay .  v - time counter
59c8281c7dSSatish Balay 
60c8281c7dSSatish Balay    Output Parameter:
61c8281c7dSSatish Balay .  v - time counter (v = v - current time)
62c8281c7dSSatish Balay 
6339975667SBarry Smith    Level: developer
64c8281c7dSSatish Balay 
65c8281c7dSSatish Balay    Notes:
66c8281c7dSSatish Balay    Since the PETSc libraries incorporate timing of phases and operations,
6739975667SBarry Smith    we do not every recommend using PetscTimeSubtract()
68609bdbeeSBarry Smith    The options database command  -log_view activates
69a7f22e61SSatish Balay    PETSc library timing.  See Users-Manual: ch_profiling for more details, also
7039975667SBarry Smith    see PetscLogStageRegister(), PetscLogEventRegister(), PetscLogEventBegin(), PetscLogEventEnd() for how to register
7139975667SBarry Smith    stages and events in application codes.
72c8281c7dSSatish Balay 
73db781477SPatrick Sanan .seealso: `PetscTime()`, `PetscTimeAdd()`, `PetscLogStageRegister()`, `PetscLogEventRegister()`, `PetscLogEventBegin()`, `PetscLogEventEnd()`
74c8281c7dSSatish Balay 
7539975667SBarry Smith M*/
76c8281c7dSSatish Balay 
7739975667SBarry Smith /*MC
78c8281c7dSSatish Balay    PetscTimeAdd - Adds the current time of day (in seconds) to the value v.
79c8281c7dSSatish Balay 
80eca87e8dSBarry Smith    Synopsis:
81aaa7dc30SBarry Smith     #include <petsctime.h>
82fdd15c9aSJunchao Zhang     PetscErrorCode PetscTimeAdd(PetscLogDouble *v)
83eca87e8dSBarry Smith 
84eca87e8dSBarry Smith    Not Collective
85eca87e8dSBarry Smith 
86c8281c7dSSatish Balay    Input Parameter:
87c8281c7dSSatish Balay .  v - time counter
88c8281c7dSSatish Balay 
89c8281c7dSSatish Balay    Output Parameter:
90c8281c7dSSatish Balay .  v - time counter (v = v + current time)
91c8281c7dSSatish Balay 
9239975667SBarry Smith    Level: developer
9339975667SBarry Smith 
94c8281c7dSSatish Balay    Notes:
95c8281c7dSSatish Balay    Since the PETSc libraries incorporate timing of phases and operations,
9639975667SBarry Smith    we do not ever recommend using PetscTimeAdd().
97609bdbeeSBarry Smith    The options database command -log_view activate
98a7f22e61SSatish Balay    PETSc library timing. See Users-Manual: ch_profiling for more details.
99c8281c7dSSatish Balay 
100db781477SPatrick Sanan .seealso: `PetscTime()`, `PetscTimeSubtract()`, `PetscLogStageRegister()`, `PetscLogEventRegister()`, `PetscLogEventBegin()`, `PetscLogEventEnd()`
101c8281c7dSSatish Balay 
10239975667SBarry Smith M*/
103c8281c7dSSatish Balay 
1049fbee547SJacob Faibussowitsch static inline PetscErrorCode PetscTime(PetscLogDouble *v)
1058563dfccSBarry Smith {
1068563dfccSBarry Smith   *v = MPI_Wtime();
1078563dfccSBarry Smith   return 0;
1088563dfccSBarry Smith }
109c8281c7dSSatish Balay 
1109fbee547SJacob Faibussowitsch static inline PetscErrorCode PetscTimeSubtract(PetscLogDouble *v)
1118563dfccSBarry Smith {
1128563dfccSBarry Smith   *v -= MPI_Wtime();
1138563dfccSBarry Smith   return 0;
1148563dfccSBarry Smith }
115c8281c7dSSatish Balay 
1169fbee547SJacob Faibussowitsch static inline PetscErrorCode PetscTimeAdd(PetscLogDouble *v)
1178563dfccSBarry Smith {
1188563dfccSBarry Smith   *v += MPI_Wtime();
1198563dfccSBarry Smith   return 0;
1208563dfccSBarry Smith }
121c8281c7dSSatish Balay 
122c8281c7dSSatish Balay #endif
123