/usr/lib/petscdir/3.1/include/petsctime.h is in libpetsc3.1-dev 3.1.dfsg-11ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 | /*
Low cost access to system time. This, in general, should not
be included in user programs.
*/
#if !defined(__PTIME_H)
#define __PTIME_H
#include "petscsys.h"
#if defined(PETSC_HAVE_SYS_TIME_H)
#include <sys/types.h>
#include <sys/time.h>
#endif
#if defined(PETSC_NEEDS_GETTIMEOFDAY_PROTO)
EXTERN_C_BEGIN
EXTERN int gettimeofday(struct timeval *,struct timezone *);
EXTERN_C_END
#endif
/* Global counters */
extern PetscLogDouble PETSC_DLLEXPORT BaseTime;
/*
PetscTime - Returns the current time of day in seconds.
Synopsis:
PetscTime(PetscLogDouble v)
Not Collective
Output Parameter:
. v - time counter
Usage:
PetscLogDouble v;
PetscTime(v);
.... perform some calculation ...
printf("Time for operation %g\n",v);
Notes:
Since the PETSc libraries incorporate timing of phases and operations,
PetscTime() is intended only for timing of application codes.
The options database commands -log, -log_summary, and -log_all activate
PETSc library timing. See the users manual for further details.
.seealso: PetscTimeSubtract(), PetscTimeAdd()
.keywords: Petsc, time
*/
/*
PetscTimeSubtract - Subtracts the current time of day (in seconds) from
the value v.
Synopsis:
PetscTimeSubtract(PetscLogDouble v)
Not Collective
Input Parameter:
. v - time counter
Output Parameter:
. v - time counter (v = v - current time)
Notes:
Since the PETSc libraries incorporate timing of phases and operations,
PetscTimeSubtract() is intended only for timing of application codes.
The options database commands -log, -log_summary, and -log_all activate
PETSc library timing. See the users manual for further details.
.seealso: PetscTime(), PetscTimeAdd()
.keywords: Petsc, time, subtract
*/
/*
PetscTimeAdd - Adds the current time of day (in seconds) to the value v.
Synopsis:
PetscTimeAdd(PetscLogDouble v)
Not Collective
Input Parameter:
. v - time counter
Output Parameter:
. v - time counter (v = v + current time)
Notes:
Since the PETSc libraries incorporate timing of phases and operations,
PetscTimeAdd() is intended only for timing of application codes.
The options database commands -log, -log_summary, and -log_all activate
PETSc library timing. See the users manual for further details.
.seealso: PetscTime(), PetscTimeSubtract()
.keywords: Petsc, time, add
*/
/* ------------------------------------------------------------------
Some machines have very fast MPI_Wtime()
*/
#if (defined(PETSC_HAVE_FAST_MPI_WTIME) && !defined(__MPIUNI_H))
#define PetscTime(v) (v)=MPI_Wtime();
#define PetscTimeSubtract(v) (v)-=MPI_Wtime();
#define PetscTimeAdd(v) (v)+=MPI_Wtime();
/* ------------------------------------------------------------------
Power1,2,3,PC machines have a fast clock read_real_time()
*/
#elif defined(PETSC_USE_READ_REAL_TIME)
EXTERN PetscLogDouble rs6000_time(void);
#define PetscTime(v) (v)=rs6000_time();
#define PetscTimeSubtract(v) (v)-=rs6000_time();
#define PetscTimeAdd(v) (v)+=rs6000_time();
/* ------------------------------------------------------------------
Dec Alpha has a very fast system clock accessible through getclock()
getclock() doesn't seem to have a prototype for C++
*/
#elif defined(PETSC_USE_GETCLOCK)
EXTERN_C_BEGIN
EXTERN int getclock(int clock_type,struct timespec *tp);
EXTERN_C_END
#define PetscTime(v) {static struct timespec _tp; \
getclock(TIMEOFDAY,&_tp); \
(v)=((PetscLogDouble)_tp.tv_sec)+(1.0e-9)*(_tp.tv_nsec);}
#define PetscTimeSubtract(v) {static struct timespec _tp; \
getclock(TIMEOFDAY,&_tp); \
(v)-=((PetscLogDouble)_tp.tv_sec)+(1.0e-9)*(_tp.tv_nsec);}
#define PetscTimeAdd(v) {static struct timespec _tp; \
getclock(TIMEOFDAY,&_tp); \
(v)+=((PetscLogDouble)_tp.tv_sec)+(1.0e-9)*(_tp.tv_nsec);}
/* ------------------------------------------------------------------
ASCI RED machine has a fast clock accessiable through dclock()
*/
#elif defined (PETSC_USE_DCLOCK)
EXTERN_C_BEGIN
EXTERN PetscLogDouble dclock();
EXTERN_C_END
#define PetscTime(v) (v)=dclock();
#define PetscTimeSubtract(v) (v)-=dclock();
#define PetscTimeAdd(v) (v)+=dclock();
/* ------------------------------------------------------------------
Windows uses a special time code
*/
#elif defined (PETSC_USE_NT_TIME)
#include <time.h>
EXTERN_C_BEGIN
EXTERN PetscLogDouble nt_time(void);
EXTERN_C_END
#define PetscTime(v) (v)=nt_time();
#define PetscTimeSubtract(v) (v)-=nt_time();
#define PetscTimeAdd(v) (v)+=nt_time();
/* ------------------------------------------------------------------
The usual Unix time routines.
*/
#else
#define PetscTime(v) {static struct timeval _tp; \
gettimeofday(&_tp,(struct timezone *)0);\
(v)=((PetscLogDouble)_tp.tv_sec)+(1.0e-6)*(_tp.tv_usec);}
#define PetscTimeSubtract(v) {static struct timeval _tp; \
gettimeofday(&_tp,(struct timezone *)0);\
(v)-=((PetscLogDouble)_tp.tv_sec)+(1.0e-6)*(_tp.tv_usec);}
#define PetscTimeAdd(v) {static struct timeval _tp; \
gettimeofday(&_tp,(struct timezone *)0);\
(v)+=((PetscLogDouble)_tp.tv_sec)+(1.0e-6)*(_tp.tv_usec);}
#endif
#endif
|