1 # include "rheolef/dis_cpu_time.h"
22 # include "rheolef/diststream.h"
27 #ifdef _RHEOLEF_HAVE_CLOCK_GETTIME
29 #elif defined(_RHEOLEF_HAVE_GETTIMEOFDAY) || defined(_RHEOLEF_HAVE_WIERDGETTIMEOFDAY)
30 # include <sys/types.h>
31 # include <sys/time.h>
42 # ifndef _RHEOLEF_HAVE_MPI
47 if (! (mpi::environment::initialized() && !mpi::environment::finalized())) {
50 return rheolef::mpi::all_reduce (rheolef::communicator(), cpu, std::plus<double>());
59 #if defined(_RHEOLEF_HAVE_CLOCK_GETTIME)
62 #define SAMPLED_CLOCK CLOCK_HIGHRES
64 #define SAMPLED_CLOCK CLOCK_REALTIME
70 return double(tp.tv_sec) + 1e-9*double(tp.tv_nsec);
71 #elif defined(_RHEOLEF_HAVE_WIERDGETTIMEOFDAY)
75 return double(tp.tv_sec) + 1e-6*double(tp.tv_usec);
76 #elif defined(_RHEOLEF_HAVE_GETTIMEOFDAY)
79 gettimeofday(&tp,&tzp);
80 return double(tp.tv_sec) + 1e-6*double(tp.tv_usec);
81 #elif defined(_RHEOLEF_HAVE_BSDGETTIMEOFDAY)
84 BSDgettimeofday(&tp,&tzp);
85 return double(tp.tv_sec) + 1e-6*double(tp.tv_usec);
87 LARGE_INTEGER time, freq;
88 if (!QueryPerformanceFrequency(&freq)){
92 if (!QueryPerformanceCounter(&time)){
96 return (
double)time.QuadPart / freq.QuadPart;
99 tfreqime_t tp, zero = 0;
101 return difftime(time(&tp), zero);
109 return (
double)clock() / CLOCKS_PER_SEC;
112 if (GetProcessTimes(GetCurrentProcess(),&
a,&
b,&
c,&
d) != 0) {
116 (
double)(
d.dwLowDateTime |
117 ((
unsigned long long)
d.dwHighDateTime << 32)) * 0.0000001;
127 # ifndef _RHEOLEF_HAVE_MPI
131 if (! (mpi::environment::initialized() && !mpi::environment::finalized())) {
138 size_type io_proc = idiststream::io_proc();
140 if (my_proc == io_proc) {
143 mpi::broadcast (comm, t, io_proc);
field::size_type size_type
This file is part of Rheolef.