Skip to content

Commit a64e9b4

Browse files
adam360xmarifamd
authored andcommitted
[SWDEV-560778] Update gpu metrics factory to return a new pointer every time
1 parent cba4c87 commit a64e9b4

File tree

1 file changed

+12
-44
lines changed

1 file changed

+12
-44
lines changed

rocm_smi/src/rocm_smi_gpu_metrics.cc

Lines changed: 12 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -358,53 +358,21 @@ rsmi_status_t is_gpu_metrics_version_supported(const AMDGpuMetricsHeader_v1_t& m
358358
? rsmi_status_t::RSMI_STATUS_SUCCESS : rsmi_status_t::RSMI_STATUS_NOT_SUPPORTED;
359359
}
360360

361-
362-
AMDGpuMetricFactories_t amd_gpu_metrics_factory_table
363-
{
364-
{AMDGpuMetricVersionFlags_t::kGpuMetricV11, std::make_shared<GpuMetricsBase_v11_t>(GpuMetricsBase_v11_t{})},
365-
{AMDGpuMetricVersionFlags_t::kGpuMetricV12, std::make_shared<GpuMetricsBase_v12_t>(GpuMetricsBase_v12_t{})},
366-
{AMDGpuMetricVersionFlags_t::kGpuMetricV13, std::make_shared<GpuMetricsBase_v13_t>(GpuMetricsBase_v13_t{})},
367-
{AMDGpuMetricVersionFlags_t::kGpuMetricV14, std::make_shared<GpuMetricsBase_v14_t>(GpuMetricsBase_v14_t{})},
368-
{AMDGpuMetricVersionFlags_t::kGpuMetricV15, std::make_shared<GpuMetricsBase_v15_t>(GpuMetricsBase_v15_t{})},
369-
{AMDGpuMetricVersionFlags_t::kGpuMetricV16, std::make_shared<GpuMetricsBase_v16_t>(GpuMetricsBase_v16_t{})},
370-
{AMDGpuMetricVersionFlags_t::kGpuMetricV17, std::make_shared<GpuMetricsBase_v17_t>(GpuMetricsBase_v17_t{})},
371-
{AMDGpuMetricVersionFlags_t::kGpuMetricV18, std::make_shared<GpuMetricsBase_v18_t>(GpuMetricsBase_v18_t{})},
372-
{AMDGpuMetricVersionFlags_t::kGpuMetricV19, std::make_shared<GpuMetricsBaseDynamic_t>()},
373-
};
374-
375-
GpuMetricsBasePtr amdgpu_metrics_factory(AMDGpuMetricVersionFlags_t gpu_metric_version)
376-
{
377-
std::ostringstream ss;
378-
ss << __PRETTY_FUNCTION__ << " | ======= start =======";
379-
LOG_TRACE(ss);
380-
381-
auto contains = [](const AMDGpuMetricVersionFlags_t metric_version) {
382-
return (amd_gpu_metrics_factory_table.find(metric_version) != amd_gpu_metrics_factory_table.end());
383-
};
384-
385-
if (contains(gpu_metric_version)) {
386-
ss << __PRETTY_FUNCTION__
387-
<< " | ======= end ======= "
388-
<< " | Success "
389-
<< " | Factory Version: " << static_cast<AMDGpuMetricVersionFlagId_t>(gpu_metric_version)
390-
<< " |";
391-
LOG_TRACE(ss);
392-
393-
return (amd_gpu_metrics_factory_table.at(gpu_metric_version));
361+
GpuMetricsBasePtr amdgpu_metrics_factory(AMDGpuMetricVersionFlags_t v) {
362+
switch (v) {
363+
case AMDGpuMetricVersionFlags_t::kGpuMetricV11: return std::make_shared<GpuMetricsBase_v11_t>();
364+
case AMDGpuMetricVersionFlags_t::kGpuMetricV12: return std::make_shared<GpuMetricsBase_v12_t>();
365+
case AMDGpuMetricVersionFlags_t::kGpuMetricV13: return std::make_shared<GpuMetricsBase_v13_t>();
366+
case AMDGpuMetricVersionFlags_t::kGpuMetricV14: return std::make_shared<GpuMetricsBase_v14_t>();
367+
case AMDGpuMetricVersionFlags_t::kGpuMetricV15: return std::make_shared<GpuMetricsBase_v15_t>();
368+
case AMDGpuMetricVersionFlags_t::kGpuMetricV16: return std::make_shared<GpuMetricsBase_v16_t>();
369+
case AMDGpuMetricVersionFlags_t::kGpuMetricV17: return std::make_shared<GpuMetricsBase_v17_t>();
370+
case AMDGpuMetricVersionFlags_t::kGpuMetricV18: return std::make_shared<GpuMetricsBase_v18_t>();
371+
case AMDGpuMetricVersionFlags_t::kGpuMetricV19: return std::make_shared<GpuMetricsBaseDynamic_t>();
372+
default: return nullptr;
394373
}
395-
396-
ss << __PRETTY_FUNCTION__
397-
<< " | ======= end ======= "
398-
<< " | Fail "
399-
<< " | Factory Version: " << static_cast<AMDGpuMetricVersionFlagId_t>(gpu_metric_version)
400-
<< " | Returning = "
401-
<< "No object from factory."
402-
<< " |";
403-
LOG_ERROR(ss);
404-
return nullptr;
405374
}
406375

407-
408376
template<typename>
409377
constexpr bool is_dependent_false_v = false;
410378

0 commit comments

Comments
 (0)