Write accumulated callgraph information as cachegrind-file. http://kcachegrind.sourceforge.net/cgi-bin/show.cgi/KcacheGrindCalltreeFormat
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=*), | intent(in) | :: | filename |
SUBROUTINE timings_report_callgraph(filename)
!! Write accumulated callgraph information as cachegrind-file.
!! http://kcachegrind.sourceforge.net/cgi-bin/show.cgi/KcacheGrindCalltreeFormat
CHARACTER(len=*), INTENT(in) :: filename
INTEGER, PARAMETER :: E = 1000, T = 100000
INTEGER :: i, unit
TYPE(call_stat_type), POINTER :: c_stat
TYPE(dict_i4tuple_callstat_item_type), &
DIMENSION(:), POINTER :: ct_items
TYPE(routine_stat_type), POINTER :: r_stat
TYPE(timer_env_type), POINTER :: timer_env
CALL open_file(file_name=filename, file_status="REPLACE", file_action="WRITE", &
file_form="FORMATTED", unit_number=unit)
timer_env => get_timer_env()
! use outermost routine as total runtime
r_stat => list_get(timer_env%routine_stats, 1)
WRITE (UNIT=unit, FMT="(A)") "events: Walltime Energy"
WRITE (UNIT=unit, FMT="(A,I0,1X,I0)") "summary: ", &
INT(T*r_stat%incl_walltime_accu, KIND=int_8), &
INT(E*r_stat%incl_energy_accu, KIND=int_8)
DO i = 1, list_size(timer_env%routine_stats)
r_stat => list_get(timer_env%routine_stats, i)
WRITE (UNIT=unit, FMT="(A,I0,A,A)") "fn=(", r_stat%routine_id, ") ", r_stat%routineN
WRITE (UNIT=unit, FMT="(A,I0,1X,I0)") "1 ", &
INT(T*r_stat%excl_walltime_accu, KIND=int_8), &
INT(E*r_stat%excl_energy_accu, KIND=int_8)
END DO
ct_items => dict_items(timer_env%callgraph)
DO i = 1, SIZE(ct_items)
c_stat => ct_items(i)%value
WRITE (UNIT=unit, FMT="(A,I0,A)") "fn=(", ct_items(i)%key(1), ")"
WRITE (UNIT=unit, FMT="(A,I0,A)") "cfn=(", ct_items(i)%key(2), ")"
WRITE (UNIT=unit, FMT="(A,I0,A)") "calls=", c_stat%total_calls, " 1"
WRITE (UNIT=unit, FMT="(A,I0,1X,I0)") "1 ", &
INT(T*c_stat%incl_walltime_accu, KIND=int_8), &
INT(E*c_stat%incl_energy_accu, KIND=int_8)
END DO
DEALLOCATE (ct_items)
CALL close_file(unit_number=unit, file_status="KEEP")
END SUBROUTINE timings_report_callgraph