Actual source code: petsctime.h

petsc-3.11.4 2019-09-28
Report Typos and Errors
  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:    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: .keywords:  Petsc, time
 45: M*/

 47: /*MC
 48:    PetscTimeSubtract - Subtracts the current time of day (in seconds) from
 49:    the value v.

 51:    Synopsis:
 52:     #include <petsctime.h>
 53:    PetscTimeSubtract(&PetscLogDouble *v)

 55:    Not Collective

 57:    Input Parameter:
 58: .  v - time counter

 60:    Output Parameter:
 61: .  v - time counter (v = v - current time)

 63:    Level: developer

 65:    Notes:
 66:    Since the PETSc libraries incorporate timing of phases and operations,
 67:    we do not every recommend using PetscTimeSubtract()
 68:    The options database command  -log_view activates
 69:    PETSc library timing.  See Users-Manual: Chapter 13 Profiling for more details, also
 70:    see PetscLogStageRegister(), PetscLogEventRegister(), PetscLogEventBegin(), PetscLogEventEnd() for how to register
 71:    stages and events in application codes. 

 73: .seealso:  PetscTime(), PetscTimeAdd(), PetscLogStageRegister(), PetscLogEventRegister(), PetscLogEventBegin(), PetscLogEventEnd()

 75: .keywords:  Petsc, time, subtract
 76: M*/

 78: /*MC
 79:    PetscTimeAdd - Adds the current time of day (in seconds) to the value v.

 81:    Synopsis:
 82:     #include <petsctime.h>
 83:    PetscTimeAdd(PetscLogDouble *v)

 85:    Not Collective

 87:    Input Parameter:
 88: .  v - time counter

 90:    Output Parameter:
 91: .  v - time counter (v = v + current time)

 93:    Level: developer

 95:    Notes:
 96:    Since the PETSc libraries incorporate timing of phases and operations,
 97:    we do not ever recommend using PetscTimeAdd().
 98:    The options database command -log_view activate
 99:    PETSc library timing. See Users-Manual: Chapter 13 Profiling for more details.

101: .seealso:  PetscTime(), PetscTimeSubtract(), PetscLogStageRegister(), PetscLogEventRegister(), PetscLogEventBegin(), PetscLogEventEnd()

103: .keywords:  Petsc, time, add
104: M*/

106: PETSC_STATIC_INLINE PetscErrorCode PetscTime(PetscLogDouble *v)
107: {
108:   *v = MPI_Wtime();
109:   return 0;
110: }

112: PETSC_STATIC_INLINE PetscErrorCode PetscTimeSubtract(PetscLogDouble *v)
113: {
114:   *v -= MPI_Wtime();
115:   return 0;
116: }

118: PETSC_STATIC_INLINE PetscErrorCode PetscTimeAdd(PetscLogDouble *v)
119: {
120:   *v += MPI_Wtime();
121:   return 0;
122: }

124: #endif