1c8281c7dSSatish Balay /* 2c8281c7dSSatish Balay Low cost access to system time. This, in general, should not 3c8281c7dSSatish Balay be included in user programs. 4c8281c7dSSatish Balay */ 526bd1501SBarry Smith #if !defined(PETSCTIME_H) 626bd1501SBarry Smith #define PETSCTIME_H 7*ac09b921SBarry Smith 82c8e378dSBarry Smith #include <petscsys.h> 98563dfccSBarry Smith 10*ac09b921SBarry Smith /* SUBMANSEC = Sys */ 11*ac09b921SBarry Smith 128563dfccSBarry Smith PETSC_EXTERN PetscErrorCode PetscGetCPUTime(PetscLogDouble*); 13c8281c7dSSatish Balay 1430a8c558SMatthew Knepley /* Global counters */ 15014dd563SJed Brown PETSC_EXTERN PetscLogDouble petsc_BaseTime; 1630a8c558SMatthew Knepley 1739975667SBarry Smith /*MC 18c8281c7dSSatish Balay PetscTime - Returns the current time of day in seconds. 19c8281c7dSSatish Balay 20eca87e8dSBarry Smith Synopsis: 21aaa7dc30SBarry Smith #include <petsctime.h> 22fdd15c9aSJunchao Zhang PetscErrorCode PetscTime(PetscLogDouble *v) 23eca87e8dSBarry Smith 24eca87e8dSBarry Smith Not Collective 25eca87e8dSBarry Smith 26c8281c7dSSatish Balay Output Parameter: 27c8281c7dSSatish Balay . v - time counter 28c8281c7dSSatish Balay 29c8281c7dSSatish Balay Usage: 30c8281c7dSSatish Balay PetscLogDouble v; 318563dfccSBarry Smith PetscTime(&v); 32c8281c7dSSatish Balay .... perform some calculation ... 33c8281c7dSSatish Balay printf("Time for operation %g\n",v); 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() 40609bdbeeSBarry Smith The options database command -log_view activate 41a7f22e61SSatish Balay PETSc library timing. See Users-Manual: ch_profiling for more details. 42c8281c7dSSatish Balay 43db781477SPatrick Sanan .seealso: `PetscTimeSubtract()`, `PetscTimeAdd()`, `PetscLogStageRegister()`, `PetscLogEventRegister()`, `PetscLogEventBegin()`, `PetscLogEventEnd()` 44c8281c7dSSatish Balay 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> 53fdd15c9aSJunchao Zhang PetscErrorCode 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() 68609bdbeeSBarry 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 73db781477SPatrick Sanan .seealso: `PetscTime()`, `PetscTimeAdd()`, `PetscLogStageRegister()`, `PetscLogEventRegister()`, `PetscLogEventBegin()`, `PetscLogEventEnd()` 74c8281c7dSSatish Balay 7539975667SBarry Smith M*/ 76c8281c7dSSatish Balay 7739975667SBarry Smith /*MC 78c8281c7dSSatish Balay PetscTimeAdd - Adds the current time of day (in seconds) to the value v. 79c8281c7dSSatish Balay 80eca87e8dSBarry Smith Synopsis: 81aaa7dc30SBarry Smith #include <petsctime.h> 82fdd15c9aSJunchao Zhang PetscErrorCode PetscTimeAdd(PetscLogDouble *v) 83eca87e8dSBarry Smith 84eca87e8dSBarry Smith Not Collective 85eca87e8dSBarry Smith 86c8281c7dSSatish Balay Input Parameter: 87c8281c7dSSatish Balay . v - time counter 88c8281c7dSSatish Balay 89c8281c7dSSatish Balay Output Parameter: 90c8281c7dSSatish Balay . v - time counter (v = v + current time) 91c8281c7dSSatish Balay 9239975667SBarry Smith Level: developer 9339975667SBarry Smith 94c8281c7dSSatish Balay Notes: 95c8281c7dSSatish Balay Since the PETSc libraries incorporate timing of phases and operations, 9639975667SBarry Smith we do not ever recommend using PetscTimeAdd(). 97609bdbeeSBarry Smith The options database command -log_view activate 98a7f22e61SSatish Balay PETSc library timing. See Users-Manual: ch_profiling for more details. 99c8281c7dSSatish Balay 100db781477SPatrick Sanan .seealso: `PetscTime()`, `PetscTimeSubtract()`, `PetscLogStageRegister()`, `PetscLogEventRegister()`, `PetscLogEventBegin()`, `PetscLogEventEnd()` 101c8281c7dSSatish Balay 10239975667SBarry Smith M*/ 103c8281c7dSSatish Balay 1049fbee547SJacob Faibussowitsch static inline PetscErrorCode PetscTime(PetscLogDouble *v) 1058563dfccSBarry Smith { 1068563dfccSBarry Smith *v = MPI_Wtime(); 1078563dfccSBarry Smith return 0; 1088563dfccSBarry Smith } 109c8281c7dSSatish Balay 1109fbee547SJacob Faibussowitsch static inline PetscErrorCode PetscTimeSubtract(PetscLogDouble *v) 1118563dfccSBarry Smith { 1128563dfccSBarry Smith *v -= MPI_Wtime(); 1138563dfccSBarry Smith return 0; 1148563dfccSBarry Smith } 115c8281c7dSSatish Balay 1169fbee547SJacob Faibussowitsch static inline PetscErrorCode PetscTimeAdd(PetscLogDouble *v) 1178563dfccSBarry Smith { 1188563dfccSBarry Smith *v += MPI_Wtime(); 1198563dfccSBarry Smith return 0; 1208563dfccSBarry Smith } 121c8281c7dSSatish Balay 122c8281c7dSSatish Balay #endif 123