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> 20*fdd15c9aSJunchao 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 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() 39609bdbeeSBarry 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 4439975667SBarry Smith M*/ 45c8281c7dSSatish Balay 4639975667SBarry Smith /*MC 47c8281c7dSSatish Balay PetscTimeSubtract - Subtracts the current time of day (in seconds) from 48c8281c7dSSatish Balay the value v. 49c8281c7dSSatish Balay 50eca87e8dSBarry Smith Synopsis: 51aaa7dc30SBarry Smith #include <petsctime.h> 52*fdd15c9aSJunchao 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: 60c8281c7dSSatish Balay . 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, 6639975667SBarry Smith we do not every recommend using PetscTimeSubtract() 67609bdbeeSBarry Smith The options database command -log_view activates 68a7f22e61SSatish Balay PETSc library timing. See Users-Manual: ch_profiling for more details, also 6939975667SBarry Smith see PetscLogStageRegister(), PetscLogEventRegister(), PetscLogEventBegin(), PetscLogEventEnd() for how to register 7039975667SBarry Smith stages and events in application codes. 71c8281c7dSSatish Balay 7239975667SBarry Smith .seealso: PetscTime(), PetscTimeAdd(), PetscLogStageRegister(), PetscLogEventRegister(), PetscLogEventBegin(), PetscLogEventEnd() 73c8281c7dSSatish Balay 7439975667SBarry Smith M*/ 75c8281c7dSSatish Balay 7639975667SBarry Smith /*MC 77c8281c7dSSatish Balay PetscTimeAdd - Adds the current time of day (in seconds) to the value v. 78c8281c7dSSatish Balay 79eca87e8dSBarry Smith Synopsis: 80aaa7dc30SBarry Smith #include <petsctime.h> 81*fdd15c9aSJunchao Zhang PetscErrorCode PetscTimeAdd(PetscLogDouble *v) 82eca87e8dSBarry Smith 83eca87e8dSBarry Smith Not Collective 84eca87e8dSBarry Smith 85c8281c7dSSatish Balay Input Parameter: 86c8281c7dSSatish Balay . v - time counter 87c8281c7dSSatish Balay 88c8281c7dSSatish Balay Output Parameter: 89c8281c7dSSatish Balay . v - time counter (v = v + current time) 90c8281c7dSSatish Balay 9139975667SBarry Smith Level: developer 9239975667SBarry Smith 93c8281c7dSSatish Balay Notes: 94c8281c7dSSatish Balay Since the PETSc libraries incorporate timing of phases and operations, 9539975667SBarry Smith we do not ever recommend using PetscTimeAdd(). 96609bdbeeSBarry Smith The options database command -log_view activate 97a7f22e61SSatish Balay PETSc library timing. See Users-Manual: ch_profiling for more details. 98c8281c7dSSatish Balay 9939975667SBarry Smith .seealso: PetscTime(), PetscTimeSubtract(), PetscLogStageRegister(), PetscLogEventRegister(), PetscLogEventBegin(), PetscLogEventEnd() 100c8281c7dSSatish Balay 10139975667SBarry Smith M*/ 102c8281c7dSSatish Balay 1038563dfccSBarry Smith PETSC_STATIC_INLINE PetscErrorCode PetscTime(PetscLogDouble *v) 1048563dfccSBarry Smith { 1058563dfccSBarry Smith *v = MPI_Wtime(); 1068563dfccSBarry Smith return 0; 1078563dfccSBarry Smith } 108c8281c7dSSatish Balay 1098563dfccSBarry Smith PETSC_STATIC_INLINE PetscErrorCode PetscTimeSubtract(PetscLogDouble *v) 1108563dfccSBarry Smith { 1118563dfccSBarry Smith *v -= MPI_Wtime(); 1128563dfccSBarry Smith return 0; 1138563dfccSBarry Smith } 114c8281c7dSSatish Balay 1158563dfccSBarry Smith PETSC_STATIC_INLINE PetscErrorCode PetscTimeAdd(PetscLogDouble *v) 1168563dfccSBarry Smith { 1178563dfccSBarry Smith *v += MPI_Wtime(); 1188563dfccSBarry Smith return 0; 1198563dfccSBarry Smith } 120c8281c7dSSatish Balay 121c8281c7dSSatish Balay #endif 122c8281c7dSSatish Balay 123c8281c7dSSatish Balay 124c8281c7dSSatish Balay 125