1c8281c7dSSatish Balay /* 2*16a05f60SBarry Smith Low cost access to a system time. This, in general, should not be included in user programs. 3c8281c7dSSatish Balay */ 46524c165SJacob Faibussowitsch #ifndef PETSCTIME_H 526bd1501SBarry Smith #define PETSCTIME_H 6ac09b921SBarry Smith 72c8e378dSBarry Smith #include <petscsys.h> 88563dfccSBarry Smith 9ac09b921SBarry Smith /* SUBMANSEC = Sys */ 10ac09b921SBarry Smith 118563dfccSBarry Smith PETSC_EXTERN PetscErrorCode PetscGetCPUTime(PetscLogDouble *); 12c8281c7dSSatish Balay 1330a8c558SMatthew Knepley /* Global counters */ 14014dd563SJed Brown PETSC_EXTERN PetscLogDouble petsc_BaseTime; 1530a8c558SMatthew Knepley 1639975667SBarry Smith /*MC 17*16a05f60SBarry Smith PetscTime - Returns the current time from some base time in the past in seconds. 18c8281c7dSSatish Balay 19eca87e8dSBarry Smith Synopsis: 20aaa7dc30SBarry Smith #include <petsctime.h> 21fdd15c9aSJunchao Zhang PetscErrorCode PetscTime(PetscLogDouble *v) 22eca87e8dSBarry Smith 23eca87e8dSBarry Smith Not Collective 24eca87e8dSBarry Smith 25c8281c7dSSatish Balay Output Parameter: 26c8281c7dSSatish Balay . v - time counter 27c8281c7dSSatish Balay 28c8281c7dSSatish Balay Usage: 29*16a05f60SBarry Smith .vb 30c8281c7dSSatish Balay PetscLogDouble v; 318563dfccSBarry Smith PetscTime(&v); 32c8281c7dSSatish Balay .... perform some calculation ... 33c8281c7dSSatish Balay printf("Time for operation %g\n",v); 34*16a05f60SBarry Smith .ve 35c8281c7dSSatish Balay 3639975667SBarry Smith Level: developer 3739975667SBarry Smith 38c8281c7dSSatish Balay Notes: 39c8281c7dSSatish Balay Since the PETSc libraries incorporate timing of phases and operations, 40822699f4SCameron Smith we do not recommend ever using PetscTime() 41*16a05f60SBarry Smith The options database command `-log_view` activates 42*16a05f60SBarry Smith PETSc library timing. 43c8281c7dSSatish Balay 44db781477SPatrick Sanan .seealso: `PetscTimeSubtract()`, `PetscTimeAdd()`, `PetscLogStageRegister()`, `PetscLogEventRegister()`, `PetscLogEventBegin()`, `PetscLogEventEnd()` 4539975667SBarry Smith M*/ 46c8281c7dSSatish Balay 4739975667SBarry Smith /*MC 48*16a05f60SBarry Smith PetscTimeSubtract - Subtracts the current time (in seconds) from the value `v`. 49c8281c7dSSatish Balay 50eca87e8dSBarry Smith Synopsis: 51aaa7dc30SBarry Smith #include <petsctime.h> 52fdd15c9aSJunchao Zhang PetscErrorCode PetscTimeSubtract(PetscLogDouble *v) 53eca87e8dSBarry Smith 54eca87e8dSBarry Smith Not Collective 55eca87e8dSBarry Smith 56c8281c7dSSatish Balay Input Parameter: 57c8281c7dSSatish Balay . v - time counter 58c8281c7dSSatish Balay 59c8281c7dSSatish Balay Output Parameter: 60*16a05f60SBarry Smith . v - time counter (`v` = `v` - current time) 61c8281c7dSSatish Balay 6239975667SBarry Smith Level: developer 63c8281c7dSSatish Balay 64c8281c7dSSatish Balay Notes: 65c8281c7dSSatish Balay Since the PETSc libraries incorporate timing of phases and operations, 66*16a05f60SBarry Smith we do not always recommend using `PetscTimeSubtract()`. 67*16a05f60SBarry Smith The options database command `-log_view` activates 68*16a05f60SBarry Smith PETSc library timing. See `PetscLogStageRegister()`, `PetscLogEventRegister()`, `PetscLogEventBegin()`, `PetscLogEventEnd()` for how to register 6939975667SBarry Smith stages and events in application codes. 70c8281c7dSSatish Balay 71db781477SPatrick Sanan .seealso: `PetscTime()`, `PetscTimeAdd()`, `PetscLogStageRegister()`, `PetscLogEventRegister()`, `PetscLogEventBegin()`, `PetscLogEventEnd()` 7239975667SBarry Smith M*/ 73c8281c7dSSatish Balay 7439975667SBarry Smith /*MC 75*16a05f60SBarry Smith PetscTimeAdd - Adds the current time (in seconds) to the value `v`. 76c8281c7dSSatish Balay 77eca87e8dSBarry Smith Synopsis: 78aaa7dc30SBarry Smith #include <petsctime.h> 79fdd15c9aSJunchao Zhang PetscErrorCode PetscTimeAdd(PetscLogDouble *v) 80eca87e8dSBarry Smith 81eca87e8dSBarry Smith Not Collective 82eca87e8dSBarry Smith 83c8281c7dSSatish Balay Input Parameter: 84c8281c7dSSatish Balay . v - time counter 85c8281c7dSSatish Balay 86c8281c7dSSatish Balay Output Parameter: 87*16a05f60SBarry Smith . v - time counter (`v` = `v` + current time) 88c8281c7dSSatish Balay 8939975667SBarry Smith Level: developer 9039975667SBarry Smith 91c8281c7dSSatish Balay Notes: 92c8281c7dSSatish Balay Since the PETSc libraries incorporate timing of phases and operations, 93*16a05f60SBarry Smith we do not ever recommend using `PetscTimeAdd()`. 94*16a05f60SBarry Smith The options database command `-log_view` activates 95*16a05f60SBarry Smith PETSc library timing. 96c8281c7dSSatish Balay 97db781477SPatrick Sanan .seealso: `PetscTime()`, `PetscTimeSubtract()`, `PetscLogStageRegister()`, `PetscLogEventRegister()`, `PetscLogEventBegin()`, `PetscLogEventEnd()` 9839975667SBarry Smith M*/ 99c8281c7dSSatish Balay 100d71ae5a4SJacob Faibussowitsch static inline PetscErrorCode PetscTime(PetscLogDouble *v) 101d71ae5a4SJacob Faibussowitsch { 1028563dfccSBarry Smith *v = MPI_Wtime(); 1033ba16761SJacob Faibussowitsch return PETSC_SUCCESS; 1048563dfccSBarry Smith } 105c8281c7dSSatish Balay 106d71ae5a4SJacob Faibussowitsch static inline PetscErrorCode PetscTimeSubtract(PetscLogDouble *v) 107d71ae5a4SJacob Faibussowitsch { 1088563dfccSBarry Smith *v -= MPI_Wtime(); 1093ba16761SJacob Faibussowitsch return PETSC_SUCCESS; 1108563dfccSBarry Smith } 111c8281c7dSSatish Balay 112d71ae5a4SJacob Faibussowitsch static inline PetscErrorCode PetscTimeAdd(PetscLogDouble *v) 113d71ae5a4SJacob Faibussowitsch { 1148563dfccSBarry Smith *v += MPI_Wtime(); 1153ba16761SJacob Faibussowitsch return PETSC_SUCCESS; 1168563dfccSBarry Smith } 117c8281c7dSSatish Balay 118c8281c7dSSatish Balay #endif 119