support for hip multi kernels

Change-Id: I8cc42eb53f075ea4f27dc1287e7ab3fb77916027


[ROCm/rocprofiler commit: 807f17d6ce]
Este commit está contenido en:
Rachida Kebichi
2020-06-02 13:50:20 -04:00
cometido por Evgeny
padre 6b422c23a8
commit 7289c3619e
+29 -8
Ver fichero
@@ -57,6 +57,13 @@ def get_stream_index(stream_id):
stream_ind = stream_id_map[stream_id]
return stream_ind
# patching activity records
def activity_record_patching(db, ops_table_name, kernel_found, kernel_name, stream_found, stream_ind, select_expr):
if kernel_found != 0:
db.change_rec_fld(ops_table_name, 'Name = "' + kernel_name + '"', select_expr)
if stream_found != 0:
db.change_rec_fld(ops_table_name, 'tid = ' + str(stream_ind), select_expr)
# global vars
table_descr = [
['Index', 'KernelName'],
@@ -317,6 +324,7 @@ def fill_api_db(table_name, db, indir, api_name, api_pid, dep_pid, dep_list, dep
ptrn2_kernel = re.compile(r'\)\) .*$')
ptrn_fixformat = re.compile(r'(\d+:\d+ \d+:\d+ \w+)\(\s*(.*)\)$')
ptrn_fixkernel = re.compile(r'\s+kernel=(.*)$')
ptrn_multi_kernel = re.compile(r'(.*):(\d+)$')
if not os.path.isfile(file_name): return 0
@@ -374,7 +382,7 @@ def fill_api_db(table_name, db, indir, api_name, api_pid, dep_pid, dep_list, dep
copy_csv += str(copy_index) + ', ' + copy_line + '\n'
copy_index += 1
# extract stream-id
# extracting/converting stream-id
(stream_id, stream_found) = get_field(record_args, 'stream')
if stream_found != 0:
stream_ind = get_stream_index(stream_id)
@@ -382,15 +390,28 @@ def fill_api_db(table_name, db, indir, api_name, api_pid, dep_pid, dep_list, dep
if found == 0: fatal('set_field() failed for "stream", args: "' + record_args + '"')
# patching activity properties: kernel name, stream-id
corr_id = record_id
if (corr_id, proc_id) in dep_filtr:
ops_table_name = dep_filtr[(corr_id, proc_id)]
select_expr = '"Index" = ' + str(corr_id) + ' AND "proc-id" = ' + proc_id
# extract kernel name
(kernel_name, kernel_found) = get_field(record_args, 'kernel')
if kernel_found != 0:
db.change_rec_fld('OPS', 'Name = "' + kernel_name + '"', select_expr)
if stream_found != 0:
rec_table_name = dep_filtr[(corr_id, proc_id)]
db.change_rec_fld(rec_table_name, 'tid = ' + str(stream_ind), select_expr)
record_args = rec_vals[rec_len - 2]
# extract kernel name string
(kernel_str, kernel_found) = get_field(record_args, 'kernel')
is_kernel_list = 1 if kernel_found != 0 and kernel_str[-1] == ';' else 0
if is_kernel_list != 0:
for kernel_item in kernel_str[:-1].split(';'):
m = ptrn_multi_kernel.match(kernel_item)
if m:
kernel_name = m.group(1)
dev_id = m.group(2)
select_expr += ' AND "dev-id" = ' + dev_id
activity_record_patching(db, ops_table_name, 1, kernel_name, stream_found, stream_ind, select_expr)
fatal('Bad multi-kernel format: "' + kernel_item + '" in "' + kernel_str + '"')
else:
activity_record_patching(db, ops_table_name, kernel_found, kernel_str, stream_found, stream_ind, select_expr)
db.insert_entry(table_handle, rec_vals)
record_id += 1