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 6a663daf8SBarry Smith #if !defined(__PETSCTIME_H) 7a663daf8SBarry 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> 208563dfccSBarry Smith PetscTime(PetscLogDouble *v) 21eca87e8dSBarry Smith 22eca87e8dSBarry Smith Not Collective 23eca87e8dSBarry Smith 24c8281c7dSSatish Balay Output Parameter: 25c8281c7dSSatish Balay . v - time counter 26c8281c7dSSatish Balay 27c8281c7dSSatish Balay 28c8281c7dSSatish Balay Usage: 29c8281c7dSSatish Balay PetscLogDouble v; 308563dfccSBarry Smith PetscTime(&v); 31c8281c7dSSatish Balay .... perform some calculation ... 32c8281c7dSSatish Balay printf("Time for operation %g\n",v); 33c8281c7dSSatish Balay 3439975667SBarry Smith Level: developer 3539975667SBarry Smith 36c8281c7dSSatish Balay Notes: 37c8281c7dSSatish Balay Since the PETSc libraries incorporate timing of phases and operations, 38822699f4SCameron Smith we do not recommend ever using PetscTime() 39*609bdbeeSBarry Smith The options database command -log_view activate 40a7f22e61SSatish Balay PETSc library timing. See Users-Manual: ch_profiling for more details. 41c8281c7dSSatish Balay 4239975667SBarry Smith .seealso: PetscTimeSubtract(), PetscTimeAdd(), PetscLogStageRegister(), PetscLogEventRegister(), PetscLogEventBegin(), PetscLogEventEnd() 43c8281c7dSSatish Balay 44c8281c7dSSatish Balay .keywords: Petsc, time 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> 538563dfccSBarry Smith 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() 68*609bdbeeSBarry 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 7339975667SBarry Smith .seealso: PetscTime(), PetscTimeAdd(), PetscLogStageRegister(), PetscLogEventRegister(), PetscLogEventBegin(), PetscLogEventEnd() 74c8281c7dSSatish Balay 75c8281c7dSSatish Balay .keywords: Petsc, time, subtract 7639975667SBarry Smith M*/ 77c8281c7dSSatish Balay 7839975667SBarry Smith /*MC 79c8281c7dSSatish Balay PetscTimeAdd - Adds the current time of day (in seconds) to the value v. 80c8281c7dSSatish Balay 81eca87e8dSBarry Smith Synopsis: 82aaa7dc30SBarry Smith #include <petsctime.h> 838563dfccSBarry Smith PetscTimeAdd(PetscLogDouble *v) 84eca87e8dSBarry Smith 85eca87e8dSBarry Smith Not Collective 86eca87e8dSBarry Smith 87c8281c7dSSatish Balay Input Parameter: 88c8281c7dSSatish Balay . v - time counter 89c8281c7dSSatish Balay 90c8281c7dSSatish Balay Output Parameter: 91c8281c7dSSatish Balay . v - time counter (v = v + current time) 92c8281c7dSSatish Balay 9339975667SBarry Smith Level: developer 9439975667SBarry Smith 95c8281c7dSSatish Balay Notes: 96c8281c7dSSatish Balay Since the PETSc libraries incorporate timing of phases and operations, 9739975667SBarry Smith we do not ever recommend using PetscTimeAdd(). 98*609bdbeeSBarry Smith The options database command -log_view activate 99a7f22e61SSatish Balay PETSc library timing. See Users-Manual: ch_profiling for more details. 100c8281c7dSSatish Balay 10139975667SBarry Smith .seealso: PetscTime(), PetscTimeSubtract(), PetscLogStageRegister(), PetscLogEventRegister(), PetscLogEventBegin(), PetscLogEventEnd() 102c8281c7dSSatish Balay 103c8281c7dSSatish Balay .keywords: Petsc, time, add 10439975667SBarry Smith M*/ 105c8281c7dSSatish Balay 1068563dfccSBarry Smith PETSC_STATIC_INLINE PetscErrorCode PetscTime(PetscLogDouble *v) 1078563dfccSBarry Smith { 1088563dfccSBarry Smith *v = MPI_Wtime(); 1098563dfccSBarry Smith return 0; 1108563dfccSBarry Smith } 111c8281c7dSSatish Balay 1128563dfccSBarry Smith PETSC_STATIC_INLINE PetscErrorCode PetscTimeSubtract(PetscLogDouble *v) 1138563dfccSBarry Smith { 1148563dfccSBarry Smith *v -= MPI_Wtime(); 1158563dfccSBarry Smith return 0; 1168563dfccSBarry Smith } 117c8281c7dSSatish Balay 1188563dfccSBarry Smith PETSC_STATIC_INLINE PetscErrorCode PetscTimeAdd(PetscLogDouble *v) 1198563dfccSBarry Smith { 1208563dfccSBarry Smith *v += MPI_Wtime(); 1218563dfccSBarry Smith return 0; 1228563dfccSBarry Smith } 123c8281c7dSSatish Balay 124c8281c7dSSatish Balay #endif 125c8281c7dSSatish Balay 126c8281c7dSSatish Balay 127c8281c7dSSatish Balay 128