diff --git a/projects/roctracer/bin/dform.py b/projects/roctracer/bin/dform.py index 7122a51c76..107188fa0a 100644 --- a/projects/roctracer/bin/dform.py +++ b/projects/roctracer/bin/dform.py @@ -1,7 +1,7 @@ #!/usr/bin/python from sqlitedb import SQLiteDB -def post_process_data(db, table_name, start_ns, outfile = ''): +def post_process_data(db, table_name, outfile = ''): # db.add_data_column('A', 'DispDurNs', 'INTEGER', 'BeginNs - DispatchNs') # db.add_data_column('A', 'ComplDurNs', 'INTEGER', 'CompleteNs - EndNs') # db.add_data_column('A', 'TotalDurNs', 'INTEGER', 'CompleteNs - DispatchNs') @@ -19,13 +19,13 @@ def gen_table_bins(db, table, outfile, name_var, dur_ns_var): gen_data_bins(db, outfile) db.execute('DROP VIEW B') -def gen_api_json_trace(db, table, start_ns, outfile): - db.execute('create view B as select "Index", Name as name, pid, tid, (BeginNs/1000 - %d/1000) as ts, (DurationNs/1000) as dur from %s order by ts asc;' % (start_ns, table)); +def gen_api_json_trace(db, table, start_us, outfile): + db.execute('create view B as select "Index", Name as name, pid, tid, (BeginNs/1000 - %d) as ts, (DurationNs/1000) as dur from %s order by ts asc;' % (start_us, table)); db.dump_json('B', table, outfile) db.execute('DROP VIEW B') -def gen_kernel_json_trace(db, table, base_pid, start_ns, outfile): - db.execute('create view B as select "Index", KernelName as name, ("gpu-id" + %d) as pid, (0) as tid, (BeginNs/1000 - %d/1000) as ts, (DurationNs/1000) as dur from %s order by ts asc;' % (base_pid, start_ns, table)); +def gen_kernel_json_trace(db, table, base_pid, start_us, outfile): + db.execute('create view B as select "Index", KernelName as name, ("gpu-id" + %d) as pid, (0) as tid, (BeginNs/1000 - %d) as ts, (DurationNs/1000) as dur from %s order by ts asc;' % (base_pid, start_us, table)); db.dump_json('B', table, outfile) db.execute('DROP VIEW B') ############################################################################################## diff --git a/projects/roctracer/bin/tblextr.py b/projects/roctracer/bin/tblextr.py index 93147cb632..d1d27b49b7 100644 --- a/projects/roctracer/bin/tblextr.py +++ b/projects/roctracer/bin/tblextr.py @@ -36,7 +36,7 @@ COPY_PID = 0 HSA_PID = 1 GPU_BASE_PID = 2 max_gpu_id = 0 -START_NS = 0 +START_US = 0 # dependencies dictionary dep_dict = {} @@ -183,7 +183,7 @@ hsa_table_descr = [ {'Index':'INTEGER', 'Name':'TEXT', 'args':'TEXT', 'BeginNs':'INTEGER', 'EndNs':'INTEGER', 'pid':'INTEGER', 'tid':'INTEGER'} ] def fill_hsa_db(table_name, db, indir): - global START_NS + global START_US file_name = indir + '/' + 'hsa_api_trace.txt' ptrn_val = re.compile(r'(\d+):(\d+) (\d+):(\d+) ([^\(]+)(\(.*)$') ptrn_ac = re.compile(r'hsa_amd_memory_async_copy') @@ -196,8 +196,7 @@ def fill_hsa_db(table_name, db, indir): line = fd.readline() record = line[:-1] m = ptrn_val.match(record) - if m: START_NS = int(m.group(1)) - START_NS = 0 + if m: START_US = int(m.group(1)) / 1000 record_id = 0 table_handle = db.add_table(table_name, hsa_table_descr) @@ -303,26 +302,26 @@ else: for ind in range(0, int(max_gpu_id) + 1): db.label_json(int(ind) + int(GPU_BASE_PID), "GPU" + str(ind), jsonfile) if 'BeginNs' in var_list: - dform.post_process_data(db, 'A', START_NS, csvfile) + dform.post_process_data(db, 'A', csvfile) dform.gen_table_bins(db, 'A', statfile, 'KernelName', 'DurationNs') - dform.gen_kernel_json_trace(db, 'A', GPU_BASE_PID, START_NS, jsonfile) + dform.gen_kernel_json_trace(db, 'A', GPU_BASE_PID, START_US, jsonfile) else: db.dump_csv('A', csvfile) statfile = re.sub(r'stats', r'hsa_stats', statfile) - dform.post_process_data(db, 'HSA', START_NS) + dform.post_process_data(db, 'HSA') dform.gen_table_bins(db, 'HSA', statfile, 'Name', 'DurationNs') - dform.gen_api_json_trace(db, 'HSA', START_NS, jsonfile) + dform.gen_api_json_trace(db, 'HSA', START_US, jsonfile) - dform.post_process_data(db, 'COPY', START_NS) - dform.gen_api_json_trace(db, 'COPY', START_NS, jsonfile) + dform.post_process_data(db, 'COPY') + dform.gen_api_json_trace(db, 'COPY', START_US, jsonfile) dep_id = 0 for (to_pid, dep_str) in dep_dict.items(): tid_list = dep_str['tid'] from_us_list = dep_str['from'] to_us_dict = dep_str['to'] - db.flow_json(dep_id, HSA_PID, tid_list, from_us_list, to_pid, to_us_dict, (START_NS / 1000), jsonfile) + db.flow_json(dep_id, HSA_PID, tid_list, from_us_list, to_pid, to_us_dict, START_US, jsonfile) dep_id += len(tid_list) db.close_json(jsonfile);