Line data Source code
1 : /* 2 : Low cost access to a system time. This, in general, should not be included in user programs. 3 : */ 4 : #pragma once 5 : 6 : #include <petscsys.h> 7 : 8 : /* SUBMANSEC = Sys */ 9 : 10 : PETSC_EXTERN PetscErrorCode PetscGetCPUTime(PetscLogDouble *); 11 : 12 : /* Global counters */ 13 : PETSC_EXTERN PetscLogDouble petsc_BaseTime; 14 : 15 : /*MC 16 : PetscTime - Returns the current time from some base time in the past in seconds. 17 : 18 : Synopsis: 19 : #include <petsctime.h> 20 : PetscErrorCode PetscTime(PetscLogDouble *v) 21 : 22 : Not Collective 23 : 24 : Output Parameter: 25 : . v - time counter 26 : 27 : Usage: 28 : .vb 29 : PetscLogDouble v; 30 : PetscTime(&v); 31 : .... perform some calculation ... 32 : printf("Time for operation %g\n",v); 33 : .ve 34 : 35 : Level: developer 36 : 37 : Note: 38 : Since the PETSc libraries incorporate timing of phases and operations, we do not recommend ever using `PetscTime()`. 39 : The options database command `-log_view` activates PETSc library timing. 40 : See `PetscLogStageRegister()`, `PetscLogEventRegister()`, `PetscLogEventBegin()`, `PetscLogEventEnd()` for how to register 41 : stages and events in application codes. 42 : 43 : .seealso: `PetscTimeSubtract()`, `PetscTimeAdd()`, `PetscLogStageRegister()`, `PetscLogEventRegister()`, `PetscLogEventBegin()`, `PetscLogEventEnd()` 44 : M*/ 45 : 46 : /*MC 47 : PetscTimeSubtract - Subtracts the current time (in seconds) from the value `v`. 48 : 49 : Synopsis: 50 : #include <petsctime.h> 51 : PetscErrorCode PetscTimeSubtract(PetscLogDouble *v) 52 : 53 : Not Collective 54 : 55 : Input Parameter: 56 : . v - time counter 57 : 58 : Output Parameter: 59 : . v - time counter (`v` = `v` - current time) 60 : 61 : Level: developer 62 : 63 : Note: 64 : Since the PETSc libraries incorporate timing of phases and operations, we do not always recommend using `PetscTimeSubtract()`. 65 : The options database command `-log_view` activates PETSc library timing. 66 : See `PetscLogStageRegister()`, `PetscLogEventRegister()`, `PetscLogEventBegin()`, `PetscLogEventEnd()` for how to register 67 : stages and events in application codes. 68 : 69 : .seealso: `PetscTime()`, `PetscTimeAdd()`, `PetscLogStageRegister()`, `PetscLogEventRegister()`, `PetscLogEventBegin()`, `PetscLogEventEnd()` 70 : M*/ 71 : 72 : /*MC 73 : PetscTimeAdd - Adds the current time (in seconds) to the value `v`. 74 : 75 : Synopsis: 76 : #include <petsctime.h> 77 : PetscErrorCode PetscTimeAdd(PetscLogDouble *v) 78 : 79 : Not Collective 80 : 81 : Input Parameter: 82 : . v - time counter 83 : 84 : Output Parameter: 85 : . v - time counter (`v` = `v` + current time) 86 : 87 : Level: developer 88 : 89 : Note: 90 : Since the PETSc libraries incorporate timing of phases and operations, we do not ever recommend using `PetscTimeAdd()`. 91 : The options database command `-log_view` activates PETSc library timing. 92 : 93 : .seealso: `PetscTime()`, `PetscTimeSubtract()`, `PetscLogStageRegister()`, `PetscLogEventRegister()`, `PetscLogEventBegin()`, `PetscLogEventEnd()` 94 : M*/ 95 : 96 330 : static inline PetscErrorCode PetscTime(PetscLogDouble *v) 97 : { 98 330 : *v = MPI_Wtime(); 99 330 : return PETSC_SUCCESS; 100 : } 101 : 102 : static inline PetscErrorCode PetscTimeSubtract(PetscLogDouble *v) 103 : { 104 : *v -= MPI_Wtime(); 105 : return PETSC_SUCCESS; 106 : } 107 : 108 2 : static inline PetscErrorCode PetscTimeAdd(PetscLogDouble *v) 109 : { 110 2 : *v += MPI_Wtime(); 111 2 : return PETSC_SUCCESS; 112 : }