Google-Chrome Tracer parser attaching flow events to the wrong time slice

This issue happens when we have slices that have overlapping
timestamp values (i.e. start_ts + dur = start_ts of next slice)
and the flow event references that shared timestamp value.
The google chrome parser sorts all the events
and just taking the most recent one.
Rocprof is outputting flow attachment points as start+dur;
the end ts of the slice that can overlap with the next slice
if no gap between them.

Solution proposal by Michael Steffen (Michael.Steffen@amd.com)

Change-Id: Ifcde142144033c9012b01a78c95f047384f972dd


[ROCm/rocprofiler commit: 93a79eb99a]
This commit is contained in:
Ammar ELWazir
2022-06-13 10:30:18 -05:00
committad av Ammar Elwazir
förälder 48d6f03c07
incheckning a5bd7dd935
+1 -1
Visa fil
@@ -557,7 +557,7 @@ def fill_api_db(table_name, db, indir, api_name, api_pid, dep_pid, dep_list, dep
beg_ns = int(rec_vals[0])
end_ns = int(rec_vals[1])
dur_us = int((end_ns - beg_ns) / 1000)
from_us = int((beg_ns - START_NS) / 1000) + dur_us
from_us = int((beg_ns - START_NS) / 1000) + dur_us/2
if api_pid == HIP_PID or hsa_copy_deps == 1:
if not proc_id in dep_dict: dep_dict[proc_id] = {}
dep_proc = dep_dict[proc_id]