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