diff --git a/src/omniperf_analyze-old/utils/parser.py b/src/omniperf_analyze-old/utils/parser.py index 56196ce9f7..13cd4c0a5c 100644 --- a/src/omniperf_analyze-old/utils/parser.py +++ b/src/omniperf_analyze-old/utils/parser.py @@ -651,7 +651,7 @@ def eval_metric(dfs, dfs_type, sys_info, soc_spec, raw_pmc_df, debug): print("~" * 40) except TypeError: print( - "skiping entry. Encounterd a missing counter" + "skipping entry. Encounterd a missing counter" ) print(expr, " has been assigned to None") print(np.nan) @@ -661,7 +661,7 @@ def eval_metric(dfs, dfs_type, sys_info, soc_spec, raw_pmc_df, debug): == "'NoneType' object has no attribute 'get'" ): print( - "skiping entry. Encounterd a missing csv" + "skipping entry. Encounterd a missing csv" ) print(np.nan) else: diff --git a/src/omniperf_analyze/analysis_webui.py b/src/omniperf_analyze/analysis_webui.py index 422927e3f1..9bd1d83deb 100644 --- a/src/omniperf_analyze/analysis_webui.py +++ b/src/omniperf_analyze/analysis_webui.py @@ -45,14 +45,14 @@ class webui_analysis(OmniAnalyze_Base): self.dest_dir = os.path.abspath(args.path[0][0]) self.arch = None - self.__hidden_sections = ["Memory Chart Analysis", "Kernels"] + self.__hidden_sections = ["Memory Chart", "Kernels"] self.__hidden_columns = ["Tips", "coll_level"] # define different types of bar charts self.__barchart_elements = { "instr_mix": [1001, 1002], "multi_bar": [1604, 1704], "sol": [1101, 1201, 1301, 1401, 1601, 1701], - "l2_cache_per_chan": [1802, 1803] + #"l2_cache_per_chan": [1802, 1803] } # define any elements which will have full width self.__full_width_elements = {1801} @@ -131,14 +131,14 @@ class webui_analysis(OmniAnalyze_Base): # Only display basic metrics if no filters are applied if not (disp_filt or kernel_filter or gcd_filter): temp = {} - keep = [1, 201, 101, 1901] + keep = [1, 201, 101, 301] for key in base_data[base_run].dfs: if keep.count(key) != 0: temp[key] = base_data[base_run].dfs[key] base_data[base_run].dfs = temp temp = {} - keep = [0, 100, 200, 1900] + keep = [0, 100, 200, 300] for key in panel_configs: if keep.count(key) != 0: temp[key] = panel_configs[key] @@ -159,7 +159,7 @@ class webui_analysis(OmniAnalyze_Base): # Append memory chart and roofline div_children.append( - get_memchart(panel_configs[1900]["data source"], base_data[base_run]) + get_memchart(panel_configs[300]["data source"], base_data[base_run]) ) has_roofline = os.path.isfile(os.path.join(self.dest_dir, "roofline.csv")) if has_roofline and hasattr(self.get_socs()[self.arch], "roofline_obj"): @@ -177,7 +177,7 @@ class webui_analysis(OmniAnalyze_Base): roof_obj = self.get_socs()[self.arch].roofline_obj div_children.append( roof_obj.empirical_roofline( - ret_df=parser.apply_filters(workload=base_data[base_run], is_gui=True, debug=self.get_args().debug) + ret_df=parser.apply_filters(workload=base_data[base_run], dir=self.dest_dir, is_gui=True, debug=self.get_args().debug) ) ) @@ -341,7 +341,7 @@ def determine_chart_type( if ( len(d_figs) > 2 and not table_config["id"] - in barchart_elements["l2_cache_per_chan"] + # in barchart_elements["l2_cache_per_chan"] ): temp_obj = [] for fig in d_figs: diff --git a/src/utils/gui.py b/src/utils/gui.py index 7dd1ea3a43..3b4f64daed 100644 --- a/src/utils/gui.py +++ b/src/utils/gui.py @@ -167,32 +167,32 @@ def build_bar_chart(display_df, table_config, barchart_elements, norm_filt): .update_layout(title_x=0.5) ) # L2 Cache per channel - elif table_config["id"] in barchart_elements["l2_cache_per_chan"]: - nested_bar = {} - channels = [] - for colName, colData in display_df.items(): - if colName == "Channel": - channels = list(colData.values) - else: - display_df[colName] = [ - x.astype(float) if x != "" and x != None else float(0) - for x in display_df[colName] - ] - nested_bar[colName] = list(display_df[colName]) - for group, metric in nested_bar.items(): - d_figs.append( - px.bar( - title=group[0 : group.rfind("(")], - x=channels, - y=metric, - labels={ - "x": "Channel", - "y": group[group.rfind("(") + 1 : len(group) - 1].replace( - "per", norm_filt - ), - }, - ).update_yaxes(rangemode="nonnegative") - ) + # elif table_config["id"] in barchart_elements["l2_cache_per_chan"]: + # nested_bar = {} + # channels = [] + # for colName, colData in display_df.items(): + # if colName == "Channel": + # channels = list(colData.values) + # else: + # display_df[colName] = [ + # x.astype(float) if x != "" and x != None else float(0) + # for x in display_df[colName] + # ] + # nested_bar[colName] = list(display_df[colName]) + # for group, metric in nested_bar.items(): + # d_figs.append( + # px.bar( + # title=group[0 : group.rfind("(")], + # x=channels, + # y=metric, + # labels={ + # "x": "Channel", + # "y": group[group.rfind("(") + 1 : len(group) - 1].replace( + # "per", norm_filt + # ), + # }, + # ).update_yaxes(rangemode="nonnegative") + # ) # Speed-of-light bar chart elif table_config["id"] in barchart_elements["sol"]: diff --git a/src/utils/gui_components/memchart.py b/src/utils/gui_components/memchart.py index f8af87d547..d9bd789d88 100644 --- a/src/utils/gui_components/memchart.py +++ b/src/utils/gui_components/memchart.py @@ -42,296 +42,19 @@ def insert_chart_data(mem_data, base_data): display_columns = original_df.columns.values.tolist().copy() display_df = original_df[display_columns] - alias = display_df["Alias"].values + alias = display_df["Metric"].values values = display_df["Value"].values - mem_values = {} + memchart_values = {} for i in range(0, len(alias)): - mem_values[alias[i]] = values[i] + memchart_values[alias[i]] = values[i] return G( className="data", children=[ - Text( - x="386", - y="46", - id="salu", - fill="rgb(0, 0, 0)", - fontSize="12px", - children=mem_values["salu_"], - ), - Text( - x="386", - y="96", - id="smem", - fill="rgb(0, 0, 0)", - fontSize="12px", - children=mem_values["smem_"], - ), - Text( - x="386", - y="146", - id="valu", - fill="rgb(0, 0, 0)", - fontSize="12px", - children=mem_values["valu_"], - ), - Text( - x="386", - y="196", - id="mfma", - fill="rgb(0, 0, 0)", - fontSize="12px", - children=mem_values["mfma_"], - ), - Text( - x="386", - y="245", - id="vmem", - fill="rgb(0, 0, 0)", - fontSize="12px", - children=mem_values["vmem_"], - ), - Text( - x="386", - y="296", - id="lds", - fill="rgb(0, 0, 0)", - fontSize="12px", - children=mem_values["lds_"], - ), - Text( - x="386", - y="344", - id="gws", - fill="rgb(0, 0, 0)", - fontSize="12px", - children=mem_values["gws_"], - ), - Text( - x="386", - y="396", - id="br", - fill="rgb(0, 0, 0)", - fontSize="12px", - children=mem_values["br_"], - ), - Text( - x="1435", - y="285", - id="fabric_rd_lat", - fill="rgb(0, 0, 0)", - fontSize="12px", - children=mem_values["fabric_rd_lat_"], - ), - Text( - x="1435", - y="310", - id="fabric_wr_lat", - fill="rgb(0, 0, 0)", - fontSize="12px", - children=mem_values["fabric_wr_lat_"], - ), - Text( - x="1435", - y="336", - id="fabric_atom_lat", - fill="rgb(0, 0, 0)", - fontSize="12px", - children=mem_values["fabric_atom_lat_"], - ), - Text( - x="1145", - y="213", - id="l2_rd", - fill="rgb(0, 0, 0)", - fontSize="12px", - children=mem_values["l2_rd_"], - ), - Text( - x="1145", - y="238", - id="l2_wr", - fill="rgb(0, 0, 0)", - fontSize="12px", - children=mem_values["l2_wr_"], - ), - Text( - x="1145", - y="264", - id="l2_atom", - fill="rgb(0, 0, 0)", - fontSize="12px", - children=mem_values["l2_atom_"], - ), - Text( - x="839", - y="117", - id="lds_lat", - fill="rgb(0, 0, 0)", - fontSize="12px", - children=mem_values["lds_lat_"], - ), - Text( - x="838", - y="372", - id="sl1_hit", - fill="rgb(0, 0, 0)", - fontSize="12px", - children=mem_values["sl1_hit_"], - ), - Text( - x="838", - y="404", - id="sl1_lat", - fill="rgb(0, 0, 0)", - fontSize="12px", - children=mem_values["sl1_lat_"], - ), - Text( - x="837", - y="491", - id="il1_hit", - fill="rgb(0, 0, 0)", - fontSize="12px", - children=mem_values["il1_hit_"], - ), - Text( - x="837", - y="522", - id="il1_lat", - fill="rgb(0, 0, 0)", - fontSize="12px", - children=mem_values["il1_lat_"], - ), - Text( - x="1578", - y="240", - id="hbm_rd", - fill="#FFFFFF", - fontSize="12px", - children=mem_values["hbm_rd_"], - ), - Text( - x="1577", - y="269", - id="hbm_wr", - fill="#FFFFFF", - fontSize="12px", - children=mem_values["hbm_wr_"], - ), - Text( - x="723", - y="78", - id="lds_req", - fill="#FFFFFF", - fontSize="12px", - children=mem_values["lds_req_"], - ), - Text( - x="708", - y="204", - id="vl1_rd", - fill="#FFFFFF", - fontSize="12px", - children=mem_values["vl1_rd_"], - ), - Text( - x="708", - y="233", - id="vl1_wr", - fill="#FFFFFF", - fontSize="12px", - children=mem_values["vl1_wr_"], - ), - Text( - x="716", - y="265", - id="vl1_atom", - fill="#FFFFFF", - fontSize="12px", - children=mem_values["vl1_atom_"], - ), - Text( - x="1145", - y="292", - id="l2_hit", - fill="rgb(0, 0, 0)", - fontSize="12px", - children=mem_values["l2_hit_"], - ), - Text( - x="1145", - y="356", - id="l2_rd_lat", - fill="rgb(0, 0, 0)", - fontSize="12px", - children=mem_values["l2_rd_lat_"], - ), - Text( - x="1145", - y="382", - id="l2_wr_lat", - fill="rgb(0, 0, 0)", - fontSize="12px", - children=mem_values["l2_wr_lat_"], - ), - Text( - x="840", - y="193", - id="vl1_hit", - fill="rgb(0, 0, 0)", - fontSize="12px", - children=mem_values["vl1_hit_"], - ), - Text( - x="840", - y="224", - id="vl1_lat", - fill="rgb(0, 0, 0)", - fontSize="12px", - children=mem_values["vl1_lat_"], - ), - Text( - x="839", - y="85", - id="lds_util", - fill="rgb(0, 0, 0)", - fontSize="12px", - children=mem_values["lds_util_"], - ), - Text( - x="840", - y="256", - id="vl1_coales", - fill="rgb(0, 0, 0)", - fontSize="12px", - children=mem_values["vl1_coales_"], - ), - Text( - x="1015", - y="500", - id="il1_l2_req", - fill="#FFFFFF", - fontSize="12px", - children=mem_values["il1_l2_req_"], - ), - Text( - x="838", - y="288", - id="vl1_stall", - fill="rgb(0, 0, 0)", - fontSize="12px", - children=mem_values["vl1_stall_"], - ), - Text( - x="492", - y="498", - id="il1_fetch", - fill="#FFFFFF", - fontSize="12px", - children=mem_values["il1_fetch_"], - ), + # ---------------------------------------- + # Instr Buff Block + #TODO: double check wave_occupancy Text( x="52", y="313", @@ -339,7 +62,7 @@ def insert_chart_data(mem_data, base_data): fill="#FFFF33", fontSize="20px", fontWeight="bold", - children=mem_values["wave_occ_"], + children=memchart_values["Wavefront Occupancy"], ), Text( x="49", @@ -348,8 +71,76 @@ def insert_chart_data(mem_data, base_data): fill="#FFFF33", fontSize="20px", fontWeight="bold", - children=mem_values["wave_life_"], + children=memchart_values["Wave Life"], ), + # ---------------------------------------- + # Instr Dispatch Block + Text( + x="386", + y="46", + id="salu", + fill="rgb(0, 0, 0)", + fontSize="12px", + children=memchart_values["SALU"], + ), + Text( + x="386", + y="96", + id="smem", + fill="rgb(0, 0, 0)", + fontSize="12px", + children=memchart_values["SMEM"], + ), + Text( + x="386", + y="146", + id="valu", + fill="rgb(0, 0, 0)", + fontSize="12px", + children=memchart_values["VALU"], + ), + Text( + x="386", + y="196", + id="mfma", + fill="rgb(0, 0, 0)", + fontSize="12px", + children=memchart_values["MFMA"], + ), + Text( + x="386", + y="245", + id="vmem", + fill="rgb(0, 0, 0)", + fontSize="12px", + children=memchart_values["VMEM"], + ), + Text( + x="386", + y="296", + id="lds", + fill="rgb(0, 0, 0)", + fontSize="12px", + children=memchart_values["LDS"], + ), + Text( + x="386", + y="344", + id="gws", + fill="rgb(0, 0, 0)", + fontSize="12px", + children=memchart_values["GWS"], + ), + Text( + x="386", + y="396", + id="br", + fill="rgb(0, 0, 0)", + fontSize="12px", + children=memchart_values["BR"], + ), + # ---------------------------------------- + # Exec Block Text( x="480", y="99", @@ -357,47 +148,15 @@ def insert_chart_data(mem_data, base_data): fill="#FFFF33", fontSize="20px", fontWeight="bold", - children=mem_values["active_cu_"], + children=memchart_values["Active CUs"], ), # x=454 - Text( - x="580", - y="226", - id="lds_alloc", - fill="rgb(0, 0, 0)", - fontSize="12px", - children=mem_values["lds_alloc_"], - ), - Text( - x="580", - y="255", - id="scratch_alloc", - fill="rgb(0, 0, 0)", - fontSize="12px", - children=mem_values["scratch_alloc_"], - ), - Text( - x="580", - y="298", - id="wavefronts", - fill="rgb(0, 0, 0)", - fontSize="12px", - children=mem_values["wavefronts_"], - ), - Text( - x="580", - y="328", - id="workgroups", - fill="rgb(0, 0, 0)", - fontSize="12px", - children=mem_values["workgroups_"], - ), Text( x="580", y="154", id="vgpr", fill="rgb(0, 0, 0)", fontSize="12px", - children=mem_values["vgpr_"], + children=memchart_values["VGPR"], ), Text( x="581", @@ -405,15 +164,123 @@ def insert_chart_data(mem_data, base_data): id="sgpr", fill="rgb(0, 0, 0)", fontSize="12px", - children=mem_values["sgpr_"], + children=memchart_values["SGPR"], ), Text( - x="709", - y="384", - id="sl1_rd", + x="580", + y="226", + id="lds_alloc", + fill="rgb(0, 0, 0)", + fontSize="12px", + children=memchart_values["LDS Allocation"], + ), + Text( + x="580", + y="255", + id="scratch_alloc", + fill="rgb(0, 0, 0)", + fontSize="12px", + children=memchart_values["Scratch Allocation"], + ), + Text( + x="580", + y="298", + id="wavefronts", + fill="rgb(0, 0, 0)", + fontSize="12px", + children=memchart_values["Wavefronts"], + ), + Text( + x="580", + y="328", + id="workgroups", + fill="rgb(0, 0, 0)", + fontSize="12px", + children=memchart_values["Workgroups"], + ), + # ---------------------------------------- + # LDS Block + Text( + x="723", + y="78", + id="lds_req", fill="#FFFFFF", fontSize="12px", - children=mem_values["sl1_rd_"], + children=memchart_values["LDS Req"], + ), + Text( + x="839", + y="85", + id="lds_util", + fill="rgb(0, 0, 0)", + fontSize="12px", + children=memchart_values["LDS Util"], + ), + Text( + x="839", + y="117", + id="lds_lat", + fill="rgb(0, 0, 0)", + fontSize="12px", + children=memchart_values["LDS Latency"], + ), + # ---------------------------------------- + # Vector L1 Cache Block + Text( + x="708", + y="204", + id="vl1_rd", + fill="#FFFFFF", + fontSize="12px", + children=memchart_values["VL1 Rd"], + ), + Text( + x="708", + y="233", + id="vl1_wr", + fill="#FFFFFF", + fontSize="12px", + children=memchart_values["VL1 Wr"], + ), + Text( + x="716", + y="265", + id="vl1_atom", + fill="#FFFFFF", + fontSize="12px", + children=memchart_values["VL1 Atomic"], + ), + Text( + x="840", + y="193", + id="vl1_hit", + fill="rgb(0, 0, 0)", + fontSize="12px", + children=memchart_values["VL1 Hit"], + ), + Text( + x="840", + y="224", + id="vl1_lat", + fill="rgb(0, 0, 0)", + fontSize="12px", + children=memchart_values["VL1 Lat"], + ), + Text( + x="840", + y="256", + id="vl1_coales", + fill="rgb(0, 0, 0)", + fontSize="12px", + children=memchart_values["VL1 Coalesce"], + ), + Text( + x="838", + y="288", + id="vl1_stall", + fill="rgb(0, 0, 0)", + fontSize="12px", + children=memchart_values["VL1 Stall"], ), Text( x="1000", @@ -421,7 +288,7 @@ def insert_chart_data(mem_data, base_data): id="vl1_l2_rd", fill="#FFFFFF", fontSize="12px", - children=mem_values["vl1_l2_rd_"], + children=memchart_values["VL1_L2 Rd"], ), Text( x="1000", @@ -429,7 +296,7 @@ def insert_chart_data(mem_data, base_data): id="vl1_l2_wr", fill="#FFFFFF", fontSize="12px", - children=mem_values["vl1_l2_wr_"], + children=memchart_values["VL1_L2 Wr"], ), Text( x="1008", @@ -437,7 +304,33 @@ def insert_chart_data(mem_data, base_data): id="vl1_l2_atom", fill="#FFFFFF", fontSize="12px", - children=mem_values["vl1_l2_atom_"], + children=memchart_values["VL1_L2 Atomic"], + ), + # ---------------------------------------- + # Scalar L1D Cache Block + Text( + x="709", + y="384", + id="sl1_rd", + fill="#FFFFFF", + fontSize="12px", + children=memchart_values["VL1D Rd"], + ), + Text( + x="838", + y="372", + id="sl1_hit", + fill="rgb(0, 0, 0)", + fontSize="12px", + children=memchart_values["VL1D Hit"], + ), + Text( + x="838", + y="404", + id="sl1_lat", + fill="rgb(0, 0, 0)", + fontSize="12px", + children=memchart_values["VL1D Lat"], ), Text( x="1000", @@ -445,7 +338,7 @@ def insert_chart_data(mem_data, base_data): id="sl1_l2_rd", fill="#FFFFFF", fontSize="12px", - children=mem_values["sl1_l2_rd_"], + children=memchart_values["VL1D_L2 Rd"], ), Text( x="1000", @@ -453,7 +346,7 @@ def insert_chart_data(mem_data, base_data): id="sl1_l2_wr", fill="#FFFFFF", fontSize="12px", - children=mem_values["sl1_l2_wr_"], + children=memchart_values["VL1D_L2 Wr"], ), Text( x="1008", @@ -461,15 +354,101 @@ def insert_chart_data(mem_data, base_data): id="sl1_l2_atom", fill="#FFFFFF", fontSize="12px", - children=mem_values["sl1_l2_atom_"], + children=memchart_values["VL1D_L2 Atomic"], ), + # ---------------------------------------- + # Instr L1 Cache Block + Text( + x="492", + y="498", + id="il1_fetch", + fill="#FFFFFF", + fontSize="12px", + children=memchart_values["IL1 Fetch"], + ), + Text( + x="837", + y="491", + id="il1_hit", + fill="rgb(0, 0, 0)", + fontSize="12px", + children=memchart_values["IL1 Hit"], + ), + Text( + x="837", + y="522", + id="il1_lat", + fill="rgb(0, 0, 0)", + fontSize="12px", + children=memchart_values["IL1 Lat"], + ), + Text( + x="1015", + y="500", + id="il1_l2_req", + fill="#FFFFFF", + fontSize="12px", + children=memchart_values["IL1_L2 Rd"], + ), + # ---------------------------------------- + # L2 Cache Block(inside) + Text( + x="1145", + y="213", + id="l2_rd", + fill="rgb(0, 0, 0)", + fontSize="12px", + children=memchart_values["L2 Rd"], + ), + Text( + x="1145", + y="238", + id="l2_wr", + fill="rgb(0, 0, 0)", + fontSize="12px", + children=memchart_values["L2 Wr"], + ), + Text( + x="1145", + y="264", + id="l2_atom", + fill="rgb(0, 0, 0)", + fontSize="12px", + children=memchart_values["L2 Atomic"], + ), + Text( + x="1145", + y="292", + id="l2_hit", + fill="rgb(0, 0, 0)", + fontSize="12px", + children=memchart_values["L2 Hit"], + ), + Text( + x="1145", + y="356", + id="l2_rd_lat", + fill="rgb(0, 0, 0)", + fontSize="12px", + children=memchart_values["L2 Rd Lat"], + ), + Text( + x="1145", + y="382", + id="l2_wr_lat", + fill="rgb(0, 0, 0)", + fontSize="12px", + children=memchart_values["L2 Wr Lat"], + ), + # ---------------------------------------- + # Fabric Block Text( x="1317", y="243", id="l2_fabric_rd", fill="#FFFFFF", fontSize="12px", - children=mem_values["l2_fabric_rd_"], + children=memchart_values["Fabric_L2 Rd"], ), Text( x="1317", @@ -477,7 +456,7 @@ def insert_chart_data(mem_data, base_data): id="l2_fabric_wr", fill="#FFFFFF", fontSize="12px", - children=mem_values["l2_fabric_wr_"], + children=memchart_values["Fabric_L2 Wr"], ), Text( x="1319", @@ -485,7 +464,47 @@ def insert_chart_data(mem_data, base_data): id="l2_fabric_atom", fill="#FFFFFF", fontSize="12px", - children=mem_values["l2_fabric_atom_"], + children=memchart_values["Fabric_L2 Atomic"], + ), + Text( + x="1435", + y="285", + id="fabric_rd_lat", + fill="rgb(0, 0, 0)", + fontSize="12px", + children=memchart_values["Fabric Rd Lat"], + ), + Text( + x="1435", + y="310", + id="fabric_wr_lat", + fill="rgb(0, 0, 0)", + fontSize="12px", + children=memchart_values["Fabric Wr Lat"], + ), + Text( + x="1435", + y="336", + id="fabric_atom_lat", + fill="rgb(0, 0, 0)", + fontSize="12px", + children=memchart_values["Fabric Atomic Lat"], + ), + Text( + x="1578", + y="240", + id="hbm_rd", + fill="#FFFFFF", + fontSize="12px", + children=memchart_values["HBM Rd"], + ), + Text( + x="1577", + y="269", + id="hbm_wr", + fill="#FFFFFF", + fontSize="12px", + children=memchart_values["HBM Wr"], ), ], ) diff --git a/src/utils/parser.py b/src/utils/parser.py index 1edae6f4b4..c0ffbddfed 100644 --- a/src/utils/parser.py +++ b/src/utils/parser.py @@ -818,7 +818,7 @@ def eval_metric(dfs, dfs_type, sys_info, soc_spec, raw_pmc_df, debug): # print(tabulate(df, headers='keys', tablefmt='fancy_grid')) -def apply_filters(workload, is_gui, debug): +def apply_filters(workload, dir, is_gui, debug): """ Apply user's filters to the raw_pmc df. """ @@ -875,9 +875,9 @@ def apply_filters(workload, is_gui, debug): if debug: print("GUI kernel filtering") ret_df = ret_df.loc[ - ret_df[schema.pmc_perf_file_prefix]["Index"] - .astype(str) - .isin(workload.filter_dispatch_ids) + ret_df[schema.pmc_perf_file_prefix]["KernelName"].isin( + workload.filter_kernel_ids + ) ] if workload.filter_dispatch_ids: @@ -945,7 +945,7 @@ def load_table_data(workload, dir, is_gui, debug, verbose, skipKernelTop=False): workload.dfs_type, workload.sys_info.iloc[0], workload.soc_spec, - apply_filters(workload, is_gui, debug), + apply_filters(workload, dir, is_gui, debug), debug, )