Updated python api to match header changes
Change-Id: I02f6dde54f50d1d66f8c4a8777f849bf63b50c85
Signed-off-by: Dalibor Stanisavljevic <Dalibor.Stanisavljevic@amd.com>
[ROCm/amdsmi commit: 1185397d90]
Этот коммит содержится в:
@@ -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:
|
||||
|
||||
@@ -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` | <table> <thead><tr> <th> Subfield </th> <th> Description</th> </tr></thead><tbody><tr><td>`memory_type`</td><td>Memory type</td></tr><tr><td>`temp_metric`</td><td>Temperature metric</td></tr><tr><td>`evnt_type`</td><td>Event type</td></tr><tr><td>`evnt_group`</td><td>Event group</td></tr><tr><td>`clk_type`</td><td>Clock type</td></tr></tr><tr><td>`fw_block`</td><td>Firmware block</td></tr><tr><td>`gpu_block_type`</td><td>GPU block type</td></tr></tbody></table>
|
||||
|
||||
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:
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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']
|
||||
|
||||
Ссылка в новой задаче
Block a user