blob: 6e707a484624b37fc766de7f1488c6f89213cc88 [file] [log] [blame]
c---------------------------------------------------------------------
c---------------------------------------------------------------------
subroutine timer_clear(n)
c---------------------------------------------------------------------
c---------------------------------------------------------------------
implicit none
integer n
double precision start(64), elapsed(64)
common /tt/ start, elapsed
c$omp threadprivate(/tt/)
elapsed(n) = 0.0
return
end
c---------------------------------------------------------------------
c---------------------------------------------------------------------
subroutine timer_start(n)
c---------------------------------------------------------------------
c---------------------------------------------------------------------
implicit none
external elapsed_time
double precision elapsed_time
integer n
double precision start(64), elapsed(64)
common /tt/ start, elapsed
c$omp threadprivate(/tt/)
start(n) = elapsed_time()
return
end
c---------------------------------------------------------------------
c---------------------------------------------------------------------
subroutine timer_stop(n)
c---------------------------------------------------------------------
c---------------------------------------------------------------------
implicit none
external elapsed_time
double precision elapsed_time
integer n
double precision start(64), elapsed(64)
common /tt/ start, elapsed
c$omp threadprivate(/tt/)
double precision t, now
now = elapsed_time()
t = now - start(n)
elapsed(n) = elapsed(n) + t
return
end
c---------------------------------------------------------------------
c---------------------------------------------------------------------
double precision function timer_read(n)
c---------------------------------------------------------------------
c---------------------------------------------------------------------
implicit none
integer n
double precision start(64), elapsed(64)
common /tt/ start, elapsed
c$omp threadprivate(/tt/)
timer_read = elapsed(n)
return
end
c---------------------------------------------------------------------
c---------------------------------------------------------------------
double precision function elapsed_time()
c---------------------------------------------------------------------
c---------------------------------------------------------------------
implicit none
c$ external omp_get_wtime
c$ double precision omp_get_wtime
double precision t
logical mp
c ... Use the OpenMP timer if we can (via C$ conditional compilation)
mp = .false.
c$ mp = .true.
c$ t = omp_get_wtime()
if (.not.mp) then
c This function must measure wall clock time, not CPU time.
c Since there is no portable timer in Fortran (77)
c we call a routine compiled in C (though the C source may have
c to be tweaked).
call wtime(t)
c The following is not ok for "official" results because it reports
c CPU time not wall clock time. It may be useful for developing/testing
c on timeshared Crays, though.
c call second(t)
endif
elapsed_time = t
return
end