Corrected voltage_read call in amdsmi_get_power_info
Change-Id: I4097b3ac5699360d4e91c8b8254431b6b6768c3e Signed-off-by: Maisam Arif <maisarif@amd.com>
Этот коммит содержится в:
коммит произвёл
Galantsev, Dmitrii
родитель
e4fac177c1
Коммит
def17accbe
@@ -850,10 +850,10 @@ class AMDSMICommands():
|
||||
|
||||
if self.helpers.is_linux() and self.helpers.is_baremetal():
|
||||
if args.power:
|
||||
power_dict = {'average_socket_power': "N/A",
|
||||
'gfx_voltage': "N/A",
|
||||
'soc_voltage': "N/A",
|
||||
'mem_voltage': "N/A",
|
||||
power_dict = {'current_power': "N/A",
|
||||
'current_gfx_voltage': "N/A",
|
||||
'current_soc_voltage': "N/A",
|
||||
'current_mem_voltage': "N/A",
|
||||
'power_limit': "N/A",
|
||||
'power_management': "N/A"}
|
||||
|
||||
@@ -868,35 +868,21 @@ class AMDSMICommands():
|
||||
|
||||
try:
|
||||
power_measure = amdsmi_interface.amdsmi_get_power_info(args.gpu)
|
||||
power_dict['average_socket_power'] = power_measure['average_socket_power']
|
||||
power_dict['gfx_voltage'] = power_measure['gfx_voltage']
|
||||
power_dict['soc_voltage'] = power_measure['soc_voltage']
|
||||
power_dict['mem_voltage'] = power_measure['mem_voltage']
|
||||
power_dict['power_limit'] = power_measure['power_limit']
|
||||
for key, value in power_measure.items():
|
||||
if value == 0xFFFFFFFF:
|
||||
power_dict[key] = "N/A"
|
||||
else:
|
||||
power_dict[key] = f"{value}"
|
||||
|
||||
if self.logger.is_human_readable_format():
|
||||
power_dict['average_socket_power'] = f"{power_measure['average_socket_power']} W"
|
||||
power_dict['gfx_voltage'] = f"{power_measure['gfx_voltage']} mV"
|
||||
power_dict['soc_voltage'] = f"{power_measure['soc_voltage']} mV"
|
||||
power_dict['mem_voltage'] = f"{power_measure['mem_voltage']} mV"
|
||||
power_dict['current_power'] = f"{power_measure['average_socket_power']} W"
|
||||
power_dict['current_gfx_voltage'] = f"{power_measure['gfx_voltage']} mV"
|
||||
power_dict['current_soc_voltage'] = f"{power_measure['soc_voltage']} mV"
|
||||
power_dict['current_mem_voltage'] = f"{power_measure['mem_voltage']} mV"
|
||||
power_dict['power_limit'] = f"{power_measure['power_limit']} W"
|
||||
except amdsmi_exception.AmdSmiLibraryException as e:
|
||||
logging.debug("Failed to get power info for gpu %s | %s", args.gpu, e.get_error_info())
|
||||
|
||||
if self.logger.is_gpuvsmi_compatibility():
|
||||
power_dict['current_power'] = power_dict.pop('average_socket_power')
|
||||
power_dict['current_voltage'] = power_dict.pop('gfx_voltage')
|
||||
power_dict['current_soc_voltage'] = power_dict.pop('soc_voltage')
|
||||
power_dict['current_mem_voltage'] = power_dict.pop('mem_voltage')
|
||||
|
||||
try:
|
||||
power_dict['current_fan_rpm'] = amdsmi_interface.amdsmi_get_gpu_fan_rpms(args.gpu, 0)
|
||||
if self.logger.is_human_readable_format():
|
||||
power_dict['current_fan_rpm'] = f"{power_dict['current_fan_rpm']} RPM"
|
||||
except amdsmi_exception.AmdSmiLibraryException as e:
|
||||
power_dict['current_fan_rpm'] = "N/A"
|
||||
logging.debug("Failed to get fan rpm for gpu %s | %s", args.gpu, e.get_error_info())
|
||||
|
||||
values_dict['power'] = power_dict
|
||||
if args.clock:
|
||||
try:
|
||||
|
||||
@@ -946,7 +946,7 @@ def amdsmi_get_gpu_driver_info(
|
||||
|
||||
def amdsmi_get_power_info(
|
||||
processor_handle: amdsmi_wrapper.amdsmi_processor_handle,
|
||||
) -> Dict[str, Any]:
|
||||
) -> Dict[str, ctypes.c_uint32]:
|
||||
if not isinstance(processor_handle, amdsmi_wrapper.amdsmi_processor_handle):
|
||||
raise AmdSmiParameterException(
|
||||
processor_handle, amdsmi_wrapper.amdsmi_processor_handle
|
||||
|
||||
@@ -1668,37 +1668,36 @@ amdsmi_get_power_info(amdsmi_processor_handle processor_handle, amdsmi_power_inf
|
||||
if (info == nullptr) {
|
||||
return AMDSMI_STATUS_INVAL;
|
||||
}
|
||||
|
||||
amdsmi_gpu_metrics_t metrics = {};
|
||||
amd::smi::AMDSmiGPUDevice* gpu_device = nullptr;
|
||||
amdsmi_status_t r = get_gpu_device_from_handle(processor_handle, &gpu_device);
|
||||
if (r != AMDSMI_STATUS_SUCCESS)
|
||||
return r;
|
||||
|
||||
amdsmi_status_t status;
|
||||
|
||||
status = amdsmi_get_gpu_metrics_info(processor_handle, &metrics);
|
||||
if (status != AMDSMI_STATUS_SUCCESS) {
|
||||
amd::smi::AMDSmiGPUDevice* gpu_device = nullptr;
|
||||
status = get_gpu_device_from_handle(processor_handle, &gpu_device);
|
||||
if (status != AMDSMI_STATUS_SUCCESS)
|
||||
return status;
|
||||
|
||||
info->average_socket_power = 0xFFFFFFFF;
|
||||
info->gfx_voltage = 0xFFFFFFFF;
|
||||
info->soc_voltage = 0xFFFFFFFF; // Not implmented yet
|
||||
info->mem_voltage = 0xFFFFFFFF; // Not implmented yet
|
||||
info->power_limit = 0xFFFFFFFF;
|
||||
|
||||
amdsmi_gpu_metrics_t metrics = {};
|
||||
status = amdsmi_get_gpu_metrics_info(processor_handle, &metrics);
|
||||
if (status == AMDSMI_STATUS_SUCCESS) {
|
||||
info->average_socket_power = metrics.average_socket_power;
|
||||
}
|
||||
|
||||
int64_t voltage_read = 0;
|
||||
|
||||
status = amdsmi_get_gpu_volt_metric(processor_handle, AMDSMI_VOLT_TYPE_VDDGFX, AMDSMI_VOLT_CURRENT, &voltage_read);
|
||||
if (status != AMDSMI_STATUS_SUCCESS) {
|
||||
return status;
|
||||
status = amdsmi_get_gpu_volt_metric(processor_handle, AMDSMI_VOLT_TYPE_VDDGFX, AMDSMI_VOLT_CURRENT, &voltage_read);
|
||||
if (status == AMDSMI_STATUS_SUCCESS) {
|
||||
info->gfx_voltage = voltage_read;
|
||||
}
|
||||
|
||||
int power_limit = 0;
|
||||
status = smi_amdgpu_get_power_cap(gpu_device, &power_limit);
|
||||
if (status != AMDSMI_STATUS_SUCCESS) {
|
||||
return status;
|
||||
if (status == AMDSMI_STATUS_SUCCESS) {
|
||||
info->power_limit = power_limit;
|
||||
}
|
||||
info->power_limit = power_limit;
|
||||
|
||||
info->gfx_voltage = voltage_read;
|
||||
|
||||
info->average_socket_power = metrics.average_socket_power;
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
Ссылка в новой задаче
Block a user