Align header changes with other platforms

Change-Id: I366e57310e0504855692626e2b2014bea235ed6b
Signed-off-by: Dalibor Stanisavljevic <Dalibor.Stanisavljevic@amd.com>
This commit is contained in:
Dalibor Stanisavljevic
2023-06-01 14:46:21 +02:00
förälder 1185397d90
incheckning 8dbc1d7d57
13 ändrade filer med 357 tillägg och 196 borttagningar
+4 -4
Visa fil
@@ -52,7 +52,7 @@ try:
print("No GPUs on machine")
except AmdSmiException as e:
print("Error code: {}".format(e.err_code))
if e.err_code == AmdSmiRetCode.ERR_RETRY:
if e.err_code == AmdSmiRetCode.STATUS_RETRY:
print("Error info: {}".format(e.err_info))
```
* `AmdSmiRetryException` : Derives `AmdSmiLibraryException` class and signals device is busy and call should be retried.
@@ -335,7 +335,7 @@ Field | Description
---|---
`power_cap` | power capability
`dpm_cap` | dynamic power management capability
`power_cap_default` | default power capability
`default_power_cap` | default power capability
`min_power_cap` | min power capability
`max_power_cap` | max power capability
@@ -355,7 +355,7 @@ try:
power_info = amdsmi_get_power_cap_info(device)
print(power_info['power_cap'])
print(power_info['dpm_cap'])
print(power_info['power_cap_default'])
print(power_info['default_power_cap'])
print(power_info['min_power_cap'])
print(power_info['max_power_cap'])
except AmdSmiException as e:
@@ -559,8 +559,8 @@ Output: Dictionary with fields
Field | Description
---|---
`cur_clk`| Current clock for given clock type
`min_clk` | Minimum clock for given clock type
`max_clk` | Maximum clock for given clock type
`min_clk` | Minimum clock for given clock type
Exceptions that can be thrown by `amdsmi_get_clock_info` function:
* `AmdSmiLibraryException`
+1
Visa fil
@@ -186,6 +186,7 @@ from .amdsmi_interface import AmdSmiXgmiStatus
from .amdsmi_interface import AmdSmiMemoryPageStatus
from .amdsmi_interface import AmdSmiIoLinkType
from .amdsmi_interface import AmdSmiUtilizationCounterType
from .amdsmi_interface import AmdSmiProcessorType
# Exceptions
from .amdsmi_exception import AmdSmiLibraryException
+52 -52
Visa fil
@@ -24,32 +24,32 @@ from . import amdsmi_wrapper
class AmdSmiRetCode(IntEnum):
SUCCESS = amdsmi_wrapper.AMDSMI_STATUS_SUCCESS
ERR_INVAL = amdsmi_wrapper.AMDSMI_STATUS_INVAL
ERR_NOT_SUPPORTED = amdsmi_wrapper.AMDSMI_STATUS_NOT_SUPPORTED
FILE_ERROR = amdsmi_wrapper.AMDSMI_STATUS_FILE_ERROR
ERR_NO_PERM = amdsmi_wrapper.AMDSMI_STATUS_NO_PERM
ERR_OUT_OF_RESOURCES = amdsmi_wrapper.AMDSMI_STATUS_OUT_OF_RESOURCES
INTERNAL_EXCEPTION = amdsmi_wrapper.AMDSMI_STATUS_INTERNAL_EXCEPTION
INPUT_OUT_OF_BOUNDS = amdsmi_wrapper.AMDSMI_STATUS_INPUT_OUT_OF_BOUNDS
INIT_ERROR = amdsmi_wrapper.AMDSMI_STATUS_INIT_ERROR
NOT_IMPLEMENTED = amdsmi_wrapper.AMDSMI_STATUS_NOT_YET_IMPLEMENTED
ERR_NOT_FOUND = amdsmi_wrapper.AMDSMI_STATUS_NOT_FOUND
INSUFFICIENT_SIZE = amdsmi_wrapper.AMDSMI_STATUS_INSUFFICIENT_SIZE
INTERRUPT = amdsmi_wrapper.AMDSMI_STATUS_INTERRUPT
UNEXPECTED_SIZE = amdsmi_wrapper.AMDSMI_STATUS_UNEXPECTED_SIZE
NO_DATA = amdsmi_wrapper.AMDSMI_STATUS_NO_DATA
UNEXPECTED_DATA = amdsmi_wrapper.AMDSMI_STATUS_UNEXPECTED_DATA
ERR_BUSY = amdsmi_wrapper.AMDSMI_STATUS_BUSY
REFCOUNT_OVERFLOW = amdsmi_wrapper.AMDSMI_STATUS_REFCOUNT_OVERFLOW
FAIL_LOAD_MODULE = amdsmi_wrapper.AMDSMI_STATUS_FAIL_LOAD_MODULE
FAIL_LOAD_SYMBOL = amdsmi_wrapper.AMDSMI_STATUS_FAIL_LOAD_SYMBOL
DRM_ERROR = amdsmi_wrapper.AMDSMI_STATUS_DRM_ERROR
ERR_IO = amdsmi_wrapper.AMDSMI_STATUS_IO
API_FAILED = amdsmi_wrapper.AMDSMI_STATUS_API_FAILED
TIMEOUT = amdsmi_wrapper.AMDSMI_STATUS_TIMEOUT
NO_SLOT = amdsmi_wrapper.AMDSMI_STATUS_NO_SLOT
RETRY = amdsmi_wrapper.AMDSMI_STATUS_RETRY
NOT_INIT = amdsmi_wrapper.AMDSMI_STATUS_NOT_INIT
STATUS_INVAL = amdsmi_wrapper.AMDSMI_STATUS_INVAL
STATUS_NOT_SUPPORTED = amdsmi_wrapper.AMDSMI_STATUS_NOT_SUPPORTED
STATUS_FILE_ERROR = amdsmi_wrapper.AMDSMI_STATUS_FILE_ERROR
STATUS_NO_PERM = amdsmi_wrapper.AMDSMI_STATUS_NO_PERM
STATUS_OUT_OF_RESOURCES = amdsmi_wrapper.AMDSMI_STATUS_OUT_OF_RESOURCES
STATUS_INTERNAL_EXCEPTION = amdsmi_wrapper.AMDSMI_STATUS_INTERNAL_EXCEPTION
STATUS_INPUT_OUT_OF_BOUNDS = amdsmi_wrapper.AMDSMI_STATUS_INPUT_OUT_OF_BOUNDS
STATUS_INIT_ERROR = amdsmi_wrapper.AMDSMI_STATUS_INIT_ERROR
STATUS_NOT_YET_IMPLEMENTED = amdsmi_wrapper.AMDSMI_STATUS_NOT_YET_IMPLEMENTED
STATUS_NOT_FOUND = amdsmi_wrapper.AMDSMI_STATUS_NOT_FOUND
STATUS_INSUFFICIENT_SIZE = amdsmi_wrapper.AMDSMI_STATUS_INSUFFICIENT_SIZE
STATUS_INTERRUPT = amdsmi_wrapper.AMDSMI_STATUS_INTERRUPT
STATUS_UNEXPECTED_SIZE = amdsmi_wrapper.AMDSMI_STATUS_UNEXPECTED_SIZE
STATUS_NO_DATA = amdsmi_wrapper.AMDSMI_STATUS_NO_DATA
STATUS_UNEXPECTED_DATA = amdsmi_wrapper.AMDSMI_STATUS_UNEXPECTED_DATA
STATUS_BUSY = amdsmi_wrapper.AMDSMI_STATUS_BUSY
STATUS_REFCOUNT_OVERFLOW = amdsmi_wrapper.AMDSMI_STATUS_REFCOUNT_OVERFLOW
STATUS_FAIL_LOAD_MODULE = amdsmi_wrapper.AMDSMI_STATUS_FAIL_LOAD_MODULE
STATUS_FAIL_LOAD_SYMBOL = amdsmi_wrapper.AMDSMI_STATUS_FAIL_LOAD_SYMBOL
STATUS_DRM_ERROR = amdsmi_wrapper.AMDSMI_STATUS_DRM_ERROR
STATUS_IO = amdsmi_wrapper.AMDSMI_STATUS_IO
STATUS_API_FAILED = amdsmi_wrapper.AMDSMI_STATUS_API_FAILED
STATUS_TIMEOUT = amdsmi_wrapper.AMDSMI_STATUS_TIMEOUT
STATUS_NO_SLOT = amdsmi_wrapper.AMDSMI_STATUS_NO_SLOT
STATUS_RETRY = amdsmi_wrapper.AMDSMI_STATUS_RETRY
STATUS_NOT_INIT = amdsmi_wrapper.AMDSMI_STATUS_NOT_INIT
UNKNOWN_ERROR = amdsmi_wrapper.AMDSMI_STATUS_UNKNOWN_ERROR
@@ -79,32 +79,32 @@ class AmdSmiLibraryException(AmdSmiException):
def set_err_info(self):
switch = {
AmdSmiRetCode.ERR_INVAL: "AMDSMI_STATUS_INVAL - Invalid parameters",
AmdSmiRetCode.ERR_NOT_SUPPORTED: "AMDSMI_STATUS_NOT_SUPPORTED - Feature not supported",
AmdSmiRetCode.FILE_ERROR: "AMDSMI_STATUS_FILE_ERROR - Error opening file",
AmdSmiRetCode.ERR_OUT_OF_RESOURCES: "AMDSMI_STATUS_OUT_OF_RESOURCES - Not enough memory",
AmdSmiRetCode.INTERNAL_EXCEPTION: "AMDSMI_STATUS_INTERNAL_EXCEPTION - Internal error",
AmdSmiRetCode.ERR_NO_PERM: "AMDSMI_STATUS_NO_PERM - Permission Denied",
AmdSmiRetCode.INPUT_OUT_OF_BOUNDS: "AMDSMI_STATUS_INPUT_OUT_OF_BOUNDS - Out of bounds",
AmdSmiRetCode.INIT_ERROR: "AMDSMI_STATUS_INIT_ERROR - Initialization error",
AmdSmiRetCode.ERR_BUSY: "AMDSMI_STATUS_BUSY - Device busy",
AmdSmiRetCode.ERR_NOT_FOUND: "AMDSMI_STATUS_NOT_FOUND - Device Not found",
AmdSmiRetCode.ERR_IO: "AMDSMI_STATUS_IO - I/O Error",
AmdSmiRetCode.NOT_IMPLEMENTED: "AMDSMI_STATUS_NOT_YET_IMPLEMENTED - Feature not yet implemented",
AmdSmiRetCode.INSUFFICIENT_SIZE: "AMDSMI_STATUS_INSUFFICIENT_SIZE - Insufficient size for operation",
AmdSmiRetCode.INTERRUPT: "AMDSMI_STATUS_INTERRUPT - Interrupt ocurred during execution",
AmdSmiRetCode.UNEXPECTED_SIZE: "AMDSMI_STATUS_UNEXPECTED_SIZE - unexpected size of data was read",
AmdSmiRetCode.NO_DATA: "AMDSMI_STATUS_NO_DATA - No data was found for given input",
AmdSmiRetCode.UNEXPECTED_DATA: "AMDSMI_STATUS_UNEXPECTED_DATA - The data read or provided was unexpected",
AmdSmiRetCode.REFCOUNT_OVERFLOW: "AMDSMI_STATUS_REFCOUNT_OVERFLOW - Internal reference counter exceeded INT32_MAX",
AmdSmiRetCode.FAIL_LOAD_MODULE: "AMDSMI_STATUS_FAIL_LOAD_MODULE - Fail to load lib",
AmdSmiRetCode.FAIL_LOAD_SYMBOL: "AMDSMI_STATUS_FAIL_LOAD_SYMBOL - Fail to load symbol",
AmdSmiRetCode.DRM_ERROR: "AMDSMI_STATUS_DRM_ERROR - Error when called libdrm",
AmdSmiRetCode.API_FAILED: "AMDSMI_STATUS_API_FAILED - API call failed",
AmdSmiRetCode.TIMEOUT: "AMDSMI_STATUS_TIMEOUT - Timeout in API call",
AmdSmiRetCode.NO_SLOT: "AMDSMI_STATUS_NO_SLOT - No more free slot",
AmdSmiRetCode.RETRY: "AMDSMI_STATUS_RETRY - Retry operation",
AmdSmiRetCode.NOT_INIT: "AMDSMI_STATUS_NOT_INIT - Device not initialized",
AmdSmiRetCode.STATUS_INVAL: "AMDSMI_STATUS_INVAL - Invalid parameters",
AmdSmiRetCode.STATUS_NOT_SUPPORTED: "AMDSMI_STATUS_NOT_SUPPORTED - Feature not supported",
AmdSmiRetCode.STATUS_FILE_ERROR: "AMDSMI_STATUS_FILE_ERROR - Error opening file",
AmdSmiRetCode.STATUS_OUT_OF_RESOURCES: "AMDSMI_STATUS_OUT_OF_RESOURCES - Not enough memory",
AmdSmiRetCode.STATUS_INTERNAL_EXCEPTION: "AMDSMI_STATUS_INTERNAL_EXCEPTION - Internal error",
AmdSmiRetCode.STATUS_NO_PERM: "AMDSMI_STATUS_NO_PERM - Permission Denied",
AmdSmiRetCode.STATUS_INPUT_OUT_OF_BOUNDS: "AMDSMI_STATUS_INPUT_OUT_OF_BOUNDS - Out of bounds",
AmdSmiRetCode.STATUS_INIT_ERROR: "AMDSMI_STATUS_INIT_ERROR - Initialization error",
AmdSmiRetCode.STATUS_BUSY: "AMDSMI_STATUS_BUSY - Device busy",
AmdSmiRetCode.STATUS_NOT_FOUND: "AMDSMI_STATUS_NOT_FOUND - Device Not found",
AmdSmiRetCode.STATUS_IO: "AMDSMI_STATUS_IO - I/O Error",
AmdSmiRetCode.STATUS_NOT_YET_IMPLEMENTED: "AMDSMI_STATUS_NOT_YET_IMPLEMENTED - Feature not yet implemented",
AmdSmiRetCode.STATUS_INSUFFICIENT_SIZE: "AMDSMI_STATUS_INSUFFICIENT_SIZE - Insufficient size for operation",
AmdSmiRetCode.STATUS_INTERRUPT: "AMDSMI_STATUS_INTERRUPT - Interrupt ocurred during execution",
AmdSmiRetCode.STATUS_UNEXPECTED_SIZE: "AMDSMI_STATUS_UNEXPECTED_SIZE - unexpected size of data was read",
AmdSmiRetCode.STATUS_NO_DATA: "AMDSMI_STATUS_NO_DATA - No data was found for given input",
AmdSmiRetCode.STATUS_UNEXPECTED_DATA: "AMDSMI_STATUS_UNEXPECTED_DATA - The data read or provided was unexpected",
AmdSmiRetCode.STATUS_REFCOUNT_OVERFLOW: "AMDSMI_STATUS_REFCOUNT_OVERFLOW - Internal reference counter exceeded INT32_MAX",
AmdSmiRetCode.STATUS_FAIL_LOAD_MODULE: "AMDSMI_STATUS_FAIL_LOAD_MODULE - Fail to load lib",
AmdSmiRetCode.STATUS_FAIL_LOAD_SYMBOL: "AMDSMI_STATUS_FAIL_LOAD_SYMBOL - Fail to load symbol",
AmdSmiRetCode.STATUS_DRM_ERROR: "AMDSMI_STATUS_DRM_ERROR - Error when called libdrm",
AmdSmiRetCode.STATUS_API_FAILED: "AMDSMI_STATUS_API_FAILED - API call failed",
AmdSmiRetCode.STATUS_TIMEOUT: "AMDSMI_STATUS_TIMEOUT - Timeout in API call",
AmdSmiRetCode.STATUS_NO_SLOT: "AMDSMI_STATUS_NO_SLOT - No more free slot",
AmdSmiRetCode.STATUS_RETRY: "AMDSMI_STATUS_RETRY - Retry operation",
AmdSmiRetCode.STATUS_NOT_INIT: "AMDSMI_STATUS_NOT_INIT - Device not initialized",
}
self.err_info = switch.get(self.err_code, "AMDSMI_STATUS_UNKNOWN_ERROR - An unknown error occurred")
+68 -23
Visa fil
@@ -29,11 +29,11 @@ from . import amdsmi_wrapper
from .amdsmi_exception import *
class AmdSmiInitFlags(IntEnum):
ALL_DEVICES = amdsmi_wrapper.AMDSMI_INIT_ALL_DEVICES
AMD_CPUS = amdsmi_wrapper.AMDSMI_INIT_AMD_CPUS
AMD_GPUS = amdsmi_wrapper.AMDSMI_INIT_AMD_GPUS
NON_AMD_CPUS = amdsmi_wrapper.AMDSMI_INIT_NON_AMD_CPUS
NON_AMD_GPUS = amdsmi_wrapper.AMDSMI_INIT_NON_AMD_GPUS
INIT_ALL_PROCESSORS = amdsmi_wrapper.AMDSMI_INIT_ALL_PROCESSORS
INIT_AMD_CPUS = amdsmi_wrapper.AMDSMI_INIT_AMD_CPUS
INIT_AMD_GPUS = amdsmi_wrapper.AMDSMI_INIT_AMD_GPUS
INIT_NON_AMD_CPUS = amdsmi_wrapper.AMDSMI_INIT_NON_AMD_CPUS
INIT_NON_AMD_GPUS = amdsmi_wrapper.AMDSMI_INIT_NON_AMD_GPUS
class AmdSmiContainerTypes(IntEnum):
@@ -94,6 +94,38 @@ class AmdSmiFwBlock(IntEnum):
FW_ID_MC = amdsmi_wrapper.FW_ID_MC
FW_ID_PSP_BL = amdsmi_wrapper.FW_ID_PSP_BL
FW_ID_CP_PM4 = amdsmi_wrapper.FW_ID_CP_PM4
FW_ID_RLC_P = amdsmi_wrapper.FW_ID_RLC_P
FW_ID_SEC_POLICY_STAGE2 = amdsmi_wrapper.FW_ID_SEC_POLICY_STAGE2
FW_ID_REG_ACCESS_WHITELIST = amdsmi_wrapper.FW_ID_REG_ACCESS_WHITELIST
FW_ID_IMU_DRAM = amdsmi_wrapper.FW_ID_IMU_DRAM
FW_ID_IMU_IRAM = amdsmi_wrapper.FW_ID_IMU_IRAM
FW_ID_SDMA_TH0 = amdsmi_wrapper.FW_ID_SDMA_TH0
FW_ID_SDMA_TH1 = amdsmi_wrapper.FW_ID_SDMA_TH1
FW_ID_CP_MES = amdsmi_wrapper.FW_ID_CP_MES
FW_ID_MES_STACK = amdsmi_wrapper.FW_ID_MES_STACK
FW_ID_MES_THREAD1 = amdsmi_wrapper.FW_ID_MES_THREAD1
FW_ID_MES_THREAD1_STACK = amdsmi_wrapper.FW_ID_MES_THREAD1_STACK
FW_ID_RLX6 = amdsmi_wrapper.FW_ID_RLX6
FW_ID_RLX6_DRAM_BOOT = amdsmi_wrapper.FW_ID_RLX6_DRAM_BOOT
FW_ID_RS64_ME = amdsmi_wrapper.FW_ID_RS64_ME
FW_ID_RS64_ME_P0_DATA = amdsmi_wrapper.FW_ID_RS64_ME_P0_DATA
FW_ID_RS64_ME_P1_DATA = amdsmi_wrapper.FW_ID_RS64_ME_P1_DATA
FW_ID_RS64_PFP = amdsmi_wrapper.FW_ID_RS64_PFP
FW_ID_RS64_PFP_P0_DATA = amdsmi_wrapper.FW_ID_RS64_PFP_P0_DATA
FW_ID_RS64_PFP_P1_DATA = amdsmi_wrapper.FW_ID_RS64_PFP_P1_DATA
FW_ID_RS64_MEC = amdsmi_wrapper.FW_ID_RS64_MEC
FW_ID_RS64_MEC_P0_DATA = amdsmi_wrapper.FW_ID_RS64_MEC_P0_DATA
FW_ID_RS64_MEC_P1_DATA = amdsmi_wrapper.FW_ID_RS64_MEC_P1_DATA
FW_ID_RS64_MEC_P2_DATA = amdsmi_wrapper.FW_ID_RS64_MEC_P2_DATA
FW_ID_RS64_MEC_P3_DATA = amdsmi_wrapper.FW_ID_RS64_MEC_P3_DATA
FW_ID_PPTABLE = amdsmi_wrapper.FW_ID_PPTABLE
FW_ID_PSP_SOC = amdsmi_wrapper.FW_ID_PSP_SOC
FW_ID_PSP_DBG = amdsmi_wrapper.FW_ID_PSP_DBG
FW_ID_PSP_INTF = amdsmi_wrapper.FW_ID_PSP_INTF
FW_ID_RLX6_CORE1 = amdsmi_wrapper.FW_ID_RLX6_CORE1
FW_ID_RLX6_DRAM_BOOT_CORE1 = amdsmi_wrapper.FW_ID_RLX6_DRAM_BOOT_CORE1
FW_ID_RLCV_LX7 = amdsmi_wrapper.FW_ID_RLCV_LX7
FW_ID_RLC_SAVE_RESTORE_LIST = amdsmi_wrapper.FW_ID_RLC_SAVE_RESTORE_LIST
FW_ID_ASD = amdsmi_wrapper.FW_ID_ASD
FW_ID_TA_RAS = amdsmi_wrapper.FW_ID_TA_RAS
FW_ID_XGMI = amdsmi_wrapper.FW_ID_XGMI
@@ -286,6 +318,13 @@ class AmdSmiUtilizationCounterType(IntEnum):
COARSE_GRAIN_GFX_ACTIVITY = amdsmi_wrapper.AMDSMI_COARSE_GRAIN_GFX_ACTIVITY
COARSE_GRAIN_MEM_ACTIVITY = amdsmi_wrapper.AMDSMI_COARSE_GRAIN_MEM_ACTIVITY
class AmdSmiProcessorType(IntEnum):
UNKNOWN = amdsmi_wrapper.UNKNOWN
AMD_GPU = amdsmi_wrapper.AMD_GPU
AMD_CPU = amdsmi_wrapper.AMD_CPU
NON_AMD_GPU = amdsmi_wrapper.NON_AMD_GPU
NON_AMD_CPU = amdsmi_wrapper.NON_AMD_CPU
class AmdSmiEventReader:
def __init__(
@@ -499,7 +538,7 @@ def amdsmi_get_socket_info(socket_handle):
_check_res(
amdsmi_wrapper.amdsmi_get_socket_info(
socket_handle, socket_info, ctypes.c_size_t(128))
socket_handle, ctypes.c_size_t(128), socket_info)
)
return socket_info.value.decode()
@@ -536,7 +575,7 @@ def amdsmi_get_processor_handles() -> List[amdsmi_wrapper.amdsmi_processor_handl
return devices
def amdsmi_init(flag=AmdSmiInitFlags.AMD_GPUS):
def amdsmi_init(flag=AmdSmiInitFlags.INIT_AMD_GPUS):
if not isinstance(flag, AmdSmiInitFlags):
raise AmdSmiParameterException(flag, AmdSmiInitFlags)
_check_res(amdsmi_wrapper.amdsmi_init(flag))
@@ -559,7 +598,10 @@ def amdsmi_get_processor_type(
amdsmi_wrapper.amdsmi_get_processor_type(
processor_handle, ctypes.byref(dev_type))
)
return dev_type.value
return {
"processor_type": AmdSmiProcessorType(dev_type.value).name
}
def amdsmi_get_gpu_device_bdf(processor_handle: amdsmi_wrapper.amdsmi_processor_handle) -> str:
@@ -594,6 +636,7 @@ def amdsmi_get_gpu_asic_info(
return {
"market_name": asic_info.market_name.decode("utf-8"),
"vendor_id": asic_info.vendor_id,
"subvendor_id": asic_info.subvendor_id,
"device_id": asic_info.device_id,
"rev_id": asic_info.rev_id,
"asic_serial": asic_info.asic_serial.decode("utf-8"),
@@ -616,8 +659,8 @@ def amdsmi_get_power_cap_info(
)
return {"power_cap": power_info.power_cap,
"default_power_cap": power_info.default_power_cap,
"dpm_cap": power_info.dpm_cap,
"power_cap_default": power_info.default_power_cap,
"min_power_cap": power_info.min_power_cap,
"max_power_cap": power_info.max_power_cap}
@@ -638,9 +681,9 @@ def amdsmi_get_gpu_vbios_info(
return {
"name": vbios_info.name.decode("utf-8"),
"version": vbios_info.version.decode("utf-8"),
"build_date": vbios_info.build_date.decode("utf-8"),
"part_number": vbios_info.part_number.decode("utf-8"),
"version": vbios_info.version.decode("utf-8"),
}
@@ -668,7 +711,7 @@ def amdsmi_get_gpu_activity(
def amdsmi_get_clock_info(
processor_handle: amdsmi_wrapper.amdsmi_processor_handle,
clock_type: amdsmi_wrapper.amdsmi_clk_type_t,
clock_type: AmdSmiClkType,
) -> Dict[str, Any]:
if not isinstance(processor_handle, amdsmi_wrapper.amdsmi_processor_handle):
raise AmdSmiParameterException(
@@ -681,15 +724,15 @@ def amdsmi_get_clock_info(
_check_res(
amdsmi_wrapper.amdsmi_get_clock_info(
processor_handle,
amdsmi_wrapper.amdsmi_clk_type_t(clock_type),
clock_type,
ctypes.byref(clock_measure),
)
)
return {
"cur_clk": clock_measure.cur_clk,
"min_clk": clock_measure.min_clk,
"max_clk": clock_measure.max_clk,
"min_clk": clock_measure.min_clk,
}
@@ -824,44 +867,44 @@ def amdsmi_get_gpu_ras_block_features_enabled(
def amdsmi_get_gpu_process_list(
processor_handle: amdsmi_wrapper.amdsmi_processor_handle,
) -> List[amdsmi_wrapper.amdsmi_process_handle]:
) -> List[amdsmi_wrapper.amdsmi_process_handle_t]:
if not isinstance(processor_handle, amdsmi_wrapper.amdsmi_processor_handle):
raise AmdSmiParameterException(
processor_handle, amdsmi_wrapper.amdsmi_processor_handle
)
max_processes = ctypes.c_uint32(0)
process_list = (amdsmi_wrapper.amdsmi_process_handle *
process_list = (amdsmi_wrapper.amdsmi_process_handle_t *
max_processes.value)()
_check_res(
amdsmi_wrapper.amdsmi_get_gpu_process_list(
processor_handle, process_list, ctypes.byref(max_processes)
processor_handle, ctypes.byref(max_processes), process_list
)
)
process_list = (amdsmi_wrapper.amdsmi_process_handle *
process_list = (amdsmi_wrapper.amdsmi_process_handle_t *
max_processes.value)()
_check_res(
amdsmi_wrapper.amdsmi_get_gpu_process_list(
processor_handle, process_list, ctypes.byref(max_processes)
processor_handle, ctypes.byref(max_processes), process_list
)
)
return [amdsmi_wrapper.amdsmi_process_handle(x) for x in list(process_list)]
return [amdsmi_wrapper.amdsmi_process_handle_t(x) for x in list(process_list)]
def amdsmi_get_gpu_process_info(
processor_handle: amdsmi_wrapper.amdsmi_processor_handle,
process: amdsmi_wrapper.amdsmi_process_handle,
process: amdsmi_wrapper.amdsmi_process_handle_t,
) -> Dict[str, Any]:
if not isinstance(processor_handle, amdsmi_wrapper.amdsmi_processor_handle):
raise AmdSmiParameterException(
processor_handle, amdsmi_wrapper.amdsmi_processor_handle
)
if not isinstance(process, amdsmi_wrapper.amdsmi_process_handle):
if not isinstance(process, amdsmi_wrapper.amdsmi_process_handle_t):
raise AmdSmiParameterException(
process, amdsmi_wrapper.amdsmi_process_handle)
process, amdsmi_wrapper.amdsmi_process_handle_t)
info = amdsmi_wrapper.amdsmi_proc_info_t()
_check_res(
@@ -946,6 +989,8 @@ 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,
"power_limit" : power_measure.power_limit,
}
@@ -1019,7 +1064,7 @@ def amdsmi_get_pcie_link_caps(
processor_handle, ctypes.byref(pcie_info))
)
return {"pcie_lanes": pcie_info.pcie_lanes, "pcie_speed": pcie_info.pcie_speed}
return {"pcie_speed": pcie_info.pcie_speed, "pcie_lanes": pcie_info.pcie_lanes}
def amdsmi_get_processor_handle_from_bdf(bdf):
+123 -44
Visa fil
@@ -190,13 +190,13 @@ else:
# values for enumeration 'c__EA_amdsmi_init_flags_t'
c__EA_amdsmi_init_flags_t__enumvalues = {
0: 'AMDSMI_INIT_ALL_DEVICES',
0: 'AMDSMI_INIT_ALL_PROCESSORS',
1: 'AMDSMI_INIT_AMD_CPUS',
2: 'AMDSMI_INIT_AMD_GPUS',
4: 'AMDSMI_INIT_NON_AMD_CPUS',
8: 'AMDSMI_INIT_NON_AMD_GPUS',
}
AMDSMI_INIT_ALL_DEVICES = 0
AMDSMI_INIT_ALL_PROCESSORS = 0
AMDSMI_INIT_AMD_CPUS = 1
AMDSMI_INIT_AMD_GPUS = 2
AMDSMI_INIT_NON_AMD_CPUS = 4
@@ -418,14 +418,46 @@ c__EA_amdsmi_fw_block_t__enumvalues = {
36: 'FW_ID_MC',
37: 'FW_ID_PSP_BL',
38: 'FW_ID_CP_PM4',
39: 'FW_ID_ASD',
40: 'FW_ID_TA_RAS',
41: 'FW_ID_XGMI',
42: 'FW_ID_RLC_SRLG',
43: 'FW_ID_RLC_SRLS',
44: 'FW_ID_SMC',
45: 'FW_ID_DMCU',
46: 'FW_ID__MAX',
39: 'FW_ID_RLC_P',
40: 'FW_ID_SEC_POLICY_STAGE2',
41: 'FW_ID_REG_ACCESS_WHITELIST',
42: 'FW_ID_IMU_DRAM',
43: 'FW_ID_IMU_IRAM',
44: 'FW_ID_SDMA_TH0',
45: 'FW_ID_SDMA_TH1',
46: 'FW_ID_CP_MES',
47: 'FW_ID_MES_STACK',
48: 'FW_ID_MES_THREAD1',
49: 'FW_ID_MES_THREAD1_STACK',
50: 'FW_ID_RLX6',
51: 'FW_ID_RLX6_DRAM_BOOT',
52: 'FW_ID_RS64_ME',
53: 'FW_ID_RS64_ME_P0_DATA',
54: 'FW_ID_RS64_ME_P1_DATA',
55: 'FW_ID_RS64_PFP',
56: 'FW_ID_RS64_PFP_P0_DATA',
57: 'FW_ID_RS64_PFP_P1_DATA',
58: 'FW_ID_RS64_MEC',
59: 'FW_ID_RS64_MEC_P0_DATA',
60: 'FW_ID_RS64_MEC_P1_DATA',
61: 'FW_ID_RS64_MEC_P2_DATA',
62: 'FW_ID_RS64_MEC_P3_DATA',
63: 'FW_ID_PPTABLE',
64: 'FW_ID_PSP_SOC',
65: 'FW_ID_PSP_DBG',
66: 'FW_ID_PSP_INTF',
67: 'FW_ID_RLX6_CORE1',
68: 'FW_ID_RLX6_DRAM_BOOT_CORE1',
69: 'FW_ID_RLCV_LX7',
70: 'FW_ID_RLC_SAVE_RESTORE_LIST',
71: 'FW_ID_ASD',
72: 'FW_ID_TA_RAS',
73: 'FW_ID_XGMI',
74: 'FW_ID_RLC_SRLG',
75: 'FW_ID_RLC_SRLS',
76: 'FW_ID_SMC',
77: 'FW_ID_DMCU',
78: 'FW_ID__MAX',
}
FW_ID_SMU = 1
FW_ID_FIRST = 1
@@ -466,14 +498,46 @@ FW_ID_DRV_CAP = 35
FW_ID_MC = 36
FW_ID_PSP_BL = 37
FW_ID_CP_PM4 = 38
FW_ID_ASD = 39
FW_ID_TA_RAS = 40
FW_ID_XGMI = 41
FW_ID_RLC_SRLG = 42
FW_ID_RLC_SRLS = 43
FW_ID_SMC = 44
FW_ID_DMCU = 45
FW_ID__MAX = 46
FW_ID_RLC_P = 39
FW_ID_SEC_POLICY_STAGE2 = 40
FW_ID_REG_ACCESS_WHITELIST = 41
FW_ID_IMU_DRAM = 42
FW_ID_IMU_IRAM = 43
FW_ID_SDMA_TH0 = 44
FW_ID_SDMA_TH1 = 45
FW_ID_CP_MES = 46
FW_ID_MES_STACK = 47
FW_ID_MES_THREAD1 = 48
FW_ID_MES_THREAD1_STACK = 49
FW_ID_RLX6 = 50
FW_ID_RLX6_DRAM_BOOT = 51
FW_ID_RS64_ME = 52
FW_ID_RS64_ME_P0_DATA = 53
FW_ID_RS64_ME_P1_DATA = 54
FW_ID_RS64_PFP = 55
FW_ID_RS64_PFP_P0_DATA = 56
FW_ID_RS64_PFP_P1_DATA = 57
FW_ID_RS64_MEC = 58
FW_ID_RS64_MEC_P0_DATA = 59
FW_ID_RS64_MEC_P1_DATA = 60
FW_ID_RS64_MEC_P2_DATA = 61
FW_ID_RS64_MEC_P3_DATA = 62
FW_ID_PPTABLE = 63
FW_ID_PSP_SOC = 64
FW_ID_PSP_DBG = 65
FW_ID_PSP_INTF = 66
FW_ID_RLX6_CORE1 = 67
FW_ID_RLX6_DRAM_BOOT_CORE1 = 68
FW_ID_RLCV_LX7 = 69
FW_ID_RLC_SAVE_RESTORE_LIST = 70
FW_ID_ASD = 71
FW_ID_TA_RAS = 72
FW_ID_XGMI = 73
FW_ID_RLC_SRLG = 74
FW_ID_RLC_SRLS = 75
FW_ID_SMC = 76
FW_ID_DMCU = 77
FW_ID__MAX = 78
c__EA_amdsmi_fw_block_t = ctypes.c_uint32 # enum
amdsmi_fw_block_t = c__EA_amdsmi_fw_block_t
amdsmi_fw_block_t__enumvalues = c__EA_amdsmi_fw_block_t__enumvalues
@@ -509,6 +573,7 @@ struct_c__SA_amdsmi_vram_info_t._pack_ = 1 # source:False
struct_c__SA_amdsmi_vram_info_t._fields_ = [
('vram_total', ctypes.c_uint32),
('vram_used', ctypes.c_uint32),
('reserved', ctypes.c_uint32 * 2),
]
amdsmi_vram_info_t = struct_c__SA_amdsmi_vram_info_t
@@ -567,7 +632,7 @@ struct_c__SA_amdsmi_vbios_info_t._fields_ = [
('build_date', ctypes.c_char * 32),
('part_number', ctypes.c_char * 64),
('version', ctypes.c_char * 32),
('reserved', ctypes.c_uint32 * 15),
('reserved', ctypes.c_uint32 * 16),
]
amdsmi_vbios_info_t = struct_c__SA_amdsmi_vbios_info_t
@@ -589,7 +654,7 @@ struct_c__SA_amdsmi_fw_info_t._pack_ = 1 # source:False
struct_c__SA_amdsmi_fw_info_t._fields_ = [
('num_fw_info', ctypes.c_ubyte),
('PADDING_0', ctypes.c_ubyte * 7),
('fw_info_list', struct_c__SA_amdsmi_fw_info_t_0 * 46),
('fw_info_list', struct_c__SA_amdsmi_fw_info_t_0 * 78),
('reserved', ctypes.c_uint32 * 7),
('PADDING_1', ctypes.c_ubyte * 4),
]
@@ -606,7 +671,7 @@ struct_c__SA_amdsmi_asic_info_t._fields_ = [
('device_id', ctypes.c_uint64),
('rev_id', ctypes.c_uint32),
('asic_serial', ctypes.c_char * 32),
('PADDING_0', ctypes.c_ubyte * 4),
('reserved', ctypes.c_uint32 * 3),
]
amdsmi_asic_info_t = struct_c__SA_amdsmi_asic_info_t
@@ -648,7 +713,7 @@ struct_c__SA_amdsmi_clk_info_t._fields_ = [
('cur_clk', ctypes.c_uint32),
('min_clk', ctypes.c_uint32),
('max_clk', ctypes.c_uint32),
('reserved', ctypes.c_uint32 * 4),
('reserved', ctypes.c_uint32 * 5),
]
amdsmi_clk_info_t = struct_c__SA_amdsmi_clk_info_t
@@ -664,10 +729,20 @@ struct_c__SA_amdsmi_engine_usage_t._fields_ = [
]
amdsmi_engine_usage_t = struct_c__SA_amdsmi_engine_usage_t
amdsmi_process_handle = ctypes.c_uint32
amdsmi_process_handle_t = ctypes.c_uint32
class struct_c__SA_amdsmi_proc_info_t(Structure):
pass
class struct_c__SA_amdsmi_proc_info_t_0(Structure):
pass
struct_c__SA_amdsmi_proc_info_t_0._pack_ = 1 # source:False
struct_c__SA_amdsmi_proc_info_t_0._fields_ = [
('gfx', ctypes.c_uint64),
('enc', ctypes.c_uint64),
('reserved', ctypes.c_uint32 * 12),
]
class struct_c__SA_amdsmi_proc_info_t_1(Structure):
pass
@@ -676,15 +751,7 @@ struct_c__SA_amdsmi_proc_info_t_1._fields_ = [
('gtt_mem', ctypes.c_uint64),
('cpu_mem', ctypes.c_uint64),
('vram_mem', ctypes.c_uint64),
]
class struct_c__SA_amdsmi_proc_info_t_0(Structure):
pass
struct_c__SA_amdsmi_proc_info_t_0._pack_ = 1 # source:False
struct_c__SA_amdsmi_proc_info_t_0._fields_ = [
('gfx', ctypes.c_uint64),
('enc', ctypes.c_uint64),
('reserved', ctypes.c_uint32 * 10),
]
struct_c__SA_amdsmi_proc_info_t._pack_ = 1 # source:False
@@ -1322,7 +1389,7 @@ amdsmi_get_socket_handles.argtypes = [ctypes.POINTER(ctypes.c_uint32), ctypes.PO
size_t = ctypes.c_uint64
amdsmi_get_socket_info = _libraries['libamd_smi.so'].amdsmi_get_socket_info
amdsmi_get_socket_info.restype = amdsmi_status_t
amdsmi_get_socket_info.argtypes = [amdsmi_socket_handle, ctypes.POINTER(ctypes.c_char), size_t]
amdsmi_get_socket_info.argtypes = [amdsmi_socket_handle, size_t, ctypes.POINTER(ctypes.c_char)]
amdsmi_get_processor_handles = _libraries['libamd_smi.so'].amdsmi_get_processor_handles
amdsmi_get_processor_handles.restype = amdsmi_status_t
amdsmi_get_processor_handles.argtypes = [amdsmi_socket_handle, ctypes.POINTER(ctypes.c_uint32), ctypes.POINTER(ctypes.POINTER(None))]
@@ -1587,7 +1654,7 @@ amdsmi_get_gpu_process_list.restype = amdsmi_status_t
amdsmi_get_gpu_process_list.argtypes = [amdsmi_processor_handle, ctypes.POINTER(ctypes.c_uint32), ctypes.POINTER(ctypes.c_uint32)]
amdsmi_get_gpu_process_info = _libraries['libamd_smi.so'].amdsmi_get_gpu_process_info
amdsmi_get_gpu_process_info.restype = amdsmi_status_t
amdsmi_get_gpu_process_info.argtypes = [amdsmi_processor_handle, amdsmi_process_handle, ctypes.POINTER(struct_c__SA_amdsmi_proc_info_t)]
amdsmi_get_gpu_process_info.argtypes = [amdsmi_processor_handle, amdsmi_process_handle_t, ctypes.POINTER(struct_c__SA_amdsmi_proc_info_t)]
amdsmi_get_gpu_total_ecc_count = _libraries['libamd_smi.so'].amdsmi_get_gpu_total_ecc_count
amdsmi_get_gpu_total_ecc_count.restype = amdsmi_status_t
amdsmi_get_gpu_total_ecc_count.argtypes = [amdsmi_processor_handle, ctypes.POINTER(struct_c__SA_amdsmi_error_count_t)]
@@ -1629,7 +1696,7 @@ __all__ = \
'AMDSMI_GPU_BLOCK_PCIE_BIF', 'AMDSMI_GPU_BLOCK_RESERVED',
'AMDSMI_GPU_BLOCK_SDMA', 'AMDSMI_GPU_BLOCK_SEM',
'AMDSMI_GPU_BLOCK_SMN', 'AMDSMI_GPU_BLOCK_UMC',
'AMDSMI_GPU_BLOCK_XGMI_WAFL', 'AMDSMI_INIT_ALL_DEVICES',
'AMDSMI_GPU_BLOCK_XGMI_WAFL', 'AMDSMI_INIT_ALL_PROCESSORS',
'AMDSMI_INIT_AMD_CPUS', 'AMDSMI_INIT_AMD_GPUS',
'AMDSMI_INIT_NON_AMD_CPUS', 'AMDSMI_INIT_NON_AMD_GPUS',
'AMDSMI_IOLINK_TYPE_NUMIOLINKTYPES',
@@ -1694,17 +1761,29 @@ __all__ = \
'CLK_TYPE_VCLK1', 'CLK_TYPE__MAX', 'CONTAINER_DOCKER',
'CONTAINER_LXC', 'FW_ID_ASD', 'FW_ID_CP_CE', 'FW_ID_CP_ME',
'FW_ID_CP_MEC1', 'FW_ID_CP_MEC2', 'FW_ID_CP_MEC_JT1',
'FW_ID_CP_MEC_JT2', 'FW_ID_CP_PFP', 'FW_ID_CP_PM4', 'FW_ID_DFC',
'FW_ID_DMCU', 'FW_ID_DMCU_ERAM', 'FW_ID_DMCU_ISR',
'FW_ID_DRV_CAP', 'FW_ID_FIRST', 'FW_ID_ISP', 'FW_ID_MC',
'FW_ID_MMSCH', 'FW_ID_PSP_BL', 'FW_ID_PSP_KEYDB',
'FW_ID_CP_MEC_JT2', 'FW_ID_CP_MES', 'FW_ID_CP_PFP',
'FW_ID_CP_PM4', 'FW_ID_DFC', 'FW_ID_DMCU', 'FW_ID_DMCU_ERAM',
'FW_ID_DMCU_ISR', 'FW_ID_DRV_CAP', 'FW_ID_FIRST',
'FW_ID_IMU_DRAM', 'FW_ID_IMU_IRAM', 'FW_ID_ISP', 'FW_ID_MC',
'FW_ID_MES_STACK', 'FW_ID_MES_THREAD1', 'FW_ID_MES_THREAD1_STACK',
'FW_ID_MMSCH', 'FW_ID_PPTABLE', 'FW_ID_PSP_BL', 'FW_ID_PSP_DBG',
'FW_ID_PSP_INTF', 'FW_ID_PSP_KEYDB', 'FW_ID_PSP_SOC',
'FW_ID_PSP_SOSDRV', 'FW_ID_PSP_SPL', 'FW_ID_PSP_SYSDRV',
'FW_ID_PSP_TOC', 'FW_ID_RLC', 'FW_ID_RLC_RESTORE_LIST_CNTL',
'FW_ID_PSP_TOC', 'FW_ID_REG_ACCESS_WHITELIST', 'FW_ID_RLC',
'FW_ID_RLCV_LX7', 'FW_ID_RLC_P', 'FW_ID_RLC_RESTORE_LIST_CNTL',
'FW_ID_RLC_RESTORE_LIST_GPM_MEM',
'FW_ID_RLC_RESTORE_LIST_SRM_MEM', 'FW_ID_RLC_SRLG',
'FW_ID_RLC_SRLS', 'FW_ID_RLC_V', 'FW_ID_SDMA0', 'FW_ID_SDMA1',
'FW_ID_RLC_RESTORE_LIST_SRM_MEM', 'FW_ID_RLC_SAVE_RESTORE_LIST',
'FW_ID_RLC_SRLG', 'FW_ID_RLC_SRLS', 'FW_ID_RLC_V', 'FW_ID_RLX6',
'FW_ID_RLX6_CORE1', 'FW_ID_RLX6_DRAM_BOOT',
'FW_ID_RLX6_DRAM_BOOT_CORE1', 'FW_ID_RS64_ME', 'FW_ID_RS64_MEC',
'FW_ID_RS64_MEC_P0_DATA', 'FW_ID_RS64_MEC_P1_DATA',
'FW_ID_RS64_MEC_P2_DATA', 'FW_ID_RS64_MEC_P3_DATA',
'FW_ID_RS64_ME_P0_DATA', 'FW_ID_RS64_ME_P1_DATA',
'FW_ID_RS64_PFP', 'FW_ID_RS64_PFP_P0_DATA',
'FW_ID_RS64_PFP_P1_DATA', 'FW_ID_SDMA0', 'FW_ID_SDMA1',
'FW_ID_SDMA2', 'FW_ID_SDMA3', 'FW_ID_SDMA4', 'FW_ID_SDMA5',
'FW_ID_SDMA6', 'FW_ID_SDMA7', 'FW_ID_SMC', 'FW_ID_SMU',
'FW_ID_SDMA6', 'FW_ID_SDMA7', 'FW_ID_SDMA_TH0', 'FW_ID_SDMA_TH1',
'FW_ID_SEC_POLICY_STAGE2', 'FW_ID_SMC', 'FW_ID_SMU',
'FW_ID_TA_RAS', 'FW_ID_UVD', 'FW_ID_VCE', 'FW_ID_VCN',
'FW_ID_XGMI', 'FW_ID__MAX', 'NON_AMD_CPU', 'NON_AMD_GPU',
'TEMPERATURE_TYPE_EDGE', 'TEMPERATURE_TYPE_FIRST',
@@ -1786,7 +1865,7 @@ __all__ = \
'amdsmi_power_profile_preset_masks_t',
'amdsmi_power_profile_preset_masks_t__enumvalues',
'amdsmi_power_profile_status_t', 'amdsmi_proc_info_t',
'amdsmi_process_handle', 'amdsmi_process_info_t',
'amdsmi_process_handle_t', 'amdsmi_process_info_t',
'amdsmi_processor_handle', 'amdsmi_range_t',
'amdsmi_ras_err_state_t', 'amdsmi_ras_err_state_t__enumvalues',
'amdsmi_reset_gpu', 'amdsmi_reset_gpu_fan',