From 1c6b2adae74fda6224cccd3865fed9268ea3801d Mon Sep 17 00:00:00 2001 From: Charis Poag Date: Thu, 8 May 2025 19:44:02 -0500 Subject: [PATCH] Removed backwards compatibility for jpeg_activity/vcn_activity Updated: - Removed backwards compatibility for jpeg_activity/vcn_activity - On supported ASICs users can use XCP (partition) stat values: jpeg_busy and vcn_busy Change-Id: I78c403f8462668738ec57cac12b107f6a3989b18 Signed-off-by: Charis Poag --- CHANGELOG.md | 53 ++++++++++++++++++++++++++++++++++++- src/rocm_smi_gpu_metrics.cc | 45 ------------------------------- 2 files changed, 52 insertions(+), 46 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 130ac2f059..1cebc211c6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,7 +24,58 @@ Full documentation for rocm_smi_lib is available at [https://rocm.docs.amd.com/] ### Removed -- N/A +- **Removed backwards compatibility `rsmi_dev_gpu_metrics_info_get()`'s `jpeg_activity` or `vcn_activity` fields: use `xcp_stats.jpeg_busy` or `xcp_stats.vcn_busy`** + - Backwards compability is removed for `jpeg_activity` and `vcn_activity` fields, if the `jpeg_busy` or `vcn_busy` field is available. + - Reasons for this change: + - Providing both `vcn_activity`/`jpeg_activity` and XCP (partition) stats `vcn_busy`/`jpeg_busy` caused confusion for users about which field to use. By removing backward compatibility, it is easier to identify the relevant field. + - The `jpeg_busy` field increased in size (for supported ASICs), making backward compatibility unable to fully copy the structure into `jpeg_activity`. + + See below for comparison of updated CLI outputs: + + Original output: + ```shell + $ rocm-smi --showmetrics + GPU[0] : vcn_activity (%): [0, 'N/A', 'N/A', 'N/A'] + GPU[0] : jpeg_activity (%): [0, 0, 0, 0, 0, 0, 0, 0, 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A'] + GPU[0] XCP[0] : xcp_stats.jpeg_busy (%): [0, 0, 0, 0, 0, 0, 0, 0, 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A'] + GPU[0] XCP[1] : xcp_stats.jpeg_busy (%): [0, 0, 0, 0, 0, 0, 0, 0, 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A'] + GPU[0] XCP[2] : xcp_stats.jpeg_busy (%): [0, 0, 0, 0, 0, 0, 0, 0, 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A'] + GPU[0] XCP[3] : xcp_stats.jpeg_busy (%): [0, 0, 0, 0, 0, 0, 0, 0, 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A'] + GPU[0] XCP[4] : xcp_stats.jpeg_busy (%): [0, 0, 0, 0, 0, 0, 0, 0, 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A'] + GPU[0] XCP[5] : xcp_stats.jpeg_busy (%): [0, 0, 0, 0, 0, 0, 0, 0, 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A'] + GPU[0] XCP[6] : xcp_stats.jpeg_busy (%): [0, 0, 0, 0, 0, 0, 0, 0, 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A'] + GPU[0] XCP[7] : xcp_stats.jpeg_busy (%): [0, 0, 0, 0, 0, 0, 0, 0, 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A'] + GPU[0] XCP[0] : xcp_stats.vcn_busy (%): [0, 'N/A', 'N/A', 'N/A'] + GPU[0] XCP[1] : xcp_stats.vcn_busy (%): [0, 'N/A', 'N/A', 'N/A'] + GPU[0] XCP[2] : xcp_stats.vcn_busy (%): [0, 'N/A', 'N/A', 'N/A'] + GPU[0] XCP[3] : xcp_stats.vcn_busy (%): [0, 'N/A', 'N/A', 'N/A'] + GPU[0] XCP[4] : xcp_stats.vcn_busy (%): [0, 'N/A', 'N/A', 'N/A'] + GPU[0] XCP[5] : xcp_stats.vcn_busy (%): [0, 'N/A', 'N/A', 'N/A'] + GPU[0] XCP[6] : xcp_stats.vcn_busy (%): [0, 'N/A', 'N/A', 'N/A'] + GPU[0] XCP[7] : xcp_stats.vcn_busy (%): [0, 'N/A', 'N/A', 'N/A'] + ``` + New output: + ```shell + $ rocm-smi --showmetrics + GPU[0] : vcn_activity (%): ['N/A', 'N/A', 'N/A', 'N/A'] + GPU[0] : jpeg_activity (%): ['N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A'] + GPU[0] XCP[0] : xcp_stats.jpeg_busy (%): [0, 0, 0, 0, 0, 0, 0, 0, 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A'] + GPU[0] XCP[1] : xcp_stats.jpeg_busy (%): [0, 0, 0, 0, 0, 0, 0, 0, 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A'] + GPU[0] XCP[2] : xcp_stats.jpeg_busy (%): [0, 0, 0, 0, 0, 0, 0, 0, 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A'] + GPU[0] XCP[3] : xcp_stats.jpeg_busy (%): [0, 0, 0, 0, 0, 0, 0, 0, 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A'] + GPU[0] XCP[4] : xcp_stats.jpeg_busy (%): [0, 0, 0, 0, 0, 0, 0, 0, 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A'] + GPU[0] XCP[5] : xcp_stats.jpeg_busy (%): [0, 0, 0, 0, 0, 0, 0, 0, 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A'] + GPU[0] XCP[6] : xcp_stats.jpeg_busy (%): [0, 0, 0, 0, 0, 0, 0, 0, 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A'] + GPU[0] XCP[7] : xcp_stats.jpeg_busy (%): [0, 0, 0, 0, 0, 0, 0, 0, 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A', 'N/A'] + GPU[0] XCP[0] : xcp_stats.vcn_busy (%): [0, 'N/A', 'N/A', 'N/A'] + GPU[0] XCP[1] : xcp_stats.vcn_busy (%): [0, 'N/A', 'N/A', 'N/A'] + GPU[0] XCP[2] : xcp_stats.vcn_busy (%): [0, 'N/A', 'N/A', 'N/A'] + GPU[0] XCP[3] : xcp_stats.vcn_busy (%): [0, 'N/A', 'N/A', 'N/A'] + GPU[0] XCP[4] : xcp_stats.vcn_busy (%): [0, 'N/A', 'N/A', 'N/A'] + GPU[0] XCP[5] : xcp_stats.vcn_busy (%): [0, 'N/A', 'N/A', 'N/A'] + GPU[0] XCP[6] : xcp_stats.vcn_busy (%): [0, 'N/A', 'N/A', 'N/A'] + GPU[0] XCP[7] : xcp_stats.vcn_busy (%): [0, 'N/A', 'N/A', 'N/A'] + ``` ### Optimized diff --git a/src/rocm_smi_gpu_metrics.cc b/src/rocm_smi_gpu_metrics.cc index ed0ff27a42..9dfac7f926 100755 --- a/src/rocm_smi_gpu_metrics.cc +++ b/src/rocm_smi_gpu_metrics.cc @@ -2038,23 +2038,6 @@ AMGpuMetricsPublicLatestTupl_t GpuMetricsBase_v18_t::copy_internal_to_external_m metrics_public_init.current_dclk1 = metrics_public_init.current_dclk0s[1]; - // separate by XCP - if (this->m_partition_id < kRSMI_MAX_NUM_XCP - && m_gpu_metrics_tbl.m_xcp_stats[this->m_partition_id].vcn_busy[0] != UINT16_MAX) { - std::copy(std::begin(m_gpu_metrics_tbl.m_xcp_stats[this->m_partition_id].vcn_busy), - std::end(m_gpu_metrics_tbl.m_xcp_stats[this->m_partition_id].vcn_busy), - std::begin(metrics_public_init.vcn_activity)); - } - if (this->m_partition_id < kRSMI_MAX_NUM_XCP - && m_gpu_metrics_tbl.m_xcp_stats[this->m_partition_id].jpeg_busy[0] != UINT16_MAX) { - auto src_size = std::size(m_gpu_metrics_tbl.m_xcp_stats[this->m_partition_id].jpeg_busy); - auto dest_size = std::size(metrics_public_init.jpeg_activity); - auto copy_size = std::min(src_size, dest_size); - std::copy_n(std::begin(m_gpu_metrics_tbl.m_xcp_stats[this->m_partition_id].jpeg_busy), - copy_size, - std::begin(metrics_public_init.jpeg_activity)); - } - return metrics_public_init; }(); @@ -2259,20 +2242,6 @@ AMGpuMetricsPublicLatestTupl_t GpuMetricsBase_v17_t::copy_internal_to_external_m metrics_public_init.current_dclk1 = metrics_public_init.current_dclk0s[1]; - // separate by XCP - if (this->m_partition_id < kRSMI_MAX_NUM_XCP - && m_gpu_metrics_tbl.m_xcp_stats[this->m_partition_id].vcn_busy[0] != UINT16_MAX) { - std::copy(std::begin(m_gpu_metrics_tbl.m_xcp_stats[this->m_partition_id].vcn_busy), - std::end(m_gpu_metrics_tbl.m_xcp_stats[this->m_partition_id].vcn_busy), - std::begin(metrics_public_init.vcn_activity)); - } - if (this->m_partition_id < kRSMI_MAX_NUM_XCP - && m_gpu_metrics_tbl.m_xcp_stats[this->m_partition_id].jpeg_busy[0] != UINT16_MAX) { - std::copy(std::begin(m_gpu_metrics_tbl.m_xcp_stats[this->m_partition_id].jpeg_busy), - std::end(m_gpu_metrics_tbl.m_xcp_stats[this->m_partition_id].jpeg_busy), - std::begin(metrics_public_init.jpeg_activity)); - } - return metrics_public_init; }(); @@ -2465,20 +2434,6 @@ AMGpuMetricsPublicLatestTupl_t GpuMetricsBase_v16_t::copy_internal_to_external_m metrics_public_init.current_dclk1 = metrics_public_init.current_dclk0s[1]; - // separate by XCP - if (this->m_partition_id < kRSMI_MAX_NUM_XCP - && m_gpu_metrics_tbl.m_xcp_stats[this->m_partition_id].vcn_busy[0] != UINT16_MAX) { - std::copy(std::begin(m_gpu_metrics_tbl.m_xcp_stats[this->m_partition_id].vcn_busy), - std::end(m_gpu_metrics_tbl.m_xcp_stats[this->m_partition_id].vcn_busy), - std::begin(metrics_public_init.vcn_activity)); - } - if (this->m_partition_id < kRSMI_MAX_NUM_XCP - && m_gpu_metrics_tbl.m_xcp_stats[this->m_partition_id].jpeg_busy[0] != UINT16_MAX) { - std::copy(std::begin(m_gpu_metrics_tbl.m_xcp_stats[this->m_partition_id].jpeg_busy), - std::end(m_gpu_metrics_tbl.m_xcp_stats[this->m_partition_id].jpeg_busy), - std::begin(metrics_public_init.jpeg_activity)); - } - return metrics_public_init; }();