diff --git a/python_smi_tools/rocm_smi.py b/python_smi_tools/rocm_smi.py index 674e249ebf..d77b983920 100755 --- a/python_smi_tools/rocm_smi.py +++ b/python_smi_tools/rocm_smi.py @@ -1604,7 +1604,7 @@ def getCoarseGrainUtil(device, typeName=None): utilization_counters[i].type = c_int(i) ret = rocmsmi.rsmi_utilization_count_get(device, utilization_counters, length, byref(timestamp)) - if rsmi_ret_ok(ret, device): + if rsmi_ret_ok(ret, device, typeName, True): return utilization_counters return -1 @@ -1624,6 +1624,9 @@ def showGpuUse(deviceList): if util_counters != -1: for ut_counter in util_counters: printLog(device, utilization_counter_name[ut_counter.type], ut_counter.val) + else: + printLog(device, 'GFX Activity', 'N/A') + printLogSpacer() @@ -1713,6 +1716,8 @@ def showMemUse(deviceList): if util_counters != -1: for ut_counter in util_counters: printLog(device, utilization_counter_name[ut_counter.type], ut_counter.val) + else: + printLog(device, 'Memory Activity', 'N/A') printLogSpacer() diff --git a/src/rocm_smi.cc b/src/rocm_smi.cc index 52582d6d40..8d49b3702c 100755 --- a/src/rocm_smi.cc +++ b/src/rocm_smi.cc @@ -2803,6 +2803,8 @@ rsmi_utilization_count_get(uint32_t dv_ind, rsmi_status_t ret; rsmi_gpu_metrics_t gpu_metrics; + uint32_t val_ui32; + ret = rsmi_dev_gpu_metrics_info_get(dv_ind, &gpu_metrics); if (ret != RSMI_STATUS_SUCCESS) { return ret; @@ -2816,14 +2818,18 @@ rsmi_utilization_count_get(uint32_t dv_ind, for (uint32_t index = 0 ; index < count; index++) { switch (utilization_counters[index].type) { case RSMI_COARSE_GRAIN_GFX_ACTIVITY: - utilization_counters[index].value = gpu_metrics.gfx_activity_acc; + val_ui32 = gpu_metrics.gfx_activity_acc; break; case RSMI_COARSE_GRAIN_MEM_ACTIVITY: - utilization_counters[index].value = gpu_metrics.mem_actvity_acc; + val_ui32 = gpu_metrics.mem_actvity_acc; break; default: return RSMI_STATUS_INVALID_ARGS; } + if (val_ui32 == UINT32_MAX) + return RSMI_STATUS_NOT_SUPPORTED; + else + utilization_counters[index].value = val_ui32; } *timestamp = gpu_metrics.system_clock_counter;