diff --git a/projects/rocprofiler/bin/sqlitedb.py b/projects/rocprofiler/bin/sqlitedb.py index 19213363ec..ff0c9dd2c0 100644 --- a/projects/rocprofiler/bin/sqlitedb.py +++ b/projects/rocprofiler/bin/sqlitedb.py @@ -164,14 +164,17 @@ class SQLiteDB: def metadata_json(self, jsonfile, sysinfo_file): params = gen_params(sysinfo_file); with open(jsonfile, mode='a') as fd: + cnt = 0 fd.write('],\n') fd.write('"otherData": {\n') - cnt = 0 - for key in params: - if cnt != 0: fd.write(',\n') - fd.write(' "' + key + '": "' + params[key] + '"') + for nkey in sorted(params.keys()): + key = nkey[1] cnt = cnt + 1 - fd.write('\n }\n') + if cnt == len(params): + fd.write(' "' + key + '": "' + params[nkey] + '"\n') + else: + fd.write(' "' + key + '": "' + params[nkey] + '",\n') + fd.write(' }\n') def dump_json(self, table_name, data_name, file_name): if not re.search(r'\.json$', file_name): diff --git a/projects/rocprofiler/bin/txt2params.py b/projects/rocprofiler/bin/txt2params.py index 0958aeea0e..61cf76662c 100644 --- a/projects/rocprofiler/bin/txt2params.py +++ b/projects/rocprofiler/bin/txt2params.py @@ -31,6 +31,7 @@ import os, sys, re # "Agent2_PoolInfo_ISAInfo_ISA1_WorkgroupMaxSizeperDimension_x": "1024(0x400)", def gen_params(txtfile): fields = {} + counter = 0 parent_field = '' nbr_indent = 0 nbr_indent_prev = 0 @@ -48,7 +49,8 @@ def gen_params(txtfile): if mv: key = 'HCCclangversion' val = mv.group(1) - fields[key] = val + counter = counter + 1 + fields[(counter,key)] = val continue # Variable 'check_for_dims' is True for text like this: # Workgroup Max Size per Dimension: @@ -60,15 +62,16 @@ def gen_params(txtfile): if mc: key_sav = mc.group(1) if parent_field != '': - key = parent_field + '_' + mc.group(1) + key = parent_field + '.' + mc.group(1) else: key = mc.group(1) val = re.sub(r"\s+", "", mc.group(2)) - fields[key] = val + counter = counter + 1 + fields[(counter,key)] = val if key_sav == 'z': check_for_dims = False nbr_indent_prev = nbr_indent - mi = re.search(r'^(\s+)\w+', line) + mi = re.search(r'^(\s+)\w+.*', line) md = re.search(':', line) if mi: nbr_indent = len(mi.group(1)) / 2 #indentation cnt @@ -77,13 +80,13 @@ def gen_params(txtfile): tmp = re.sub(r"\s+", "", line) if tmp.isalnum(): parent_field = tmp - continue if nbr_indent < nbr_indent_prev: - pos = parent_field.rfind('_') - if pos != -1: - parent_field = parent_field[:pos] - + go_back_parent=(nbr_indent_prev-nbr_indent) + for i in range(go_back_parent): #decrease as many levels up as needed + pos = parent_field.rfind('.') + if pos != -1: + parent_field = parent_field[:pos] # Process lines such as : # Segment: GLOBAL; FLAGS: KERNARG, FINE GRAINED # Size: 131897644(0x7dc992c) KB @@ -93,16 +96,17 @@ def gen_params(txtfile): if m: key, val = m.group(1), m.group(2) if parent_field != '': - key = parent_field + '_' + key + key = parent_field + '.' + key if val == '': mk = re.match(r'.*Dimension',key) if mk: # expect x,y,z on next 3 lines check_for_dims = True parent_field = key else: - fields[key] = val + counter = counter + 1 + fields[(counter,key)] = val else: if nbr_indent != nbr_indent_prev and not check_for_dims : - parent_field = parent_field + '_' + lin.replace(':','') + parent_field = parent_field + '.' + lin.replace(':','') return fields