diff --git a/src/rocprof_compute_tui/analysis_tui.py b/src/rocprof_compute_tui/analysis_tui.py index 1eb59d3e1f..ffe755c550 100644 --- a/src/rocprof_compute_tui/analysis_tui.py +++ b/src/rocprof_compute_tui/analysis_tui.py @@ -88,8 +88,7 @@ class tui_analysis(OmniAnalyze_Base): workload=self._runs[self.path], dir=self.path, is_gui=False, - debug=self.get_args().debug, - verbose=self.get_args().verbose, + args=self.get_args(), ) def initalize_runs(self, normalization_filter=None): diff --git a/src/rocprof_compute_tui/config.py b/src/rocprof_compute_tui/config.py index e3bb7c1b42..fc51effe2a 100644 --- a/src/rocprof_compute_tui/config.py +++ b/src/rocprof_compute_tui/config.py @@ -1,3 +1,27 @@ +##############################################################################bl +# MIT License +# +# Copyright (c) 2025 Advanced Micro Devices, Inc. All Rights Reserved. +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +##############################################################################el + """ Configuration Module ------------------- @@ -6,7 +30,7 @@ Central configuration for the application. # Application settings APP_TITLE = "ROCm Compute Profiler TUI" -VERSION = "3.1.0" +VERSION = "3.2.0" # Widget configurations DEFAULT_COLLAPSIBLE_STATE = True # True = collapsed by default diff --git a/src/rocprof_compute_tui/tui_app.py b/src/rocprof_compute_tui/tui_app.py index 8f8b7ecf00..4f07be9605 100644 --- a/src/rocprof_compute_tui/tui_app.py +++ b/src/rocprof_compute_tui/tui_app.py @@ -1,3 +1,27 @@ +##############################################################################bl +# MIT License +# +# Copyright (c) 2025 Advanced Micro Devices, Inc. All Rights Reserved. +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +##############################################################################el + """ ROCm Compute Profiler TUI - Main Application with Analysis Methods ---------------------------------------------------------------- diff --git a/src/rocprof_compute_tui/utils/analyze_config.yaml b/src/rocprof_compute_tui/utils/analyze_config.yaml index fe07b785b3..4e0e348664 100644 --- a/src/rocprof_compute_tui/utils/analyze_config.yaml +++ b/src/rocprof_compute_tui/utils/analyze_config.yaml @@ -41,9 +41,10 @@ sections: - "2. System Speed-of-Light" - "3. Memory Chart" - - title: "🚧 Source Level Analysis/PC Sampling" + - title: "🚧 Source Level Analysis" collapsed: true class: "source-section" - under_construction: true - construction_label: "🚧 Under Construction" - construction_class: "section-header" \ No newline at end of file + subsections: + - title: "PC Sampling" + data_path: ["21. PC Sampling", "21.1 PC Sampling"] + collapsed: true diff --git a/src/rocprof_compute_tui/views/main_view.py b/src/rocprof_compute_tui/views/main_view.py index eef6747103..f797e3a90a 100644 --- a/src/rocprof_compute_tui/views/main_view.py +++ b/src/rocprof_compute_tui/views/main_view.py @@ -1,3 +1,27 @@ +##############################################################################bl +# MIT License +# +# Copyright (c) 2025 Advanced Micro Devices, Inc. All Rights Reserved. +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +##############################################################################el + """ Main View Module --------------- diff --git a/src/rocprof_compute_tui/widgets/center_panel/center_area.py b/src/rocprof_compute_tui/widgets/center_panel/center_area.py index 3aac93718b..b7d588f0ed 100644 --- a/src/rocprof_compute_tui/widgets/center_panel/center_area.py +++ b/src/rocprof_compute_tui/widgets/center_panel/center_area.py @@ -1,3 +1,27 @@ +##############################################################################bl +# MIT License +# +# Copyright (c) 2025 Advanced Micro Devices, Inc. All Rights Reserved. +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +##############################################################################el + """ Panel Widget Modules ------------------- @@ -28,12 +52,11 @@ class CenterPanel(Vertical): def compose(self): with TabsTabbedContent(initial="tab-analyze"): - with TabPane("Analyze Results", id="tab-analyze"): + with TabPane("Basic View", id="tab-analyze"): yield self.analyze_view # TODO: # with TabPane("placeholder (🚧)", id="tab-1"): # yield Label("🚧 Under Construction") def on_mount(self) -> None: - self.border_title = "CENTER TABS" self.add_class("section") diff --git a/src/rocprof_compute_tui/widgets/collapsibles.py b/src/rocprof_compute_tui/widgets/collapsibles.py index 2a926e40c7..7690653a21 100644 --- a/src/rocprof_compute_tui/widgets/collapsibles.py +++ b/src/rocprof_compute_tui/widgets/collapsibles.py @@ -1,3 +1,27 @@ +##############################################################################bl +# MIT License +# +# Copyright (c) 2025 Advanced Micro Devices, Inc. All Rights Reserved. +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +##############################################################################el + from typing import Any, Dict, List, Optional import pandas as pd diff --git a/src/rocprof_compute_tui/widgets/directory_tree.py b/src/rocprof_compute_tui/widgets/directory_tree.py index 2920c25158..e7dc44bc6a 100644 --- a/src/rocprof_compute_tui/widgets/directory_tree.py +++ b/src/rocprof_compute_tui/widgets/directory_tree.py @@ -1,3 +1,27 @@ +##############################################################################bl +# MIT License +# +# Copyright (c) 2025 Advanced Micro Devices, Inc. All Rights Reserved. +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +##############################################################################el + """ Specialized Widget Modules ------------------------- diff --git a/src/rocprof_compute_tui/widgets/recent_directories.py b/src/rocprof_compute_tui/widgets/recent_directories.py index e54e5f7866..5ff43b9879 100644 --- a/src/rocprof_compute_tui/widgets/recent_directories.py +++ b/src/rocprof_compute_tui/widgets/recent_directories.py @@ -1,3 +1,27 @@ +##############################################################################bl +# MIT License +# +# Copyright (c) 2025 Advanced Micro Devices, Inc. All Rights Reserved. +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +##############################################################################el + from typing import List from textual.app import ComposeResult diff --git a/src/rocprof_compute_tui/widgets/right_panel/right.py b/src/rocprof_compute_tui/widgets/right_panel/right.py index b92d5db76d..ba4cbd681f 100644 --- a/src/rocprof_compute_tui/widgets/right_panel/right.py +++ b/src/rocprof_compute_tui/widgets/right_panel/right.py @@ -1,3 +1,27 @@ +##############################################################################bl +# MIT License +# +# Copyright (c) 2025 Advanced Micro Devices, Inc. All Rights Reserved. +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +##############################################################################el + """ Panel Widget Modules ------------------- diff --git a/src/rocprof_compute_tui/widgets/splitter.py b/src/rocprof_compute_tui/widgets/splitter.py index 1318ce9c13..cd70207d68 100644 --- a/src/rocprof_compute_tui/widgets/splitter.py +++ b/src/rocprof_compute_tui/widgets/splitter.py @@ -1,3 +1,27 @@ +##############################################################################bl +# MIT License +# +# Copyright (c) 2025 Advanced Micro Devices, Inc. All Rights Reserved. +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +##############################################################################el + """ Specialized Widget Modules ------------------------- diff --git a/src/rocprof_compute_tui/widgets/tabbed_content.py b/src/rocprof_compute_tui/widgets/tabbed_content.py index 698542a906..f07b734d91 100644 --- a/src/rocprof_compute_tui/widgets/tabbed_content.py +++ b/src/rocprof_compute_tui/widgets/tabbed_content.py @@ -1,3 +1,27 @@ +##############################################################################bl +# MIT License +# +# Copyright (c) 2025 Advanced Micro Devices, Inc. All Rights Reserved. +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +##############################################################################el + from textual.binding import Binding from textual.widgets import TabbedContent, Tabs diff --git a/src/rocprof_compute_tui/widgets/tabs/tabs_area.py b/src/rocprof_compute_tui/widgets/tabs/tabs_area.py index 313a32c30c..cc113e642b 100644 --- a/src/rocprof_compute_tui/widgets/tabs/tabs_area.py +++ b/src/rocprof_compute_tui/widgets/tabs/tabs_area.py @@ -1,3 +1,27 @@ +##############################################################################bl +# MIT License +# +# Copyright (c) 2025 Advanced Micro Devices, Inc. All Rights Reserved. +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +##############################################################################el + """ Panel Widget Modules ------------------- @@ -44,5 +68,4 @@ class TabsArea(Vertical): yield Terimnal() def on_mount(self) -> None: - self.border_title = "TABS" self.add_class("section") diff --git a/src/rocprof_compute_tui/widgets/tabs/tabs_terminal.py b/src/rocprof_compute_tui/widgets/tabs/tabs_terminal.py index fca08fa4d1..8e3c1dd4a8 100644 --- a/src/rocprof_compute_tui/widgets/tabs/tabs_terminal.py +++ b/src/rocprof_compute_tui/widgets/tabs/tabs_terminal.py @@ -1,3 +1,27 @@ +##############################################################################bl +# MIT License +# +# Copyright (c) 2025 Advanced Micro Devices, Inc. All Rights Reserved. +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +##############################################################################el + import os import platform import subprocess diff --git a/src/utils/parser.py b/src/utils/parser.py index c6eaee231a..b348707755 100644 --- a/src/utils/parser.py +++ b/src/utils/parser.py @@ -636,11 +636,9 @@ def build_dfs(archConfigs, filter_metrics, sys_info): df = pd.DataFrame() elif type == "pc_sampling_table": data_source_idx = str(data_config["id"] // 100) - # NB: enable pc sampling only when users specify, not enable as default - if filter_metrics and (data_source_idx in filter_metrics): - df = pd.DataFrame( - [data_config["source"]], columns=["from_pc_sampling"] - ) + df = pd.DataFrame( + [data_config["source"]], columns=["from_pc_sampling"] + ) metric_list[data_source_idx] = panel["title"] else: df = pd.DataFrame() @@ -1284,7 +1282,9 @@ def load_pc_sampling_data(workload, dir, file_prefix, sorting_type): pc_sampling_method = "host_trap" if pc_sampling_method == None: - console_error("PC sampling: can not find %s " % csv_file_path) + console_warning( + "PC sampling: can not detect pc sampling method without %s " % csv_file_path + ) return pd.DataFrame() # No kernel filter, return grouped and sorted csv directly