fixed json dependencies

[ROCm/roctracer commit: 2a91ff8374]
This commit is contained in:
Evgeny
2019-01-28 23:53:48 -06:00
parent 161b718cde
commit 939636b869
2 changed files with 15 additions and 16 deletions
+5 -5
View File
@@ -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')
##############################################################################################
+10 -11
View File
@@ -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);