diff --git a/source/lib/rocprof-sys/library/amd_smi.cpp b/source/lib/rocprof-sys/library/amd_smi.cpp index 4ceaca043a..c539eb7f74 100644 --- a/source/lib/rocprof-sys/library/amd_smi.cpp +++ b/source/lib/rocprof-sys/library/amd_smi.cpp @@ -191,11 +191,11 @@ data::sample(uint32_t _dev_id) for(const auto& v_activity : _gpu_metrics.vcn_activity) { - if(v_activity != UINT16_MAX) m_vcn_metrics[_dev_id].push_back(v_activity); + if(v_activity != UINT16_MAX) m_vcn_metrics.push_back(v_activity); } for(const auto& j_activity : _gpu_metrics.jpeg_activity) { - if(j_activity != UINT16_MAX) m_jpeg_metrics[_dev_id].push_back(j_activity); + if(j_activity != UINT16_MAX) m_jpeg_metrics.push_back(j_activity); } #undef ROCPROFSYS_AMDSMI_GET @@ -378,25 +378,15 @@ data::post_process(uint32_t _dev_id) "megabytes"); if(_settings.vcn_activity) { - for(const auto& [dev_id, metrics] : itr.m_vcn_metrics) - { - for(std::size_t i = 0; i < std::size(metrics); ++i) - { - counter_track::emplace( - _dev_id, addendum_blk(i, " VCN Activity"), "%"); - } - } + for(std::size_t i = 0; i < std::size(itr.m_vcn_metrics); ++i) + counter_track::emplace(_dev_id, addendum_blk(i, " VCN Activity"), + "%"); } if(_settings.jpeg_activity) { - for(const auto& [dev_id, metrics] : itr.m_jpeg_metrics) - { - for(std::size_t i = 0; i < std::size(metrics); ++i) - { - counter_track::emplace(_dev_id, - addendum_blk(i, "JPEG Activity"), "%"); - } - } + for(std::size_t i = 0; i < std::size(itr.m_jpeg_metrics); ++i) + counter_track::emplace(_dev_id, addendum_blk(i, "JPEG Activity"), + "%"); } } uint64_t _ts = itr.m_ts; @@ -429,28 +419,23 @@ data::post_process(uint32_t _dev_id) counter_track::at(_dev_id, _idx.at(5)), _ts, _usage); if(_settings.vcn_activity) { - for(const auto& [dev_id, metrics] : itr.m_vcn_metrics) + uint64_t idx = _idx.at(6); + for(const auto& temp : itr.m_vcn_metrics) { - for(std::size_t i = 0; i < std::size(metrics); ++i) - { - double _vcn_activity = metrics[i]; - TRACE_COUNTER("device_vcn_activity", - counter_track::at(_dev_id, _idx.at(6) + i), _ts, - _vcn_activity); - } + TRACE_COUNTER("device_vcn_activity", counter_track::at(_dev_id, idx), + _ts, temp); + ++idx; } } if(_settings.jpeg_activity) { - for(const auto& [dev_id, metrics] : itr.m_jpeg_metrics) + uint64_t idx = _idx.at(7); + if(_settings.vcn_activity) idx += (itr.m_vcn_metrics.size() - 1); + for(const auto& temp : itr.m_jpeg_metrics) { - for(std::size_t i = 0; i < std::size(metrics); ++i) - { - double _jpeg_activity = metrics[i]; - TRACE_COUNTER("device_jpeg_activity", - counter_track::at(_dev_id, _idx.at(7) + i), _ts, - _jpeg_activity); - } + TRACE_COUNTER("device_jpeg_activity", counter_track::at(_dev_id, idx), + _ts, temp); + ++idx; } } } diff --git a/source/lib/rocprof-sys/library/amd_smi.hpp b/source/lib/rocprof-sys/library/amd_smi.hpp index 3c273cb628..e094b2fdc5 100644 --- a/source/lib/rocprof-sys/library/amd_smi.hpp +++ b/source/lib/rocprof-sys/library/amd_smi.hpp @@ -102,12 +102,12 @@ struct data static void post_process(uint32_t _dev_id); - uint32_t m_dev_id = std::numeric_limits::max(); - timestamp_t m_ts = 0; - temp_t m_temp = 0; - mem_usage_t m_mem_usage = 0; - std::unordered_map> m_vcn_metrics = {}; - std::unordered_map> m_jpeg_metrics = {}; + uint32_t m_dev_id = std::numeric_limits::max(); + timestamp_t m_ts = 0; + temp_t m_temp = 0; + mem_usage_t m_mem_usage = 0; + std::vector m_vcn_metrics = {}; + std::vector m_jpeg_metrics = {}; #if ROCPROFSYS_USE_ROCM > 0 amdsmi_engine_usage_t m_busy_perc = {}; amdsmi_power_info_t m_power = {};