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