diff --git a/projects/amdsmi/py-interface/README.md b/projects/amdsmi/py-interface/README.md index 3dc1df88ed..f10852cb9c 100644 --- a/projects/amdsmi/py-interface/README.md +++ b/projects/amdsmi/py-interface/README.md @@ -5124,40 +5124,17 @@ except AmdSmiException as e: ## CPU APIs -### amdsmi_get_cpusocket_handles - -**Note: CURRENTLY HARDCODED TO RETURN DUMMY DATA** -Description: Returns list of cpusocket handle objects on current machine - -Input parameters: `None` - -Output: List of cpusocket handle objects - -Exceptions that can be thrown by `amdsmi_get_cpusocket_handles` function: - -* `AmdSmiLibraryException` - -Example: - -```python -try: - sockets = amdsmi_get_cpusocket_handles() - print('Socket numbers: {}'.format(len(sockets))) -except AmdSmiException as e: - print(e) -``` - -### amdsmi_get_cpusocket_info +### amdsmi_get_processor_info **Note: CURRENTLY HARDCODED TO RETURN EMPTY VALUES** -Description: Return cpu socket index +Description: Return processor name Input parameters: -`socket_handle` cpu socket handle +`processor_handle` processor handle -Output: Socket index +Output: Processor name -Exceptions that can be thrown by `amdsmi_get_cpusocket_info` function: +Exceptions that can be thrown by `amdsmi_get_processor_info` function: * `AmdSmiLibraryException` @@ -5165,38 +5142,12 @@ Example: ```python try: - socket_handles = amdsmi_get_cpusocket_handles() - if len(socket_handles) == 0: - print("No CPU sockets on machine") + processor_handles = amdsmi_get_processor_handles() + if len(processor_handles) == 0: + print("No processors on machine") else: - for socket in socket_handles: - print(amdsmi_get_cpusocket_info(socket)) -except AmdSmiException as e: - print(e) -``` - -### amdsmi_get_cpucore_handles - -Description: Returns list of CPU core handle objects on current machine - -Input parameters: `None` - -Output: List of CPU core handle objects - -Exceptions that can be thrown by `amdsmi_get_cpucore_handles` function: - -* `AmdSmiLibraryException` - -Example: - -```python -try: - core_handles = amdsmi_get_cpucore_handles() - if len(core_handles) == 0: - print("No CPU cores on machine") - else: - for core in core_handles: - print(amdsmi_get_cpucore_info(core)) + for processor in processor_handles: + print(amdsmi_get_processor_info(processor)) except AmdSmiException as e: print(e) ``` @@ -5215,12 +5166,12 @@ Example: ```python try: - socket_handles = amdsmi_get_cpusocket_handles() - if len(socket_handles) == 0: + processor_handles = amdsmi_get_processor_handles() + if len(processor_handles) == 0: print("No CPU sockets on machine") else: - for socket in socket_handles: - version = amdsmi_get_cpu_hsmp_proto_ver(socket) + for processor in processor_handles: + version = amdsmi_get_cpu_hsmp_proto_ver(processor) print(version) except AmdSmiException as e: print(e) @@ -5240,12 +5191,12 @@ Example: ```python try: - socket_handles = amdsmi_get_cpusocket_handles() - if len(socket_handles) == 0: + processor_handles = amdsmi_get_processor_handles() + if len(processor_handles) == 0: print("No CPU sockets on machine") else: - for socket in socket_handles: - version = amdsmi_get_cpu_smu_fw_version(socket) + for processor in processor_handles: + version = amdsmi_get_cpu_smu_fw_version(processor) print(version['debug']) print(version['minor']) print(version['major']) @@ -5267,12 +5218,12 @@ Example: ```python try: - socket_handles = amdsmi_get_cpusocket_handles() - if len(socket_handles) == 0: + processor_handles = amdsmi_get_processor_handles() + if len(processor_handles) == 0: print("No CPU sockets on machine") else: - for socket in socket_handles: - prochot = amdsmi_get_cpu_prochot_status(socket) + for processor in processor_handles: + prochot = amdsmi_get_cpu_prochot_status(processor) print(prochot) except AmdSmiException as e: print(e) @@ -5292,12 +5243,12 @@ Example: ```python try: - socket_handles = amdsmi_get_cpusocket_handles() - if len(socket_handles) == 0: + processor_handles = amdsmi_get_processor_handles() + if len(processor_handles) == 0: print("No CPU sockets on machine") else: - for socket in socket_handles: - clk = amdsmi_get_cpu_fclk_mclk(socket) + for processor in processor_handles: + clk = amdsmi_get_cpu_fclk_mclk(processor) for fclk, mclk in clk.items(): print(fclk) print(mclk) @@ -5319,12 +5270,12 @@ Example: ```python try: - socket_handles = amdsmi_get_cpusocket_handles() - if len(socket_handles) == 0: + processor_handles = amdsmi_get_processor_handles() + if len(processor_handles) == 0: print("No CPU sockets on machine") else: - for socket in socket_handles: - cclk_limit = amdsmi_get_cpu_cclk_limit(socket) + for processor in processor_handles: + cclk_limit = amdsmi_get_cpu_cclk_limit(processor) print(cclk_limit) except AmdSmiException as e: print(e) @@ -5344,12 +5295,12 @@ Example: ```python try: - socket_handles = amdsmi_get_cpusocket_handles() - if len(socket_handles) == 0: + processor_handles = amdsmi_get_processor_handles() + if len(processor_handles) == 0: print("No CPU sockets on machine") else: - for socket in socket_handles: - freq_limit = amdsmi_get_cpu_socket_current_active_freq_limit(socket) + for processor in processor_handles: + freq_limit = amdsmi_get_cpu_socket_current_active_freq_limit(processor) for freq, src in freq_limit.items(): print(freq) print(src) @@ -5371,12 +5322,12 @@ Example: ```python try: - socket_handles = amdsmi_get_cpusocket_handles() - if len(socket_handles) == 0: + processor_handles = amdsmi_get_processor_handles() + if len(processor_handles) == 0: print("No CPU sockets on machine") else: - for socket in socket_handles: - freq_range = amdsmi_get_cpu_socket_freq_range(socket) + for processor in processor_handles: + freq_range = amdsmi_get_cpu_socket_freq_range(processor) for fmax, fmin in freq_range.items(): print(fmax) print(fmin) @@ -5398,12 +5349,12 @@ Example: ```python try: - core_handles = amdsmi_get_cpucore_handles() - if len(core_handles) == 0: + processor_handles = amdsmi_get_processor_handles() + if len(processor_handles) == 0: print("No CPU cores on machine") else: - for core in core_handles: - freq_limit = amdsmi_get_cpu_core_current_freq_limit(core) + for processor in processor_handles: + freq_limit = amdsmi_get_cpu_core_current_freq_limit(processor) print(freq_limit) except AmdSmiException as e: print(e) @@ -5423,12 +5374,12 @@ Example: ```python try: - socket_handles = amdsmi_get_cpusocket_handles() - if len(socket_handles) == 0: + processor_handles = amdsmi_get_processor_handles() + if len(processor_handles) == 0: print("No CPU sockets on machine") else: - for socket in socket_handles: - sock_power = amdsmi_get_cpu_socket_power(socket) + for processor in processor_handles: + sock_power = amdsmi_get_cpu_socket_power(processor) print(sock_power) except AmdSmiException as e: print(e) @@ -5448,12 +5399,12 @@ Example: ```python try: - socket_handles = amdsmi_get_cpusocket_handles() - if len(socket_handles) == 0: + processor_handles = amdsmi_get_processor_handles() + if len(processor_handles) == 0: print("No CPU sockets on machine") else: - for socket in socket_handles: - sock_power = amdsmi_get_cpu_socket_power_cap(socket) + for processor in processor_handles: + sock_power = amdsmi_get_cpu_socket_power_cap(processor) print(sock_power) except AmdSmiException as e: print(e) @@ -5473,12 +5424,12 @@ Example: ```python try: - socket_handles = amdsmi_get_cpusocket_handles() - if len(socket_handles) == 0: + processor_handles = amdsmi_get_processor_handles() + if len(processor_handles) == 0: print("No CPU sockets on machine") else: - for socket in socket_handles: - sock_power = amdsmi_get_cpu_socket_power_cap_max(socket) + for processor in processor_handles: + sock_power = amdsmi_get_cpu_socket_power_cap_max(processor) print(sock_power) except AmdSmiException as e: print(e) @@ -5498,12 +5449,12 @@ Example: ```python try: - socket_handles = amdsmi_get_cpusocket_handles() - if len(socket_handles) == 0: + processor_handles = amdsmi_get_processor_handles() + if len(processor_handles) == 0: print("No CPU sockets on machine") else: - for socket in socket_handles: - power = amdsmi_get_cpu_pwr_svi_telemetry_all_rails(socket) + for processor in processor_handles: + power = amdsmi_get_cpu_pwr_svi_telemetry_all_rails(processor) print(power) except AmdSmiException as e: print(e) @@ -5513,7 +5464,7 @@ except AmdSmiException as e: Description: Set the power cap value for a given socket. -Input: socket index, amdsmi socket power cap value +Input: amdsmi socket power cap value Exceptions that can be thrown by `amdsmi_set_cpu_socket_power_cap` function: @@ -5523,12 +5474,12 @@ Example: ```python try: - socket_handles = amdsmi_get_cpusocket_handles() - if len(socket_handles) == 0: + processor_handles = amdsmi_get_processor_handles() + if len(processor_handles) == 0: print("No CPU sockets on machine") else: - for socket in socket_handles: - power = amdsmi_set_cpu_socket_power_cap(socket, 0, 1000) + for processor in processor_handles: + power = amdsmi_set_cpu_socket_power_cap(processor, 1000) except AmdSmiException as e: print(e) ``` @@ -5537,7 +5488,7 @@ except AmdSmiException as e: Description: Set the power efficiency profile policy. -Input: socket index, mode(0, 1, or 2) +Input: mode(0, 1, or 2) Exceptions that can be thrown by `amdsmi_set_cpu_pwr_efficiency_mode` function: @@ -5547,12 +5498,12 @@ Example: ```python try: - socket_handles = amdsmi_get_cpusocket_handles() - if len(socket_handles) == 0: + processor_handles = amdsmi_get_processor_handles() + if len(processor_handles) == 0: print("No CPU sockets on machine") else: - for socket in socket_handles: - policy = amdsmi_set_cpu_pwr_efficiency_mode(socket, 0, 0) + for processor in processor_handles: + policy = amdsmi_set_cpu_pwr_efficiency_mode(processor, 0) except AmdSmiException as e: print(e) ``` @@ -5571,12 +5522,12 @@ Example: ```python try: - core_handles = amdsmi_get_cpucore_handles() - if len(core_handles) == 0: + processor_handles = amdsmi_get_processor_handles() + if len(processor_handles) == 0: print("No CPU cores on machine") else: - for core in core_handles: - boost_limit = amdsmi_get_cpu_core_boostlimit(core) + for processor in processor_handles: + boost_limit = amdsmi_get_cpu_core_boostlimit(processor) print(boost_limit) except AmdSmiException as e: print(e) @@ -5596,12 +5547,12 @@ Example: ```python try: - socket_handles = amdsmi_get_cpusocket_handles() - if len(socket_handles) == 0: + processor_handles = amdsmi_get_processor_handles() + if len(processor_handles) == 0: print("No CPU sockets on machine") else: - for socket in socket_handles: - c0_residency = amdsmi_get_cpu_socket_c0_residency(socket) + for processor in processor_handles: + c0_residency = amdsmi_get_cpu_socket_c0_residency(processor) print(c0_residency) except AmdSmiException as e: print(e) @@ -5621,12 +5572,12 @@ Example: ```python try: - core_handles = amdsmi_get_cpucore_handles() - if len(core_handles) == 0: + processor_handles = amdsmi_get_processor_handles() + if len(processor_handles) == 0: print("No CPU cores on machine") else: - for core in core_handles: - boost_limit = amdsmi_set_cpu_core_boostlimit(core, 1000) + for processor in processor_handles: + boost_limit = amdsmi_set_cpu_core_boostlimit(processor, 1000) except AmdSmiException as e: print(e) ``` @@ -5645,12 +5596,12 @@ Example: ```python try: - socket_handles = amdsmi_get_cpusocket_handles() - if len(socket_handles) == 0: + processor_handles = amdsmi_get_processor_handles() + if len(processor_handles) == 0: print("No CPU sockets on machine") else: - for socket in socket_handles: - boost_limit = amdsmi_set_cpu_socket_boostlimit(socket, 1000) + for processor in processor_handles: + boost_limit = amdsmi_set_cpu_socket_boostlimit(processor, 1000) except AmdSmiException as e: print(e) ``` @@ -5669,12 +5620,12 @@ Example: ```python try: - socket_handles = amdsmi_get_cpusocket_handles() - if len(socket_handles) == 0: + processor_handles = amdsmi_get_processor_handles() + if len(processor_handles) == 0: print("No CPU sockets on machine") else: - for socket in socket_handles: - ddr_bw = amdsmi_get_cpu_ddr_bw(socket) + for processor in processor_handles: + ddr_bw = amdsmi_get_cpu_ddr_bw(processor) print(ddr_bw['max_bw']) print(ddr_bw['utilized_bw']) print(ddr_bw['utilized_pct']) @@ -5696,12 +5647,12 @@ Example: ```python try: - socket_handles = amdsmi_get_cpusocket_handles() - if len(socket_handles) == 0: + processor_handles = amdsmi_get_processor_handles() + if len(processor_handles) == 0: print("No CPU sockets on machine") else: - for socket in socket_handles: - ptmon = amdsmi_get_cpu_socket_temperature(socket) + for processor in processor_handles: + ptmon = amdsmi_get_cpu_socket_temperature(processor) print(ptmon) except AmdSmiException as e: print(e) @@ -5721,12 +5672,12 @@ Example: ```python try: - socket_handles = amdsmi_get_cpusocket_handles() - if len(socket_handles) == 0: + processor_handles = amdsmi_get_processor_handles() + if len(processor_handles) == 0: print("No CPU sockets on machine") else: - for socket in socket_handles: - dimm = amdsmi_get_cpu_dimm_temp_range_and_refresh_rate(socket) + for processor in processor_handles: + dimm = amdsmi_get_cpu_dimm_temp_range_and_refresh_rate(processor) print(dimm['range']) print(dimm['ref_rate']) except AmdSmiException as e: @@ -5747,12 +5698,12 @@ Example: ```python try: - socket_handles = amdsmi_get_cpusocket_handles() - if len(socket_handles) == 0: + processor_handles = amdsmi_get_processor_handles() + if len(processor_handles) == 0: print("No CPU sockets on machine") else: - for socket in socket_handles: - dimm = amdsmi_get_cpu_dimm_power_consumption(socket) + for processor in processor_handles: + dimm = amdsmi_get_cpu_dimm_power_consumption(processor) print(dimm['power']) print(dimm['update_rate']) print(dimm['dimm_addr']) @@ -5774,12 +5725,12 @@ Example: ```python try: - socket_handles = amdsmi_get_cpusocket_handles() - if len(socket_handles) == 0: + processor_handles = amdsmi_get_processor_handles() + if len(processor_handles) == 0: print("No CPU sockets on machine") else: - for socket in socket_handles: - dimm = amdsmi_get_cpu_dimm_thermal_sensor(socket) + for processor in processor_handles: + dimm = amdsmi_get_cpu_dimm_thermal_sensor(processor) print(dimm['sensor']) print(dimm['update_rate']) print(dimm['dimm_addr']) @@ -5802,12 +5753,313 @@ Example: ```python try: - socket_handles = amdsmi_get_cpusocket_handles() - if len(socket_handles) == 0: + processor_handles = amdsmi_get_processor_handles() + if len(processor_handles) == 0: print("No CPU sockets on machine") else: - for socket in socket_handles: - xgmi_width = amdsmi_set_cpu_xgmi_width(socket, 0, 100) + for processor in processor_handles: + xgmi_width = amdsmi_set_cpu_xgmi_width(processor, 0, 100) +except AmdSmiException as e: + print(e) +``` + +### amdsmi_set_cpu_gmi3_link_width_range + +Description: Set gmi3 link width range. + +Input: minimum & maximum link width to be set. + +Exceptions that can be thrown by `amdsmi_set_cpu_gmi3_link_width_range` function: + +* `AmdSmiLibraryException` + +Example: + +```python +try: + processor_handles = amdsmi_get_processor_handles() + if len(processor_handles) == 0: + print("No CPU sockets on machine") + else: + for processor in processor_handles: + gmi_link_width = amdsmi_set_cpu_gmi3_link_width_range(processor, 0, 100) +except AmdSmiException as e: + print(e) +``` + +### amdsmi_cpu_apb_enable + +Description: Enable APB. + +Input: amdsmi processor handle + +Exceptions that can be thrown by `amdsmi_cpu_apb_enable` function: + +* `AmdSmiLibraryException` + +Example: + +```python +try: + processor_handles = amdsmi_get_processor_handles() + if len(processor_handles) == 0: + print("No CPU sockets on machine") + else: + for processor in processor_handles: + apb_enable = amdsmi_cpu_apb_enable(processor) +except AmdSmiException as e: + print(e) +``` + +### amdsmi_cpu_apb_disable + +Description: Disable APB. + +Input: pstate value + +Exceptions that can be thrown by `amdsmi_cpu_apb_disable` function: + +* `AmdSmiLibraryException` + +Example: + +```python +try: + processor_handles = amdsmi_get_processor_handles() + if len(processor_handles) == 0: + print("No CPU sockets on machine") + else: + for processor in processor_handles: + apb_disable = amdsmi_cpu_apb_disable(processor, 0) +except AmdSmiException as e: + print(e) +``` + +### amdsmi_set_cpu_socket_lclk_dpm_level + +Description: Set NBIO lclk dpm level value. + +Input: nbio id, min value, max value + +Exceptions that can be thrown by `amdsmi_set_cpu_socket_lclk_dpm_level` function: + +* `AmdSmiLibraryException` + +Example: + +```python +try: + processor_handles = amdsmi_get_processor_handles() + if len(processor_handles) == 0: + print("No CPU sockets on machine") + else: + for socket in socket_handles: + nbio = amdsmi_set_cpu_socket_lclk_dpm_level(socket, 0, 0, 2) +except AmdSmiException as e: + print(e) +``` + +### amdsmi_get_cpu_socket_lclk_dpm_level + +Description: Get NBIO LCLK dpm level. + +Output: nbio id + +Exceptions that can be thrown by `amdsmi_get_cpu_socket_lclk_dpm_level` function: + +* `AmdSmiLibraryException` + +Example: + +```python +try: + processor_handles = amdsmi_get_processor_handles() + if len(processor_handles) == 0: + print("No CPU sockets on machine") + else: + for processor in processor_handles: + nbio = amdsmi_get_cpu_socket_lclk_dpm_level(processor) + print(nbio['max_dpm_level']) + print(nbio['max_dpm_level']) +except AmdSmiException as e: + print(e) +``` + +### amdsmi_set_cpu_pcie_link_rate + +Description: Set pcie link rate. + +Input: rate control value + +Exceptions that can be thrown by `amdsmi_set_cpu_pcie_link_rate` function: + +* `AmdSmiLibraryException` + +Example: + +```python +try: + processor_handles = amdsmi_get_processor_handles() + if len(processor_handles) == 0: + print("No CPU sockets on machine") + else: + for processor in processor_handles: + link_rate = amdsmi_set_cpu_pcie_link_rate(processor, 0, 0) +except AmdSmiException as e: + print(e) +``` + +### amdsmi_set_cpu_df_pstate_range + +Description: Set df pstate range. + +Input: max pstate, min pstate + +Exceptions that can be thrown by `amdsmi_set_cpu_df_pstate_range` function: + +* `AmdSmiLibraryException` + +Example: + +```python +try: + processor_handles = amdsmi_get_processor_handles() + if len(processor_handles) == 0: + print("No CPU sockets on machine") + else: + for processor in processor_handles: + pstate_range = amdsmi_set_cpu_df_pstate_range(processor, 0, 2) +except AmdSmiException as e: + print(e) +``` + +### amdsmi_get_cpu_current_io_bandwidth + +Description: Get current input output bandwidth. + +Output: link id and bw type to which io bandwidth to be obtained + +Exceptions that can be thrown by `amdsmi_get_cpu_current_io_bandwidth` function: + +* `AmdSmiLibraryException` + +Example: + +```python +try: + processor_handles = amdsmi_get_processor_handles() + if len(processor_handles) == 0: + print("No CPU sockets on machine") + else: + for processor in processor_handles: + io_bw = amdsmi_get_cpu_current_io_bandwidth(processor) + print(io_bw) +except AmdSmiException as e: + print(e) +``` + +### amdsmi_get_cpu_current_xgmi_bw + +Description: Get current xgmi bandwidth. + +Output: amdsmi link id and bw type to which xgmi bandwidth to be obtained + +Exceptions that can be thrown by `amdsmi_get_cpu_current_xgmi_bw` function: + +* `AmdSmiLibraryException` + +Example: + +```python +try: + processor_handles = amdsmi_get_processor_handles() + if len(processor_handles) == 0: + print("No CPU sockets on machine") + else: + for processor in processor_handles: + xgmi_bw = amdsmi_get_cpu_current_xgmi_bw(processor) + print(xgmi_bw) +except AmdSmiException as e: + print(e) +``` + +### amdsmi_get_metrics_table_version + +Description: Get metrics table version. + +Output: amdsmi metrics table version + +Exceptions that can be thrown by `amdsmi_get_metrics_table_version` function: + +* `AmdSmiLibraryException` + +Example: + +```python +try: + processor_handles = amdsmi_get_processor_handles() + if len(processor_handles) == 0: + print("No CPU sockets on machine") + else: + for processor in processor_handles: + met_ver = amdsmi_get_metrics_table_version(processor) + print(met_ver) +except AmdSmiException as e: + print(e) +``` + +### amdsmi_get_metrics_table + +Description: Get metrics table + +Output: metric table data + +Exceptions that can be thrown by `amdsmi_get_metrics_table` function: + +* `AmdSmiLibraryException` + +Example: + +```python +try: + processor_handles = amdsmi_get_processor_handles() + if len(processor_handles) == 0: + print("No CPU sockets on machine") + else: + for processor in processor_handles: + mtbl = amdsmi_get_metrics_table(processor) + print(mtbl['accumulation_counter']) + print(mtbl['max_socket_temperature']) + print(mtbl['max_vr_temperature']) + print(mtbl['max_hbm_temperature']) + print(mtbl['socket_power_limit']) + print(mtbl['max_socket_power_limit']) + print(mtbl['socket_power']) +except AmdSmiException as e: + print(e) +``` + +### amdsmi_first_online_core_on_cpu_socket + +Description: Get first online core on cpu socket. + +Output: first online core on cpu socket + +Exceptions that can be thrown by `amdsmi_first_online_core_on_cpu_socket` function: + +* `AmdSmiLibraryException` + +Example: + +```python +try: + processor_handles = amdsmi_get_processor_handles() + if len(processor_handles) == 0: + print("No CPU sockets on machine") + else: + for processor in processor_handles: + pcore_ind = amdsmi_first_online_core_on_cpu_socket(processor) + print(pcore_ind) except AmdSmiException as e: print(e) ``` diff --git a/projects/amdsmi/py-interface/__init__.py b/projects/amdsmi/py-interface/__init__.py index 2c54cfff33..9646c50d77 100644 --- a/projects/amdsmi/py-interface/__init__.py +++ b/projects/amdsmi/py-interface/__init__.py @@ -32,8 +32,8 @@ from .amdsmi_interface import amdsmi_get_socket_info # ESMI Dependent Functions try: from .amdsmi_interface import amdsmi_get_cpusocket_handles - from .amdsmi_interface import amdsmi_get_cpusocket_info from .amdsmi_interface import amdsmi_get_cpucore_handles + from .amdsmi_interface import amdsmi_get_processor_info from .amdsmi_interface import amdsmi_get_cpu_hsmp_proto_ver from .amdsmi_interface import amdsmi_get_cpu_smu_fw_version from .amdsmi_interface import amdsmi_get_cpu_core_energy @@ -60,6 +60,18 @@ try: from .amdsmi_interface import amdsmi_get_cpu_dimm_power_consumption from .amdsmi_interface import amdsmi_get_cpu_dimm_thermal_sensor from .amdsmi_interface import amdsmi_set_cpu_xgmi_width + from .amdsmi_interface import amdsmi_set_cpu_gmi3_link_width_range + from .amdsmi_interface import amdsmi_cpu_apb_enable + from .amdsmi_interface import amdsmi_cpu_apb_disable + from .amdsmi_interface import amdsmi_set_cpu_socket_lclk_dpm_level + from .amdsmi_interface import amdsmi_get_cpu_socket_lclk_dpm_level + from .amdsmi_interface import amdsmi_set_cpu_pcie_link_rate + from .amdsmi_interface import amdsmi_set_cpu_df_pstate_range + from .amdsmi_interface import amdsmi_get_cpu_current_io_bandwidth + from .amdsmi_interface import amdsmi_get_cpu_current_xgmi_bw + from .amdsmi_interface import amdsmi_get_metrics_table_version + from .amdsmi_interface import amdsmi_get_metrics_table + from .amdsmi_interface import amdsmi_first_online_core_on_cpu_socket except AttributeError: pass diff --git a/projects/amdsmi/py-interface/amdsmi_interface.py b/projects/amdsmi/py-interface/amdsmi_interface.py index 18e563c198..e8da93e771 100644 --- a/projects/amdsmi/py-interface/amdsmi_interface.py +++ b/projects/amdsmi/py-interface/amdsmi_interface.py @@ -42,6 +42,7 @@ class AmdSmiInitFlags(IntEnum): 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_AMD_APUS = amdsmi_wrapper.AMDSMI_INIT_AMD_APUS INIT_NON_AMD_CPUS = amdsmi_wrapper.AMDSMI_INIT_NON_AMD_CPUS INIT_NON_AMD_GPUS = amdsmi_wrapper.AMDSMI_INIT_NON_AMD_GPUS @@ -555,7 +556,7 @@ def amdsmi_get_socket_handles() -> List[amdsmi_wrapper.amdsmi_socket_handle]: return sockets -def amdsmi_get_cpusocket_handles() -> List[amdsmi_wrapper.amdsmi_cpusocket_handle]: +def amdsmi_get_cpusocket_handles() -> List[amdsmi_wrapper.amdsmi_socket_handle]: """ Function that gets cpu socket handles. Wraps the same named function call. @@ -565,24 +566,38 @@ def amdsmi_get_cpusocket_handles() -> List[amdsmi_wrapper.amdsmi_cpusocket_handl Returns: `List`: List containing all of the found cpu socket handles. """ - socket_count = ctypes.c_uint32(0) - null_ptr = ctypes.POINTER(amdsmi_wrapper.amdsmi_cpusocket_handle)() - _check_res( - amdsmi_wrapper.amdsmi_get_cpusocket_handles( - ctypes.byref(socket_count), null_ptr) - ) - socket_handles = (amdsmi_wrapper.amdsmi_cpusocket_handle * - socket_count.value)() - _check_res( - amdsmi_wrapper.amdsmi_get_cpusocket_handles( - ctypes.byref(socket_count), socket_handles) - ) - sockets = [ - amdsmi_wrapper.amdsmi_cpusocket_handle(socket_handles[sock_idx]) - for sock_idx in range(socket_count.value) - ] + socket_handles = amdsmi_get_socket_handles() + cpu_handles = [] + type = amdsmi_wrapper.AMD_CPU + for socket in socket_handles: + cpu_count = ctypes.c_uint32() + null_ptr = ctypes.POINTER(amdsmi_wrapper.amdsmi_processor_handle)() + _check_res( + amdsmi_wrapper.amdsmi_get_processor_handles_by_type( + socket, + type, + null_ptr, + ctypes.byref(cpu_count), + ) + ) + processor_handles = ( + amdsmi_wrapper.amdsmi_processor_handle * cpu_count.value)() + _check_res( + amdsmi_wrapper.amdsmi_get_processor_handles_by_type( + socket, + type, + processor_handles, + ctypes.byref(cpu_count) + ) + ) + cpu_handles.extend( + [ + amdsmi_wrapper.amdsmi_processor_handle(processor_handles[dev_idx]) + for dev_idx in range(cpu_count.value) + ] + ) + return cpu_handles - return sockets def amdsmi_get_socket_info(socket_handle): if not isinstance(socket_handle, amdsmi_wrapper.amdsmi_socket_handle): @@ -597,18 +612,20 @@ def amdsmi_get_socket_info(socket_handle): return socket_info.value.decode() -def amdsmi_get_cpusocket_info(socket_handle): - if not isinstance(socket_handle, amdsmi_wrapper.amdsmi_cpusocket_handle): +def amdsmi_get_processor_info(processor_handle): + if not isinstance(processor_handle, amdsmi_wrapper.amdsmi_processor_handle): raise AmdSmiParameterException( - socket_handle, amdsmi_wrapper.amdsmi_cpusocket_handle) + processor_handle, amdsmi_wrapper.amdsmi_processor_handle) + processor_info = ctypes.create_string_buffer(128) - socket_id = ctypes.c_uint32() + core_id = ctypes.c_uint32() _check_res( - amdsmi_wrapper.amdsmi_get_cpusocket_info( - socket_handle, socket_id) + amdsmi_wrapper.amdsmi_get_processor_info( + processor_handle, ctypes.c_size_t(128), processor_info) ) - return socket_id + return processor_info.value.decode() + def amdsmi_get_processor_handles() -> List[amdsmi_wrapper.amdsmi_processor_handle]: socket_handles = amdsmi_get_socket_handles() @@ -642,62 +659,66 @@ def amdsmi_get_processor_handles() -> List[amdsmi_wrapper.amdsmi_processor_handl return devices def amdsmi_get_cpucore_handles() -> List[amdsmi_wrapper.amdsmi_processor_handle]: - socket_handles = amdsmi_get_cpusocket_handles() - processors = [] + socket_handles = amdsmi_get_socket_handles() + core_handles = [] + type = amdsmi_wrapper.AMD_CPU_CORE + for socket in socket_handles: - processor_count = ctypes.c_uint32() + core_count = ctypes.c_uint32() null_ptr = ctypes.POINTER(amdsmi_wrapper.amdsmi_processor_handle)() _check_res( - amdsmi_wrapper.amdsmi_get_cpucore_handles( + amdsmi_wrapper.amdsmi_get_processor_handles_by_type( socket, - ctypes.byref(processor_count), + type, null_ptr, + ctypes.byref(core_count), ) ) - processor_handles = ( - amdsmi_wrapper.amdsmi_processor_handle * processor_count.value)() + c_handles = ( + amdsmi_wrapper.amdsmi_processor_handle * core_count.value)() _check_res( - amdsmi_wrapper.amdsmi_get_cpucore_handles( + amdsmi_wrapper.amdsmi_get_processor_handles_by_type( socket, - ctypes.byref(processor_count), - processor_handles, + type, + c_handles, + ctypes.byref(core_count) ) ) - processors.extend( + core_handles.extend( [ - amdsmi_wrapper.amdsmi_processor_handle(processor_handles[dev_idx]) - for dev_idx in range(processor_count.value) + amdsmi_wrapper.amdsmi_processor_handle(c_handles[dev_idx]) + for dev_idx in range(core_count.value) ] ) + return core_handles - return processors def amdsmi_get_cpu_hsmp_proto_ver( - socket_handle: amdsmi_wrapper.amdsmi_cpusocket_handle, + processor_handle: amdsmi_wrapper.amdsmi_processor_handle, ) -> int: - if not isinstance(socket_handle, amdsmi_wrapper.amdsmi_cpusocket_handle): + if not isinstance(processor_handle, amdsmi_wrapper.amdsmi_processor_handle): raise AmdSmiParameterException( - socket_handle, amdsmi_wrapper.amdsmi_cpusocket_handle + processor_handle, amdsmi_wrapper.amdsmi_processor_handle ) proto_ver = ctypes.c_uint32() _check_res( amdsmi_wrapper.amdsmi_get_cpu_hsmp_proto_ver( - socket_handle, ctypes.byref(proto_ver) + processor_handle, ctypes.byref(proto_ver) ) ) return proto_ver.value -def amdsmi_get_cpu_smu_fw_version(socket_handle: amdsmi_wrapper.amdsmi_cpusocket_handle): - if not isinstance(socket_handle, amdsmi_wrapper.amdsmi_cpusocket_handle): +def amdsmi_get_cpu_smu_fw_version(processor_handle: amdsmi_wrapper.amdsmi_processor_handle): + if not isinstance(processor_handle, amdsmi_wrapper.amdsmi_processor_handle): raise AmdSmiParameterException( - socket_handle, amdsmi_wrapper.amdsmi_cpusocket_handle + processor_handle, amdsmi_wrapper.amdsmi_processor_handle ) smu_fw = amdsmi_wrapper.amdsmi_smu_fw_version_t() - _check_res(amdsmi_wrapper.amdsmi_get_cpu_smu_fw_version(socket_handle, smu_fw)) + _check_res(amdsmi_wrapper.amdsmi_get_cpu_smu_fw_version(processor_handle, smu_fw)) return { "smu_fw_debug_ver_num": smu_fw.debug, @@ -706,77 +727,69 @@ def amdsmi_get_cpu_smu_fw_version(socket_handle: amdsmi_wrapper.amdsmi_cpusocket } def amdsmi_get_cpu_core_energy( - processor_handle: amdsmi_wrapper.amdsmi_processor_handle, core_idx: int + processor_handle: amdsmi_wrapper.amdsmi_processor_handle ) -> int: if not isinstance(processor_handle, amdsmi_wrapper.amdsmi_processor_handle): raise AmdSmiParameterException( processor_handle, amdsmi_wrapper.amdsmi_processor_handle ) - if not isinstance(core_idx, int): - raise AmdSmiParameterException(core_idx, int) penergy = ctypes.c_uint64() _check_res( amdsmi_wrapper.amdsmi_get_cpu_core_energy( - processor_handle, core_idx, ctypes.byref(penergy) + processor_handle, ctypes.byref(penergy) ) ) return penergy.value def amdsmi_get_cpu_socket_energy( - socket_handle: amdsmi_wrapper.amdsmi_cpusocket_handle, sock_idx: int + processor_handle: amdsmi_wrapper.amdsmi_processor_handle ) -> int: - if not isinstance(socket_handle, amdsmi_wrapper.amdsmi_cpusocket_handle): + if not isinstance(processor_handle, amdsmi_wrapper.amdsmi_processor_handle): raise AmdSmiParameterException( - socket_handle, amdsmi_wrapper.amdsmi_cpusocket_handle + processor_handle, amdsmi_wrapper.amdsmi_processor_handle ) - if not isinstance(sock_idx, int): - raise AmdSmiParameterException(sock_idx, int) penergy = ctypes.c_uint64() _check_res( amdsmi_wrapper.amdsmi_get_cpu_socket_energy( - socket_handle, sock_idx, ctypes.byref(penergy) + processor_handle, ctypes.byref(penergy) ) ) return penergy.value def amdsmi_get_cpu_prochot_status( - socket_handle: amdsmi_wrapper.amdsmi_cpusocket_handle, sock_idx: int + processor_handle: amdsmi_wrapper.amdsmi_processor_handle ) -> int: - if not isinstance(socket_handle, amdsmi_wrapper.amdsmi_cpusocket_handle): + if not isinstance(processor_handle, amdsmi_wrapper.amdsmi_processor_handle): raise AmdSmiParameterException( - socket_handle, amdsmi_wrapper.amdsmi_cpusocket_handle + processor_handle, amdsmi_wrapper.amdsmi_processor_handle ) - if not isinstance(sock_idx, int): - raise AmdSmiParameterException(sock_idx, int) prochot = ctypes.c_uint32() _check_res( - amdsmi_wrapper.amdsmi_get_cpu_socket_energy( - socket_handle, sock_idx, ctypes.byref(prochot) + amdsmi_wrapper.amdsmi_get_cpu_prochot_status( + processor_handle, ctypes.byref(prochot) ) ) return prochot.value def amdsmi_get_cpu_fclk_mclk( - socket_handle: amdsmi_wrapper.amdsmi_cpusocket_handle, sock_idx: int + processor_handle: amdsmi_wrapper.amdsmi_processor_handle ): - if not isinstance(socket_handle, amdsmi_wrapper.amdsmi_cpusocket_handle): + if not isinstance(processor_handle, amdsmi_wrapper.amdsmi_processor_handle): raise AmdSmiParameterException( - socket_handle, amdsmi_wrapper.amdsmi_cpusocket_handle + processor_handle, amdsmi_wrapper.amdsmi_processor_handle ) - if not isinstance(sock_idx, int): - raise AmdSmiParameterException(sock_idx, int) fclk = ctypes.c_uint32() mclk = ctypes.c_uint32() _check_res( amdsmi_wrapper.amdsmi_get_cpu_fclk_mclk( - socket_handle, sock_idx, ctypes.byref(fclk), ctypes.byref(mclk) + processor_handle, ctypes.byref(fclk), ctypes.byref(mclk) ) ) @@ -786,59 +799,53 @@ def amdsmi_get_cpu_fclk_mclk( } def amdsmi_get_cpu_cclk_limit( - socket_handle: amdsmi_wrapper.amdsmi_cpusocket_handle, sock_idx: int + processor_handle: amdsmi_wrapper.amdsmi_processor_handle ) -> int: - if not isinstance(socket_handle, amdsmi_wrapper.amdsmi_cpusocket_handle): + if not isinstance(processor_handle, amdsmi_wrapper.amdsmi_processor_handle): raise AmdSmiParameterException( - socket_handle, amdsmi_wrapper.amdsmi_cpusocket_handle + processor_handle, amdsmi_wrapper.amdsmi_processor_handle ) - if not isinstance(sock_idx, int): - raise AmdSmiParameterException(sock_idx, int) cclk = ctypes.c_uint32() _check_res( amdsmi_wrapper.amdsmi_get_cpu_cclk_limit( - socket_handle, sock_idx, ctypes.byref(cclk) + processor_handle, ctypes.byref(cclk) ) ) return cclk.value def amdsmi_get_cpu_socket_current_active_freq_limit( - socket_handle: amdsmi_wrapper.amdsmi_cpusocket_handle, sock_idx: int + processor_handle: amdsmi_wrapper.amdsmi_processor_handle ) -> int: - if not isinstance(socket_handle, amdsmi_wrapper.amdsmi_cpusocket_handle): + if not isinstance(processor_handle, amdsmi_wrapper.amdsmi_processor_handle): raise AmdSmiParameterException( - socket_handle, amdsmi_wrapper.amdsmi_cpusocket_handle + processor_handle, amdsmi_wrapper.amdsmi_processor_handle ) - if not isinstance(sock_idx, int): - raise AmdSmiParameterException(sock_idx, int) freq = ctypes.c_uint16() src_type = ctypes.pointer(ctypes.pointer(ctypes.c_char())) _check_res( amdsmi_wrapper.amdsmi_get_cpu_socket_current_active_freq_limit( - socket_handle, sock_idx, ctypes.byref(freq), src_type + processor_handle, ctypes.byref(freq), src_type ) ) return freq.value def amdsmi_get_cpu_socket_freq_range( - socket_handle: amdsmi_wrapper.amdsmi_cpusocket_handle, sock_idx: int + processor_handle: amdsmi_wrapper.amdsmi_processor_handle ): - if not isinstance(socket_handle, amdsmi_wrapper.amdsmi_cpusocket_handle): + if not isinstance(processor_handle, amdsmi_wrapper.amdsmi_processor_handle): raise AmdSmiParameterException( - socket_handle, amdsmi_wrapper.amdsmi_cpusocket_handle + processor_handle, amdsmi_wrapper.amdsmi_processor_handle ) - if not isinstance(sock_idx, int): - raise AmdSmiParameterException(sock_idx, int) freq_max = ctypes.c_uint16() freq_min = ctypes.c_uint16() _check_res( amdsmi_wrapper.amdsmi_get_cpu_socket_freq_range( - socket_handle, sock_idx, ctypes.byref(freq_max), ctypes.byref(freq_min) + processor_handle, ctypes.byref(freq_max), ctypes.byref(freq_min) ) ) @@ -848,223 +855,198 @@ def amdsmi_get_cpu_socket_freq_range( } def amdsmi_get_cpu_core_current_freq_limit( - processor_handle: amdsmi_wrapper.amdsmi_processor_handle, core_idx: int + processor_handle: amdsmi_wrapper.amdsmi_processor_handle ) -> int: if not isinstance(processor_handle, amdsmi_wrapper.amdsmi_processor_handle): raise AmdSmiParameterException( processor_handle, amdsmi_wrapper.amdsmi_processor_handle ) - if not isinstance(core_idx, int): - raise AmdSmiParameterException(core_idx, int) freq = ctypes.c_uint32() _check_res( amdsmi_wrapper.amdsmi_get_cpu_core_current_freq_limit( - processor_handle, core_idx, ctypes.byref(freq) + processor_handle, ctypes.byref(freq) ) ) return freq.value def amdsmi_get_cpu_socket_power( - socket_handle: amdsmi_wrapper.amdsmi_cpusocket_handle, sock_idx: int + processor_handle: amdsmi_wrapper.amdsmi_processor_handle ) -> int: - if not isinstance(socket_handle, amdsmi_wrapper.amdsmi_cpusocket_handle): + if not isinstance(processor_handle, amdsmi_wrapper.amdsmi_processor_handle): raise AmdSmiParameterException( - socket_handle, amdsmi_wrapper.amdsmi_cpusocket_handle + processor_handle, amdsmi_wrapper.amdsmi_processor_handle ) - if not isinstance(sock_idx, int): - raise AmdSmiParameterException(sock_idx, int) ppower = ctypes.c_uint32() _check_res( amdsmi_wrapper.amdsmi_get_cpu_socket_power( - socket_handle, sock_idx, ctypes.byref(ppower) + processor_handle, ctypes.byref(ppower) ) ) return ppower.value def amdsmi_get_cpu_socket_power_cap( - socket_handle: amdsmi_wrapper.amdsmi_cpusocket_handle, sock_idx: int + processor_handle: amdsmi_wrapper.amdsmi_processor_handle ) -> int: - if not isinstance(socket_handle, amdsmi_wrapper.amdsmi_cpusocket_handle): + if not isinstance(processor_handle, amdsmi_wrapper.amdsmi_processor_handle): raise AmdSmiParameterException( - socket_handle, amdsmi_wrapper.amdsmi_cpusocket_handle + processor_handle, amdsmi_wrapper.amdsmi_processor_handle ) - if not isinstance(sock_idx, int): - raise AmdSmiParameterException(sock_idx, int) pcap = ctypes.c_uint32() _check_res( amdsmi_wrapper.amdsmi_get_cpu_socket_power_cap( - socket_handle, sock_idx, ctypes.byref(pcap) + processor_handle, ctypes.byref(pcap) ) ) return pcap.value def amdsmi_get_cpu_socket_power_cap_max( - socket_handle: amdsmi_wrapper.amdsmi_cpusocket_handle, sock_idx: int + processor_handle: amdsmi_wrapper.amdsmi_processor_handle ) -> int: - if not isinstance(socket_handle, amdsmi_wrapper.amdsmi_cpusocket_handle): + if not isinstance(processor_handle, amdsmi_wrapper.amdsmi_processor_handle): raise AmdSmiParameterException( - socket_handle, amdsmi_wrapper.amdsmi_cpusocket_handle + processor_handle, amdsmi_wrapper.amdsmi_processor_handle ) - if not isinstance(sock_idx, int): - raise AmdSmiParameterException(sock_idx, int) pmax = ctypes.c_uint32() _check_res( amdsmi_wrapper.amdsmi_get_cpu_socket_power_cap_max( - socket_handle, sock_idx, ctypes.byref(pmax) + processor_handle, ctypes.byref(pmax) ) ) return pmax.value def amdsmi_get_cpu_pwr_svi_telemetry_all_rails( - socket_handle: amdsmi_wrapper.amdsmi_cpusocket_handle, sock_idx: int + processor_handle: amdsmi_wrapper.amdsmi_processor_handle ) -> int: - if not isinstance(socket_handle, amdsmi_wrapper.amdsmi_cpusocket_handle): + if not isinstance(processor_handle, amdsmi_wrapper.amdsmi_processor_handle): raise AmdSmiParameterException( - socket_handle, amdsmi_wrapper.amdsmi_cpusocket_handle + processor_handle, amdsmi_wrapper.amdsmi_processor_handle ) - if not isinstance(sock_idx, int): - raise AmdSmiParameterException(sock_idx, int) power = ctypes.c_uint32() _check_res( amdsmi_wrapper.amdsmi_get_cpu_pwr_svi_telemetry_all_rails( - socket_handle, sock_idx, ctypes.byref(power) + processor_handle, ctypes.byref(power) ) ) return power.value def amdsmi_set_cpu_socket_power_cap( - socket_handle: amdsmi_wrapper.amdsmi_cpusocket_handle, sock_idx: int, power_cap: int + processor_handle: amdsmi_wrapper.amdsmi_processor_handle, power_cap: int ): - if not isinstance(socket_handle, amdsmi_wrapper.amdsmi_cpusocket_handle): + if not isinstance(processor_handle, amdsmi_wrapper.amdsmi_processor_handle): raise AmdSmiParameterException( - socket_handle, amdsmi_wrapper.amdsmi_cpusocket_handle + processor_handle, amdsmi_wrapper.amdsmi_processor_handle ) - if not isinstance(sock_idx, int): - raise AmdSmiParameterException(sock_idx, int) if not isinstance(power_cap, int): raise AmdSmiParameterException(power_cap, int) - sock_idx = ctypes.c_uint32(sock_idx) + power_cap = ctypes.c_uint32(power_cap) _check_res( amdsmi_wrapper.amdsmi_set_cpu_socket_power_cap( - processor_handle, sock_idx, power_cap) + processor_handle, power_cap) ) def amdsmi_set_cpu_pwr_efficiency_mode( - socket_handle: amdsmi_wrapper.amdsmi_cpusocket_handle, sock_idx: int, mode: int + processor_handle: amdsmi_wrapper.amdsmi_processor_handle, mode: int ): - if not isinstance(socket_handle, amdsmi_wrapper.amdsmi_cpusocket_handle): + if not isinstance(processor_handle, amdsmi_wrapper.amdsmi_processor_handle): raise AmdSmiParameterException( - socket_handle, amdsmi_wrapper.amdsmi_cpusocket_handle + processor_handle, amdsmi_wrapper.amdsmi_processor_handle ) - if not isinstance(sock_idx, int): - raise AmdSmiParameterException(sock_idx, int) if not isinstance(mode, int): raise AmdSmiParameterException(mode, int) - sock_idx = ctypes.c_uint8(sock_idx) mode = ctypes.c_uint8(mode) _check_res( amdsmi_wrapper.amdsmi_set_cpu_pwr_efficiency_mode( - socket_handle, sock_idx, mode) + processor_handle, mode) ) def amdsmi_get_cpu_core_boostlimit( - processor_handle: amdsmi_wrapper.amdsmi_processor_handle, core_idx: int + processor_handle: amdsmi_wrapper.amdsmi_processor_handle ) -> int: if not isinstance(processor_handle, amdsmi_wrapper.amdsmi_processor_handle): raise AmdSmiParameterException( processor_handle, amdsmi_wrapper.amdsmi_processor_handle ) - if not isinstance(core_idx, int): - raise AmdSmiParameterException(core_idx, int) boostlimit = ctypes.c_uint32() _check_res( amdsmi_wrapper.amdsmi_get_cpu_core_boostlimit( - processor_handle, core_idx, ctypes.byref(boostlimit) + processor_handle, ctypes.byref(boostlimit) ) ) return boostlimit.value def amdsmi_get_cpu_socket_c0_residency( - socket_handle: amdsmi_wrapper.amdsmi_cpusocket_handle, sock_idx: int + processor_handle: amdsmi_wrapper.amdsmi_processor_handle ) -> int: - if not isinstance(socket_handle, amdsmi_wrapper.amdsmi_cpusocket_handle): + if not isinstance(processor_handle, amdsmi_wrapper.amdsmi_processor_handle): raise AmdSmiParameterException( - socket_handle, amdsmi_wrapper.amdsmi_cpusocket_handle + processor_handle, amdsmi_wrapper.amdsmi_processor_handle ) - if not isinstance(sock_idx, int): - raise AmdSmiParameterException(sock_idx, int) c0_residency = ctypes.c_uint32() _check_res( amdsmi_wrapper.amdsmi_get_cpu_socket_c0_residency( - socket_handle, sock_idx, ctypes.byref(c0_residency) + processor_handle, ctypes.byref(c0_residency) ) ) return c0_residency.value def amdsmi_set_cpu_core_boostlimit( - processor_handle: amdsmi_wrapper.amdsmi_processor_handle, core_idx: int, boostlimit: int + processor_handle: amdsmi_wrapper.amdsmi_processor_handle, boostlimit: int ): if not isinstance(processor_handle, amdsmi_wrapper.amdsmi_processor_handle): raise AmdSmiParameterException( processor_handle, amdsmi_wrapper.amdsmi_processor_handle ) - if not isinstance(core_idx, int): - raise AmdSmiParameterException(core_idx, int) if not isinstance(boostlimit, int): raise AmdSmiParameterException(boostlimit, int) - core_idx = ctypes.c_uint32(core_idx) boostlimit = ctypes.c_uint32(boostlimit) _check_res( amdsmi_wrapper.amdsmi_set_cpu_core_boostlimit( - processor_handle, core_idx, boostlimit) + processor_handle, boostlimit) ) def amdsmi_set_cpu_socket_boostlimit( - socket_handle: amdsmi_wrapper.amdsmi_cpusocket_handle, sock_idx: int, boostlimit: int + processor_handle: amdsmi_wrapper.amdsmi_processor_handle, boostlimit: int ): - if not isinstance(socket_handle, amdsmi_wrapper.amdsmi_cpusocket_handle): + if not isinstance(processor_handle, amdsmi_wrapper.amdsmi_processor_handle): raise AmdSmiParameterException( - socket_handle, amdsmi_wrapper.amdsmi_cpusocket_handle + processor_handle, amdsmi_wrapper.amdsmi_processor_handle ) - if not isinstance(sock_idx, int): - raise AmdSmiParameterException(sock_idx, int) if not isinstance(boostlimit, int): raise AmdSmiParameterException(boostlimit, int) - sock_idx = ctypes.c_uint32(sock_idx) boostlimit = ctypes.c_uint32(boostlimit) _check_res( amdsmi_wrapper.amdsmi_set_cpu_socket_boostlimit( - socket_handle, sock_idx, boostlimit) + processor_handle, boostlimit) ) -def amdsmi_get_cpu_ddr_bw(socket_handle: amdsmi_wrapper.amdsmi_cpusocket_handle): - if not isinstance(socket_handle, amdsmi_wrapper.amdsmi_cpusocket_handle): +def amdsmi_get_cpu_ddr_bw(processor_handle: amdsmi_wrapper.amdsmi_processor_handle): + if not isinstance(processor_handle, amdsmi_wrapper.amdsmi_processor_handle): raise AmdSmiParameterException( - socket_handle, amdsmi_wrapper.amdsmi_cpusocket_handle + processor_handle, amdsmi_wrapper.amdsmi_processor_handle ) ddr_bw = amdsmi_wrapper.amdsmi_ddr_bw_metrics_t() - _check_res(amdsmi_wrapper.amdsmi_get_cpu_ddr_bw(socket_handle, ddr_bw)) + _check_res(amdsmi_wrapper.amdsmi_get_cpu_ddr_bw(processor_handle, ddr_bw)) return { "ddr_bw_max_bw": ddr_bw.max_bw, @@ -1073,39 +1055,36 @@ def amdsmi_get_cpu_ddr_bw(socket_handle: amdsmi_wrapper.amdsmi_cpusocket_handle) } def amdsmi_get_cpu_socket_temperature( - socket_handle: amdsmi_wrapper.amdsmi_cpusocket_handle, sock_idx: int + processor_handle: amdsmi_wrapper.amdsmi_processor_handle ) -> int: - if not isinstance(socket_handle, amdsmi_wrapper.amdsmi_cpusocket_handle): + if not isinstance(processor_handle, amdsmi_wrapper.amdsmi_processor_handle): raise AmdSmiParameterException( - socket_handle, amdsmi_wrapper.amdsmi_cpusocket_handle + processor_handle, amdsmi_wrapper.amdsmi_processor_handle ) - if not isinstance(sock_idx, int): - raise AmdSmiParameterException(sock_idx, int) ptmon = ctypes.c_uint32() + _check_res( amdsmi_wrapper.amdsmi_get_cpu_socket_temperature( - socket_handle, sock_idx, ctypes.byref(ptmon) + processor_handle, ctypes.byref(ptmon) ) ) return ptmon.value def amdsmi_get_cpu_dimm_temp_range_and_refresh_rate( - socket_handle: amdsmi_wrapper.amdsmi_cpusocket_handle, - sock_idx: int, dimm_addr: int): - if not isinstance(socket_handle, amdsmi_wrapper.amdsmi_cpusocket_handle): + processor_handle: amdsmi_wrapper.amdsmi_processor_handle, + dimm_addr: int): + if not isinstance(processor_handle, amdsmi_wrapper.amdsmi_processor_handle): raise AmdSmiParameterException( - socket_handle, amdsmi_wrapper.amdsmi_cpusocket_handle + processor_handle, amdsmi_wrapper.amdsmi_processor_handle ) - if not isinstance(sock_idx, int): - raise AmdSmiParameterException(sock_idx, int) if not isinstance(dimm_addr, int): raise AmdSmiParameterException(dimm_addr, int) dimm = amdsmi_wrapper.amdsmi_temp_range_refresh_rate_t() - _check_res(amdsmi_wrapper.amdsmi_get_cpu_dimm_temp_range_and_refresh_rate(socket_handle, dimm)) + _check_res(amdsmi_wrapper.amdsmi_get_cpu_dimm_temp_range_and_refresh_rate(processor_handle, dimm)) return { "dimm_temperature_range": dimm.range, @@ -1113,20 +1092,18 @@ def amdsmi_get_cpu_dimm_temp_range_and_refresh_rate( } def amdsmi_get_cpu_dimm_power_consumption( - socket_handle: amdsmi_wrapper.amdsmi_cpusocket_handle, - sock_idx: int, dimm_addr: int): - if not isinstance(socket_handle, amdsmi_wrapper.amdsmi_cpusocket_handle): + processor_handle: amdsmi_wrapper.amdsmi_processor_handle, + dimm_addr: int): + if not isinstance(processor_handle, amdsmi_wrapper.amdsmi_processor_handle): raise AmdSmiParameterException( - socket_handle, amdsmi_wrapper.amdsmi_cpusocket_handle + processor_handle, amdsmi_wrapper.amdsmi_processor_handle ) - if not isinstance(sock_idx, int): - raise AmdSmiParameterException(sock_idx, int) if not isinstance(dimm_addr, int): raise AmdSmiParameterException(dimm_addr, int) dimm = amdsmi_wrapper.amdsmi_dimm_power_t() - _check_res(amdsmi_wrapper.amdsmi_get_cpu_dimm_power_consumption(socket_handle, dimm)) + _check_res(amdsmi_wrapper.amdsmi_get_cpu_dimm_power_consumption(processor_handle, dimm)) return { "dimm_power_consumed": dimm.power, @@ -1135,20 +1112,18 @@ def amdsmi_get_cpu_dimm_power_consumption( } def amdsmi_get_cpu_dimm_thermal_sensor( - socket_handle: amdsmi_wrapper.amdsmi_cpusocket_handle, - sock_idx: int, dimm_addr: int): - if not isinstance(socket_handle, amdsmi_wrapper.amdsmi_cpusocket_handle): + processor_handle: amdsmi_wrapper.amdsmi_processor_handle, + dimm_addr: int): + if not isinstance(processor_handle, amdsmi_wrapper.amdsmi_processor_handle): raise AmdSmiParameterException( - socket_handle, amdsmi_wrapper.amdsmi_cpusocket_handle + processor_handle, amdsmi_wrapper.amdsmi_processor_handle ) - if not isinstance(sock_idx, int): - raise AmdSmiParameterException(sock_idx, int) if not isinstance(dimm_addr, int): raise AmdSmiParameterException(dimm_addr, int) dimm_thermal = amdsmi_wrapper.amdsmi_dimm_thermal_t() - _check_res(amdsmi_wrapper.amdsmi_get_cpu_dimm_thermal_sensor(socket_handle, dimm_thermal)) + _check_res(amdsmi_wrapper.amdsmi_get_cpu_dimm_thermal_sensor(processor_handle, dimm_thermal)) return { "dimm_thermal_sensor_value": dimm_thermal.sensor, @@ -1158,11 +1133,11 @@ def amdsmi_get_cpu_dimm_thermal_sensor( } def amdsmi_set_cpu_xgmi_width( - socket_handle: amdsmi_wrapper.amdsmi_cpusocket_handle, min_width: int, max_width: int + processor_handle: amdsmi_wrapper.amdsmi_processor_handle, min_width: int, max_width: int ): - if not isinstance(socket_handle, amdsmi_wrapper.amdsmi_cpusocket_handle): + if not isinstance(processor_handle, amdsmi_wrapper.amdsmi_processor_handle): raise AmdSmiParameterException( - socket_handle, amdsmi_wrapper.amdsmi_cpusocket_handle + processor_handle, amdsmi_wrapper.amdsmi_processor_handle ) if not isinstance(min_width, int): raise AmdSmiParameterException(min_width, int) @@ -1174,9 +1149,294 @@ def amdsmi_set_cpu_xgmi_width( _check_res( amdsmi_wrapper.amdsmi_set_cpu_xgmi_width( - socket_handle, min_width, max_width) + processor_handle, min_width, max_width) ) +def amdsmi_set_cpu_gmi3_link_width_range( + processor_handle: amdsmi_wrapper.amdsmi_processor_handle, + min_link_width: int, max_link_width: int +): + if not isinstance(processor_handle, amdsmi_wrapper.amdsmi_processor_handle): + raise AmdSmiParameterException( + processor_handle, amdsmi_wrapper.amdsmi_processor_handle + ) + if not isinstance(min_link_width, int): + raise AmdSmiParameterException(min_link_width, int) + if not isinstance(max_link_width, int): + raise AmdSmiParameterException(max_link_width, int) + + min_link_width = ctypes.c_uint8(min_link_width) + max_link_width = ctypes.c_uint8(max_link_width) + + _check_res( + amdsmi_wrapper.amdsmi_set_cpu_gmi3_link_width_range( + processor_handle, min_link_width, max_link_width) + ) + +def amdsmi_cpu_apb_enable( + processor_handle: amdsmi_wrapper.amdsmi_processor_handle +): + if not isinstance(processor_handle, amdsmi_wrapper.amdsmi_processor_handle): + raise AmdSmiParameterException( + processor_handle, amdsmi_wrapper.amdsmi_processor_handle + ) + + _check_res( + amdsmi_wrapper.amdsmi_cpu_apb_enable(processor_handle) + ) + +def amdsmi_cpu_apb_disable( + processor_handle: amdsmi_wrapper.amdsmi_processor_handle, + pstate: int +): + if not isinstance(processor_handle, amdsmi_wrapper.amdsmi_processor_handle): + raise AmdSmiParameterException( + processor_handle, amdsmi_wrapper.amdsmi_processor_handle + ) + if not isinstance(pstate, int): + raise AmdSmiParameterException(pstate, int) + + pstate = ctypes.c_uint8(pstate) + + _check_res( + amdsmi_wrapper.amdsmi_cpu_apb_disable( + processor_handle, pstate) + ) + +def amdsmi_set_cpu_socket_lclk_dpm_level( + processor_handle: amdsmi_wrapper.amdsmi_processor_handle, + nbio_id: int, min_val: int, max_val: int +): + if not isinstance(processor_handle, amdsmi_wrapper.amdsmi_processor_handle): + raise AmdSmiParameterException( + processor_handle, amdsmi_wrapper.amdsmi_processor_handle + ) + if not isinstance(nbio_id, int): + raise AmdSmiParameterException(nbio_id, int) + if not isinstance(min_val, int): + raise AmdSmiParameterException(min_val, int) + if not isinstance(max_val, int): + raise AmdSmiParameterException(max_val, int) + + nbio_id = ctypes.c_uint8(nbio_id) + min_val = ctypes.c_uint8(min_val) + max_val = ctypes.c_uint8(max_val) + + _check_res( + amdsmi_wrapper.amdsmi_set_cpu_socket_lclk_dpm_level( + processor_handle, nbio_id, min_val, max_val) + ) + +def amdsmi_get_cpu_socket_lclk_dpm_level( + processor_handle: amdsmi_wrapper.amdsmi_processor_handle, + nbio_id: int +): + if not isinstance(processor_handle, amdsmi_wrapper.amdsmi_processor_handle): + raise AmdSmiParameterException( + processor_handle, amdsmi_wrapper.amdsmi_processor_handle + ) + if not isinstance(nbio_id, int): + raise AmdSmiParameterException(nbio_id, int) + + nbio_id = ctypes.c_uint8(nbio_id) + dpm_level = amdsmi_wrapper.amdsmi_dpm_level_t() + + _check_res(amdsmi_wrapper.amdsmi_get_cpu_socket_lclk_dpm_level(processor_handle, nbio_id, dpm_level)) + + return { + "nbio_max_dpm_level": nbio.max_dpm_level, + "nbio_min_dpm_level": nbio.min_dpm_level + } + +def amdsmi_set_cpu_pcie_link_rate( + processor_handle: amdsmi_wrapper.amdsmi_processor_handle, + rate_ctrl: int +): + if not isinstance(processor_handle, amdsmi_wrapper.amdsmi_processor_handle): + raise AmdSmiParameterException( + processor_handle, amdsmi_wrapper.amdsmi_processor_handle + ) + if not isinstance(rate_ctrl, int): + raise AmdSmiParameterException(rate_ctrl, int) + + rate_ctrl = ctypes.c_uint8(rate_ctrl) + prev_mode = ctypes.c_uint8() + + _check_res( + amdsmi_wrapper.amdsmi_set_cpu_pcie_link_rate( + processor_handle, rate_ctrl, ctypes.byref(prev_mode)) + ) + +def amdsmi_set_cpu_df_pstate_range( + processor_handle: amdsmi_wrapper.amdsmi_processor_handle, + max_pstate: int, min_pstate: int +): + if not isinstance(processor_handle, amdsmi_wrapper.amdsmi_processor_handle): + raise AmdSmiParameterException( + processor_handle, amdsmi_wrapper.amdsmi_processor_handle + ) + if not isinstance(max_pstate, int): + raise AmdSmiParameterException(max_pstate, int) + if not isinstance(min_pstate, int): + raise AmdSmiParameterException(min_pstate, int) + + max_pstate = ctypes.c_uint8(max_pstate) + min_pstate = ctypes.c_uint8(min_pstate) + + _check_res( + amdsmi_wrapper.amdsmi_set_cpu_df_pstate_range( + processor_handle, max_pstate, min_pstate)) + +def amdsmi_get_cpu_current_io_bandwidth( + processor_handle: amdsmi_wrapper.amdsmi_processor_handle, + encoding: int, + link_name: str +): + if not isinstance(processor_handle, amdsmi_wrapper.amdsmi_processor_handle): + raise AmdSmiParameterException( + processor_handle, amdsmi_wrapper.amdsmi_processor_handle + ) + + link = amdsmi_wrapper.amdsmi_link_id_bw_type_t() + link.bw_type = ctypes.c_uint32(encoding) + link.link_name = ctypes.create_string_buffer(link_name.encode('utf-8')) + io_bw = ctypes.c_uint32() + + _check_res( + amdsmi_wrapper.amdsmi_get_cpu_current_io_bandwidth( + processor_handle, link, ctypes.byref(io_bw)) + ) + + return io_bw.value + +def amdsmi_get_cpu_current_xgmi_bw( + processor_handle: amdsmi_wrapper.amdsmi_processor_handle, + encoding: int, + link_name: str +): + if not isinstance(processor_handle, amdsmi_wrapper.amdsmi_processor_handle): + raise AmdSmiParameterException( + processor_handle, amdsmi_wrapper.amdsmi_processor_handle + ) + + link = amdsmi_wrapper.amdsmi_link_id_bw_type_t() + link.bw_type = ctypes.c_uint32(encoding) + link.link_name = ctypes.create_string_buffer(link_name.encode('utf-8')) + xgmi_bw = ctypes.c_uint32() + + _check_res( + amdsmi_wrapper.amdsmi_get_cpu_current_xgmi_bw( + processor_handle, link, ctypes.byref(xgmi_bw)) + ) + + return xgmi_bw.value + +def amdsmi_get_metrics_table_version( + processor_handle: amdsmi_wrapper.amdsmi_processor_handle +): + if not isinstance(processor_handle, amdsmi_wrapper.amdsmi_processor_handle): + raise AmdSmiParameterException( + processor_handle, amdsmi_wrapper.amdsmi_processor_handle + ) + + metric_tbl_version = ctypes.c_uint32() + + _check_res( + amdsmi_wrapper.amdsmi_get_metrics_table_version( + processor_handle, ctypes.byref(metric_tbl_version)) + ) + + return metric_tbl_version.value + +def amdsmi_get_metrics_table( + processor_handle: amdsmi_wrapper.amdsmi_processor_handle +): + if not isinstance(processor_handle, amdsmi_wrapper.amdsmi_processor_handle): + raise AmdSmiParameterException( + processor_handle, amdsmi_wrapper.amdsmi_processor_handle + ) + + mtbl = amdsmi_wrapper.struct_hsmp_metric_table() + + _check_res(amdsmi_wrapper.amdsmi_get_metrics_table(processor_handle, mtbl)) + + return { + "mtbl_accumulation_counter": mtbl.accumulation_counter, + "mtbl_max_socket_temperature": mtbl.max_socket_temperature, + "mtbl_max_vr_temperature": mtbl.max_vr_temperature, + "mtbl_max_hbm_temperature": mtbl.max_hbm_temperature, + "mtbl_max_socket_temperature_acc": mtbl.max_socket_temperature_acc, + "mtbl_max_vr_temperature_acc": mtbl.max_vr_temperature_acc, + "mtbl_max_hbm_temperature_acc": mtbl.max_hbm_temperature_acc, + "mtbl_socket_power_limit": mtbl.socket_power_limit, + "mtbl_max_socket_power_limit": mtbl.max_socket_power_limit, + "mtbl_socket_power": mtbl.socket_power, + "mtbl_timestamp": mtbl.timestamp, + "mtbl_socket_energy_acc": mtbl.socket_energy_acc, + "mtbl_ccd_energy_acc": mtbl.ccd_energy_acc, + "mtbl_xcd_energy_acc": mtbl.xcd_energy_acc, + "mtbl_aid_energy_acc": mtbl.aid_energy_acc, + "mtbl_hbm_energy_acc": mtbl.hbm_energy_acc, + "mtbl_cclk_frequency_limit": mtbl.cclk_frequency_limit, + "mtbl_gfxclk_frequency_limit": mtbl.gfxclk_frequency_limit, + "mtbl_fclk_frequency": mtbl.fclk_frequency, + "mtbl_uclk_frequency": mtbl.uclk_frequency, + "mtbl_socclk_frequency": mtbl.socclk_frequency, + "mtbl_vclk_frequency": mtbl.vclk_frequency, + "mtbl_dclk_frequency": mtbl.dclk_frequency, + "mtbl_lclk_frequency": mtbl.lclk_frequency, + "mtbl_fclk_frequency_table": mtbl.fclk_frequency_table, + "mtbl_uclk_frequency_table": mtbl.uclk_frequency_table, + "mtbl_socclk_frequency_table": mtbl.socclk_frequency_table, + "mtbl_vclk_frequency_table": mtbl.vclk_frequency_table, + "mtbl_dclk_frequency_table": mtbl.dclk_frequency_table, + "mtbl_lclk_frequency_table": mtbl.lclk_frequency_table, + "mtbl_cclk_frequency_acc": mtbl.cclk_frequency_acc, + "mtbl_gfxclk_frequency_acc": mtbl.gfxclk_frequency_acc, + "mtbl_gfxclk_frequency": mtbl.gfxclk_frequency, + "mtbl_max_cclk_frequency": mtbl.max_cclk_frequency, + "mtbl_min_cclk_frequency": mtbl.min_cclk_frequency, + "mtbl_max_gfxclk_frequency": mtbl.max_gfxclk_frequency, + "mtbl_min_gfxclk_frequency": mtbl.min_gfxclk_frequency, + "mtbl_max_lclk_dpm_range": mtbl.max_lclk_dpm_range, + "mtbl_min_lclk_dpm_range": mtbl.min_lclk_dpm_range, + "mtbl_xgmi_width": mtbl.xgmi_width, + "mtbl_xgmi_bitrate": mtbl.xgmi_bitrate, + "mtbl_xgmi_read_bandwidth_acc": mtbl.xgmi_read_bandwidth_acc, + "mtbl_xgmi_write_bandwidth_acc": mtbl.xgmi_write_bandwidth_acc, + "mtbl_socket_c0_residency": mtbl.socket_c0_residency, + "mtbl_socket_gfx_busy": mtbl.socket_gfx_busy, + "mtbl_dram_bandwidth_utilization": mtbl.dram_bandwidth_utilization, + "mtbl_socket_c0_residency_acc": mtbl.socket_c0_residency_acc, + "mtbl_socket_gfx_busy_acc": mtbl.socket_gfx_busy_acc, + "mtbl_dram_bandwidth_acc": mtbl.dram_bandwidth_acc, + "mtbl_max_dram_bandwidth": mtbl.max_dram_bandwidth, + "mtbl_dram_bandwidth_utilization_acc": mtbl.dram_bandwidth_utilization_acc, + "mtbl_pcie_bandwidth_acc": mtbl.pcie_bandwidth_acc, + "mtbl_prochot_residency_acc": mtbl.prochot_residency_acc, + "mtbl_ppt_residency_acc": mtbl.ppt_residency_acc, + "mtbl_socket_thm_residency_acc": mtbl.socket_thm_residency_acc, + "mtbl_vr_thm_residency_acc": mtbl.vr_thm_residency_acc, + "mtbl_hbm_thm_residency_acc": mtbl.hbm_thm_residency_acc + } + +def amdsmi_first_online_core_on_cpu_socket( + processor_handle: amdsmi_wrapper.amdsmi_processor_handle +): + if not isinstance(processor_handle, amdsmi_wrapper.amdsmi_processor_handle): + raise AmdSmiParameterException( + processor_handle, amdsmi_wrapper.amdsmi_processor_handle + ) + + pcore_ind = ctypes.c_uint32() + + _check_res( + amdsmi_wrapper.amdsmi_first_online_core_on_cpu_socket( + processor_handle, ctypes.byref(pcore_ind)) + ) + + return pcore_ind.value + def amdsmi_init(flag=AmdSmiInitFlags.INIT_AMD_GPUS): if not isinstance(flag, AmdSmiInitFlags): raise AmdSmiParameterException(flag, AmdSmiInitFlags) diff --git a/projects/amdsmi/py-interface/amdsmi_wrapper.py b/projects/amdsmi/py-interface/amdsmi_wrapper.py index 78fc72bb5f..c0047ff1be 100644 --- a/projects/amdsmi/py-interface/amdsmi_wrapper.py +++ b/projects/amdsmi/py-interface/amdsmi_wrapper.py @@ -181,6 +181,16 @@ try: except OSError as error: print(error) print("Unable to find amdsmi library try installing amd-smi-lib from your package manager") +class FunctionFactoryStub: + def __getattr__(self, _): + return ctypes.CFUNCTYPE(lambda y:y) + +# libraries['FIXME_STUB'] explanation +# As you did not list (-l libraryname.so) a library that exports this function +# This is a non-working stub instead. +# You can either re-run clan2py with -l /path/to/library.so +# Or manually fix this by comment the ctypes.CDLL loading +_libraries['FIXME_STUB'] = FunctionFactoryStub() # ctypes.CDLL('FIXME_STUB') @@ -191,12 +201,14 @@ amdsmi_init_flags_t__enumvalues = { 2: 'AMDSMI_INIT_AMD_GPUS', 4: 'AMDSMI_INIT_NON_AMD_CPUS', 8: 'AMDSMI_INIT_NON_AMD_GPUS', + 3: 'AMDSMI_INIT_AMD_APUS', } AMDSMI_INIT_ALL_PROCESSORS = 0 AMDSMI_INIT_AMD_CPUS = 1 AMDSMI_INIT_AMD_GPUS = 2 AMDSMI_INIT_NON_AMD_CPUS = 4 AMDSMI_INIT_NON_AMD_GPUS = 8 +AMDSMI_INIT_AMD_APUS = 3 amdsmi_init_flags_t = ctypes.c_uint32 # enum # values for enumeration 'amdsmi_mm_ip_t' @@ -1715,24 +1727,26 @@ amdsmi_shut_down.argtypes = [] amdsmi_get_socket_handles = _libraries['libamd_smi.so'].amdsmi_get_socket_handles amdsmi_get_socket_handles.restype = amdsmi_status_t amdsmi_get_socket_handles.argtypes = [ctypes.POINTER(ctypes.c_uint32), ctypes.POINTER(ctypes.POINTER(None))] -amdsmi_get_cpusocket_handles = _libraries['libamd_smi.so'].amdsmi_get_cpusocket_handles +amdsmi_get_cpusocket_handles = _libraries['FIXME_STUB'].amdsmi_get_cpusocket_handles amdsmi_get_cpusocket_handles.restype = amdsmi_status_t amdsmi_get_cpusocket_handles.argtypes = [ctypes.POINTER(ctypes.c_uint32), ctypes.POINTER(ctypes.POINTER(None))] 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, size_t, ctypes.POINTER(ctypes.c_char)] -uint32_t = ctypes.c_uint32 -amdsmi_get_cpusocket_info = _libraries['libamd_smi.so'].amdsmi_get_cpusocket_info -amdsmi_get_cpusocket_info.restype = amdsmi_status_t -amdsmi_get_cpusocket_info.argtypes = [amdsmi_cpusocket_handle, uint32_t] -amdsmi_get_cpucore_info = _libraries['libamd_smi.so'].amdsmi_get_cpucore_info -amdsmi_get_cpucore_info.restype = amdsmi_status_t -amdsmi_get_cpucore_info.argtypes = [amdsmi_processor_handle, uint32_t] +amdsmi_get_processor_info = _libraries['libamd_smi.so'].amdsmi_get_processor_info +amdsmi_get_processor_info.restype = amdsmi_status_t +amdsmi_get_processor_info.argtypes = [amdsmi_processor_handle, size_t, ctypes.POINTER(ctypes.c_char)] +amdsmi_get_processor_count_from_handles = _libraries['libamd_smi.so'].amdsmi_get_processor_count_from_handles +amdsmi_get_processor_count_from_handles.restype = amdsmi_status_t +amdsmi_get_processor_count_from_handles.argtypes = [ctypes.POINTER(ctypes.POINTER(None)), ctypes.POINTER(ctypes.c_uint32), ctypes.POINTER(ctypes.c_uint32), ctypes.POINTER(ctypes.c_uint32), ctypes.POINTER(ctypes.c_uint32)] +amdsmi_get_processor_handles_by_type = _libraries['libamd_smi.so'].amdsmi_get_processor_handles_by_type +amdsmi_get_processor_handles_by_type.restype = amdsmi_status_t +amdsmi_get_processor_handles_by_type.argtypes = [amdsmi_socket_handle, processor_type_t, ctypes.POINTER(ctypes.POINTER(None)), ctypes.POINTER(ctypes.c_uint32)] 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))] -amdsmi_get_cpucore_handles = _libraries['libamd_smi.so'].amdsmi_get_cpucore_handles +amdsmi_get_cpucore_handles = _libraries['FIXME_STUB'].amdsmi_get_cpucore_handles amdsmi_get_cpucore_handles.restype = amdsmi_status_t amdsmi_get_cpucore_handles.argtypes = [amdsmi_cpusocket_handle, ctypes.POINTER(ctypes.c_uint32), ctypes.POINTER(ctypes.POINTER(None))] amdsmi_get_processor_type = _libraries['libamd_smi.so'].amdsmi_get_processor_type @@ -1750,6 +1764,7 @@ amdsmi_get_gpu_revision.argtypes = [amdsmi_processor_handle, ctypes.POINTER(ctyp amdsmi_get_gpu_vendor_name = _libraries['libamd_smi.so'].amdsmi_get_gpu_vendor_name amdsmi_get_gpu_vendor_name.restype = amdsmi_status_t amdsmi_get_gpu_vendor_name.argtypes = [amdsmi_processor_handle, ctypes.POINTER(ctypes.c_char), size_t] +uint32_t = ctypes.c_uint32 amdsmi_get_gpu_vram_vendor = _libraries['libamd_smi.so'].amdsmi_get_gpu_vram_vendor amdsmi_get_gpu_vram_vendor.restype = amdsmi_status_t amdsmi_get_gpu_vram_vendor.argtypes = [amdsmi_processor_handle, ctypes.POINTER(ctypes.c_char), uint32_t] @@ -2204,122 +2219,122 @@ amdsmi_get_gpu_metrics_log.restype = amdsmi_status_t amdsmi_get_gpu_metrics_log.argtypes = [amdsmi_processor_handle] amdsmi_get_cpu_core_energy = _libraries['libamd_smi.so'].amdsmi_get_cpu_core_energy amdsmi_get_cpu_core_energy.restype = amdsmi_status_t -amdsmi_get_cpu_core_energy.argtypes = [amdsmi_processor_handle, uint32_t, ctypes.POINTER(ctypes.c_uint64)] +amdsmi_get_cpu_core_energy.argtypes = [amdsmi_processor_handle, ctypes.POINTER(ctypes.c_uint64)] amdsmi_get_cpu_socket_energy = _libraries['libamd_smi.so'].amdsmi_get_cpu_socket_energy amdsmi_get_cpu_socket_energy.restype = amdsmi_status_t -amdsmi_get_cpu_socket_energy.argtypes = [amdsmi_cpusocket_handle, uint32_t, ctypes.POINTER(ctypes.c_uint64)] +amdsmi_get_cpu_socket_energy.argtypes = [amdsmi_processor_handle, ctypes.POINTER(ctypes.c_uint64)] amdsmi_get_cpu_smu_fw_version = _libraries['libamd_smi.so'].amdsmi_get_cpu_smu_fw_version amdsmi_get_cpu_smu_fw_version.restype = amdsmi_status_t -amdsmi_get_cpu_smu_fw_version.argtypes = [amdsmi_cpusocket_handle, ctypes.POINTER(struct_amdsmi_smu_fw_version_t)] +amdsmi_get_cpu_smu_fw_version.argtypes = [amdsmi_processor_handle, ctypes.POINTER(struct_amdsmi_smu_fw_version_t)] amdsmi_get_cpu_hsmp_proto_ver = _libraries['libamd_smi.so'].amdsmi_get_cpu_hsmp_proto_ver amdsmi_get_cpu_hsmp_proto_ver.restype = amdsmi_status_t -amdsmi_get_cpu_hsmp_proto_ver.argtypes = [amdsmi_cpusocket_handle, ctypes.POINTER(ctypes.c_uint32)] +amdsmi_get_cpu_hsmp_proto_ver.argtypes = [amdsmi_processor_handle, ctypes.POINTER(ctypes.c_uint32)] amdsmi_get_cpu_prochot_status = _libraries['libamd_smi.so'].amdsmi_get_cpu_prochot_status amdsmi_get_cpu_prochot_status.restype = amdsmi_status_t -amdsmi_get_cpu_prochot_status.argtypes = [amdsmi_cpusocket_handle, uint32_t, ctypes.POINTER(ctypes.c_uint32)] +amdsmi_get_cpu_prochot_status.argtypes = [amdsmi_processor_handle, ctypes.POINTER(ctypes.c_uint32)] amdsmi_get_cpu_fclk_mclk = _libraries['libamd_smi.so'].amdsmi_get_cpu_fclk_mclk amdsmi_get_cpu_fclk_mclk.restype = amdsmi_status_t -amdsmi_get_cpu_fclk_mclk.argtypes = [amdsmi_cpusocket_handle, uint32_t, ctypes.POINTER(ctypes.c_uint32), ctypes.POINTER(ctypes.c_uint32)] +amdsmi_get_cpu_fclk_mclk.argtypes = [amdsmi_processor_handle, ctypes.POINTER(ctypes.c_uint32), ctypes.POINTER(ctypes.c_uint32)] amdsmi_get_cpu_cclk_limit = _libraries['libamd_smi.so'].amdsmi_get_cpu_cclk_limit amdsmi_get_cpu_cclk_limit.restype = amdsmi_status_t -amdsmi_get_cpu_cclk_limit.argtypes = [amdsmi_cpusocket_handle, uint32_t, ctypes.POINTER(ctypes.c_uint32)] +amdsmi_get_cpu_cclk_limit.argtypes = [amdsmi_processor_handle, ctypes.POINTER(ctypes.c_uint32)] amdsmi_get_cpu_socket_current_active_freq_limit = _libraries['libamd_smi.so'].amdsmi_get_cpu_socket_current_active_freq_limit amdsmi_get_cpu_socket_current_active_freq_limit.restype = amdsmi_status_t -amdsmi_get_cpu_socket_current_active_freq_limit.argtypes = [amdsmi_cpusocket_handle, uint32_t, ctypes.POINTER(ctypes.c_uint16), ctypes.POINTER(ctypes.POINTER(ctypes.c_char))] +amdsmi_get_cpu_socket_current_active_freq_limit.argtypes = [amdsmi_processor_handle, ctypes.POINTER(ctypes.c_uint16), ctypes.POINTER(ctypes.POINTER(ctypes.c_char))] amdsmi_get_cpu_socket_freq_range = _libraries['libamd_smi.so'].amdsmi_get_cpu_socket_freq_range amdsmi_get_cpu_socket_freq_range.restype = amdsmi_status_t -amdsmi_get_cpu_socket_freq_range.argtypes = [amdsmi_cpusocket_handle, uint32_t, ctypes.POINTER(ctypes.c_uint16), ctypes.POINTER(ctypes.c_uint16)] +amdsmi_get_cpu_socket_freq_range.argtypes = [amdsmi_processor_handle, ctypes.POINTER(ctypes.c_uint16), ctypes.POINTER(ctypes.c_uint16)] amdsmi_get_cpu_core_current_freq_limit = _libraries['libamd_smi.so'].amdsmi_get_cpu_core_current_freq_limit amdsmi_get_cpu_core_current_freq_limit.restype = amdsmi_status_t -amdsmi_get_cpu_core_current_freq_limit.argtypes = [amdsmi_processor_handle, uint32_t, ctypes.POINTER(ctypes.c_uint32)] +amdsmi_get_cpu_core_current_freq_limit.argtypes = [amdsmi_processor_handle, ctypes.POINTER(ctypes.c_uint32)] amdsmi_get_cpu_socket_power = _libraries['libamd_smi.so'].amdsmi_get_cpu_socket_power amdsmi_get_cpu_socket_power.restype = amdsmi_status_t -amdsmi_get_cpu_socket_power.argtypes = [amdsmi_cpusocket_handle, uint32_t, ctypes.POINTER(ctypes.c_uint32)] +amdsmi_get_cpu_socket_power.argtypes = [amdsmi_processor_handle, ctypes.POINTER(ctypes.c_uint32)] amdsmi_get_cpu_socket_power_cap = _libraries['libamd_smi.so'].amdsmi_get_cpu_socket_power_cap amdsmi_get_cpu_socket_power_cap.restype = amdsmi_status_t -amdsmi_get_cpu_socket_power_cap.argtypes = [amdsmi_cpusocket_handle, uint32_t, ctypes.POINTER(ctypes.c_uint32)] +amdsmi_get_cpu_socket_power_cap.argtypes = [amdsmi_processor_handle, ctypes.POINTER(ctypes.c_uint32)] amdsmi_get_cpu_socket_power_cap_max = _libraries['libamd_smi.so'].amdsmi_get_cpu_socket_power_cap_max amdsmi_get_cpu_socket_power_cap_max.restype = amdsmi_status_t -amdsmi_get_cpu_socket_power_cap_max.argtypes = [amdsmi_cpusocket_handle, uint32_t, ctypes.POINTER(ctypes.c_uint32)] +amdsmi_get_cpu_socket_power_cap_max.argtypes = [amdsmi_processor_handle, ctypes.POINTER(ctypes.c_uint32)] amdsmi_get_cpu_pwr_svi_telemetry_all_rails = _libraries['libamd_smi.so'].amdsmi_get_cpu_pwr_svi_telemetry_all_rails amdsmi_get_cpu_pwr_svi_telemetry_all_rails.restype = amdsmi_status_t -amdsmi_get_cpu_pwr_svi_telemetry_all_rails.argtypes = [amdsmi_cpusocket_handle, uint32_t, ctypes.POINTER(ctypes.c_uint32)] +amdsmi_get_cpu_pwr_svi_telemetry_all_rails.argtypes = [amdsmi_processor_handle, ctypes.POINTER(ctypes.c_uint32)] amdsmi_set_cpu_socket_power_cap = _libraries['libamd_smi.so'].amdsmi_set_cpu_socket_power_cap amdsmi_set_cpu_socket_power_cap.restype = amdsmi_status_t -amdsmi_set_cpu_socket_power_cap.argtypes = [amdsmi_cpusocket_handle, uint32_t, uint32_t] +amdsmi_set_cpu_socket_power_cap.argtypes = [amdsmi_processor_handle, uint32_t] uint8_t = ctypes.c_uint8 amdsmi_set_cpu_pwr_efficiency_mode = _libraries['libamd_smi.so'].amdsmi_set_cpu_pwr_efficiency_mode amdsmi_set_cpu_pwr_efficiency_mode.restype = amdsmi_status_t -amdsmi_set_cpu_pwr_efficiency_mode.argtypes = [amdsmi_cpusocket_handle, uint8_t, uint8_t] +amdsmi_set_cpu_pwr_efficiency_mode.argtypes = [amdsmi_processor_handle, uint8_t] amdsmi_get_cpu_core_boostlimit = _libraries['libamd_smi.so'].amdsmi_get_cpu_core_boostlimit amdsmi_get_cpu_core_boostlimit.restype = amdsmi_status_t -amdsmi_get_cpu_core_boostlimit.argtypes = [amdsmi_processor_handle, uint32_t, ctypes.POINTER(ctypes.c_uint32)] +amdsmi_get_cpu_core_boostlimit.argtypes = [amdsmi_processor_handle, ctypes.POINTER(ctypes.c_uint32)] amdsmi_get_cpu_socket_c0_residency = _libraries['libamd_smi.so'].amdsmi_get_cpu_socket_c0_residency amdsmi_get_cpu_socket_c0_residency.restype = amdsmi_status_t -amdsmi_get_cpu_socket_c0_residency.argtypes = [amdsmi_cpusocket_handle, uint32_t, ctypes.POINTER(ctypes.c_uint32)] +amdsmi_get_cpu_socket_c0_residency.argtypes = [amdsmi_processor_handle, ctypes.POINTER(ctypes.c_uint32)] amdsmi_set_cpu_core_boostlimit = _libraries['libamd_smi.so'].amdsmi_set_cpu_core_boostlimit amdsmi_set_cpu_core_boostlimit.restype = amdsmi_status_t -amdsmi_set_cpu_core_boostlimit.argtypes = [amdsmi_processor_handle, uint32_t, uint32_t] +amdsmi_set_cpu_core_boostlimit.argtypes = [amdsmi_processor_handle, uint32_t] amdsmi_set_cpu_socket_boostlimit = _libraries['libamd_smi.so'].amdsmi_set_cpu_socket_boostlimit amdsmi_set_cpu_socket_boostlimit.restype = amdsmi_status_t -amdsmi_set_cpu_socket_boostlimit.argtypes = [amdsmi_cpusocket_handle, uint32_t, uint32_t] +amdsmi_set_cpu_socket_boostlimit.argtypes = [amdsmi_processor_handle, uint32_t] amdsmi_get_cpu_ddr_bw = _libraries['libamd_smi.so'].amdsmi_get_cpu_ddr_bw amdsmi_get_cpu_ddr_bw.restype = amdsmi_status_t -amdsmi_get_cpu_ddr_bw.argtypes = [amdsmi_cpusocket_handle, ctypes.POINTER(struct_amdsmi_ddr_bw_metrics_t)] +amdsmi_get_cpu_ddr_bw.argtypes = [amdsmi_processor_handle, ctypes.POINTER(struct_amdsmi_ddr_bw_metrics_t)] amdsmi_get_cpu_socket_temperature = _libraries['libamd_smi.so'].amdsmi_get_cpu_socket_temperature amdsmi_get_cpu_socket_temperature.restype = amdsmi_status_t -amdsmi_get_cpu_socket_temperature.argtypes = [amdsmi_cpusocket_handle, uint32_t, ctypes.POINTER(ctypes.c_uint32)] +amdsmi_get_cpu_socket_temperature.argtypes = [amdsmi_processor_handle, ctypes.POINTER(ctypes.c_uint32)] amdsmi_get_cpu_dimm_temp_range_and_refresh_rate = _libraries['libamd_smi.so'].amdsmi_get_cpu_dimm_temp_range_and_refresh_rate amdsmi_get_cpu_dimm_temp_range_and_refresh_rate.restype = amdsmi_status_t -amdsmi_get_cpu_dimm_temp_range_and_refresh_rate.argtypes = [amdsmi_cpusocket_handle, uint8_t, uint8_t, ctypes.POINTER(struct_amdsmi_temp_range_refresh_rate_t)] +amdsmi_get_cpu_dimm_temp_range_and_refresh_rate.argtypes = [amdsmi_processor_handle, uint8_t, ctypes.POINTER(struct_amdsmi_temp_range_refresh_rate_t)] amdsmi_get_cpu_dimm_power_consumption = _libraries['libamd_smi.so'].amdsmi_get_cpu_dimm_power_consumption amdsmi_get_cpu_dimm_power_consumption.restype = amdsmi_status_t -amdsmi_get_cpu_dimm_power_consumption.argtypes = [amdsmi_cpusocket_handle, uint8_t, uint8_t, ctypes.POINTER(struct_amdsmi_dimm_power_t)] +amdsmi_get_cpu_dimm_power_consumption.argtypes = [amdsmi_processor_handle, uint8_t, ctypes.POINTER(struct_amdsmi_dimm_power_t)] amdsmi_get_cpu_dimm_thermal_sensor = _libraries['libamd_smi.so'].amdsmi_get_cpu_dimm_thermal_sensor amdsmi_get_cpu_dimm_thermal_sensor.restype = amdsmi_status_t -amdsmi_get_cpu_dimm_thermal_sensor.argtypes = [amdsmi_cpusocket_handle, uint8_t, uint8_t, ctypes.POINTER(struct_amdsmi_dimm_thermal_t)] +amdsmi_get_cpu_dimm_thermal_sensor.argtypes = [amdsmi_processor_handle, uint8_t, ctypes.POINTER(struct_amdsmi_dimm_thermal_t)] amdsmi_set_cpu_xgmi_width = _libraries['libamd_smi.so'].amdsmi_set_cpu_xgmi_width amdsmi_set_cpu_xgmi_width.restype = amdsmi_status_t -amdsmi_set_cpu_xgmi_width.argtypes = [amdsmi_cpusocket_handle, uint8_t, uint8_t] +amdsmi_set_cpu_xgmi_width.argtypes = [amdsmi_processor_handle, uint8_t, uint8_t] amdsmi_set_cpu_gmi3_link_width_range = _libraries['libamd_smi.so'].amdsmi_set_cpu_gmi3_link_width_range amdsmi_set_cpu_gmi3_link_width_range.restype = amdsmi_status_t -amdsmi_set_cpu_gmi3_link_width_range.argtypes = [amdsmi_cpusocket_handle, uint8_t, uint8_t, uint8_t] +amdsmi_set_cpu_gmi3_link_width_range.argtypes = [amdsmi_processor_handle, uint8_t, uint8_t] amdsmi_cpu_apb_enable = _libraries['libamd_smi.so'].amdsmi_cpu_apb_enable amdsmi_cpu_apb_enable.restype = amdsmi_status_t -amdsmi_cpu_apb_enable.argtypes = [amdsmi_cpusocket_handle, uint32_t] +amdsmi_cpu_apb_enable.argtypes = [amdsmi_processor_handle] amdsmi_cpu_apb_disable = _libraries['libamd_smi.so'].amdsmi_cpu_apb_disable amdsmi_cpu_apb_disable.restype = amdsmi_status_t -amdsmi_cpu_apb_disable.argtypes = [amdsmi_cpusocket_handle, uint32_t, uint8_t] +amdsmi_cpu_apb_disable.argtypes = [amdsmi_processor_handle, uint8_t] amdsmi_set_cpu_socket_lclk_dpm_level = _libraries['libamd_smi.so'].amdsmi_set_cpu_socket_lclk_dpm_level amdsmi_set_cpu_socket_lclk_dpm_level.restype = amdsmi_status_t -amdsmi_set_cpu_socket_lclk_dpm_level.argtypes = [amdsmi_cpusocket_handle, uint32_t, uint8_t, uint8_t, uint8_t] +amdsmi_set_cpu_socket_lclk_dpm_level.argtypes = [amdsmi_processor_handle, uint8_t, uint8_t, uint8_t] amdsmi_get_cpu_socket_lclk_dpm_level = _libraries['libamd_smi.so'].amdsmi_get_cpu_socket_lclk_dpm_level amdsmi_get_cpu_socket_lclk_dpm_level.restype = amdsmi_status_t -amdsmi_get_cpu_socket_lclk_dpm_level.argtypes = [amdsmi_cpusocket_handle, uint8_t, uint8_t, ctypes.POINTER(struct_amdsmi_dpm_level_t)] +amdsmi_get_cpu_socket_lclk_dpm_level.argtypes = [amdsmi_processor_handle, uint8_t, ctypes.POINTER(struct_amdsmi_dpm_level_t)] amdsmi_set_cpu_pcie_link_rate = _libraries['libamd_smi.so'].amdsmi_set_cpu_pcie_link_rate amdsmi_set_cpu_pcie_link_rate.restype = amdsmi_status_t -amdsmi_set_cpu_pcie_link_rate.argtypes = [amdsmi_cpusocket_handle, uint8_t, uint8_t, ctypes.POINTER(ctypes.c_ubyte)] +amdsmi_set_cpu_pcie_link_rate.argtypes = [amdsmi_processor_handle, uint8_t, ctypes.POINTER(ctypes.c_ubyte)] amdsmi_set_cpu_df_pstate_range = _libraries['libamd_smi.so'].amdsmi_set_cpu_df_pstate_range amdsmi_set_cpu_df_pstate_range.restype = amdsmi_status_t -amdsmi_set_cpu_df_pstate_range.argtypes = [amdsmi_cpusocket_handle, uint8_t, uint8_t, uint8_t] +amdsmi_set_cpu_df_pstate_range.argtypes = [amdsmi_processor_handle, uint8_t, uint8_t] amdsmi_get_cpu_current_io_bandwidth = _libraries['libamd_smi.so'].amdsmi_get_cpu_current_io_bandwidth amdsmi_get_cpu_current_io_bandwidth.restype = amdsmi_status_t -amdsmi_get_cpu_current_io_bandwidth.argtypes = [amdsmi_cpusocket_handle, uint8_t, amdsmi_link_id_bw_type_t, ctypes.POINTER(ctypes.c_uint32)] +amdsmi_get_cpu_current_io_bandwidth.argtypes = [amdsmi_processor_handle, amdsmi_link_id_bw_type_t, ctypes.POINTER(ctypes.c_uint32)] amdsmi_get_cpu_current_xgmi_bw = _libraries['libamd_smi.so'].amdsmi_get_cpu_current_xgmi_bw amdsmi_get_cpu_current_xgmi_bw.restype = amdsmi_status_t -amdsmi_get_cpu_current_xgmi_bw.argtypes = [amdsmi_cpusocket_handle, amdsmi_link_id_bw_type_t, ctypes.POINTER(ctypes.c_uint32)] +amdsmi_get_cpu_current_xgmi_bw.argtypes = [amdsmi_processor_handle, amdsmi_link_id_bw_type_t, ctypes.POINTER(ctypes.c_uint32)] amdsmi_get_metrics_table_version = _libraries['libamd_smi.so'].amdsmi_get_metrics_table_version amdsmi_get_metrics_table_version.restype = amdsmi_status_t -amdsmi_get_metrics_table_version.argtypes = [amdsmi_cpusocket_handle, ctypes.POINTER(ctypes.c_uint32)] +amdsmi_get_metrics_table_version.argtypes = [amdsmi_processor_handle, ctypes.POINTER(ctypes.c_uint32)] class struct_hsmp_metric_table(Structure): pass amdsmi_get_metrics_table = _libraries['libamd_smi.so'].amdsmi_get_metrics_table amdsmi_get_metrics_table.restype = amdsmi_status_t -amdsmi_get_metrics_table.argtypes = [amdsmi_cpusocket_handle, uint8_t, ctypes.POINTER(struct_hsmp_metric_table)] +amdsmi_get_metrics_table.argtypes = [amdsmi_processor_handle, ctypes.POINTER(struct_hsmp_metric_table)] amdsmi_first_online_core_on_cpu_socket = _libraries['libamd_smi.so'].amdsmi_first_online_core_on_cpu_socket amdsmi_first_online_core_on_cpu_socket.restype = amdsmi_status_t -amdsmi_first_online_core_on_cpu_socket.argtypes = [amdsmi_cpusocket_handle, uint32_t, ctypes.POINTER(ctypes.c_uint32)] +amdsmi_first_online_core_on_cpu_socket.argtypes = [amdsmi_processor_handle, ctypes.POINTER(ctypes.c_uint32)] amdsmi_get_esmi_err_msg = _libraries['libamd_smi.so'].amdsmi_get_esmi_err_msg amdsmi_get_esmi_err_msg.restype = ctypes.POINTER(ctypes.POINTER(ctypes.c_char)) amdsmi_get_esmi_err_msg.argtypes = [amdsmi_status_t, ctypes.POINTER(ctypes.POINTER(ctypes.c_char))] @@ -2364,9 +2379,10 @@ __all__ = \ 'AMDSMI_GPU_BLOCK_SEM', 'AMDSMI_GPU_BLOCK_SMN', 'AMDSMI_GPU_BLOCK_UMC', 'AMDSMI_GPU_BLOCK_XGMI_WAFL', 'AMDSMI_HSMP_TIMEOUT', 'AMDSMI_INIT_ALL_PROCESSORS', - 'AMDSMI_INIT_AMD_CPUS', 'AMDSMI_INIT_AMD_GPUS', - 'AMDSMI_INIT_NON_AMD_CPUS', 'AMDSMI_INIT_NON_AMD_GPUS', - 'AMDSMI_INVALID_POWER', 'AMDSMI_IOLINK_TYPE_NUMIOLINKTYPES', + 'AMDSMI_INIT_AMD_APUS', 'AMDSMI_INIT_AMD_CPUS', + 'AMDSMI_INIT_AMD_GPUS', 'AMDSMI_INIT_NON_AMD_CPUS', + 'AMDSMI_INIT_NON_AMD_GPUS', 'AMDSMI_INVALID_POWER', + 'AMDSMI_IOLINK_TYPE_NUMIOLINKTYPES', 'AMDSMI_IOLINK_TYPE_PCIEXPRESS', 'AMDSMI_IOLINK_TYPE_SIZE', 'AMDSMI_IOLINK_TYPE_UNDEFINED', 'AMDSMI_IOLINK_TYPE_XGMI', 'AMDSMI_MEM_PAGE_STATUS_PENDING', @@ -2526,8 +2542,7 @@ __all__ = \ 'amdsmi_get_cpu_socket_power', 'amdsmi_get_cpu_socket_power_cap', 'amdsmi_get_cpu_socket_power_cap_max', 'amdsmi_get_cpu_socket_temperature', 'amdsmi_get_cpucore_handles', - 'amdsmi_get_cpucore_info', 'amdsmi_get_cpusocket_handles', - 'amdsmi_get_cpusocket_info', 'amdsmi_get_energy_count', + 'amdsmi_get_cpusocket_handles', 'amdsmi_get_energy_count', 'amdsmi_get_esmi_err_msg', 'amdsmi_get_fw_info', 'amdsmi_get_gpu_activity', 'amdsmi_get_gpu_asic_info', 'amdsmi_get_gpu_available_counters', @@ -2619,8 +2634,11 @@ __all__ = \ 'amdsmi_get_minmax_bandwidth_between_processors', 'amdsmi_get_pcie_link_caps', 'amdsmi_get_pcie_link_status', 'amdsmi_get_power_cap_info', 'amdsmi_get_power_info', + 'amdsmi_get_processor_count_from_handles', 'amdsmi_get_processor_handle_from_bdf', - 'amdsmi_get_processor_handles', 'amdsmi_get_processor_type', + 'amdsmi_get_processor_handles', + 'amdsmi_get_processor_handles_by_type', + 'amdsmi_get_processor_info', 'amdsmi_get_processor_type', 'amdsmi_get_socket_handles', 'amdsmi_get_socket_info', 'amdsmi_get_temp_metric', 'amdsmi_get_utilization_count', 'amdsmi_get_xgmi_info', 'amdsmi_gpu_block_t',