Added support for configuring PPT1 power cap

- Updated python integration test to account for PPT1 support changes
  - Updated set/reset power-cap input format
  - Adjusted python API and updated C++ API test

Signed-off-by: gabrpham_amdeng <Gabriel.Pham@amd.com>
Change-Id: Ia9d02868b6e91c88c10a9772d9e2d9f37c3c352f
This commit is contained in:
gabrpham_amdeng
2025-10-30 09:48:35 -05:00
committed by Arif, Maisam
parent 4dfe74eb72
commit 18faddf6f3
17 changed files with 591 additions and 245 deletions
+29 -2
View File
@@ -605,6 +605,11 @@ class AmdSmiAffinityScope(IntEnum):
SOCKET_SCOPE = amdsmi_wrapper.AMDSMI_AFFINITY_SCOPE_SOCKET
class AmdSmiPowerCapType(IntEnum):
PPT0 = amdsmi_wrapper.AMDSMI_POWER_CAP_TYPE_PPT0
PPT1 = amdsmi_wrapper.AMDSMI_POWER_CAP_TYPE_PPT1
class AmdSmiEventReader:
def __init__(
self,
@@ -2154,9 +2159,32 @@ def amdsmi_get_gpu_kfd_info(
return kfd_info
def amdsmi_get_supported_power_cap(
processor_handle: processor_handle_t) ->Dict[str, Any]:
if not isinstance(processor_handle, amdsmi_wrapper.amdsmi_processor_handle):
raise AmdSmiParameterException(
processor_handle, amdsmi_wrapper.amdsmi_processor_handle
)
CONST_AMDSMI_MAX_POWER_SENSORS = 2
sensor_count = ctypes.c_uint32()
sensor_ind = (ctypes.c_uint32 * CONST_AMDSMI_MAX_POWER_SENSORS)()
sensor_types = (amdsmi_wrapper.amdsmi_power_cap_type_t * CONST_AMDSMI_MAX_POWER_SENSORS)()
_check_res(
amdsmi_wrapper.amdsmi_get_supported_power_cap(
processor_handle, ctypes.byref(sensor_count), sensor_ind, sensor_types
)
)
return {
"sensor_inds": [sensor_ind[i] for i in range(sensor_count.value)],
"sensor_types": [AmdSmiPowerCapType(sensor_types[i]) for i in range(sensor_count.value)]
}
def amdsmi_get_power_cap_info(
processor_handle: processor_handle_t,
sensor_ind: int = 0
) -> Dict[str, Any]:
if not isinstance(processor_handle, amdsmi_wrapper.amdsmi_processor_handle):
raise AmdSmiParameterException(
@@ -2166,7 +2194,7 @@ def amdsmi_get_power_cap_info(
power_cap_info = amdsmi_wrapper.amdsmi_power_cap_info_t()
_check_res(
amdsmi_wrapper.amdsmi_get_power_cap_info(
processor_handle, ctypes.c_uint32(0), ctypes.byref(power_cap_info)
processor_handle, sensor_ind, ctypes.byref(power_cap_info)
)
)
@@ -2176,7 +2204,6 @@ def amdsmi_get_power_cap_info(
"min_power_cap": power_cap_info.min_power_cap,
"max_power_cap": power_cap_info.max_power_cap}
def _get_name_value(num, data) -> List[Dict[str, int]]:
"""
Extracts a list of name-value pairs from a ctypes array buffer.