SWDEV-417124 - Implement Power Management
Signed-off-by: Maisam Arif <maisarif@amd.com> Change-Id: Ib0d37038e49cec61d5415076a46a5666d95dcea2
This commit is contained in:
committed by
Galantsev, Dmitrii
parent
a6af1769b9
commit
e4fac177c1
@@ -1641,6 +1641,33 @@ except AmdSmiException as e:
|
||||
print(e)
|
||||
```
|
||||
|
||||
## amdsmi_is_gpu_power_management_enabled
|
||||
Description: Returns is power management enabled
|
||||
|
||||
Input parameters:
|
||||
* `processor_handle` GPU device which to query
|
||||
|
||||
Output: Bool true if power management enabled else false
|
||||
|
||||
Exceptions that can be thrown by `amdsmi_is_gpu_power_management_enabled` function:
|
||||
* `AmdSmiLibraryException`
|
||||
* `AmdSmiRetryException`
|
||||
* `AmdSmiParameterException`
|
||||
|
||||
Example:
|
||||
```python
|
||||
try:
|
||||
processors = amdsmi_get_processor_handles()
|
||||
if len(processors) == 0:
|
||||
print("No GPUs on machine")
|
||||
else:
|
||||
for processor in processors:
|
||||
is_power_management_enabled = amdsmi_is_gpu_power_management_enabled(processor)
|
||||
print(is_power_management_enabled)
|
||||
except AmdSmiException as e:
|
||||
print(e)
|
||||
```
|
||||
|
||||
### amdsmi_get_temp_metric
|
||||
|
||||
Description: Get the temperature metric value for the specified metric, from the
|
||||
|
||||
@@ -99,7 +99,7 @@ from .amdsmi_interface import amdsmi_get_clk_freq
|
||||
from .amdsmi_interface import amdsmi_get_gpu_od_volt_info
|
||||
from .amdsmi_interface import amdsmi_get_gpu_metrics_info
|
||||
from .amdsmi_interface import amdsmi_get_gpu_od_volt_curve_regions
|
||||
from .amdsmi_interface import amdsmi_get_gpu_power_profile_presets
|
||||
from .amdsmi_interface import amdsmi_is_gpu_power_management_enabled
|
||||
|
||||
# # Performance Counters
|
||||
from .amdsmi_interface import amdsmi_gpu_counter_group_supported
|
||||
|
||||
@@ -962,12 +962,28 @@ def amdsmi_get_power_info(
|
||||
return {
|
||||
"average_socket_power": power_measure.average_socket_power,
|
||||
"gfx_voltage": power_measure.gfx_voltage,
|
||||
'soc_voltage': power_measure.soc_voltage,
|
||||
'mem_voltage': power_measure.mem_voltage,
|
||||
"soc_voltage": power_measure.soc_voltage,
|
||||
"mem_voltage": power_measure.mem_voltage,
|
||||
"power_limit" : power_measure.power_limit,
|
||||
}
|
||||
|
||||
|
||||
def amdsmi_is_gpu_power_management_enabled(
|
||||
processor_handle: amdsmi_wrapper.amdsmi_processor_handle
|
||||
) -> bool:
|
||||
if not isinstance(processor_handle, amdsmi_wrapper.amdsmi_processor_handle):
|
||||
raise AmdSmiParameterException(processor_handle, amdsmi_wrapper.amdsmi_processor_handle)
|
||||
|
||||
is_power_management_enabled = ctypes.c_bool()
|
||||
_check_res(
|
||||
amdsmi_wrapper.amdsmi_is_gpu_power_management_enabled(
|
||||
processor_handle, ctypes.byref(is_power_management_enabled)
|
||||
)
|
||||
)
|
||||
|
||||
return is_power_management_enabled.value
|
||||
|
||||
|
||||
def amdsmi_get_fw_info(
|
||||
processor_handle: amdsmi_wrapper.amdsmi_processor_handle
|
||||
) -> List[Dict[str, Any]]:
|
||||
|
||||
@@ -276,6 +276,7 @@ amdsmi_status_t__enumvalues = {
|
||||
31: 'AMDSMI_STATUS_NOT_FOUND',
|
||||
32: 'AMDSMI_STATUS_NOT_INIT',
|
||||
33: 'AMDSMI_STATUS_NO_SLOT',
|
||||
34: 'AMDSMI_STATUS_DRIVER_NOT_LOADED',
|
||||
40: 'AMDSMI_STATUS_NO_DATA',
|
||||
41: 'AMDSMI_STATUS_INSUFFICIENT_SIZE',
|
||||
42: 'AMDSMI_STATUS_UNEXPECTED_SIZE',
|
||||
@@ -317,6 +318,7 @@ AMDSMI_STATUS_BUSY = 30
|
||||
AMDSMI_STATUS_NOT_FOUND = 31
|
||||
AMDSMI_STATUS_NOT_INIT = 32
|
||||
AMDSMI_STATUS_NO_SLOT = 33
|
||||
AMDSMI_STATUS_DRIVER_NOT_LOADED = 34
|
||||
AMDSMI_STATUS_NO_DATA = 40
|
||||
AMDSMI_STATUS_INSUFFICIENT_SIZE = 41
|
||||
AMDSMI_STATUS_UNEXPECTED_SIZE = 42
|
||||
@@ -1712,6 +1714,9 @@ amdsmi_get_gpu_activity.argtypes = [amdsmi_processor_handle, ctypes.POINTER(stru
|
||||
amdsmi_get_power_info = _libraries['libamd_smi.so'].amdsmi_get_power_info
|
||||
amdsmi_get_power_info.restype = amdsmi_status_t
|
||||
amdsmi_get_power_info.argtypes = [amdsmi_processor_handle, ctypes.POINTER(struct_amdsmi_power_info_t)]
|
||||
amdsmi_is_gpu_power_management_enabled = _libraries['libamd_smi.so'].amdsmi_is_gpu_power_management_enabled
|
||||
amdsmi_is_gpu_power_management_enabled.restype = amdsmi_status_t
|
||||
amdsmi_is_gpu_power_management_enabled.argtypes = [amdsmi_processor_handle, ctypes.POINTER(ctypes.c_bool)]
|
||||
amdsmi_get_clock_info = _libraries['libamd_smi.so'].amdsmi_get_clock_info
|
||||
amdsmi_get_clock_info.restype = amdsmi_status_t
|
||||
amdsmi_get_clock_info.argtypes = [amdsmi_processor_handle, amdsmi_clk_type_t, ctypes.POINTER(struct_amdsmi_clk_info_t)]
|
||||
@@ -1794,7 +1799,8 @@ __all__ = \
|
||||
'AMDSMI_RAS_ERR_STATE_PARITY', 'AMDSMI_RAS_ERR_STATE_POISON',
|
||||
'AMDSMI_RAS_ERR_STATE_SING_C', 'AMDSMI_STATUS_ADDRESS_FAULT',
|
||||
'AMDSMI_STATUS_API_FAILED', 'AMDSMI_STATUS_BUSY',
|
||||
'AMDSMI_STATUS_DRM_ERROR', 'AMDSMI_STATUS_FAIL_LOAD_MODULE',
|
||||
'AMDSMI_STATUS_DRIVER_NOT_LOADED', 'AMDSMI_STATUS_DRM_ERROR',
|
||||
'AMDSMI_STATUS_FAIL_LOAD_MODULE',
|
||||
'AMDSMI_STATUS_FAIL_LOAD_SYMBOL', 'AMDSMI_STATUS_FILE_ERROR',
|
||||
'AMDSMI_STATUS_INIT_ERROR', 'AMDSMI_STATUS_INPUT_OUT_OF_BOUNDS',
|
||||
'AMDSMI_STATUS_INSUFFICIENT_SIZE',
|
||||
@@ -1936,6 +1942,7 @@ __all__ = \
|
||||
'amdsmi_gpu_read_counter', 'amdsmi_gpu_xgmi_error_status',
|
||||
'amdsmi_init', 'amdsmi_init_flags_t',
|
||||
'amdsmi_init_gpu_event_notification', 'amdsmi_is_P2P_accessible',
|
||||
'amdsmi_is_gpu_power_management_enabled',
|
||||
'amdsmi_memory_page_status_t', 'amdsmi_memory_type_t',
|
||||
'amdsmi_mm_ip_t', 'amdsmi_od_vddc_point_t',
|
||||
'amdsmi_od_volt_curve_t', 'amdsmi_od_volt_freq_data_t',
|
||||
|
||||
Reference in New Issue
Block a user