From daba7ffdb271fae41a5bf5203c67f08d7fa8a2eb Mon Sep 17 00:00:00 2001 From: Dalibor Stanisavljevic Date: Wed, 31 May 2023 10:30:59 +0200 Subject: [PATCH] Updated python api to match header changes Change-Id: I02f6dde54f50d1d66f8c4a8777f849bf63b50c85 Signed-off-by: Dalibor Stanisavljevic [ROCm/amdsmi commit: 1185397d9077a9a0a6ad305ed488bacfc1785ed6] --- projects/amdsmi/amdsmi_cli/amdsmi_commands.py | 44 +-- projects/amdsmi/py-interface/README.md | 348 +----------------- projects/amdsmi/py-interface/__init__.py | 26 +- .../amdsmi/py-interface/amdsmi_interface.py | 214 +---------- .../amdsmi/py-interface/amdsmi_wrapper.py | 185 +++------- 5 files changed, 94 insertions(+), 723 deletions(-) diff --git a/projects/amdsmi/amdsmi_cli/amdsmi_commands.py b/projects/amdsmi/amdsmi_cli/amdsmi_commands.py index 6385c58f21..b677c59820 100644 --- a/projects/amdsmi/amdsmi_cli/amdsmi_commands.py +++ b/projects/amdsmi/amdsmi_cli/amdsmi_commands.py @@ -57,15 +57,9 @@ class AMDSMICommands(): Args: args (Namespace): Namespace containing the parsed CLI args """ - kernel_component = amdsmi_interface.AmdSmiSwComponent.DRIVER try: - kernel_version = amdsmi_interface.amdsmi_get_version_str(sw_component=kernel_component) - except amdsmi_exception.AmdSmiLibraryException as e: - kernel_version = e.get_error_info() - - try: - amdsmi_lib_version = amdsmi_interface.amdsmi_get_version() + amdsmi_lib_version = amdsmi_interface.amdsmi_get_lib_version() except amdsmi_exception.AmdSmiLibraryException as e: amdsmi_lib_version = e.get_error_info() @@ -77,12 +71,10 @@ class AMDSMICommands(): self.logger.output['tool'] = 'AMDSMI Tool' self.logger.output['version'] = f'{__version__}' self.logger.output['amdsmi_library_version'] = f'{amdsmi_lib_version_str}' - self.logger.output['kernel_version'] = f'{kernel_version}' if self.logger.is_human_readable_format(): print(f'AMDSMI Tool: {__version__} | '\ - f'AMDSMI Library version: {amdsmi_lib_version_str} | '\ - f'Kernel version: {kernel_version}') + f'AMDSMI Library version: {amdsmi_lib_version_str}') elif self.logger.is_json_format() or self.logger.is_csv_format(): self.logger.print_output() @@ -881,7 +873,7 @@ class AMDSMICommands(): if args.ecc: ecc_count = {} try: - ecc_count = amdsmi_interface.amdsmi_get_gpu_ecc_error_count(args.gpu) + ecc_count = amdsmi_interface.amdsmi_get_gpu_total_ecc_count(args.gpu) ecc_count['correctable'] = ecc_count.pop('correctable_count') ecc_count['uncorrectable'] = ecc_count.pop('uncorrectable_count') @@ -1454,8 +1446,8 @@ class AMDSMICommands(): src_gpu_link_type[dest_gpu_key] = e.get_error_info() try: - min_bw = amdsmi_interface.amdsmi_get_minmax_bandwidth(src_gpu, dest_gpu)['min_bandwidth'] - max_bw = amdsmi_interface.amdsmi_get_minmax_bandwidth(src_gpu, dest_gpu)['max_bandwidth'] + min_bw = amdsmi_interface.admsmi_get_minmax_bandwith_between_processors(src_gpu, dest_gpu)['min_bandwidth'] + max_bw = amdsmi_interface.admsmi_get_minmax_bandwith_between_processors(src_gpu, dest_gpu)['max_bandwidth'] src_gpu_link_type[dest_gpu_key] = f'{min_bw}-{max_bw}' except amdsmi_exception.AmdSmiLibraryException as e: @@ -1580,7 +1572,7 @@ class AMDSMICommands(): if 'manual' in perf_level.lower(): try: - amdsmi_interface.amdsmi_set_gpu_perf_level_v1(args.gpu, amdsmi_interface.AmdSmiDevPerfLevel.MANUAL) + amdsmi_interface.amdsmi_set_gpu_perf_level(args.gpu, amdsmi_interface.AmdSmiDevPerfLevel.MANUAL) except amdsmi_exception.AmdSmiLibraryException as e: if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.ERR_NO_PERM: raise PermissionError('Command requires elevation') from e @@ -1615,7 +1607,7 @@ class AMDSMICommands(): if 'manual' in perf_level.lower(): try: - amdsmi_interface.amdsmi_set_gpu_perf_level_v1(args.gpu, amdsmi_interface.AmdSmiDevPerfLevel.MANUAL) + amdsmi_interface.amdsmi_set_gpu_perf_level(args.gpu, amdsmi_interface.AmdSmiDevPerfLevel.MANUAL) except amdsmi_exception.AmdSmiLibraryException as e: if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.ERR_NO_PERM: raise PermissionError('Command requires elevation') from e @@ -1642,7 +1634,7 @@ class AMDSMICommands(): if 'manual' in perf_level.lower(): try: - amdsmi_interface.amdsmi_set_gpu_perf_level_v1(args.gpu, amdsmi_interface.AmdSmiDevPerfLevel.MANUAL) + amdsmi_interface.amdsmi_set_gpu_perf_level(args.gpu, amdsmi_interface.AmdSmiDevPerfLevel.MANUAL) except amdsmi_exception.AmdSmiLibraryException as e: if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.ERR_NO_PERM: raise PermissionError('Command requires elevation') from e @@ -1669,7 +1661,7 @@ class AMDSMICommands(): if 'manual' in perf_level.lower(): try: - amdsmi_interface.amdsmi_set_gpu_perf_level_v1(args.gpu, amdsmi_interface.AmdSmiDevPerfLevel.MANUAL) + amdsmi_interface.amdsmi_set_gpu_perf_level(args.gpu, amdsmi_interface.AmdSmiDevPerfLevel.MANUAL) except amdsmi_exception.AmdSmiLibraryException as e: if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.ERR_NO_PERM: raise PermissionError('Command requires elevation') from e @@ -1751,7 +1743,7 @@ class AMDSMICommands(): if args.perflevel: perf_level = amdsmi_interface.AmdSmiDevPerfLevel[args.perflevel] try: - amdsmi_interface.amdsmi_set_gpu_perf_level_v1(args.gpu, perf_level) + amdsmi_interface.amdsmi_set_gpu_perf_level(args.gpu, perf_level) except amdsmi_exception.AmdSmiLibraryException as e: if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.ERR_NO_PERM: raise PermissionError('Command requires elevation') from e @@ -1769,14 +1761,14 @@ class AMDSMICommands(): if 'manual' in perf_level.lower(): try: - amdsmi_interface.amdsmi_set_gpu_perf_level_v1(args.gpu, amdsmi_interface.AmdSmiDevPerfLevel.MANUAL) + amdsmi_interface.amdsmi_set_gpu_perf_level(args.gpu, amdsmi_interface.AmdSmiDevPerfLevel.MANUAL) except amdsmi_exception.AmdSmiLibraryException as e: if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.ERR_NO_PERM: raise PermissionError('Command requires elevation') from e raise ValueError(f"Unable to set the performance level of {gpu_string} to manual") from e try: - amdsmi_interface.amdsmi_set_gpu_overdrive_level_v1(args.gpu, args.overdrive) + amdsmi_interface.amdsmi_set_gpu_overdrive_level(args.gpu, args.overdrive) except amdsmi_exception.AmdSmiLibraryException as e: if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.ERR_NO_PERM: raise PermissionError('Command requires elevation') from e @@ -1794,7 +1786,7 @@ class AMDSMICommands(): if 'manual' in perf_level.lower(): try: - amdsmi_interface.amdsmi_set_gpu_perf_level_v1(args.gpu, amdsmi_interface.AmdSmiDevPerfLevel.MANUAL) + amdsmi_interface.amdsmi_set_gpu_perf_level(args.gpu, amdsmi_interface.AmdSmiDevPerfLevel.MANUAL) except amdsmi_exception.AmdSmiLibraryException as e: if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.ERR_NO_PERM: raise PermissionError('Command requires elevation') from e @@ -1931,7 +1923,7 @@ class AMDSMICommands(): 'clocks' : '', 'performance': ''} try: - amdsmi_interface.amdsmi_set_gpu_overdrive_level_v1(args.gpu, 0) + amdsmi_interface.amdsmi_set_gpu_overdrive_level(args.gpu, 0) reset_clocks_results['overdrive'] = 'Overdrive set to 0' except amdsmi_exception.AmdSmiLibraryException as e: if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.ERR_NO_PERM: @@ -1940,7 +1932,7 @@ class AMDSMICommands(): try: level_auto = amdsmi_interface.AmdSmiDevPerfLevel.AUTO - amdsmi_interface.amdsmi_set_gpu_perf_level_v1(args.gpu, level_auto) + amdsmi_interface.amdsmi_set_gpu_perf_level(args.gpu, level_auto) reset_clocks_results['clocks'] = 'Successfully reset clocks' except amdsmi_exception.AmdSmiLibraryException as e: if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.ERR_NO_PERM: @@ -1949,7 +1941,7 @@ class AMDSMICommands(): try: level_auto = amdsmi_interface.AmdSmiDevPerfLevel.AUTO - amdsmi_interface.amdsmi_set_gpu_perf_level_v1(args.gpu, level_auto) + amdsmi_interface.amdsmi_set_gpu_perf_level(args.gpu, level_auto) reset_clocks_results['performance'] = 'Performance level reset to auto' except amdsmi_exception.AmdSmiLibraryException as e: if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.ERR_NO_PERM: @@ -1981,7 +1973,7 @@ class AMDSMICommands(): try: level_auto = amdsmi_interface.AmdSmiDevPerfLevel.AUTO - amdsmi_interface.amdsmi_set_gpu_perf_level_v1(args.gpu, level_auto) + amdsmi_interface.amdsmi_set_gpu_perf_level(args.gpu, level_auto) reset_profile_results['performance_level'] = 'Successfully reset Performance Level' except amdsmi_exception.AmdSmiLibraryException as e: if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.ERR_NO_PERM: @@ -2001,7 +1993,7 @@ class AMDSMICommands(): if args.perfdeterminism: try: level_auto = amdsmi_interface.AmdSmiDevPerfLevel.AUTO - amdsmi_interface.amdsmi_set_gpu_perf_level_v1(args.gpu, level_auto) + amdsmi_interface.amdsmi_set_gpu_perf_level(args.gpu, level_auto) result = 'Successfully disabled performance determinism' except amdsmi_exception.AmdSmiLibraryException as e: if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.ERR_NO_PERM: diff --git a/projects/amdsmi/py-interface/README.md b/projects/amdsmi/py-interface/README.md index 99ed3ac6ea..52ad599a0d 100644 --- a/projects/amdsmi/py-interface/README.md +++ b/projects/amdsmi/py-interface/README.md @@ -827,7 +827,7 @@ except AmdSmiException as e: print(e) ``` -## amdsmi_get_gpu_ecc_error_count +## amdsmi_get_gpu_total_ecc_count Description: Returns the ECC error count for the given GPU Input parameters: @@ -841,7 +841,7 @@ Field | Description `correctable_count`| Correctable ECC error count `uncorrectable_count`| Uncorrectable ECC error count -Exceptions that can be thrown by `amdsmi_get_gpu_ecc_error_count` function: +Exceptions that can be thrown by `amdsmi_get_gpu_total_ecc_count` function: * `AmdSmiLibraryException` * `AmdSmiRetryException` * `AmdSmiParameterException` @@ -854,7 +854,7 @@ try: print("No GPUs on machine") else: for device in devices: - ecc_error_count = amdsmi_get_gpu_ecc_error_count(device) + ecc_error_count = amdsmi_get_gpu_total_ecc_count(device) print(ecc_error_count["correctable_count"]) print(ecc_error_count["uncorrectable_count"]) except AmdSmiException as e: @@ -993,160 +993,6 @@ except AmdSmiException as e: ``` -## amdsmi_open_supported_func_iterator -Description: Get a function name iterator of supported AMDSMI functions for a device - -Input parameters: - -* `processor_handle` device which to query - -Output: Handle for a function iterator - -Exceptions that can be thrown by `amdsmi_open_supported_func_iterator` function: -* `AmdSmiLibraryException` -* `AmdSmiRetryException` -* `AmdSmiParameterException` - -Example: -```python -try: - devices = amdsmi_get_processor_handles() - if len(devices) == 0: - print("No GPUs on machine") - else: - for device in devices: - obj_handle = amdsmi_open_supported_func_iterator(device) - print(obj_handle) - amdsmi_close_supported_func_iterator(obj_handle) -except AmdSmiException as e: - print(e) -``` - -## amdsmi_open_supported_variant_iterator -Description: Get a variant iterator for a given handle - -Input parameters: - -* `obj_handle` Object handle for witch to return a variant handle - -Output: Variant iterator handle - -Exceptions that can be thrown by `amdsmi_open_supported_variant_iterator` function: -* `AmdSmiLibraryException` -* `AmdSmiRetryException` -* `AmdSmiParameterException` - -Example: -```python -try: - devices = amdsmi_get_processor_handles() - if len(devices) == 0: - print("No GPUs on machine") - else: - for device in devices: - obj_handle = amdsmi_open_supported_func_iterator(device) - var_iter = amdsmi_open_supported_variant_iterator(obj_handle) - print(var_iter) - amdsmi_close_supported_func_iterator(obj_handle) - amdsmi_close_supported_func_iterator(var_iter) -except AmdSmiException as e: - print(e) -``` - -## amdsmi_next_func_iter -Description: Advance an object identifier iterator - -Input parameters: - -* `obj_handle` Object handle to advance - -Output: Next iterator handle - -Exceptions that can be thrown by `amdsmi_next_func_iter` function: -* `AmdSmiLibraryException` -* `AmdSmiRetryException` -* `AmdSmiParameterException` - -Example: -```python -try: - devices = amdsmi_get_processor_handles() - if len(devices) == 0: - print("No GPUs on machine") - else: - for device in devices: - obj_handle = amdsmi_open_supported_func_iterator(device) - print(obj_handle) - obj_handle = amdsmi_next_func_iter(obj_handle) - print(obj_handle) - amdsmi_close_supported_func_iterator(obj_handle) -except AmdSmiException as e: - print(e) -``` - -## amdsmi_close_supported_func_iterator -Description: Close a variant iterator handle - -Input parameters: - -* `obj_handle` Object handle to be closed - -Output: None - -Exceptions that can be thrown by `amdsmi_close_supported_func_iterator` function: -* `AmdSmiLibraryException` -* `AmdSmiRetryException` -* `AmdSmiParameterException` - -Example: -```python -try: - devices = amdsmi_get_processor_handles() - if len(devices) == 0: - print("No GPUs on machine") - else: - for device in devices: - obj_handle = amdsmi_open_supported_func_iterator(device) - amdsmi_close_supported_func_iterator(obj_handle) -except AmdSmiException as e: - print(e) -``` - -## amdsmi_get_func_iter_value -Description: Get the value associated with a function/variant iterator - -Input parameters: - -* `obj_handle` Object handle to query - -Output: Data associated with a function/variant iterator - -Field | Description ----|--- -`id`| Internal ID of the function/variant -`name`| Descriptive name of the function/variant -`amd_id_0` |
Subfield Description
`memory_type`Memory type
`temp_metric`Temperature metric
`evnt_type`Event type
`evnt_group`Event group
`clk_type`Clock type
`fw_block`Firmware block
`gpu_block_type`GPU block type
- -Exceptions that can be thrown by `amdsmi_get_func_iter_value` function: -* `AmdSmiLibraryException` -* `AmdSmiRetryException` -* `AmdSmiParameterException` - -Example: -```python -try: - devices = amdsmi_get_processor_handles() - if len(devices) == 0: - print("No GPUs on machine") - else: - for device in devices: - obj_handle = amdsmi_open_supported_func_iterator(device) - value = amdsmi_get_func_iter_value(obj_handle) - print(value) - amdsmi_close_supported_func_iterator(obj_handle) -except AmdSmiException as e: - print(e) -``` ## amdsmi_set_gpu_pci_bandwidth Description: Control the set of allowed PCIe bandwidths that can be used @@ -1265,7 +1111,7 @@ except AmdSmiException as e: ``` -## amdsmi_get_gpu_pci_id +## admsmi_get_gpu_bdf_id Description: Get the unique PCI device identifier associated for a device Input parameters: @@ -1287,7 +1133,7 @@ BDFID = ((DOMAIN & 0xffffffff) << 32) | ((BUS & 0xff) << 8) | | Function | [ 2: 0] | -Exceptions that can be thrown by `amdsmi_get_gpu_pci_id` function: +Exceptions that can be thrown by `admsmi_get_gpu_bdf_id` function: * `AmdSmiLibraryException` * `AmdSmiRetryException` * `AmdSmiParameterException` @@ -1300,7 +1146,7 @@ try: print("No GPUs on machine") else: for device in devices: - bdfid = amdsmi_get_gpu_pci_id(device) + bdfid = admsmi_get_gpu_bdf_id(device) print(bdfid) except AmdSmiException as e: print(e) @@ -1609,64 +1455,6 @@ except AmdSmiException as e: ``` -## amdsmi_get_gpu_memory_busy_percent - -Description: Get percentage of time any device memory is being used - -Input parameters: - -* `processor_handle` device which to query - -Output: percentage of time that any device memory is being used for the specified device. - -Exceptions that can be thrown by `amdsmi_get_gpu_memory_busy_percent` function: -* `AmdSmiLibraryException` -* `AmdSmiRetryException` -* `AmdSmiParameterException` - -Example: -```python -try: - devices = gpuvsmi_get_devices() - if len(devices) == 0: - print("No GPUs on machine") - else: - for device in devices: - busy_percent = amdsmi_get_gpu_memory_busy_percent(device) - print(busy_percent) -except AmdSmiException as e: - print(e) -``` - - - -## amdsmi_set_gpu_perf_level_v1 -Description: Set the PowerPlay performance level associated with the device -with provided device handle with the provided value - -Input parameters: -* `processor_handle` handle for the given device -* `perf_lvl` the value to which the performance level should be set - -Output: None - -Exceptions that can be thrown by ` amdsmi_set_gpu_perf_level_v1` function: -* `AmdSmiLibraryException` -* `AmdSmiRetryException` -* `AmdSmiParameterException` - -Example: -```python -try: - devices = amdsmi_get_processor_handles() - if len(devices) == 0: - print("No GPUs on machine") - else: - for device in devices: - amdsmi_set_gpu_perf_level_v1(device, AmdSmiDevPerfLevel.AMDSMI_DEV_PERF_LEVEL_HIGH) -except AmdSmiException as e: - print(e) -``` ## amdsmi_get_gpu_fan_rpms Description: Get the fan speed in RPMs of the device with the specified device handle and 0-based sensor index. @@ -1813,32 +1601,7 @@ try: except AmdSmiException as e: print(e) ``` -## amdsmi_get_busy_percent -Description: Get percentage of time device is busy doing any processing -Input parameters: -* `processor_handle` handle for the given device - -Output: How busy the device is (as percentage of time) - -Exceptions that can be thrown by `amdsmi_get_busy_percent` function: -* `AmdSmiLibraryException` -* `AmdSmiRetryException` -* `AmdSmiParameterException` - -Example: -```python -try: - devices = amdsmi_get_processor_handles() - if len(devices) == 0: - print("No GPUs on machine") - else: - for device in devices: - busy = amdsmi_get_busy_percent(dev) - print(busy) -except AmdSmiException as e: - print(e) -``` ## amdsmi_get_utilization_count Description: Get coarse grain utilization counter of the specified device @@ -2497,33 +2260,8 @@ try: except AmdSmiException as e: print(e) ``` -## amdsmi_set_gpu_overdrive_level_v1 -Description: Set the overdrive percent associated with the device with provided -device handle with the provided value -Input parameters: -* `processor_handle` handle for the given device -* `overdrive_value` value to which the overdrive level should be set -Output: None - -Exceptions that can be thrown by ` amdsmi_set_gpu_overdrive_level_v1` function: -* `AmdSmiLibraryException` -* `AmdSmiRetryException` -* `AmdSmiParameterException` - -Example: -```python -try: - devices = amdsmi_get_processor_handles() - if len(devices) == 0: - print("No GPUs on machine") - else: - for device in devices: - amdsmi_set_gpu_overdrive_level_v1(device, 0) -except AmdSmiException as e: - print(e) -``` ## amdsmi_set_gpu_overdrive_level Description: **deprecated** Set the overdrive percent associated with the device with provided device handle with the provided value @@ -2640,7 +2378,7 @@ except AmdSmiException as e: print(e) ``` -## amdsmi_status_string +## amdsmi_status_code_to_string Description: Get a description of a provided AMDSMI error status Input parameters: @@ -2648,13 +2386,13 @@ Input parameters: Output: String description of the provided error code -Exceptions that can be thrown by `amdsmi_status_string` function: +Exceptions that can be thrown by `amdsmi_status_code_to_string` function: * `AmdSmiParameterException` Example: ```python try: - status_str = amdsmi_status_string(ctypes.c_uint32(0)) + status_str = amdsmi_status_code_to_string(ctypes.c_uint32(0)) print(status_str) except AmdSmiException as e: print(e) @@ -2879,33 +2617,6 @@ except AmdSmiException as e: print(e) ``` -## amdsmi_get_gpu_drm_render_minor -Description: Get the drm minor number associated with this device. - -Input parameters: - -* `processor_handle` device which to query - -Output: drm minor number - -Exceptions that can be thrown by `amdsmi_get_gpu_drm_render_minor` function: -* `AmdSmiLibraryException` -* `AmdSmiRetryException` -* `AmdSmiParameterException` - -Example: -```python -try: - devices = amdsmi_get_processor_handles() - if len(devices) == 0: - print("No GPUs on machine") - else: - for device in devices: - render_minor = amdsmi_get_gpu_drm_render_minor(device) - print(render_minor) -except AmdSmiException as e: - print(e) -``` ## amdsmi_get_gpu_subsystem_id Description: Get the subsystem device id associated with the device with provided device handle. @@ -2965,12 +2676,12 @@ except AmdSmiException as e: ``` -## amdsmi_get_version +## amdsmi_get_lib_version Description: Get the build version information for the currently running build of AMDSMI. Output: amdsmi build version -Exceptions that can be thrown by `amdsmi_get_version` function: +Exceptions that can be thrown by `amdsmi_get_lib_version` function: * `AmdSmiLibraryException` * `AmdSmiRetryException` * `AmdSmiParameterException` @@ -2983,36 +2694,7 @@ try: print("No GPUs on machine") else: for device in devices: - version = amdsmi_get_version() - print(version) -except AmdSmiException as e: - print(e) -``` - - -## amdsmi_get_version_str -Description: Get the driver version string for the current system. - -Input parameters: - -* `sw_component` software component which to query - -Output: driver version string - -Exceptions that can be thrown by `amdsmi_get_version_str` function: -* `AmdSmiLibraryException` -* `AmdSmiRetryException` -* `AmdSmiParameterException` - -Example: -```python -try: - devices = amdsmi_get_processor_handles() - if len(devices) == 0: - print("No GPUs on machine") - else: - for device in devices: - version = amdsmi_get_version_str(AmdSmiSwComponent.DRIVER) + version = amdsmi_get_lib_version() print(version) except AmdSmiException as e: print(e) @@ -3078,7 +2760,7 @@ except AmdSmiException as e: ``` -## amdsmi_get_minmax_bandwidth +## admsmi_get_minmax_bandwith_between_processors Description: Retreive minimal and maximal io link bandwidth between 2 GPUs. Input parameters: @@ -3093,7 +2775,7 @@ Field | Description `min_bandwidth` | minimal bandwidth for the connection `max_bandwidth` | maximal bandwidth for the connection -Exceptions that can be thrown by ` amdsmi_get_minmax_bandwidth` function: +Exceptions that can be thrown by `admsmi_get_minmax_bandwith_between_processors` function: * `AmdSmiLibraryException` * `AmdSmiRetryException` * `AmdSmiParameterException` @@ -3107,7 +2789,7 @@ try: else: processor_handle_src = devices[0] processor_handle_dest = devices[1] - bandwith = amdsmi_get_minmax_bandwidth(processor_handle_src, processor_handle_dest) + bandwith = admsmi_get_minmax_bandwith_between_processors(processor_handle_src, processor_handle_dest) print(bandwith['min_bandwidth']) print(bandwith['max_bandwidth']) except AmdSmiException as e: diff --git a/projects/amdsmi/py-interface/__init__.py b/projects/amdsmi/py-interface/__init__.py index ef7732c84e..5a7333a07e 100644 --- a/projects/amdsmi/py-interface/__init__.py +++ b/projects/amdsmi/py-interface/__init__.py @@ -62,7 +62,7 @@ from .amdsmi_interface import amdsmi_get_gpu_process_list from .amdsmi_interface import amdsmi_get_gpu_process_info # # ECC Error Information -from .amdsmi_interface import amdsmi_get_gpu_ecc_error_count +from .amdsmi_interface import amdsmi_get_gpu_total_ecc_count # # Board Information from .amdsmi_interface import amdsmi_get_gpu_board_info @@ -70,13 +70,6 @@ from .amdsmi_interface import amdsmi_get_gpu_board_info # # Ras Information from .amdsmi_interface import amdsmi_get_gpu_ras_block_features_enabled -# # Supported Function Checks -from .amdsmi_interface import amdsmi_open_supported_func_iterator -from .amdsmi_interface import amdsmi_open_supported_variant_iterator -from .amdsmi_interface import amdsmi_close_supported_func_iterator -from .amdsmi_interface import amdsmi_next_func_iter -from .amdsmi_interface import amdsmi_get_func_iter_value - # # Unsupported Functions In Virtual Environment from .amdsmi_interface import amdsmi_set_gpu_pci_bandwidth from .amdsmi_interface import amdsmi_set_power_cap @@ -84,7 +77,6 @@ from .amdsmi_interface import amdsmi_set_gpu_power_profile from .amdsmi_interface import amdsmi_set_gpu_clk_range from .amdsmi_interface import amdsmi_set_gpu_od_clk_info from .amdsmi_interface import amdsmi_set_gpu_od_volt_info -from .amdsmi_interface import amdsmi_set_gpu_perf_level_v1 from .amdsmi_interface import amdsmi_set_gpu_perf_level from .amdsmi_interface import amdsmi_get_gpu_power_profile_presets from .amdsmi_interface import amdsmi_reset_gpu @@ -92,7 +84,6 @@ from .amdsmi_interface import amdsmi_set_gpu_perf_determinism_mode from .amdsmi_interface import amdsmi_set_gpu_fan_speed from .amdsmi_interface import amdsmi_reset_gpu_fan from .amdsmi_interface import amdsmi_set_clk_freq -from .amdsmi_interface import amdsmi_set_gpu_overdrive_level_v1 from .amdsmi_interface import amdsmi_set_gpu_overdrive_level # # Physical State Queries @@ -103,7 +94,6 @@ from .amdsmi_interface import amdsmi_get_temp_metric from .amdsmi_interface import amdsmi_get_gpu_volt_metric # # Clock, Power and Performance Query -from .amdsmi_interface import amdsmi_get_busy_percent from .amdsmi_interface import amdsmi_get_utilization_count from .amdsmi_interface import amdsmi_get_gpu_perf_level from .amdsmi_interface import amdsmi_set_gpu_perf_determinism_mode @@ -126,7 +116,7 @@ from .amdsmi_interface import amdsmi_get_gpu_available_counters from .amdsmi_interface import amdsmi_get_gpu_ecc_count from .amdsmi_interface import amdsmi_get_gpu_ecc_enabled from .amdsmi_interface import amdsmi_get_gpu_ecc_status -from .amdsmi_interface import amdsmi_status_string +from .amdsmi_interface import amdsmi_status_code_to_string # # System Information Query from .amdsmi_interface import amdsmi_get_gpu_compute_process_info @@ -136,7 +126,7 @@ from .amdsmi_interface import amdsmi_gpu_xgmi_error_status from .amdsmi_interface import amdsmi_reset_gpu_xgmi_error # # PCIE information -from .amdsmi_interface import amdsmi_get_gpu_pci_id +from .amdsmi_interface import admsmi_get_gpu_bdf_id from .amdsmi_interface import amdsmi_get_gpu_pci_bandwidth from .amdsmi_interface import amdsmi_get_gpu_pci_throughput from .amdsmi_interface import amdsmi_get_gpu_pci_replay_counter @@ -148,7 +138,6 @@ from .amdsmi_interface import amdsmi_get_energy_count # # Memory information from .amdsmi_interface import amdsmi_get_gpu_memory_total from .amdsmi_interface import amdsmi_get_gpu_memory_usage -from .amdsmi_interface import amdsmi_get_gpu_memory_busy_percent from .amdsmi_interface import amdsmi_get_gpu_memory_reserved_pages # # Events @@ -158,18 +147,16 @@ from .amdsmi_interface import AmdSmiEventReader from .amdsmi_interface import amdsmi_get_gpu_vendor_name from .amdsmi_interface import amdsmi_get_gpu_id from .amdsmi_interface import amdsmi_get_gpu_vram_vendor -from .amdsmi_interface import amdsmi_get_gpu_drm_render_minor from .amdsmi_interface import amdsmi_get_gpu_subsystem_id from .amdsmi_interface import amdsmi_get_gpu_subsystem_name # # Version information -from .amdsmi_interface import amdsmi_get_version -from .amdsmi_interface import amdsmi_get_version_str +from .amdsmi_interface import amdsmi_get_lib_version # # Hardware topology query from .amdsmi_interface import amdsmi_topo_get_numa_node_number from .amdsmi_interface import amdsmi_topo_get_link_weight -from .amdsmi_interface import amdsmi_get_minmax_bandwidth +from .amdsmi_interface import admsmi_get_minmax_bandwith_between_processors from .amdsmi_interface import amdsmi_topo_get_link_type from .amdsmi_interface import amdsmi_is_P2P_accessible from .amdsmi_interface import amdsmi_get_xgmi_info @@ -183,7 +170,6 @@ from .amdsmi_interface import AmdSmiFwBlock from .amdsmi_interface import AmdSmiClkType from .amdsmi_interface import AmdSmiTemperatureType from .amdsmi_interface import AmdSmiDevPerfLevel -from .amdsmi_interface import AmdSmiSwComponent from .amdsmi_interface import AmdSmiEventGroup from .amdsmi_interface import AmdSmiEventType from .amdsmi_interface import AmdSmiCounterCommand @@ -200,8 +186,6 @@ from .amdsmi_interface import AmdSmiXgmiStatus from .amdsmi_interface import AmdSmiMemoryPageStatus from .amdsmi_interface import AmdSmiIoLinkType from .amdsmi_interface import AmdSmiUtilizationCounterType -from .amdsmi_interface import AmdSmiSwComponent -from .amdsmi_interface import AmdSmiIoLinkType # Exceptions from .amdsmi_exception import AmdSmiLibraryException diff --git a/projects/amdsmi/py-interface/amdsmi_interface.py b/projects/amdsmi/py-interface/amdsmi_interface.py index cafe277edb..355faf2f0a 100644 --- a/projects/amdsmi/py-interface/amdsmi_interface.py +++ b/projects/amdsmi/py-interface/amdsmi_interface.py @@ -141,10 +141,6 @@ class AmdSmiDevPerfLevel(IntEnum): UNKNOWN = amdsmi_wrapper.AMDSMI_DEV_PERF_LEVEL_UNKNOWN -class AmdSmiSwComponent(IntEnum): - DRIVER = amdsmi_wrapper.AMDSMI_SW_COMP_DRIVER - - class AmdSmiEventGroup(IntEnum): XGMI = amdsmi_wrapper.AMDSMI_EVNT_GRP_XGMI XGMI_DATA_OUT = amdsmi_wrapper.AMDSMI_EVNT_GRP_XGMI_DATA_OUT @@ -750,7 +746,7 @@ def amdsmi_get_gpu_target_frequency_range( } -def amdsmi_get_gpu_ecc_error_count( +def amdsmi_get_gpu_total_ecc_count( processor_handle: amdsmi_wrapper.amdsmi_processor_handle, ) -> Dict[str, Any]: if not isinstance(processor_handle, amdsmi_wrapper.amdsmi_processor_handle): @@ -760,7 +756,7 @@ def amdsmi_get_gpu_ecc_error_count( error_count = amdsmi_wrapper.amdsmi_error_count_t() _check_res( - amdsmi_wrapper.amdsmi_get_gpu_ecc_error_count( + amdsmi_wrapper.amdsmi_get_gpu_total_ecc_count( processor_handle, ctypes.byref(error_count) ) ) @@ -1090,22 +1086,6 @@ def amdsmi_get_gpu_vram_vendor(processor_handle: amdsmi_wrapper.amdsmi_processor return vram_vendor.value.decode("utf-8") -def amdsmi_get_gpu_drm_render_minor(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 - ) - minor = ctypes.c_uint32() - - _check_res( - amdsmi_wrapper.amdsmi_get_gpu_drm_render_minor( - processor_handle, ctypes.byref(minor) - ) - ) - - return minor.value - - def amdsmi_get_gpu_subsystem_id(processor_handle: amdsmi_wrapper.amdsmi_processor_handle): if not isinstance(processor_handle, amdsmi_wrapper.amdsmi_processor_handle): raise AmdSmiParameterException( @@ -1140,10 +1120,10 @@ def amdsmi_get_gpu_subsystem_name(processor_handle: amdsmi_wrapper.amdsmi_proces return name.value.decode("utf-8") -def amdsmi_get_version(): +def amdsmi_get_lib_version(): version = amdsmi_wrapper.amdsmi_version_t() - _check_res(amdsmi_wrapper.amdsmi_get_version(ctypes.byref(version))) + _check_res(amdsmi_wrapper.amdsmi_get_lib_version(ctypes.byref(version))) return { "major": version.major, @@ -1153,21 +1133,6 @@ def amdsmi_get_version(): } -def amdsmi_get_version_str(sw_component: AmdSmiSwComponent): - if not isinstance(sw_component, AmdSmiSwComponent): - raise AmdSmiParameterException(sw_component, AmdSmiSwComponent) - - length = ctypes.c_uint32() - length.value = _AMDSMI_STRING_LENGTH - - ver_str = ctypes.create_string_buffer(_AMDSMI_STRING_LENGTH) - - _check_res(amdsmi_wrapper.amdsmi_get_version_str( - sw_component, ver_str, length)) - - return ver_str.value.decode("utf-8") - - def amdsmi_topo_get_numa_node_number( processor_handle: amdsmi_wrapper.amdsmi_processor_handle, ): @@ -1212,7 +1177,7 @@ def amdsmi_topo_get_link_weight( return weight.value -def amdsmi_get_minmax_bandwidth( +def admsmi_get_minmax_bandwith_between_processors( processor_handle_src: amdsmi_wrapper.amdsmi_processor_handle, processor_handle_dst: amdsmi_wrapper.amdsmi_processor_handle, ): @@ -1230,7 +1195,7 @@ def amdsmi_get_minmax_bandwidth( max_bandwidth = ctypes.c_uint64() _check_res( - amdsmi_wrapper. amdsmi_get_minmax_bandwidth( + amdsmi_wrapper. admsmi_get_minmax_bandwith_between_processors( processor_handle_src, processor_handle_dst, ctypes.byref(min_bandwidth), @@ -1543,23 +1508,6 @@ def amdsmi_set_clk_freq( ) -def amdsmi_set_gpu_overdrive_level_v1( - processor_handle: amdsmi_wrapper.amdsmi_processor_handle, overdrive_value: int -): - if not isinstance(processor_handle, amdsmi_wrapper.amdsmi_processor_handle): - raise AmdSmiParameterException( - processor_handle, amdsmi_wrapper.amdsmi_processor_handle - ) - if not isinstance(overdrive_value, int): - raise AmdSmiParameterException(overdrive_value, int) - overdrive_value = ctypes.c_uint32(overdrive_value) - - _check_res( - amdsmi_wrapper. amdsmi_set_gpu_overdrive_level_v1( - processor_handle, overdrive_value) - ) - - def amdsmi_set_gpu_overdrive_level( processor_handle: amdsmi_wrapper.amdsmi_processor_handle, overdrive_value: int ): @@ -1577,25 +1525,7 @@ def amdsmi_set_gpu_overdrive_level( ) -def amdsmi_open_supported_func_iterator( - processor_handle: amdsmi_wrapper.amdsmi_processor_handle, -) -> amdsmi_wrapper.amdsmi_func_id_iter_handle_t: - if not isinstance(processor_handle, amdsmi_wrapper.amdsmi_processor_handle): - raise AmdSmiParameterException( - processor_handle, amdsmi_wrapper.amdsmi_processor_handle - ) - - obj_handle = amdsmi_wrapper.amdsmi_func_id_iter_handle_t() - _check_res( - amdsmi_wrapper.amdsmi_open_supported_func_iterator( - processor_handle, ctypes.byref(obj_handle) - ) - ) - - return obj_handle - - -def amdsmi_get_gpu_pci_id(processor_handle: amdsmi_wrapper.amdsmi_processor_handle): +def admsmi_get_gpu_bdf_id(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 @@ -1603,88 +1533,12 @@ def amdsmi_get_gpu_pci_id(processor_handle: amdsmi_wrapper.amdsmi_processor_hand bdfid = ctypes.c_uint64() _check_res( - amdsmi_wrapper.amdsmi_get_gpu_pci_id( + amdsmi_wrapper.admsmi_get_gpu_bdf_id( processor_handle, ctypes.byref(bdfid)) ) return bdfid.value - -def amdsmi_open_supported_variant_iterator( - obj_handle: amdsmi_wrapper.amdsmi_func_id_iter_handle_t, -) -> amdsmi_wrapper.amdsmi_func_id_iter_handle_t: - if not isinstance(obj_handle, amdsmi_wrapper.amdsmi_func_id_iter_handle_t): - raise AmdSmiParameterException( - obj_handle, amdsmi_wrapper.amdsmi_func_id_iter_handle_t - ) - - var_iter = amdsmi_wrapper.amdsmi_func_id_iter_handle_t() - _check_res( - amdsmi_wrapper.amdsmi_open_supported_variant_iterator( - obj_handle, ctypes.byref(var_iter) - ) - ) - - return var_iter - - -def amdsmi_close_supported_func_iterator( - obj_handle: amdsmi_wrapper.amdsmi_func_id_iter_handle_t, -) -> None: - if not isinstance(obj_handle, amdsmi_wrapper.amdsmi_func_id_iter_handle_t): - raise AmdSmiParameterException( - obj_handle, amdsmi_wrapper.amdsmi_func_id_iter_handle_t - ) - - _check_res( - amdsmi_wrapper.amdsmi_close_supported_func_iterator( - obj_handle, ctypes.byref(obj_handle) - ) - ) - - -def amdsmi_next_func_iter( - obj_handle: amdsmi_wrapper.amdsmi_func_id_iter_handle_t, -) -> amdsmi_wrapper.amdsmi_func_id_iter_handle_t: - if not isinstance(obj_handle, amdsmi_wrapper.amdsmi_func_id_iter_handle_t): - raise AmdSmiParameterException( - obj_handle, amdsmi_wrapper.amdsmi_func_id_iter_handle_t - ) - - _check_res(amdsmi_wrapper.amdsmi_next_func_iter(obj_handle)) - - return obj_handle - - -def amdsmi_get_func_iter_value( - obj_handle: amdsmi_wrapper.amdsmi_func_id_iter_handle_t, -) -> amdsmi_wrapper.amdsmi_func_id_value_t: - if not isinstance(obj_handle, amdsmi_wrapper.amdsmi_func_id_iter_handle_t): - raise AmdSmiParameterException( - obj_handle, amdsmi_wrapper.amdsmi_func_id_iter_handle_t - ) - - value = amdsmi_wrapper.amdsmi_func_id_value_t() - _check_res( - amdsmi_wrapper.amdsmi_get_func_iter_value( - obj_handle, ctypes.byref(value)) - ) - - return { - "id": value.id, - "name": amdsmi_wrapper.string_cast(value.name), - "amd_id_0": { - "memory_type": value.amd_id_0.memory_type, - "temp_metric": value.amd_id_0.temp_metric, - "evnt_type": value.amd_id_0.evnt_type, - "evnt_group": value.amd_id_0.evnt_group, - "clk_type": value.amd_id_0.clk_type, - "fw_block": value.amd_id_0.fw_block, - "gpu_block_type": value.amd_id_0.gpu_block_type, - }, - } - - def amdsmi_set_gpu_pci_bandwidth( processor_handle: amdsmi_wrapper.amdsmi_processor_handle, bitmask: int ) -> None: @@ -1981,37 +1835,6 @@ def amdsmi_set_gpu_od_volt_info( ) -def amdsmi_get_gpu_memory_busy_percent(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 - ) - - busy_percent = ctypes.c_uint32() - - _check_res( - amdsmi_wrapper.amdsmi_get_gpu_memory_busy_percent( - processor_handle, ctypes.byref(busy_percent)) - ) - - return busy_percent.value - - -def amdsmi_set_gpu_perf_level_v1( - processor_handle: amdsmi_wrapper.amdsmi_processor_handle, - perf_lvl: AmdSmiDevPerfLevel, -) -> None: - if not isinstance(processor_handle, amdsmi_wrapper.amdsmi_processor_handle): - raise AmdSmiParameterException( - processor_handle, amdsmi_wrapper.amdsmi_processor_handle - ) - - if not isinstance(perf_lvl, AmdSmiDevPerfLevel): - raise AmdSmiParameterException(perf_lvl, AmdSmiDevPerfLevel) - - _check_res(amdsmi_wrapper. amdsmi_set_gpu_perf_level_v1( - processor_handle, perf_lvl)) - def amdsmi_get_gpu_fan_rpms( processor_handle: amdsmi_wrapper.amdsmi_processor_handle, sensor_idx: int @@ -2118,23 +1941,6 @@ def amdsmi_get_gpu_volt_metric( return voltage.value -def amdsmi_get_busy_percent( - 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 - ) - - busy_percent = ctypes.c_uint32() - _check_res( - amdsmi_wrapper.amdsmi_get_busy_percent( - processor_handle, ctypes.byref(busy_percent) - ) - ) - - return busy_percent.value - def amdsmi_get_utilization_count( processor_handle: amdsmi_wrapper.amdsmi_processor_handle, @@ -2476,13 +2282,13 @@ def amdsmi_get_gpu_ecc_status( return AmdSmiRasErrState(state.value) -def amdsmi_status_string(status: amdsmi_wrapper.amdsmi_status_t) -> str: +def amdsmi_status_code_to_string(status: amdsmi_wrapper.amdsmi_status_t) -> str: if not isinstance(status, amdsmi_wrapper.amdsmi_status_t): raise AmdSmiParameterException(status, amdsmi_wrapper.amdsmi_status_t) status_string_p_p = ctypes.pointer(ctypes.pointer(ctypes.c_char())) - _check_res(amdsmi_wrapper.amdsmi_status_string( + _check_res(amdsmi_wrapper.amdsmi_status_code_to_string( status, status_string_p_p)) return amdsmi_wrapper.string_cast(status_string_p_p.contents) diff --git a/projects/amdsmi/py-interface/amdsmi_wrapper.py b/projects/amdsmi/py-interface/amdsmi_wrapper.py index c69f13d1b5..6036690e92 100644 --- a/projects/amdsmi/py-interface/amdsmi_wrapper.py +++ b/projects/amdsmi/py-interface/amdsmi_wrapper.py @@ -165,8 +165,7 @@ def char_pointer_cast(string, encoding='utf-8'): return ctypes.cast(string, ctypes.POINTER(ctypes.c_char)) -### Match edits in generator.py from start to end -### Start match + _libraries = {} from pathlib import Path libamd_smi_cpack = Path("@CPACK_PACKAGING_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@/libamd_smi.so") @@ -186,7 +185,6 @@ elif libamd_smi_parent_dir.is_file(): else: # lastly - search in current working directory _libraries['libamd_smi.so'] = ctypes.CDLL(libamd_smi_cwd) -### End match @@ -500,8 +498,7 @@ struct_c__SA_amdsmi_xgmi_info_t._fields_ = [ ('xgmi_hive_id', ctypes.c_uint64), ('xgmi_node_id', ctypes.c_uint64), ('index', ctypes.c_uint32), - ('number_adapters', ctypes.c_uint32), - ('reserved', ctypes.c_uint32 * 8), + ('reserved', ctypes.c_uint32 * 9), ] amdsmi_xgmi_info_t = struct_c__SA_amdsmi_xgmi_info_t @@ -734,19 +731,6 @@ AMDSMI_DEV_PERF_LEVEL_UNKNOWN = 256 c__EA_amdsmi_dev_perf_level_t = ctypes.c_uint32 # enum amdsmi_dev_perf_level_t = c__EA_amdsmi_dev_perf_level_t amdsmi_dev_perf_level_t__enumvalues = c__EA_amdsmi_dev_perf_level_t__enumvalues - -# values for enumeration 'c__EA_amdsmi_sw_component_t' -c__EA_amdsmi_sw_component_t__enumvalues = { - 0: 'AMDSMI_SW_COMP_FIRST', - 0: 'AMDSMI_SW_COMP_DRIVER', - 0: 'AMDSMI_SW_COMP_LAST', -} -AMDSMI_SW_COMP_FIRST = 0 -AMDSMI_SW_COMP_DRIVER = 0 -AMDSMI_SW_COMP_LAST = 0 -c__EA_amdsmi_sw_component_t = ctypes.c_uint32 # enum -amdsmi_sw_component_t = c__EA_amdsmi_sw_component_t -amdsmi_sw_component_t__enumvalues = c__EA_amdsmi_sw_component_t__enumvalues amdsmi_event_handle_t = ctypes.c_uint64 # values for enumeration 'c__EA_amdsmi_event_group_t' @@ -1325,33 +1309,6 @@ struct_c__SA_amdsmi_process_info_t._fields_ = [ ] amdsmi_process_info_t = struct_c__SA_amdsmi_process_info_t -class struct_amdsmi_func_id_iter_handle(Structure): - pass - -amdsmi_func_id_iter_handle_t = ctypes.POINTER(struct_amdsmi_func_id_iter_handle) -class union_c__UA_amdsmi_func_id_value_t(Union): - pass - -class union_c__UA_amdsmi_func_id_value_t_0(Union): - _pack_ = 1 # source:False - _fields_ = [ - ('memory_type', amdsmi_memory_type_t), - ('temp_metric', amdsmi_temperature_metric_t), - ('evnt_type', amdsmi_event_type_t), - ('evnt_group', amdsmi_event_group_t), - ('clk_type', amdsmi_clk_type_t), - ('fw_block', amdsmi_fw_block_t), - ('gpu_block_type', amdsmi_gpu_block_t), - ] - -union_c__UA_amdsmi_func_id_value_t._pack_ = 1 # source:False -union_c__UA_amdsmi_func_id_value_t._fields_ = [ - ('id', ctypes.c_uint64), - ('name', ctypes.POINTER(ctypes.c_char)), - ('c__UA_amdsmi_func_id_value_t_0', union_c__UA_amdsmi_func_id_value_t_0), -] - -amdsmi_func_id_value_t = union_c__UA_amdsmi_func_id_value_t uint64_t = ctypes.c_uint64 amdsmi_init = _libraries['libamd_smi.so'].amdsmi_init amdsmi_init.restype = amdsmi_status_t @@ -1391,15 +1348,12 @@ amdsmi_get_gpu_subsystem_id.argtypes = [amdsmi_processor_handle, ctypes.POINTER( amdsmi_get_gpu_subsystem_name = _libraries['libamd_smi.so'].amdsmi_get_gpu_subsystem_name amdsmi_get_gpu_subsystem_name.restype = amdsmi_status_t amdsmi_get_gpu_subsystem_name.argtypes = [amdsmi_processor_handle, ctypes.POINTER(ctypes.c_char), size_t] -amdsmi_get_gpu_drm_render_minor = _libraries['libamd_smi.so'].amdsmi_get_gpu_drm_render_minor -amdsmi_get_gpu_drm_render_minor.restype = amdsmi_status_t -amdsmi_get_gpu_drm_render_minor.argtypes = [amdsmi_processor_handle, ctypes.POINTER(ctypes.c_uint32)] amdsmi_get_gpu_pci_bandwidth = _libraries['libamd_smi.so'].amdsmi_get_gpu_pci_bandwidth amdsmi_get_gpu_pci_bandwidth.restype = amdsmi_status_t amdsmi_get_gpu_pci_bandwidth.argtypes = [amdsmi_processor_handle, ctypes.POINTER(struct_c__SA_amdsmi_pcie_bandwidth_t)] -amdsmi_get_gpu_pci_id = _libraries['libamd_smi.so'].amdsmi_get_gpu_pci_id -amdsmi_get_gpu_pci_id.restype = amdsmi_status_t -amdsmi_get_gpu_pci_id.argtypes = [amdsmi_processor_handle, ctypes.POINTER(ctypes.c_uint64)] +admsmi_get_gpu_bdf_id = _libraries['libamd_smi.so'].admsmi_get_gpu_bdf_id +admsmi_get_gpu_bdf_id.restype = amdsmi_status_t +admsmi_get_gpu_bdf_id.argtypes = [amdsmi_processor_handle, ctypes.POINTER(ctypes.c_uint64)] amdsmi_get_gpu_topo_numa_affinity = _libraries['libamd_smi.so'].amdsmi_get_gpu_topo_numa_affinity amdsmi_get_gpu_topo_numa_affinity.restype = amdsmi_status_t amdsmi_get_gpu_topo_numa_affinity.argtypes = [amdsmi_processor_handle, ctypes.POINTER(ctypes.c_uint32)] @@ -1433,9 +1387,6 @@ amdsmi_get_gpu_bad_page_info.argtypes = [amdsmi_processor_handle, ctypes.POINTER amdsmi_get_gpu_ras_block_features_enabled = _libraries['libamd_smi.so'].amdsmi_get_gpu_ras_block_features_enabled amdsmi_get_gpu_ras_block_features_enabled.restype = amdsmi_status_t amdsmi_get_gpu_ras_block_features_enabled.argtypes = [amdsmi_processor_handle, amdsmi_gpu_block_t, ctypes.POINTER(c__EA_amdsmi_ras_err_state_t)] -amdsmi_get_gpu_memory_busy_percent = _libraries['libamd_smi.so'].amdsmi_get_gpu_memory_busy_percent -amdsmi_get_gpu_memory_busy_percent.restype = amdsmi_status_t -amdsmi_get_gpu_memory_busy_percent.argtypes = [amdsmi_processor_handle, ctypes.POINTER(ctypes.c_uint32)] amdsmi_get_gpu_memory_reserved_pages = _libraries['libamd_smi.so'].amdsmi_get_gpu_memory_reserved_pages amdsmi_get_gpu_memory_reserved_pages.restype = amdsmi_status_t amdsmi_get_gpu_memory_reserved_pages.argtypes = [amdsmi_processor_handle, ctypes.POINTER(ctypes.c_uint32), ctypes.POINTER(struct_c__SA_amdsmi_retired_page_record_t)] @@ -1460,9 +1411,6 @@ amdsmi_reset_gpu_fan.argtypes = [amdsmi_processor_handle, uint32_t] amdsmi_set_gpu_fan_speed = _libraries['libamd_smi.so'].amdsmi_set_gpu_fan_speed amdsmi_set_gpu_fan_speed.restype = amdsmi_status_t amdsmi_set_gpu_fan_speed.argtypes = [amdsmi_processor_handle, uint32_t, uint64_t] -amdsmi_get_busy_percent = _libraries['libamd_smi.so'].amdsmi_get_busy_percent -amdsmi_get_busy_percent.restype = amdsmi_status_t -amdsmi_get_busy_percent.argtypes = [amdsmi_processor_handle, ctypes.POINTER(ctypes.c_uint32)] amdsmi_get_utilization_count = _libraries['libamd_smi.so'].amdsmi_get_utilization_count amdsmi_get_utilization_count.restype = amdsmi_status_t amdsmi_get_utilization_count.argtypes = [amdsmi_processor_handle, struct_c__SA_amdsmi_utilization_counter_t * 0, uint32_t, ctypes.POINTER(ctypes.c_uint64)] @@ -1511,24 +1459,15 @@ amdsmi_get_gpu_power_profile_presets.argtypes = [amdsmi_processor_handle, uint32 amdsmi_set_gpu_perf_level = _libraries['libamd_smi.so'].amdsmi_set_gpu_perf_level amdsmi_set_gpu_perf_level.restype = amdsmi_status_t amdsmi_set_gpu_perf_level.argtypes = [amdsmi_processor_handle, amdsmi_dev_perf_level_t] -amdsmi_set_gpu_perf_level_v1 = _libraries['libamd_smi.so'].amdsmi_set_gpu_perf_level_v1 -amdsmi_set_gpu_perf_level_v1.restype = amdsmi_status_t -amdsmi_set_gpu_perf_level_v1.argtypes = [amdsmi_processor_handle, amdsmi_dev_perf_level_t] amdsmi_set_gpu_overdrive_level = _libraries['libamd_smi.so'].amdsmi_set_gpu_overdrive_level amdsmi_set_gpu_overdrive_level.restype = amdsmi_status_t amdsmi_set_gpu_overdrive_level.argtypes = [amdsmi_processor_handle, uint32_t] -amdsmi_set_gpu_overdrive_level_v1 = _libraries['libamd_smi.so'].amdsmi_set_gpu_overdrive_level_v1 -amdsmi_set_gpu_overdrive_level_v1.restype = amdsmi_status_t -amdsmi_set_gpu_overdrive_level_v1.argtypes = [amdsmi_processor_handle, uint32_t] amdsmi_set_clk_freq = _libraries['libamd_smi.so'].amdsmi_set_clk_freq amdsmi_set_clk_freq.restype = amdsmi_status_t amdsmi_set_clk_freq.argtypes = [amdsmi_processor_handle, amdsmi_clk_type_t, uint64_t] -amdsmi_get_version = _libraries['libamd_smi.so'].amdsmi_get_version -amdsmi_get_version.restype = amdsmi_status_t -amdsmi_get_version.argtypes = [ctypes.POINTER(struct_c__SA_amdsmi_version_t)] -amdsmi_get_version_str = _libraries['libamd_smi.so'].amdsmi_get_version_str -amdsmi_get_version_str.restype = amdsmi_status_t -amdsmi_get_version_str.argtypes = [amdsmi_sw_component_t, ctypes.POINTER(ctypes.c_char), uint32_t] +amdsmi_get_lib_version = _libraries['libamd_smi.so'].amdsmi_get_lib_version +amdsmi_get_lib_version.restype = amdsmi_status_t +amdsmi_get_lib_version.argtypes = [ctypes.POINTER(struct_c__SA_amdsmi_version_t)] amdsmi_get_gpu_ecc_count = _libraries['libamd_smi.so'].amdsmi_get_gpu_ecc_count amdsmi_get_gpu_ecc_count.restype = amdsmi_status_t amdsmi_get_gpu_ecc_count.argtypes = [amdsmi_processor_handle, amdsmi_gpu_block_t, ctypes.POINTER(struct_c__SA_amdsmi_error_count_t)] @@ -1538,9 +1477,9 @@ amdsmi_get_gpu_ecc_enabled.argtypes = [amdsmi_processor_handle, ctypes.POINTER(c amdsmi_get_gpu_ecc_status = _libraries['libamd_smi.so'].amdsmi_get_gpu_ecc_status amdsmi_get_gpu_ecc_status.restype = amdsmi_status_t amdsmi_get_gpu_ecc_status.argtypes = [amdsmi_processor_handle, amdsmi_gpu_block_t, ctypes.POINTER(c__EA_amdsmi_ras_err_state_t)] -amdsmi_status_string = _libraries['libamd_smi.so'].amdsmi_status_string -amdsmi_status_string.restype = amdsmi_status_t -amdsmi_status_string.argtypes = [amdsmi_status_t, ctypes.POINTER(ctypes.POINTER(ctypes.c_char))] +amdsmi_status_code_to_string = _libraries['libamd_smi.so'].amdsmi_status_code_to_string +amdsmi_status_code_to_string.restype = amdsmi_status_t +amdsmi_status_code_to_string.argtypes = [amdsmi_status_t, ctypes.POINTER(ctypes.POINTER(ctypes.c_char))] amdsmi_gpu_counter_group_supported = _libraries['libamd_smi.so'].amdsmi_gpu_counter_group_supported amdsmi_gpu_counter_group_supported.restype = amdsmi_status_t amdsmi_gpu_counter_group_supported.argtypes = [amdsmi_processor_handle, amdsmi_event_group_t] @@ -1580,30 +1519,15 @@ amdsmi_topo_get_numa_node_number.argtypes = [amdsmi_processor_handle, ctypes.POI amdsmi_topo_get_link_weight = _libraries['libamd_smi.so'].amdsmi_topo_get_link_weight amdsmi_topo_get_link_weight.restype = amdsmi_status_t amdsmi_topo_get_link_weight.argtypes = [amdsmi_processor_handle, amdsmi_processor_handle, ctypes.POINTER(ctypes.c_uint64)] -amdsmi_get_minmax_bandwidth = _libraries['libamd_smi.so'].amdsmi_get_minmax_bandwidth -amdsmi_get_minmax_bandwidth.restype = amdsmi_status_t -amdsmi_get_minmax_bandwidth.argtypes = [amdsmi_processor_handle, amdsmi_processor_handle, ctypes.POINTER(ctypes.c_uint64), ctypes.POINTER(ctypes.c_uint64)] +admsmi_get_minmax_bandwith_between_processors = _libraries['libamd_smi.so'].admsmi_get_minmax_bandwith_between_processors +admsmi_get_minmax_bandwith_between_processors.restype = amdsmi_status_t +admsmi_get_minmax_bandwith_between_processors.argtypes = [amdsmi_processor_handle, amdsmi_processor_handle, ctypes.POINTER(ctypes.c_uint64), ctypes.POINTER(ctypes.c_uint64)] amdsmi_topo_get_link_type = _libraries['libamd_smi.so'].amdsmi_topo_get_link_type amdsmi_topo_get_link_type.restype = amdsmi_status_t amdsmi_topo_get_link_type.argtypes = [amdsmi_processor_handle, amdsmi_processor_handle, ctypes.POINTER(ctypes.c_uint64), ctypes.POINTER(c__EA_AMDSMI_IO_LINK_TYPE)] amdsmi_is_P2P_accessible = _libraries['libamd_smi.so'].amdsmi_is_P2P_accessible amdsmi_is_P2P_accessible.restype = amdsmi_status_t amdsmi_is_P2P_accessible.argtypes = [amdsmi_processor_handle, amdsmi_processor_handle, ctypes.POINTER(ctypes.c_bool)] -amdsmi_open_supported_func_iterator = _libraries['libamd_smi.so'].amdsmi_open_supported_func_iterator -amdsmi_open_supported_func_iterator.restype = amdsmi_status_t -amdsmi_open_supported_func_iterator.argtypes = [amdsmi_processor_handle, ctypes.POINTER(ctypes.POINTER(struct_amdsmi_func_id_iter_handle))] -amdsmi_open_supported_variant_iterator = _libraries['libamd_smi.so'].amdsmi_open_supported_variant_iterator -amdsmi_open_supported_variant_iterator.restype = amdsmi_status_t -amdsmi_open_supported_variant_iterator.argtypes = [amdsmi_func_id_iter_handle_t, ctypes.POINTER(ctypes.POINTER(struct_amdsmi_func_id_iter_handle))] -amdsmi_next_func_iter = _libraries['libamd_smi.so'].amdsmi_next_func_iter -amdsmi_next_func_iter.restype = amdsmi_status_t -amdsmi_next_func_iter.argtypes = [amdsmi_func_id_iter_handle_t] -amdsmi_close_supported_func_iterator = _libraries['libamd_smi.so'].amdsmi_close_supported_func_iterator -amdsmi_close_supported_func_iterator.restype = amdsmi_status_t -amdsmi_close_supported_func_iterator.argtypes = [ctypes.POINTER(ctypes.POINTER(struct_amdsmi_func_id_iter_handle))] -amdsmi_get_func_iter_value = _libraries['libamd_smi.so'].amdsmi_get_func_iter_value -amdsmi_get_func_iter_value.restype = amdsmi_status_t -amdsmi_get_func_iter_value.argtypes = [amdsmi_func_id_iter_handle_t, ctypes.POINTER(union_c__UA_amdsmi_func_id_value_t)] amdsmi_init_gpu_event_notification = _libraries['libamd_smi.so'].amdsmi_init_gpu_event_notification amdsmi_init_gpu_event_notification.restype = amdsmi_status_t amdsmi_init_gpu_event_notification.argtypes = [amdsmi_processor_handle] @@ -1664,9 +1588,9 @@ amdsmi_get_gpu_process_list.argtypes = [amdsmi_processor_handle, ctypes.POINTER( 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_ecc_error_count = _libraries['libamd_smi.so'].amdsmi_get_gpu_ecc_error_count -amdsmi_get_gpu_ecc_error_count.restype = amdsmi_status_t -amdsmi_get_gpu_ecc_error_count.argtypes = [amdsmi_processor_handle, ctypes.POINTER(struct_c__SA_amdsmi_error_count_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)] __all__ = \ ['AMDSMI_CNTR_CMD_START', 'AMDSMI_CNTR_CMD_STOP', 'AMDSMI_COARSE_GRAIN_GFX_ACTIVITY', @@ -1745,15 +1669,13 @@ __all__ = \ 'AMDSMI_STATUS_REFCOUNT_OVERFLOW', 'AMDSMI_STATUS_RETRY', 'AMDSMI_STATUS_SUCCESS', 'AMDSMI_STATUS_TIMEOUT', 'AMDSMI_STATUS_UNEXPECTED_DATA', 'AMDSMI_STATUS_UNEXPECTED_SIZE', - 'AMDSMI_STATUS_UNKNOWN_ERROR', 'AMDSMI_SW_COMP_DRIVER', - 'AMDSMI_SW_COMP_FIRST', 'AMDSMI_SW_COMP_LAST', - 'AMDSMI_TEMP_CRITICAL', 'AMDSMI_TEMP_CRITICAL_HYST', - 'AMDSMI_TEMP_CRIT_MIN', 'AMDSMI_TEMP_CRIT_MIN_HYST', - 'AMDSMI_TEMP_CURRENT', 'AMDSMI_TEMP_EMERGENCY', - 'AMDSMI_TEMP_EMERGENCY_HYST', 'AMDSMI_TEMP_FIRST', - 'AMDSMI_TEMP_HIGHEST', 'AMDSMI_TEMP_LAST', 'AMDSMI_TEMP_LOWEST', - 'AMDSMI_TEMP_MAX', 'AMDSMI_TEMP_MAX_HYST', 'AMDSMI_TEMP_MIN', - 'AMDSMI_TEMP_MIN_HYST', 'AMDSMI_TEMP_OFFSET', + 'AMDSMI_STATUS_UNKNOWN_ERROR', 'AMDSMI_TEMP_CRITICAL', + 'AMDSMI_TEMP_CRITICAL_HYST', 'AMDSMI_TEMP_CRIT_MIN', + 'AMDSMI_TEMP_CRIT_MIN_HYST', 'AMDSMI_TEMP_CURRENT', + 'AMDSMI_TEMP_EMERGENCY', 'AMDSMI_TEMP_EMERGENCY_HYST', + 'AMDSMI_TEMP_FIRST', 'AMDSMI_TEMP_HIGHEST', 'AMDSMI_TEMP_LAST', + 'AMDSMI_TEMP_LOWEST', 'AMDSMI_TEMP_MAX', 'AMDSMI_TEMP_MAX_HYST', + 'AMDSMI_TEMP_MIN', 'AMDSMI_TEMP_MIN_HYST', 'AMDSMI_TEMP_OFFSET', 'AMDSMI_UTILIZATION_COUNTER_FIRST', 'AMDSMI_UTILIZATION_COUNTER_LAST', 'AMDSMI_UTILIZATION_COUNTER_TYPE', @@ -1790,12 +1712,12 @@ __all__ = \ 'TEMPERATURE_TYPE_HBM_2', 'TEMPERATURE_TYPE_HBM_3', 'TEMPERATURE_TYPE_JUNCTION', 'TEMPERATURE_TYPE_PLX', 'TEMPERATURE_TYPE_VRAM', 'TEMPERATURE_TYPE__MAX', 'UNKNOWN', + 'admsmi_get_gpu_bdf_id', + 'admsmi_get_minmax_bandwith_between_processors', 'amd_metrics_table_header_t', 'amdsmi_asic_info_t', 'amdsmi_bdf_t', 'amdsmi_bit_field_t', 'amdsmi_board_info_t', 'amdsmi_clk_info_t', 'amdsmi_clk_type_t', - 'amdsmi_clk_type_t__enumvalues', - 'amdsmi_close_supported_func_iterator', - 'amdsmi_container_types_t', + 'amdsmi_clk_type_t__enumvalues', 'amdsmi_container_types_t', 'amdsmi_container_types_t__enumvalues', 'amdsmi_counter_command_t', 'amdsmi_counter_command_t__enumvalues', 'amdsmi_counter_value_t', @@ -1809,11 +1731,9 @@ __all__ = \ 'amdsmi_evt_notification_type_t__enumvalues', 'amdsmi_freq_ind_t', 'amdsmi_freq_ind_t__enumvalues', 'amdsmi_freq_volt_region_t', 'amdsmi_frequencies_t', 'amdsmi_frequency_range_t', - 'amdsmi_func_id_iter_handle_t', 'amdsmi_func_id_value_t', 'amdsmi_fw_block_t', 'amdsmi_fw_block_t__enumvalues', - 'amdsmi_fw_info_t', 'amdsmi_get_busy_percent', - 'amdsmi_get_clk_freq', 'amdsmi_get_clock_info', - 'amdsmi_get_energy_count', 'amdsmi_get_func_iter_value', + 'amdsmi_fw_info_t', 'amdsmi_get_clk_freq', + 'amdsmi_get_clock_info', 'amdsmi_get_energy_count', 'amdsmi_get_fw_info', 'amdsmi_get_gpu_activity', 'amdsmi_get_gpu_asic_info', 'amdsmi_get_gpu_available_counters', 'amdsmi_get_gpu_bad_page_info', 'amdsmi_get_gpu_board_info', @@ -1821,19 +1741,16 @@ __all__ = \ 'amdsmi_get_gpu_compute_process_info', 'amdsmi_get_gpu_compute_process_info_by_pid', 'amdsmi_get_gpu_device_bdf', 'amdsmi_get_gpu_device_uuid', - 'amdsmi_get_gpu_driver_version', - 'amdsmi_get_gpu_drm_render_minor', 'amdsmi_get_gpu_ecc_count', - 'amdsmi_get_gpu_ecc_enabled', 'amdsmi_get_gpu_ecc_error_count', - 'amdsmi_get_gpu_ecc_status', 'amdsmi_get_gpu_event_notification', - 'amdsmi_get_gpu_fan_rpms', 'amdsmi_get_gpu_fan_speed', - 'amdsmi_get_gpu_fan_speed_max', 'amdsmi_get_gpu_id', - 'amdsmi_get_gpu_memory_busy_percent', - 'amdsmi_get_gpu_memory_reserved_pages', + 'amdsmi_get_gpu_driver_version', 'amdsmi_get_gpu_ecc_count', + 'amdsmi_get_gpu_ecc_enabled', 'amdsmi_get_gpu_ecc_status', + 'amdsmi_get_gpu_event_notification', 'amdsmi_get_gpu_fan_rpms', + 'amdsmi_get_gpu_fan_speed', 'amdsmi_get_gpu_fan_speed_max', + 'amdsmi_get_gpu_id', 'amdsmi_get_gpu_memory_reserved_pages', 'amdsmi_get_gpu_memory_total', 'amdsmi_get_gpu_memory_usage', 'amdsmi_get_gpu_metrics_info', 'amdsmi_get_gpu_od_volt_curve_regions', 'amdsmi_get_gpu_od_volt_info', 'amdsmi_get_gpu_overdrive_level', - 'amdsmi_get_gpu_pci_bandwidth', 'amdsmi_get_gpu_pci_id', + 'amdsmi_get_gpu_pci_bandwidth', 'amdsmi_get_gpu_pci_replay_counter', 'amdsmi_get_gpu_pci_throughput', 'amdsmi_get_gpu_perf_level', 'amdsmi_get_gpu_power_profile_presets', @@ -1841,16 +1758,16 @@ __all__ = \ 'amdsmi_get_gpu_ras_block_features_enabled', 'amdsmi_get_gpu_subsystem_id', 'amdsmi_get_gpu_subsystem_name', 'amdsmi_get_gpu_target_frequency_range', - 'amdsmi_get_gpu_topo_numa_affinity', 'amdsmi_get_gpu_vbios_info', + 'amdsmi_get_gpu_topo_numa_affinity', + 'amdsmi_get_gpu_total_ecc_count', 'amdsmi_get_gpu_vbios_info', 'amdsmi_get_gpu_vendor_name', 'amdsmi_get_gpu_volt_metric', 'amdsmi_get_gpu_vram_usage', 'amdsmi_get_gpu_vram_vendor', - 'amdsmi_get_minmax_bandwidth', 'amdsmi_get_pcie_link_caps', + 'amdsmi_get_lib_version', 'amdsmi_get_pcie_link_caps', 'amdsmi_get_pcie_link_status', 'amdsmi_get_power_cap_info', 'amdsmi_get_power_info', 'amdsmi_get_processor_handle_from_bdf', 'amdsmi_get_processor_handles', 'amdsmi_get_processor_type', 'amdsmi_get_socket_handles', 'amdsmi_get_socket_info', 'amdsmi_get_temp_metric', 'amdsmi_get_utilization_count', - 'amdsmi_get_version', 'amdsmi_get_version_str', 'amdsmi_get_xgmi_info', 'amdsmi_gpu_block_t', 'amdsmi_gpu_block_t__enumvalues', 'amdsmi_gpu_control_counter', 'amdsmi_gpu_counter_group_supported', 'amdsmi_gpu_create_counter', @@ -1862,11 +1779,8 @@ __all__ = \ 'amdsmi_memory_page_status_t', 'amdsmi_memory_page_status_t__enumvalues', 'amdsmi_memory_type_t', 'amdsmi_memory_type_t__enumvalues', 'amdsmi_mm_ip_t', - 'amdsmi_mm_ip_t__enumvalues', 'amdsmi_next_func_iter', - 'amdsmi_od_vddc_point_t', 'amdsmi_od_volt_curve_t', - 'amdsmi_od_volt_freq_data_t', - 'amdsmi_open_supported_func_iterator', - 'amdsmi_open_supported_variant_iterator', + 'amdsmi_mm_ip_t__enumvalues', 'amdsmi_od_vddc_point_t', + 'amdsmi_od_volt_curve_t', 'amdsmi_od_volt_freq_data_t', 'amdsmi_pcie_bandwidth_t', 'amdsmi_pcie_info_t', 'amdsmi_power_cap_info_t', 'amdsmi_power_info_t', 'amdsmi_power_profile_preset_masks_t', @@ -1881,16 +1795,13 @@ __all__ = \ 'amdsmi_set_gpu_event_notification_mask', 'amdsmi_set_gpu_fan_speed', 'amdsmi_set_gpu_od_clk_info', 'amdsmi_set_gpu_od_volt_info', 'amdsmi_set_gpu_overdrive_level', - 'amdsmi_set_gpu_overdrive_level_v1', 'amdsmi_set_gpu_pci_bandwidth', 'amdsmi_set_gpu_perf_determinism_mode', - 'amdsmi_set_gpu_perf_level', 'amdsmi_set_gpu_perf_level_v1', - 'amdsmi_set_gpu_power_profile', 'amdsmi_set_power_cap', - 'amdsmi_shut_down', 'amdsmi_socket_handle', - 'amdsmi_status_string', 'amdsmi_status_t', - 'amdsmi_status_t__enumvalues', - 'amdsmi_stop_gpu_event_notification', 'amdsmi_sw_component_t', - 'amdsmi_sw_component_t__enumvalues', + 'amdsmi_set_gpu_perf_level', 'amdsmi_set_gpu_power_profile', + 'amdsmi_set_power_cap', 'amdsmi_shut_down', + 'amdsmi_socket_handle', 'amdsmi_status_code_to_string', + 'amdsmi_status_t', 'amdsmi_status_t__enumvalues', + 'amdsmi_stop_gpu_event_notification', 'amdsmi_temperature_metric_t', 'amdsmi_temperature_metric_t__enumvalues', 'amdsmi_temperature_type_t', @@ -1913,13 +1824,11 @@ __all__ = \ 'c__EA_amdsmi_memory_type_t', 'c__EA_amdsmi_mm_ip_t', 'c__EA_amdsmi_power_profile_preset_masks_t', 'c__EA_amdsmi_ras_err_state_t', 'c__EA_amdsmi_status_t', - 'c__EA_amdsmi_sw_component_t', 'c__EA_amdsmi_temperature_metric_t', 'c__EA_amdsmi_temperature_type_t', 'c__EA_amdsmi_voltage_metric_t', 'c__EA_amdsmi_voltage_type_t', 'c__EA_amdsmi_xgmi_status_t', 'c__EA_processor_type_t', 'processor_type_t', 'processor_type_t__enumvalues', 'size_t', - 'struct_amdsmi_func_id_iter_handle', 'struct_c__SA_amd_metrics_table_header_t', 'struct_c__SA_amdsmi_asic_info_t', 'struct_c__SA_amdsmi_board_info_t', @@ -1953,6 +1862,4 @@ __all__ = \ 'struct_c__SA_amdsmi_version_t', 'struct_c__SA_amdsmi_vram_info_t', 'struct_c__SA_amdsmi_xgmi_info_t', 'struct_c__UA_amdsmi_bdf_t_0', - 'uint32_t', 'uint64_t', 'union_c__UA_amdsmi_bdf_t', - 'union_c__UA_amdsmi_func_id_value_t', - 'union_c__UA_amdsmi_func_id_value_t_0'] + 'uint32_t', 'uint64_t', 'union_c__UA_amdsmi_bdf_t']