diff --git a/projects/rocprofiler-compute/src/rocprof_compute_analyze/analysis_base.py b/projects/rocprofiler-compute/src/rocprof_compute_analyze/analysis_base.py index 66d0def36e..3256b17226 100644 --- a/projects/rocprofiler-compute/src/rocprof_compute_analyze/analysis_base.py +++ b/projects/rocprofiler-compute/src/rocprof_compute_analyze/analysis_base.py @@ -293,10 +293,9 @@ class OmniAnalyze_Base: ) w.roofline_peaks = pd.DataFrame() else: - console_error( + console_log( "roofline", f"Roofline analysis skipped: {error_msg}", - exit=False, ) w.roofline_peaks = pd.DataFrame() else: diff --git a/projects/rocprofiler-compute/src/utils/tty.py b/projects/rocprofiler-compute/src/utils/tty.py index 0a4a188054..11fa648dc8 100644 --- a/projects/rocprofiler-compute/src/utils/tty.py +++ b/projects/rocprofiler-compute/src/utils/tty.py @@ -494,6 +494,21 @@ def show_all( if not csv_dir.exists(): csv_dir.mkdir() + # Check for valid roofline data once (used to skip roofline tables in the loop) + has_valid_roofline = any( + hasattr(workload, "roofline_peaks") and not workload.roofline_peaks.empty + for workload in runs.values() + ) + roofline_warning_shown = False + + # True if roofline (block 4) is in the active filter + # or no filter is applied + roofline_in_filter = ( + any(str(m).split(".")[0] == "4" for m in args.filter_metrics) + if args.filter_metrics + else (not filter_panel_ids or 400 in filter_panel_ids) + ) + for panel_id, panel in arch_configs.panel_configs.items(): # Skip panels that don't support baseline comparison if len(args.path) > 1 and panel_id in config.HIDDEN_SECTIONS: @@ -510,18 +525,14 @@ def show_all( for data_source in panel["data source"]: for table_type, table_config in data_source.items(): # Skip roofline tables (401, 402) if roofline data is invalid - if table_config["id"] in [401, 402]: - has_valid_roofline = any( - hasattr(workload, "roofline_peaks") - and not workload.roofline_peaks.empty - for workload in runs.values() - ) - if not has_valid_roofline: + if table_config["id"] in [401, 402] and not has_valid_roofline: + if not roofline_warning_shown and roofline_in_filter: console_warning( - f"Not showing Roofline table {table_config['id']} " - "due to invalid roofline data." + "Roofline", + "Not showing roofline table due to invalid roofline data", ) - continue + roofline_warning_shown = True + continue # Block-filter logic: # - If analysis used --filter-metrics, ignore profiling block filters