32 integer,
parameter ::
dp = kind(1.0d0)
57 character(LEN=20) :: tname
216 integer,
intent(in) :: itimer
217 character(len=*),
intent(in),
optional :: tag
220 ptimer(itimer)%tname = tag
234 integer,
intent(in) :: itimer
235 integer :: tprg_delta
236 integer,
intent(in),
optional :: verbose
240 if(
present(verbose))
then
242 write(*,*)
"Time for "//trim(
ptimer(itimer)%tname)//
" = "//
to_string(tprg_delta)//
" ms"
245 ptimer(itimer)%ttotal =
ptimer(itimer)%ttotal + tprg_delta
256 real(
dp),
allocatable :: sendbuf(:), recvbuf(:)
274 ptimer(i)%tavg = recvbuf(i) / rranks
287 ptimer(i)%minValue = reducerecvbuf(i)%val
288 ptimer(i)%minRank = reducerecvbuf(i)%rank
292 ptimer(i)%maxValue = reducerecvbuf(i)%val
293 ptimer(i)%maxRank = reducerecvbuf(i)%rank
296 deallocate(reducesendbuf)
297 deallocate(reducerecvbuf)
302 sendbuf(i) = temp * temp;
306 ptimer(i)%tstdev = sqrt(recvbuf(i) / rranks)
327 write(*,*)
"Timings for Rank ",
getmyrank()
328 write(*,*)
"Timer # Calls Avg/Call (s) Total (s) % Time"
332 if (
ptimer(i)%tcount .gt. 0)
then
337 10
format(a23, i6, 3g16.6)
342 write(*,*)
"Timing Statistics Across ",
getnranks(),
" Ranks:"
343 write(*,*)
"Timer Rank: Min(s) Rank: Max(s) Avg(s) Stdev(s)"
347 if (
ptimer(i)%tcount > 0)
then
348 write(*, 20)
ptimer(i)%tname, &
352 20
format(a23,2x,i4,g16.6,i4,3g16.6)
362 integer :: timevector(8)
364 call date_and_time(values=timevector)
365 mls = timevector(5)*60*60*1000 + timevector(6)*60*1000 + &
366 timevector(7)*1000 + timevector(8)
374 character(len=*),
intent(in) :: tag
375 character(2) :: monthchar, daychar,hourchar,minchar,secchar
376 integer :: sec, mins, hour, day, month, year
377 integer :: timevector(8)
379 call date_and_time(values=timevector)
381 year = timevector(1); month = timevector(2); day = timevector(3)
382 hour = timevector(5); mins = timevector(6); sec = timevector(7)
387 write(*,
'(a2,a,x,A2,a1,A2,a1,i4,x,a2,x,A2,a1,A2,a1,A2)')
"# ", &
388 trim(tag),monthchar,
"/" &
389 ,daychar,
"/",year,
"at", hourchar,
":",minchar,
":",secchar
397 integer,
intent(in) :: ival
400 if ((ival/10) .lt. 1)
then
401 write(myintchar,
'(I2)') ival
402 myintchar=
"0"//trim(adjustl(myintchar))
404 write(myintchar,
'(I2)') ival
subroutine, public maxrankrealparallel(sendBuf, recvBuf, icount)
subroutine, public minrankrealparallel(sendBuf, recvBuf, icount)
subroutine, public sumrealparallel(sendBuf, recvBuf, icount)
integer function, public printrank()
integer function, public getnranks()
integer function, public getmyrank()
integer, public loop_timer
integer, public badd_timer
integer, public dyn_timer
subroutine, public prg_print_date_and_time(tag)
integer, public nlist_timer
subroutine, public prg_timer_results()
subroutine, public prg_timer_shutdown()
Done with timers.
real(8) function, public time2milliseconds()
subroutine, public timer_prg_init()
Initialize timers.
subroutine, public prg_timer_start(itimer, tag)
Start Timing.
integer, public part_timer
integer, public sp2_timer
integer, public subind_timer
integer, public zdiag_timer
integer, public subext_timer
integer, public pairpot_timer
subroutine prg_timer_getid()
Get timer id.
subroutine, public prg_timer_stop(itimer, verbose)
Stop timing.
integer, public mdloop_timer
integer, public ortho_timer
integer, public halfverlet_timer
integer, public buildz_timer
integer, public pos_timer
integer, public bmult_timer
integer, public genx_timer
integer, public subgraph_timer
integer, public graphsp2_timer
type(timer_status_t), dimension(:), allocatable ptimer
integer, public suball_timer
integer, public realcoul_timer
integer, public deortho_timer
integer, public subsp2_timer
integer, public recipcoul_timer
subroutine, public prg_timer_collect()
character(2) function, private int2char(ival)
Data structure for rection over MPI ranks.