1c8281c7dSSatish Balay /* 216a05f60SBarry Smith Low cost access to a system time. This, in general, should not be included in user programs. 3c8281c7dSSatish Balay */ 4*a4963045SJacob Faibussowitsch #pragma once 5ac09b921SBarry Smith 62c8e378dSBarry Smith #include <petscsys.h> 78563dfccSBarry Smith 8ac09b921SBarry Smith /* SUBMANSEC = Sys */ 9ac09b921SBarry 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 1616a05f60SBarry Smith PetscTime - Returns the current time from some base time in the past 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: 2816a05f60SBarry Smith .vb 29c8281c7dSSatish Balay PetscLogDouble v; 308563dfccSBarry Smith PetscTime(&v); 31c8281c7dSSatish Balay .... perform some calculation ... 32c8281c7dSSatish Balay printf("Time for operation %g\n",v); 3316a05f60SBarry Smith .ve 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() 4016a05f60SBarry Smith The options database command `-log_view` activates 4116a05f60SBarry Smith PETSc library timing. 42c8281c7dSSatish Balay 43db781477SPatrick Sanan .seealso: `PetscTimeSubtract()`, `PetscTimeAdd()`, `PetscLogStageRegister()`, `PetscLogEventRegister()`, `PetscLogEventBegin()`, `PetscLogEventEnd()` 4439975667SBarry Smith M*/ 45c8281c7dSSatish Balay 4639975667SBarry Smith /*MC 4716a05f60SBarry Smith PetscTimeSubtract - Subtracts the current time (in seconds) from 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: 5916a05f60SBarry Smith . 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, 6516a05f60SBarry Smith we do not always recommend using `PetscTimeSubtract()`. 6616a05f60SBarry Smith The options database command `-log_view` activates 6716a05f60SBarry Smith PETSc library timing. See `PetscLogStageRegister()`, `PetscLogEventRegister()`, `PetscLogEventBegin()`, `PetscLogEventEnd()` for how to register 6839975667SBarry Smith stages and events in application codes. 69c8281c7dSSatish Balay 70db781477SPatrick Sanan .seealso: `PetscTime()`, `PetscTimeAdd()`, `PetscLogStageRegister()`, `PetscLogEventRegister()`, `PetscLogEventBegin()`, `PetscLogEventEnd()` 7139975667SBarry Smith M*/ 72c8281c7dSSatish Balay 7339975667SBarry Smith /*MC 7416a05f60SBarry Smith PetscTimeAdd - Adds the current time (in seconds) to the value `v`. 75c8281c7dSSatish Balay 76eca87e8dSBarry Smith Synopsis: 77aaa7dc30SBarry Smith #include <petsctime.h> 78fdd15c9aSJunchao Zhang PetscErrorCode PetscTimeAdd(PetscLogDouble *v) 79eca87e8dSBarry Smith 80eca87e8dSBarry Smith Not Collective 81eca87e8dSBarry Smith 82c8281c7dSSatish Balay Input Parameter: 83c8281c7dSSatish Balay . v - time counter 84c8281c7dSSatish Balay 85c8281c7dSSatish Balay Output Parameter: 8616a05f60SBarry Smith . v - time counter (`v` = `v` + current time) 87c8281c7dSSatish Balay 8839975667SBarry Smith Level: developer 8939975667SBarry Smith 90c8281c7dSSatish Balay Notes: 91c8281c7dSSatish Balay Since the PETSc libraries incorporate timing of phases and operations, 9216a05f60SBarry Smith we do not ever recommend using `PetscTimeAdd()`. 9316a05f60SBarry Smith The options database command `-log_view` activates 9416a05f60SBarry Smith PETSc library timing. 95c8281c7dSSatish Balay 96db781477SPatrick Sanan .seealso: `PetscTime()`, `PetscTimeSubtract()`, `PetscLogStageRegister()`, `PetscLogEventRegister()`, `PetscLogEventBegin()`, `PetscLogEventEnd()` 9739975667SBarry Smith M*/ 98c8281c7dSSatish Balay 99d71ae5a4SJacob Faibussowitsch static inline PetscErrorCode PetscTime(PetscLogDouble *v) 100d71ae5a4SJacob Faibussowitsch { 1018563dfccSBarry Smith *v = MPI_Wtime(); 1023ba16761SJacob Faibussowitsch return PETSC_SUCCESS; 1038563dfccSBarry Smith } 104c8281c7dSSatish Balay 105d71ae5a4SJacob Faibussowitsch static inline PetscErrorCode PetscTimeSubtract(PetscLogDouble *v) 106d71ae5a4SJacob Faibussowitsch { 1078563dfccSBarry Smith *v -= MPI_Wtime(); 1083ba16761SJacob Faibussowitsch return PETSC_SUCCESS; 1098563dfccSBarry Smith } 110c8281c7dSSatish Balay 111d71ae5a4SJacob Faibussowitsch static inline PetscErrorCode PetscTimeAdd(PetscLogDouble *v) 112d71ae5a4SJacob Faibussowitsch { 1138563dfccSBarry Smith *v += MPI_Wtime(); 1143ba16761SJacob Faibussowitsch return PETSC_SUCCESS; 1158563dfccSBarry Smith } 116