From 56d040156e1d18479295536f8c4ada37ce34932d Mon Sep 17 00:00:00 2001 From: fxmarty-amd Date: Wed, 30 Jul 2025 15:40:04 +0200 Subject: [PATCH] bugfix to make amd-smi usage backward compatible (#836) * Update soc_base.py Fixes https://github.com/ROCm/rocprofiler-compute/issues/835 Signed-off-by: fxmarty-amd * address comments --------- Signed-off-by: fxmarty-amd --- src/rocprof_compute_soc/soc_base.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/rocprof_compute_soc/soc_base.py b/src/rocprof_compute_soc/soc_base.py index 1d8b95a43e..6c2fcdecd0 100644 --- a/src/rocprof_compute_soc/soc_base.py +++ b/src/rocprof_compute_soc/soc_base.py @@ -170,7 +170,14 @@ class OmniSoC_Base: # Parse json from amd-smi static --clock amd_smi_mclk = run(["amd-smi", "static", "--clock", "--json"], exit_on_error=True) amd_smi_mclk = json.loads(amd_smi_mclk) - amd_smi_mclk = amd_smi_mclk["gpu_data"][0]["clock"]["mem"]["frequency_levels"] + + if isinstance(amd_smi_mclk, dict): + # The output of `amd-smi static --clock --json` is a dict with amd-smi>=26.0.0. + amd_smi_mclk = amd_smi_mclk["gpu_data"][0]["clock"]["mem"]["frequency_levels"] + else: + # For backward compatibility: the output of `amd-smi static --clock --json` used to be a list for amd-smi<26.0.0. + amd_smi_mclk = amd_smi_mclk[0]["clock"]["mem"]["frequency_levels"] + # Choose the highest level of memory clock frequency amd_smi_mclk = amd_smi_mclk[sorted(amd_smi_mclk.keys())[-1]] # 100 Mhz -> 100