Align header changes with other platforms
Change-Id: I366e57310e0504855692626e2b2014bea235ed6b
Signed-off-by: Dalibor Stanisavljevic <Dalibor.Stanisavljevic@amd.com>
[ROCm/amdsmi commit: 8dbc1d7d57]
Tá an tiomantas seo le fáil i:
@@ -111,7 +111,7 @@ int main() {
|
||||
for (uint32_t i=0; i < socket_count; i++) {
|
||||
// Get Socket info
|
||||
char socket_info[128];
|
||||
ret = amdsmi_get_socket_info(sockets[i], socket_info, 128);
|
||||
ret = amdsmi_get_socket_info(sockets[i], 128, socket_info);
|
||||
std::cout << "Socket " << socket_info<< std::endl;
|
||||
|
||||
// Get the device count for the socket.
|
||||
|
||||
@@ -333,7 +333,7 @@ class AMDSMICommands():
|
||||
try:
|
||||
static_dict['ras'] = amdsmi_interface.amdsmi_get_gpu_ras_block_features_enabled(args.gpu)
|
||||
except amdsmi_exception.AmdSmiLibraryException as e:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.ERR_NOT_SUPPORTED:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.STATUS_NOT_SUPPORTED:
|
||||
static_dict['ras'] = 'N/A'
|
||||
else:
|
||||
static_dict['ras'] = e.get_error_info()
|
||||
@@ -787,14 +787,14 @@ class AMDSMICommands():
|
||||
power_measure = amdsmi_interface.amdsmi_get_power_info(args.gpu)
|
||||
power_dict = {'average_socket_power': power_measure['average_socket_power'],
|
||||
'gfx_voltage': power_measure['gfx_voltage'],
|
||||
'soc_voltage': amdsmi_exception.AmdSmiLibraryException(amdsmi_exception.AmdSmiRetCode.NOT_IMPLEMENTED).err_info,
|
||||
'mem_voltage': amdsmi_exception.AmdSmiLibraryException(amdsmi_exception.AmdSmiRetCode.NOT_IMPLEMENTED).err_info}
|
||||
'soc_voltage': amdsmi_exception.AmdSmiLibraryException(amdsmi_exception.AmdSmiRetCode.STATUS_NOT_YET_IMPLEMENTED).err_info,
|
||||
'mem_voltage': amdsmi_exception.AmdSmiLibraryException(amdsmi_exception.AmdSmiRetCode.STATUS_NOT_YET_IMPLEMENTED).err_info}
|
||||
|
||||
if self.logger.is_human_readable_format():
|
||||
power_dict['average_socket_power'] = f"{power_dict['average_socket_power']} W"
|
||||
power_dict['gfx_voltage'] = f"{power_dict['gfx_voltage']} mV"
|
||||
power_dict['soc_voltage'] = amdsmi_exception.AmdSmiLibraryException(amdsmi_exception.AmdSmiRetCode.NOT_IMPLEMENTED).err_info
|
||||
power_dict['mem_voltage'] = amdsmi_exception.AmdSmiLibraryException(amdsmi_exception.AmdSmiRetCode.NOT_IMPLEMENTED).err_info
|
||||
power_dict['soc_voltage'] = amdsmi_exception.AmdSmiLibraryException(amdsmi_exception.AmdSmiRetCode.STATUS_NOT_YET_IMPLEMENTED).err_info
|
||||
power_dict['mem_voltage'] = amdsmi_exception.AmdSmiLibraryException(amdsmi_exception.AmdSmiRetCode.STATUS_NOT_YET_IMPLEMENTED).err_info
|
||||
|
||||
except amdsmi_exception.AmdSmiLibraryException as e:
|
||||
power_dict = {'average_socket_power': e.get_error_info(),
|
||||
@@ -879,7 +879,7 @@ class AMDSMICommands():
|
||||
|
||||
values_dict['ecc'] = ecc_count
|
||||
except amdsmi_exception.AmdSmiLibraryException as e:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.ERR_NOT_SUPPORTED:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.STATUS_NOT_SUPPORTED:
|
||||
ecc_count['correctable'] = 'N/A'
|
||||
ecc_count['uncorrectable'] = 'N/A'
|
||||
values_dict['ecc'] = ecc_count
|
||||
@@ -1005,7 +1005,7 @@ class AMDSMICommands():
|
||||
if not self.all_arguments:
|
||||
raise e
|
||||
if args.mem_overdrive:
|
||||
values_dict['mem_overdrive'] = amdsmi_exception.AmdSmiLibraryException(amdsmi_exception.AmdSmiRetCode.NOT_IMPLEMENTED).err_info
|
||||
values_dict['mem_overdrive'] = amdsmi_exception.AmdSmiLibraryException(amdsmi_exception.AmdSmiRetCode.STATUS_NOT_YET_IMPLEMENTED).err_info
|
||||
if args.perf_level:
|
||||
try:
|
||||
perf_level = amdsmi_interface.amdsmi_get_gpu_perf_level(args.gpu)
|
||||
@@ -1027,7 +1027,7 @@ class AMDSMICommands():
|
||||
try:
|
||||
values_dict['xgmi_err'] = amdsmi_interface.amdsmi_gpu_xgmi_error_status(args.gpu)
|
||||
except amdsmi_interface.AmdSmiLibraryException as e:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.ERR_NOT_SUPPORTED:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.STATUS_NOT_SUPPORTED:
|
||||
values_dict['xgmi_err'] = 'N/A'
|
||||
elif not self.all_arguments:
|
||||
raise e
|
||||
@@ -1566,7 +1566,7 @@ class AMDSMICommands():
|
||||
try:
|
||||
perf_level = amdsmi_interface.amdsmi_get_gpu_perf_level(args.gpu)
|
||||
except amdsmi_exception.AmdSmiLibraryException as e:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.ERR_NO_PERM:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.STATUS_NO_PERM:
|
||||
raise PermissionError('Command requires elevation') from e
|
||||
raise ValueError(f"Unable to get performance level of {gpu_string}") from e
|
||||
|
||||
@@ -1574,7 +1574,7 @@ class AMDSMICommands():
|
||||
try:
|
||||
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:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.STATUS_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
|
||||
|
||||
@@ -1582,14 +1582,14 @@ class AMDSMICommands():
|
||||
try:
|
||||
amdsmi_interface.amdsmi_set_clk_freq(args.gpu, clock_type, freq_bitmask)
|
||||
except amdsmi_exception.AmdSmiLibraryException as e:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.ERR_NO_PERM:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.STATUS_NO_PERM:
|
||||
raise PermissionError('Command requires elevation') from e
|
||||
raise ValueError(f"Unable to set the {clock_type} clock frequency on {gpu_string}") from e
|
||||
else:
|
||||
try:
|
||||
amdsmi_interface.amdsmi_set_gpu_pci_bandwidth(args.gpu, freq_bitmask)
|
||||
except amdsmi_exception.AmdSmiLibraryException as e:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.ERR_NO_PERM:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.STATUS_NO_PERM:
|
||||
raise PermissionError('Command requires elevation') from e
|
||||
raise ValueError(f"Unable to set the {clock_type} clock frequency on {gpu_string}") from e
|
||||
|
||||
@@ -1601,7 +1601,7 @@ class AMDSMICommands():
|
||||
try:
|
||||
perf_level = amdsmi_interface.amdsmi_get_gpu_perf_level(args.gpu)
|
||||
except amdsmi_exception.AmdSmiLibraryException as e:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.ERR_NO_PERM:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.STATUS_NO_PERM:
|
||||
raise PermissionError('Command requires elevation') from e
|
||||
raise ValueError(f"Unable to get performance level of {gpu_string}") from e
|
||||
|
||||
@@ -1609,14 +1609,14 @@ class AMDSMICommands():
|
||||
try:
|
||||
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:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.STATUS_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_clk_freq(args.gpu, clock_type, freq_bitmask)
|
||||
except amdsmi_exception.AmdSmiLibraryException as e:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.ERR_NO_PERM:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.STATUS_NO_PERM:
|
||||
raise PermissionError('Command requires elevation') from e
|
||||
raise ValueError(f"Unable to set the {clock_type} clock frequency on {gpu_string}") from e
|
||||
|
||||
@@ -1628,7 +1628,7 @@ class AMDSMICommands():
|
||||
try:
|
||||
perf_level = amdsmi_interface.amdsmi_get_gpu_perf_level(args.gpu)
|
||||
except amdsmi_exception.AmdSmiLibraryException as e:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.ERR_NO_PERM:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.STATUS_NO_PERM:
|
||||
raise PermissionError('Command requires elevation') from e
|
||||
raise ValueError(f"Unable to get performance level of {gpu_string}") from e
|
||||
|
||||
@@ -1636,14 +1636,14 @@ class AMDSMICommands():
|
||||
try:
|
||||
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:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.STATUS_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_clk_freq(args.gpu, clock_type, freq_bitmask)
|
||||
except amdsmi_exception.AmdSmiLibraryException as e:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.ERR_NO_PERM:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.STATUS_NO_PERM:
|
||||
raise PermissionError('Command requires elevation') from e
|
||||
raise ValueError(f"Unable to set the {clock_type} clock frequency on {gpu_string}") from e
|
||||
|
||||
@@ -1655,7 +1655,7 @@ class AMDSMICommands():
|
||||
try:
|
||||
perf_level = amdsmi_interface.amdsmi_get_gpu_perf_level(args.gpu)
|
||||
except amdsmi_exception.AmdSmiLibraryException as e:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.ERR_NO_PERM:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.STATUS_NO_PERM:
|
||||
raise PermissionError('Command requires elevation') from e
|
||||
raise ValueError(f"Unable to get performance level of {gpu_string}") from e
|
||||
|
||||
@@ -1663,13 +1663,13 @@ class AMDSMICommands():
|
||||
try:
|
||||
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:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.STATUS_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_pci_bandwidth(args.gpu, freq_bitmask)
|
||||
except amdsmi_exception.AmdSmiLibraryException as e:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.ERR_NO_PERM:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.STATUS_NO_PERM:
|
||||
raise PermissionError('Command requires elevation') from e
|
||||
raise ValueError(f"Unable to set the {clock_type} clock frequency on {gpu_string}") from e
|
||||
|
||||
@@ -1682,7 +1682,7 @@ class AMDSMICommands():
|
||||
try:
|
||||
amdsmi_interface.amdsmi_set_gpu_od_clk_info(args.gpu, level, value, clock_type)
|
||||
except amdsmi_exception.AmdSmiLibraryException as e:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.ERR_NO_PERM:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.STATUS_NO_PERM:
|
||||
raise PermissionError('Command requires elevation') from e
|
||||
raise ValueError(f"Unable to change the {clock_type} clock frequency in the PowerPlay table on {gpu_string}") from e
|
||||
|
||||
@@ -1694,7 +1694,7 @@ class AMDSMICommands():
|
||||
try:
|
||||
amdsmi_interface.amdsmi_set_gpu_od_clk_info(args.gpu, level, value, clock_type)
|
||||
except amdsmi_exception.AmdSmiLibraryException as e:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.ERR_NO_PERM:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.STATUS_NO_PERM:
|
||||
raise PermissionError('Command requires elevation') from e
|
||||
raise ValueError(f"Unable to change the {clock_type} clock frequency in the PowerPlay table on {gpu_string}") from e
|
||||
|
||||
@@ -1704,7 +1704,7 @@ class AMDSMICommands():
|
||||
try:
|
||||
amdsmi_interface.amdsmi_set_gpu_od_volt_info(args.gpu, point, clk, volt)
|
||||
except amdsmi_exception.AmdSmiLibraryException as e:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.ERR_NO_PERM:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.STATUS_NO_PERM:
|
||||
raise PermissionError('Command requires elevation') from e
|
||||
raise ValueError(f"Unable to set the Voltage Curve point {point} to {clk}(MHz) {volt}(mV) on {gpu_string}") from e
|
||||
|
||||
@@ -1715,7 +1715,7 @@ class AMDSMICommands():
|
||||
try:
|
||||
amdsmi_interface.amdsmi_set_gpu_clk_range(args.gpu, min_value, max_value, clock_type)
|
||||
except amdsmi_exception.AmdSmiLibraryException as e:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.ERR_NO_PERM:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.STATUS_NO_PERM:
|
||||
raise PermissionError('Command requires elevation') from e
|
||||
raise ValueError(f"Unable to set {clock_type} from {min_value}(MHz) to {max_value}(MHz) on {gpu_string}") from e
|
||||
|
||||
@@ -1726,7 +1726,7 @@ class AMDSMICommands():
|
||||
try:
|
||||
amdsmi_interface.amdsmi_set_gpu_clk_range(args.gpu, min_value, max_value, clock_type)
|
||||
except amdsmi_exception.AmdSmiLibraryException as e:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.ERR_NO_PERM:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.STATUS_NO_PERM:
|
||||
raise PermissionError('Command requires elevation') from e
|
||||
raise ValueError(f"Unable to set {clock_type} from {min_value}(MHz) to {max_value}(MHz) on {gpu_string}") from e
|
||||
|
||||
@@ -1735,7 +1735,7 @@ class AMDSMICommands():
|
||||
try:
|
||||
amdsmi_interface.amdsmi_set_gpu_fan_speed(args.gpu, 0, args.fan)
|
||||
except amdsmi_exception.AmdSmiLibraryException as e:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.ERR_NO_PERM:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.STATUS_NO_PERM:
|
||||
raise PermissionError('Command requires elevation') from e
|
||||
raise ValueError(f"Unable to set fan speed {args.fan} on {gpu_string}") from e
|
||||
|
||||
@@ -1745,7 +1745,7 @@ class AMDSMICommands():
|
||||
try:
|
||||
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:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.STATUS_NO_PERM:
|
||||
raise PermissionError('Command requires elevation') from e
|
||||
raise ValueError(f"Unable to set performance level {args.perflevel} on {gpu_string}") from e
|
||||
|
||||
@@ -1755,7 +1755,7 @@ class AMDSMICommands():
|
||||
try:
|
||||
perf_level = amdsmi_interface.amdsmi_get_gpu_perf_level(args.gpu)
|
||||
except amdsmi_exception.AmdSmiLibraryException as e:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.ERR_NO_PERM:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.STATUS_NO_PERM:
|
||||
raise PermissionError('Command requires elevation') from e
|
||||
raise ValueError(f"Unable to get performance level of {gpu_string}") from e
|
||||
|
||||
@@ -1763,14 +1763,14 @@ class AMDSMICommands():
|
||||
try:
|
||||
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:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.STATUS_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(args.gpu, args.overdrive)
|
||||
except amdsmi_exception.AmdSmiLibraryException as e:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.ERR_NO_PERM:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.STATUS_NO_PERM:
|
||||
raise PermissionError('Command requires elevation') from e
|
||||
raise ValueError(f"Unable to set overdrive {args.overdrive} to {gpu_string}") from e
|
||||
|
||||
@@ -1780,7 +1780,7 @@ class AMDSMICommands():
|
||||
try:
|
||||
perf_level = amdsmi_interface.amdsmi_get_gpu_perf_level(args.gpu)
|
||||
except amdsmi_exception.AmdSmiLibraryException as e:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.ERR_NO_PERM:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.STATUS_NO_PERM:
|
||||
raise PermissionError('Command requires elevation') from e
|
||||
raise ValueError(f"Unable to get performance level of {gpu_string}") from e
|
||||
|
||||
@@ -1788,7 +1788,7 @@ class AMDSMICommands():
|
||||
try:
|
||||
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:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.STATUS_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
|
||||
|
||||
@@ -1798,11 +1798,11 @@ class AMDSMICommands():
|
||||
try:
|
||||
power_caps = amdsmi_interface.amdsmi_get_power_cap_info(args.gpu)
|
||||
except amdsmi_exception.AmdSmiLibraryException as e:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.ERR_NO_PERM:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.STATUS_NO_PERM:
|
||||
raise PermissionError('Command requires elevation') from e
|
||||
raise ValueError(f"Unable to get the power cap info for {gpu_string}") from e
|
||||
if overdrive_power_cap == 0:
|
||||
overdrive_power_cap = power_caps['power_cap_default']
|
||||
overdrive_power_cap = power_caps['default_power_cap']
|
||||
else:
|
||||
overdrive_power_cap *= 1000000
|
||||
|
||||
@@ -1818,14 +1818,14 @@ class AMDSMICommands():
|
||||
try:
|
||||
amdsmi_interface.amdsmi_set_power_cap(args.gpu, 0, overdrive_power_cap)
|
||||
except amdsmi_exception.AmdSmiLibraryException as e:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.ERR_NO_PERM:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.STATUS_NO_PERM:
|
||||
raise PermissionError('Command requires elevation') from e
|
||||
raise ValueError(f"Unable to set power cap to {overdrive_power_cap} on {gpu_string}") from e
|
||||
|
||||
try:
|
||||
power_caps = amdsmi_interface.amdsmi_get_power_cap_info(args.gpu)
|
||||
except amdsmi_exception.AmdSmiLibraryException as e:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.ERR_NO_PERM:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.STATUS_NO_PERM:
|
||||
raise PermissionError('Command requires elevation') from e
|
||||
raise ValueError(f"Unable to get the power cap info for {gpu_string} post set") from e
|
||||
|
||||
@@ -1839,7 +1839,7 @@ class AMDSMICommands():
|
||||
try:
|
||||
amdsmi_interface.amdsmi_set_gpu_perf_determinism_mode(args.gpu, args.perfdeterminism)
|
||||
except amdsmi_exception.AmdSmiLibraryException as e:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.ERR_NO_PERM:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.STATUS_NO_PERM:
|
||||
raise PermissionError('Command requires elevation') from e
|
||||
raise ValueError(f"Unable to set performance determinism and clock frequency to {args.perfdeterminism} on {gpu_string}") from e
|
||||
|
||||
@@ -1911,7 +1911,7 @@ class AMDSMICommands():
|
||||
amdsmi_interface.amdsmi_reset_gpu(args.gpu)
|
||||
result = 'Successfully reset GPU'
|
||||
except amdsmi_exception.AmdSmiLibraryException as e:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.ERR_NO_PERM:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.STATUS_NO_PERM:
|
||||
raise PermissionError('Command requires elevation') from e
|
||||
result = e.get_error_info()
|
||||
else:
|
||||
@@ -1926,7 +1926,7 @@ class AMDSMICommands():
|
||||
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:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.STATUS_NO_PERM:
|
||||
raise PermissionError('Command requires elevation') from e
|
||||
reset_clocks_results['overdrive'] = e.get_error_info()
|
||||
|
||||
@@ -1935,7 +1935,7 @@ class AMDSMICommands():
|
||||
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:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.STATUS_NO_PERM:
|
||||
raise PermissionError('Command requires elevation') from e
|
||||
reset_clocks_results['clocks'] = e.get_error_info()
|
||||
|
||||
@@ -1944,7 +1944,7 @@ class AMDSMICommands():
|
||||
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:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.STATUS_NO_PERM:
|
||||
raise PermissionError('Command requires elevation') from e
|
||||
reset_clocks_results['performance'] = e.get_error_info()
|
||||
|
||||
@@ -1954,7 +1954,7 @@ class AMDSMICommands():
|
||||
amdsmi_interface.amdsmi_reset_gpu_fan(args.gpu, 0)
|
||||
result = 'Successfully reset fan speed to driver control'
|
||||
except amdsmi_exception.AmdSmiLibraryException as e:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.ERR_NO_PERM:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.STATUS_NO_PERM:
|
||||
raise PermissionError('Command requires elevation') from e
|
||||
result = e.get_error_info()
|
||||
|
||||
@@ -1967,7 +1967,7 @@ class AMDSMICommands():
|
||||
amdsmi_interface.amdsmi_set_gpu_power_profile(args.gpu, 0, power_profile_mask)
|
||||
reset_profile_results['power_profile'] = 'Successfully reset Power Profile'
|
||||
except amdsmi_exception.AmdSmiLibraryException as e:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.ERR_NO_PERM:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.STATUS_NO_PERM:
|
||||
raise PermissionError('Command requires elevation') from e
|
||||
reset_profile_results['power_profile'] = e.get_error_info()
|
||||
|
||||
@@ -1976,7 +1976,7 @@ class AMDSMICommands():
|
||||
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:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.STATUS_NO_PERM:
|
||||
raise PermissionError('Command requires elevation') from e
|
||||
reset_profile_results['performance_level'] = e.get_error_info()
|
||||
|
||||
@@ -1986,7 +1986,7 @@ class AMDSMICommands():
|
||||
amdsmi_interface.amdsmi_reset_gpu_xgmi_error(args.gpu)
|
||||
result = 'Successfully reset XGMI Error count'
|
||||
except amdsmi_exception.AmdSmiLibraryException as e:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.ERR_NO_PERM:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.STATUS_NO_PERM:
|
||||
raise PermissionError('Command requires elevation') from e
|
||||
result = e.get_error_info()
|
||||
self.logger.store_output(args.gpu, 'reset_xgmi_err', result)
|
||||
@@ -1996,7 +1996,7 @@ class AMDSMICommands():
|
||||
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:
|
||||
if e.get_error_code() == amdsmi_exception.AmdSmiRetCode.STATUS_NO_PERM:
|
||||
raise PermissionError('Command requires elevation') from e
|
||||
result = e.get_error_info()
|
||||
|
||||
@@ -2033,7 +2033,7 @@ class AMDSMICommands():
|
||||
commands.logger.store_output(device, 'values', values_dict)
|
||||
commands.logger.print_output()
|
||||
except amdsmi_exception.AmdSmiLibraryException as e:
|
||||
if e.err_code != amdsmi_exception.AmdSmiRetCode.NO_DATA:
|
||||
if e.err_code != amdsmi_exception.AmdSmiRetCode.STATUS_NO_DATA:
|
||||
print(e)
|
||||
except Exception as e:
|
||||
print(e)
|
||||
|
||||
@@ -53,7 +53,7 @@ def check_amdgpu_driver():
|
||||
return False
|
||||
|
||||
|
||||
def init_amdsmi(flag=amdsmi_interface.AmdSmiInitFlags.AMD_GPUS):
|
||||
def init_amdsmi(flag=amdsmi_interface.AmdSmiInitFlags.INIT_AMD_GPUS):
|
||||
""" Initializes AMDSMI
|
||||
|
||||
Raises:
|
||||
|
||||
@@ -238,7 +238,7 @@ int main() {
|
||||
for (uint32_t i = 0; i < socket_count; i++) {
|
||||
// Get Socket info
|
||||
char socket_info[128];
|
||||
ret = amdsmi_get_socket_info(sockets[i], socket_info, 128);
|
||||
ret = amdsmi_get_socket_info(sockets[i], 128, socket_info);
|
||||
CHK_AMDSMI_RET(ret)
|
||||
std::cout << "Socket " << socket_info << std::endl;
|
||||
|
||||
@@ -508,13 +508,13 @@ int main() {
|
||||
freq_ranges.current_freq_range.upper_bound);
|
||||
|
||||
uint32_t num_process = 0;
|
||||
ret = amdsmi_get_gpu_process_list(processor_handles[j], nullptr,
|
||||
&num_process);
|
||||
ret = amdsmi_get_gpu_process_list(processor_handles[j], &num_process,
|
||||
nullptr);
|
||||
CHK_AMDSMI_RET(ret)
|
||||
if (!num_process) {
|
||||
printf("No processes found.\n");
|
||||
} else {
|
||||
amdsmi_process_handle process_list[num_process];
|
||||
amdsmi_process_handle_t process_list[num_process];
|
||||
amdsmi_proc_info_t info_list[num_process];
|
||||
amdsmi_proc_info_t process = {};
|
||||
uint64_t mem = 0, gtt_mem = 0, cpu_mem = 0, vram_mem = 0;
|
||||
@@ -523,8 +523,8 @@ int main() {
|
||||
sprintf(bdf_str, "%04lx:%02x:%02x.%d", bdf.domain_number,
|
||||
bdf.bus_number, bdf.device_number, bdf.function_number);
|
||||
int num = 0;
|
||||
ret = amdsmi_get_gpu_process_list(processor_handles[j], process_list,
|
||||
&num_process);
|
||||
ret = amdsmi_get_gpu_process_list(processor_handles[j], &num_process,
|
||||
process_list);
|
||||
CHK_AMDSMI_RET(ret)
|
||||
for (uint32_t it = 0; it < num_process; it += 1) {
|
||||
if (getpid() == process_list[it]) {
|
||||
|
||||
@@ -90,7 +90,7 @@ int main() {
|
||||
for (uint32_t i = 0; i < socket_count; i++) {
|
||||
// Get Socket info
|
||||
char socket_info[128];
|
||||
ret = amdsmi_get_socket_info(sockets[i], socket_info, 128);
|
||||
ret = amdsmi_get_socket_info(sockets[i], 128, socket_info);
|
||||
CHK_AMDSMI_RET(ret)
|
||||
std::cout << "Socket " << socket_info << std::endl;
|
||||
|
||||
|
||||
@@ -63,7 +63,7 @@ extern "C" {
|
||||
* Initialization flags may be OR'd together and passed to ::amdsmi_init().
|
||||
*/
|
||||
typedef enum {
|
||||
AMDSMI_INIT_ALL_DEVICES = 0x0, // Default option
|
||||
AMDSMI_INIT_ALL_PROCESSORS = 0x0, // Default option
|
||||
AMDSMI_INIT_AMD_CPUS = (1 << 0),
|
||||
AMDSMI_INIT_AMD_GPUS = (1 << 1),
|
||||
AMDSMI_INIT_NON_AMD_CPUS = (1 << 2),
|
||||
@@ -257,6 +257,38 @@ typedef enum {
|
||||
FW_ID_MC,
|
||||
FW_ID_PSP_BL,
|
||||
FW_ID_CP_PM4,
|
||||
FW_ID_RLC_P,
|
||||
FW_ID_SEC_POLICY_STAGE2,
|
||||
FW_ID_REG_ACCESS_WHITELIST,
|
||||
FW_ID_IMU_DRAM,
|
||||
FW_ID_IMU_IRAM,
|
||||
FW_ID_SDMA_TH0,
|
||||
FW_ID_SDMA_TH1,
|
||||
FW_ID_CP_MES,
|
||||
FW_ID_MES_STACK,
|
||||
FW_ID_MES_THREAD1,
|
||||
FW_ID_MES_THREAD1_STACK,
|
||||
FW_ID_RLX6,
|
||||
FW_ID_RLX6_DRAM_BOOT,
|
||||
FW_ID_RS64_ME,
|
||||
FW_ID_RS64_ME_P0_DATA,
|
||||
FW_ID_RS64_ME_P1_DATA,
|
||||
FW_ID_RS64_PFP,
|
||||
FW_ID_RS64_PFP_P0_DATA,
|
||||
FW_ID_RS64_PFP_P1_DATA,
|
||||
FW_ID_RS64_MEC,
|
||||
FW_ID_RS64_MEC_P0_DATA,
|
||||
FW_ID_RS64_MEC_P1_DATA,
|
||||
FW_ID_RS64_MEC_P2_DATA,
|
||||
FW_ID_RS64_MEC_P3_DATA,
|
||||
FW_ID_PPTABLE,
|
||||
FW_ID_PSP_SOC,
|
||||
FW_ID_PSP_DBG,
|
||||
FW_ID_PSP_INTF,
|
||||
FW_ID_RLX6_CORE1,
|
||||
FW_ID_RLX6_DRAM_BOOT_CORE1,
|
||||
FW_ID_RLCV_LX7,
|
||||
FW_ID_RLC_SAVE_RESTORE_LIST,
|
||||
FW_ID_ASD,
|
||||
FW_ID_TA_RAS,
|
||||
FW_ID_XGMI,
|
||||
@@ -287,6 +319,7 @@ typedef struct {
|
||||
typedef struct {
|
||||
uint32_t vram_total;
|
||||
uint32_t vram_used;
|
||||
uint32_t reserved[2];
|
||||
} amdsmi_vram_info_t;
|
||||
|
||||
typedef struct {
|
||||
@@ -319,7 +352,7 @@ typedef struct {
|
||||
char build_date[AMDSMI_MAX_DATE_LENGTH];
|
||||
char part_number[AMDSMI_MAX_STRING_LENGTH];
|
||||
char version[AMDSMI_NORMAL_STRING_LENGTH];
|
||||
uint32_t reserved[15];
|
||||
uint32_t reserved[16];
|
||||
} amdsmi_vbios_info_t;
|
||||
|
||||
typedef struct {
|
||||
@@ -339,6 +372,7 @@ typedef struct {
|
||||
uint64_t device_id; //< The unique id of a GPU
|
||||
uint32_t rev_id;
|
||||
char asic_serial[AMDSMI_NORMAL_STRING_LENGTH];
|
||||
uint32_t reserved[3];
|
||||
} amdsmi_asic_info_t;
|
||||
|
||||
typedef struct {
|
||||
@@ -364,7 +398,7 @@ typedef struct {
|
||||
uint32_t cur_clk;
|
||||
uint32_t min_clk;
|
||||
uint32_t max_clk;
|
||||
uint32_t reserved[4];
|
||||
uint32_t reserved[5];
|
||||
} amdsmi_clk_info_t;
|
||||
|
||||
typedef struct {
|
||||
@@ -374,20 +408,22 @@ typedef struct {
|
||||
uint32_t reserved[13];
|
||||
} amdsmi_engine_usage_t;
|
||||
|
||||
typedef uint32_t amdsmi_process_handle;
|
||||
typedef uint32_t amdsmi_process_handle_t;
|
||||
|
||||
typedef struct {
|
||||
char name[AMDSMI_NORMAL_STRING_LENGTH];
|
||||
amdsmi_process_handle pid;
|
||||
amdsmi_process_handle_t pid;
|
||||
uint64_t mem; /** in bytes */
|
||||
struct {
|
||||
uint64_t gfx;
|
||||
uint64_t enc;
|
||||
uint32_t reserved[12];
|
||||
} engine_usage; /** How much time the process spend using these engines in ns */
|
||||
struct {
|
||||
uint64_t gtt_mem;
|
||||
uint64_t cpu_mem;
|
||||
uint64_t vram_mem;
|
||||
uint32_t reserved[10];
|
||||
} memory_usage; /** in bytes */
|
||||
char container_name[AMDSMI_NORMAL_STRING_LENGTH];
|
||||
uint32_t reserved[4];
|
||||
@@ -1147,7 +1183,7 @@ amdsmi_status_t amdsmi_get_socket_handles(uint32_t *socket_count,
|
||||
*/
|
||||
amdsmi_status_t amdsmi_get_socket_info(
|
||||
amdsmi_socket_handle socket_handle,
|
||||
char *name, size_t len);
|
||||
size_t len, char *name);
|
||||
|
||||
/**
|
||||
* @brief Get the list of the processor handles associated to a socket.
|
||||
@@ -3354,19 +3390,19 @@ amdsmi_get_gpu_target_frequency_range(amdsmi_processor_handle processor_handle,
|
||||
*
|
||||
* @param[in] processor_handle Device which to query
|
||||
*
|
||||
* @param[in,out] max_processes Reference to the size of the list buffer in
|
||||
* number of elements. Returns the return number of elements
|
||||
* in list or the number of running processes if equal to 0.
|
||||
*
|
||||
* @param[out] list Reference to a user-provided buffer where the process
|
||||
* list will be returned. This buffer must contain at least
|
||||
* max_processes entries of type smi_process_handle. Must be allocated
|
||||
* by user.
|
||||
*
|
||||
* @param[in,out] max_processes Reference to the size of the list buffer in
|
||||
* number of elements. Returns the return number of elements
|
||||
* in list or the number of running processes if equal to 0.
|
||||
*
|
||||
* @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail
|
||||
*/
|
||||
amdsmi_status_t
|
||||
amdsmi_get_gpu_process_list(amdsmi_processor_handle processor_handle, amdsmi_process_handle *list, uint32_t *max_processes);
|
||||
amdsmi_get_gpu_process_list(amdsmi_processor_handle processor_handle, uint32_t *max_processes, amdsmi_process_handle_t *list);
|
||||
|
||||
/**
|
||||
* @brief Returns the process information of a given process.
|
||||
@@ -3382,7 +3418,7 @@ amdsmi_get_gpu_process_list(amdsmi_processor_handle processor_handle, amdsmi_pro
|
||||
* @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail
|
||||
*/
|
||||
amdsmi_status_t
|
||||
amdsmi_get_gpu_process_info(amdsmi_processor_handle processor_handle, amdsmi_process_handle process, amdsmi_proc_info_t *info);
|
||||
amdsmi_get_gpu_process_info(amdsmi_processor_handle processor_handle, amdsmi_process_handle_t process, amdsmi_proc_info_t *info);
|
||||
|
||||
/** @} End processinfo */
|
||||
|
||||
|
||||
@@ -52,7 +52,7 @@ try:
|
||||
print("No GPUs on machine")
|
||||
except AmdSmiException as e:
|
||||
print("Error code: {}".format(e.err_code))
|
||||
if e.err_code == AmdSmiRetCode.ERR_RETRY:
|
||||
if e.err_code == AmdSmiRetCode.STATUS_RETRY:
|
||||
print("Error info: {}".format(e.err_info))
|
||||
```
|
||||
* `AmdSmiRetryException` : Derives `AmdSmiLibraryException` class and signals device is busy and call should be retried.
|
||||
@@ -335,7 +335,7 @@ Field | Description
|
||||
---|---
|
||||
`power_cap` | power capability
|
||||
`dpm_cap` | dynamic power management capability
|
||||
`power_cap_default` | default power capability
|
||||
`default_power_cap` | default power capability
|
||||
`min_power_cap` | min power capability
|
||||
`max_power_cap` | max power capability
|
||||
|
||||
@@ -355,7 +355,7 @@ try:
|
||||
power_info = amdsmi_get_power_cap_info(device)
|
||||
print(power_info['power_cap'])
|
||||
print(power_info['dpm_cap'])
|
||||
print(power_info['power_cap_default'])
|
||||
print(power_info['default_power_cap'])
|
||||
print(power_info['min_power_cap'])
|
||||
print(power_info['max_power_cap'])
|
||||
except AmdSmiException as e:
|
||||
@@ -559,8 +559,8 @@ Output: Dictionary with fields
|
||||
Field | Description
|
||||
---|---
|
||||
`cur_clk`| Current clock for given clock type
|
||||
`min_clk` | Minimum clock for given clock type
|
||||
`max_clk` | Maximum clock for given clock type
|
||||
`min_clk` | Minimum clock for given clock type
|
||||
|
||||
Exceptions that can be thrown by `amdsmi_get_clock_info` function:
|
||||
* `AmdSmiLibraryException`
|
||||
|
||||
@@ -186,6 +186,7 @@ from .amdsmi_interface import AmdSmiXgmiStatus
|
||||
from .amdsmi_interface import AmdSmiMemoryPageStatus
|
||||
from .amdsmi_interface import AmdSmiIoLinkType
|
||||
from .amdsmi_interface import AmdSmiUtilizationCounterType
|
||||
from .amdsmi_interface import AmdSmiProcessorType
|
||||
|
||||
# Exceptions
|
||||
from .amdsmi_exception import AmdSmiLibraryException
|
||||
|
||||
@@ -24,32 +24,32 @@ from . import amdsmi_wrapper
|
||||
|
||||
class AmdSmiRetCode(IntEnum):
|
||||
SUCCESS = amdsmi_wrapper.AMDSMI_STATUS_SUCCESS
|
||||
ERR_INVAL = amdsmi_wrapper.AMDSMI_STATUS_INVAL
|
||||
ERR_NOT_SUPPORTED = amdsmi_wrapper.AMDSMI_STATUS_NOT_SUPPORTED
|
||||
FILE_ERROR = amdsmi_wrapper.AMDSMI_STATUS_FILE_ERROR
|
||||
ERR_NO_PERM = amdsmi_wrapper.AMDSMI_STATUS_NO_PERM
|
||||
ERR_OUT_OF_RESOURCES = amdsmi_wrapper.AMDSMI_STATUS_OUT_OF_RESOURCES
|
||||
INTERNAL_EXCEPTION = amdsmi_wrapper.AMDSMI_STATUS_INTERNAL_EXCEPTION
|
||||
INPUT_OUT_OF_BOUNDS = amdsmi_wrapper.AMDSMI_STATUS_INPUT_OUT_OF_BOUNDS
|
||||
INIT_ERROR = amdsmi_wrapper.AMDSMI_STATUS_INIT_ERROR
|
||||
NOT_IMPLEMENTED = amdsmi_wrapper.AMDSMI_STATUS_NOT_YET_IMPLEMENTED
|
||||
ERR_NOT_FOUND = amdsmi_wrapper.AMDSMI_STATUS_NOT_FOUND
|
||||
INSUFFICIENT_SIZE = amdsmi_wrapper.AMDSMI_STATUS_INSUFFICIENT_SIZE
|
||||
INTERRUPT = amdsmi_wrapper.AMDSMI_STATUS_INTERRUPT
|
||||
UNEXPECTED_SIZE = amdsmi_wrapper.AMDSMI_STATUS_UNEXPECTED_SIZE
|
||||
NO_DATA = amdsmi_wrapper.AMDSMI_STATUS_NO_DATA
|
||||
UNEXPECTED_DATA = amdsmi_wrapper.AMDSMI_STATUS_UNEXPECTED_DATA
|
||||
ERR_BUSY = amdsmi_wrapper.AMDSMI_STATUS_BUSY
|
||||
REFCOUNT_OVERFLOW = amdsmi_wrapper.AMDSMI_STATUS_REFCOUNT_OVERFLOW
|
||||
FAIL_LOAD_MODULE = amdsmi_wrapper.AMDSMI_STATUS_FAIL_LOAD_MODULE
|
||||
FAIL_LOAD_SYMBOL = amdsmi_wrapper.AMDSMI_STATUS_FAIL_LOAD_SYMBOL
|
||||
DRM_ERROR = amdsmi_wrapper.AMDSMI_STATUS_DRM_ERROR
|
||||
ERR_IO = amdsmi_wrapper.AMDSMI_STATUS_IO
|
||||
API_FAILED = amdsmi_wrapper.AMDSMI_STATUS_API_FAILED
|
||||
TIMEOUT = amdsmi_wrapper.AMDSMI_STATUS_TIMEOUT
|
||||
NO_SLOT = amdsmi_wrapper.AMDSMI_STATUS_NO_SLOT
|
||||
RETRY = amdsmi_wrapper.AMDSMI_STATUS_RETRY
|
||||
NOT_INIT = amdsmi_wrapper.AMDSMI_STATUS_NOT_INIT
|
||||
STATUS_INVAL = amdsmi_wrapper.AMDSMI_STATUS_INVAL
|
||||
STATUS_NOT_SUPPORTED = amdsmi_wrapper.AMDSMI_STATUS_NOT_SUPPORTED
|
||||
STATUS_FILE_ERROR = amdsmi_wrapper.AMDSMI_STATUS_FILE_ERROR
|
||||
STATUS_NO_PERM = amdsmi_wrapper.AMDSMI_STATUS_NO_PERM
|
||||
STATUS_OUT_OF_RESOURCES = amdsmi_wrapper.AMDSMI_STATUS_OUT_OF_RESOURCES
|
||||
STATUS_INTERNAL_EXCEPTION = amdsmi_wrapper.AMDSMI_STATUS_INTERNAL_EXCEPTION
|
||||
STATUS_INPUT_OUT_OF_BOUNDS = amdsmi_wrapper.AMDSMI_STATUS_INPUT_OUT_OF_BOUNDS
|
||||
STATUS_INIT_ERROR = amdsmi_wrapper.AMDSMI_STATUS_INIT_ERROR
|
||||
STATUS_NOT_YET_IMPLEMENTED = amdsmi_wrapper.AMDSMI_STATUS_NOT_YET_IMPLEMENTED
|
||||
STATUS_NOT_FOUND = amdsmi_wrapper.AMDSMI_STATUS_NOT_FOUND
|
||||
STATUS_INSUFFICIENT_SIZE = amdsmi_wrapper.AMDSMI_STATUS_INSUFFICIENT_SIZE
|
||||
STATUS_INTERRUPT = amdsmi_wrapper.AMDSMI_STATUS_INTERRUPT
|
||||
STATUS_UNEXPECTED_SIZE = amdsmi_wrapper.AMDSMI_STATUS_UNEXPECTED_SIZE
|
||||
STATUS_NO_DATA = amdsmi_wrapper.AMDSMI_STATUS_NO_DATA
|
||||
STATUS_UNEXPECTED_DATA = amdsmi_wrapper.AMDSMI_STATUS_UNEXPECTED_DATA
|
||||
STATUS_BUSY = amdsmi_wrapper.AMDSMI_STATUS_BUSY
|
||||
STATUS_REFCOUNT_OVERFLOW = amdsmi_wrapper.AMDSMI_STATUS_REFCOUNT_OVERFLOW
|
||||
STATUS_FAIL_LOAD_MODULE = amdsmi_wrapper.AMDSMI_STATUS_FAIL_LOAD_MODULE
|
||||
STATUS_FAIL_LOAD_SYMBOL = amdsmi_wrapper.AMDSMI_STATUS_FAIL_LOAD_SYMBOL
|
||||
STATUS_DRM_ERROR = amdsmi_wrapper.AMDSMI_STATUS_DRM_ERROR
|
||||
STATUS_IO = amdsmi_wrapper.AMDSMI_STATUS_IO
|
||||
STATUS_API_FAILED = amdsmi_wrapper.AMDSMI_STATUS_API_FAILED
|
||||
STATUS_TIMEOUT = amdsmi_wrapper.AMDSMI_STATUS_TIMEOUT
|
||||
STATUS_NO_SLOT = amdsmi_wrapper.AMDSMI_STATUS_NO_SLOT
|
||||
STATUS_RETRY = amdsmi_wrapper.AMDSMI_STATUS_RETRY
|
||||
STATUS_NOT_INIT = amdsmi_wrapper.AMDSMI_STATUS_NOT_INIT
|
||||
UNKNOWN_ERROR = amdsmi_wrapper.AMDSMI_STATUS_UNKNOWN_ERROR
|
||||
|
||||
|
||||
@@ -79,32 +79,32 @@ class AmdSmiLibraryException(AmdSmiException):
|
||||
|
||||
def set_err_info(self):
|
||||
switch = {
|
||||
AmdSmiRetCode.ERR_INVAL: "AMDSMI_STATUS_INVAL - Invalid parameters",
|
||||
AmdSmiRetCode.ERR_NOT_SUPPORTED: "AMDSMI_STATUS_NOT_SUPPORTED - Feature not supported",
|
||||
AmdSmiRetCode.FILE_ERROR: "AMDSMI_STATUS_FILE_ERROR - Error opening file",
|
||||
AmdSmiRetCode.ERR_OUT_OF_RESOURCES: "AMDSMI_STATUS_OUT_OF_RESOURCES - Not enough memory",
|
||||
AmdSmiRetCode.INTERNAL_EXCEPTION: "AMDSMI_STATUS_INTERNAL_EXCEPTION - Internal error",
|
||||
AmdSmiRetCode.ERR_NO_PERM: "AMDSMI_STATUS_NO_PERM - Permission Denied",
|
||||
AmdSmiRetCode.INPUT_OUT_OF_BOUNDS: "AMDSMI_STATUS_INPUT_OUT_OF_BOUNDS - Out of bounds",
|
||||
AmdSmiRetCode.INIT_ERROR: "AMDSMI_STATUS_INIT_ERROR - Initialization error",
|
||||
AmdSmiRetCode.ERR_BUSY: "AMDSMI_STATUS_BUSY - Device busy",
|
||||
AmdSmiRetCode.ERR_NOT_FOUND: "AMDSMI_STATUS_NOT_FOUND - Device Not found",
|
||||
AmdSmiRetCode.ERR_IO: "AMDSMI_STATUS_IO - I/O Error",
|
||||
AmdSmiRetCode.NOT_IMPLEMENTED: "AMDSMI_STATUS_NOT_YET_IMPLEMENTED - Feature not yet implemented",
|
||||
AmdSmiRetCode.INSUFFICIENT_SIZE: "AMDSMI_STATUS_INSUFFICIENT_SIZE - Insufficient size for operation",
|
||||
AmdSmiRetCode.INTERRUPT: "AMDSMI_STATUS_INTERRUPT - Interrupt ocurred during execution",
|
||||
AmdSmiRetCode.UNEXPECTED_SIZE: "AMDSMI_STATUS_UNEXPECTED_SIZE - unexpected size of data was read",
|
||||
AmdSmiRetCode.NO_DATA: "AMDSMI_STATUS_NO_DATA - No data was found for given input",
|
||||
AmdSmiRetCode.UNEXPECTED_DATA: "AMDSMI_STATUS_UNEXPECTED_DATA - The data read or provided was unexpected",
|
||||
AmdSmiRetCode.REFCOUNT_OVERFLOW: "AMDSMI_STATUS_REFCOUNT_OVERFLOW - Internal reference counter exceeded INT32_MAX",
|
||||
AmdSmiRetCode.FAIL_LOAD_MODULE: "AMDSMI_STATUS_FAIL_LOAD_MODULE - Fail to load lib",
|
||||
AmdSmiRetCode.FAIL_LOAD_SYMBOL: "AMDSMI_STATUS_FAIL_LOAD_SYMBOL - Fail to load symbol",
|
||||
AmdSmiRetCode.DRM_ERROR: "AMDSMI_STATUS_DRM_ERROR - Error when called libdrm",
|
||||
AmdSmiRetCode.API_FAILED: "AMDSMI_STATUS_API_FAILED - API call failed",
|
||||
AmdSmiRetCode.TIMEOUT: "AMDSMI_STATUS_TIMEOUT - Timeout in API call",
|
||||
AmdSmiRetCode.NO_SLOT: "AMDSMI_STATUS_NO_SLOT - No more free slot",
|
||||
AmdSmiRetCode.RETRY: "AMDSMI_STATUS_RETRY - Retry operation",
|
||||
AmdSmiRetCode.NOT_INIT: "AMDSMI_STATUS_NOT_INIT - Device not initialized",
|
||||
AmdSmiRetCode.STATUS_INVAL: "AMDSMI_STATUS_INVAL - Invalid parameters",
|
||||
AmdSmiRetCode.STATUS_NOT_SUPPORTED: "AMDSMI_STATUS_NOT_SUPPORTED - Feature not supported",
|
||||
AmdSmiRetCode.STATUS_FILE_ERROR: "AMDSMI_STATUS_FILE_ERROR - Error opening file",
|
||||
AmdSmiRetCode.STATUS_OUT_OF_RESOURCES: "AMDSMI_STATUS_OUT_OF_RESOURCES - Not enough memory",
|
||||
AmdSmiRetCode.STATUS_INTERNAL_EXCEPTION: "AMDSMI_STATUS_INTERNAL_EXCEPTION - Internal error",
|
||||
AmdSmiRetCode.STATUS_NO_PERM: "AMDSMI_STATUS_NO_PERM - Permission Denied",
|
||||
AmdSmiRetCode.STATUS_INPUT_OUT_OF_BOUNDS: "AMDSMI_STATUS_INPUT_OUT_OF_BOUNDS - Out of bounds",
|
||||
AmdSmiRetCode.STATUS_INIT_ERROR: "AMDSMI_STATUS_INIT_ERROR - Initialization error",
|
||||
AmdSmiRetCode.STATUS_BUSY: "AMDSMI_STATUS_BUSY - Device busy",
|
||||
AmdSmiRetCode.STATUS_NOT_FOUND: "AMDSMI_STATUS_NOT_FOUND - Device Not found",
|
||||
AmdSmiRetCode.STATUS_IO: "AMDSMI_STATUS_IO - I/O Error",
|
||||
AmdSmiRetCode.STATUS_NOT_YET_IMPLEMENTED: "AMDSMI_STATUS_NOT_YET_IMPLEMENTED - Feature not yet implemented",
|
||||
AmdSmiRetCode.STATUS_INSUFFICIENT_SIZE: "AMDSMI_STATUS_INSUFFICIENT_SIZE - Insufficient size for operation",
|
||||
AmdSmiRetCode.STATUS_INTERRUPT: "AMDSMI_STATUS_INTERRUPT - Interrupt ocurred during execution",
|
||||
AmdSmiRetCode.STATUS_UNEXPECTED_SIZE: "AMDSMI_STATUS_UNEXPECTED_SIZE - unexpected size of data was read",
|
||||
AmdSmiRetCode.STATUS_NO_DATA: "AMDSMI_STATUS_NO_DATA - No data was found for given input",
|
||||
AmdSmiRetCode.STATUS_UNEXPECTED_DATA: "AMDSMI_STATUS_UNEXPECTED_DATA - The data read or provided was unexpected",
|
||||
AmdSmiRetCode.STATUS_REFCOUNT_OVERFLOW: "AMDSMI_STATUS_REFCOUNT_OVERFLOW - Internal reference counter exceeded INT32_MAX",
|
||||
AmdSmiRetCode.STATUS_FAIL_LOAD_MODULE: "AMDSMI_STATUS_FAIL_LOAD_MODULE - Fail to load lib",
|
||||
AmdSmiRetCode.STATUS_FAIL_LOAD_SYMBOL: "AMDSMI_STATUS_FAIL_LOAD_SYMBOL - Fail to load symbol",
|
||||
AmdSmiRetCode.STATUS_DRM_ERROR: "AMDSMI_STATUS_DRM_ERROR - Error when called libdrm",
|
||||
AmdSmiRetCode.STATUS_API_FAILED: "AMDSMI_STATUS_API_FAILED - API call failed",
|
||||
AmdSmiRetCode.STATUS_TIMEOUT: "AMDSMI_STATUS_TIMEOUT - Timeout in API call",
|
||||
AmdSmiRetCode.STATUS_NO_SLOT: "AMDSMI_STATUS_NO_SLOT - No more free slot",
|
||||
AmdSmiRetCode.STATUS_RETRY: "AMDSMI_STATUS_RETRY - Retry operation",
|
||||
AmdSmiRetCode.STATUS_NOT_INIT: "AMDSMI_STATUS_NOT_INIT - Device not initialized",
|
||||
}
|
||||
|
||||
self.err_info = switch.get(self.err_code, "AMDSMI_STATUS_UNKNOWN_ERROR - An unknown error occurred")
|
||||
|
||||
@@ -29,11 +29,11 @@ from . import amdsmi_wrapper
|
||||
from .amdsmi_exception import *
|
||||
|
||||
class AmdSmiInitFlags(IntEnum):
|
||||
ALL_DEVICES = amdsmi_wrapper.AMDSMI_INIT_ALL_DEVICES
|
||||
AMD_CPUS = amdsmi_wrapper.AMDSMI_INIT_AMD_CPUS
|
||||
AMD_GPUS = amdsmi_wrapper.AMDSMI_INIT_AMD_GPUS
|
||||
NON_AMD_CPUS = amdsmi_wrapper.AMDSMI_INIT_NON_AMD_CPUS
|
||||
NON_AMD_GPUS = amdsmi_wrapper.AMDSMI_INIT_NON_AMD_GPUS
|
||||
INIT_ALL_PROCESSORS = amdsmi_wrapper.AMDSMI_INIT_ALL_PROCESSORS
|
||||
INIT_AMD_CPUS = amdsmi_wrapper.AMDSMI_INIT_AMD_CPUS
|
||||
INIT_AMD_GPUS = amdsmi_wrapper.AMDSMI_INIT_AMD_GPUS
|
||||
INIT_NON_AMD_CPUS = amdsmi_wrapper.AMDSMI_INIT_NON_AMD_CPUS
|
||||
INIT_NON_AMD_GPUS = amdsmi_wrapper.AMDSMI_INIT_NON_AMD_GPUS
|
||||
|
||||
|
||||
class AmdSmiContainerTypes(IntEnum):
|
||||
@@ -94,6 +94,38 @@ class AmdSmiFwBlock(IntEnum):
|
||||
FW_ID_MC = amdsmi_wrapper.FW_ID_MC
|
||||
FW_ID_PSP_BL = amdsmi_wrapper.FW_ID_PSP_BL
|
||||
FW_ID_CP_PM4 = amdsmi_wrapper.FW_ID_CP_PM4
|
||||
FW_ID_RLC_P = amdsmi_wrapper.FW_ID_RLC_P
|
||||
FW_ID_SEC_POLICY_STAGE2 = amdsmi_wrapper.FW_ID_SEC_POLICY_STAGE2
|
||||
FW_ID_REG_ACCESS_WHITELIST = amdsmi_wrapper.FW_ID_REG_ACCESS_WHITELIST
|
||||
FW_ID_IMU_DRAM = amdsmi_wrapper.FW_ID_IMU_DRAM
|
||||
FW_ID_IMU_IRAM = amdsmi_wrapper.FW_ID_IMU_IRAM
|
||||
FW_ID_SDMA_TH0 = amdsmi_wrapper.FW_ID_SDMA_TH0
|
||||
FW_ID_SDMA_TH1 = amdsmi_wrapper.FW_ID_SDMA_TH1
|
||||
FW_ID_CP_MES = amdsmi_wrapper.FW_ID_CP_MES
|
||||
FW_ID_MES_STACK = amdsmi_wrapper.FW_ID_MES_STACK
|
||||
FW_ID_MES_THREAD1 = amdsmi_wrapper.FW_ID_MES_THREAD1
|
||||
FW_ID_MES_THREAD1_STACK = amdsmi_wrapper.FW_ID_MES_THREAD1_STACK
|
||||
FW_ID_RLX6 = amdsmi_wrapper.FW_ID_RLX6
|
||||
FW_ID_RLX6_DRAM_BOOT = amdsmi_wrapper.FW_ID_RLX6_DRAM_BOOT
|
||||
FW_ID_RS64_ME = amdsmi_wrapper.FW_ID_RS64_ME
|
||||
FW_ID_RS64_ME_P0_DATA = amdsmi_wrapper.FW_ID_RS64_ME_P0_DATA
|
||||
FW_ID_RS64_ME_P1_DATA = amdsmi_wrapper.FW_ID_RS64_ME_P1_DATA
|
||||
FW_ID_RS64_PFP = amdsmi_wrapper.FW_ID_RS64_PFP
|
||||
FW_ID_RS64_PFP_P0_DATA = amdsmi_wrapper.FW_ID_RS64_PFP_P0_DATA
|
||||
FW_ID_RS64_PFP_P1_DATA = amdsmi_wrapper.FW_ID_RS64_PFP_P1_DATA
|
||||
FW_ID_RS64_MEC = amdsmi_wrapper.FW_ID_RS64_MEC
|
||||
FW_ID_RS64_MEC_P0_DATA = amdsmi_wrapper.FW_ID_RS64_MEC_P0_DATA
|
||||
FW_ID_RS64_MEC_P1_DATA = amdsmi_wrapper.FW_ID_RS64_MEC_P1_DATA
|
||||
FW_ID_RS64_MEC_P2_DATA = amdsmi_wrapper.FW_ID_RS64_MEC_P2_DATA
|
||||
FW_ID_RS64_MEC_P3_DATA = amdsmi_wrapper.FW_ID_RS64_MEC_P3_DATA
|
||||
FW_ID_PPTABLE = amdsmi_wrapper.FW_ID_PPTABLE
|
||||
FW_ID_PSP_SOC = amdsmi_wrapper.FW_ID_PSP_SOC
|
||||
FW_ID_PSP_DBG = amdsmi_wrapper.FW_ID_PSP_DBG
|
||||
FW_ID_PSP_INTF = amdsmi_wrapper.FW_ID_PSP_INTF
|
||||
FW_ID_RLX6_CORE1 = amdsmi_wrapper.FW_ID_RLX6_CORE1
|
||||
FW_ID_RLX6_DRAM_BOOT_CORE1 = amdsmi_wrapper.FW_ID_RLX6_DRAM_BOOT_CORE1
|
||||
FW_ID_RLCV_LX7 = amdsmi_wrapper.FW_ID_RLCV_LX7
|
||||
FW_ID_RLC_SAVE_RESTORE_LIST = amdsmi_wrapper.FW_ID_RLC_SAVE_RESTORE_LIST
|
||||
FW_ID_ASD = amdsmi_wrapper.FW_ID_ASD
|
||||
FW_ID_TA_RAS = amdsmi_wrapper.FW_ID_TA_RAS
|
||||
FW_ID_XGMI = amdsmi_wrapper.FW_ID_XGMI
|
||||
@@ -286,6 +318,13 @@ class AmdSmiUtilizationCounterType(IntEnum):
|
||||
COARSE_GRAIN_GFX_ACTIVITY = amdsmi_wrapper.AMDSMI_COARSE_GRAIN_GFX_ACTIVITY
|
||||
COARSE_GRAIN_MEM_ACTIVITY = amdsmi_wrapper.AMDSMI_COARSE_GRAIN_MEM_ACTIVITY
|
||||
|
||||
class AmdSmiProcessorType(IntEnum):
|
||||
UNKNOWN = amdsmi_wrapper.UNKNOWN
|
||||
AMD_GPU = amdsmi_wrapper.AMD_GPU
|
||||
AMD_CPU = amdsmi_wrapper.AMD_CPU
|
||||
NON_AMD_GPU = amdsmi_wrapper.NON_AMD_GPU
|
||||
NON_AMD_CPU = amdsmi_wrapper.NON_AMD_CPU
|
||||
|
||||
|
||||
class AmdSmiEventReader:
|
||||
def __init__(
|
||||
@@ -499,7 +538,7 @@ def amdsmi_get_socket_info(socket_handle):
|
||||
|
||||
_check_res(
|
||||
amdsmi_wrapper.amdsmi_get_socket_info(
|
||||
socket_handle, socket_info, ctypes.c_size_t(128))
|
||||
socket_handle, ctypes.c_size_t(128), socket_info)
|
||||
)
|
||||
|
||||
return socket_info.value.decode()
|
||||
@@ -536,7 +575,7 @@ def amdsmi_get_processor_handles() -> List[amdsmi_wrapper.amdsmi_processor_handl
|
||||
return devices
|
||||
|
||||
|
||||
def amdsmi_init(flag=AmdSmiInitFlags.AMD_GPUS):
|
||||
def amdsmi_init(flag=AmdSmiInitFlags.INIT_AMD_GPUS):
|
||||
if not isinstance(flag, AmdSmiInitFlags):
|
||||
raise AmdSmiParameterException(flag, AmdSmiInitFlags)
|
||||
_check_res(amdsmi_wrapper.amdsmi_init(flag))
|
||||
@@ -559,7 +598,10 @@ def amdsmi_get_processor_type(
|
||||
amdsmi_wrapper.amdsmi_get_processor_type(
|
||||
processor_handle, ctypes.byref(dev_type))
|
||||
)
|
||||
return dev_type.value
|
||||
|
||||
return {
|
||||
"processor_type": AmdSmiProcessorType(dev_type.value).name
|
||||
}
|
||||
|
||||
|
||||
def amdsmi_get_gpu_device_bdf(processor_handle: amdsmi_wrapper.amdsmi_processor_handle) -> str:
|
||||
@@ -594,6 +636,7 @@ def amdsmi_get_gpu_asic_info(
|
||||
return {
|
||||
"market_name": asic_info.market_name.decode("utf-8"),
|
||||
"vendor_id": asic_info.vendor_id,
|
||||
"subvendor_id": asic_info.subvendor_id,
|
||||
"device_id": asic_info.device_id,
|
||||
"rev_id": asic_info.rev_id,
|
||||
"asic_serial": asic_info.asic_serial.decode("utf-8"),
|
||||
@@ -616,8 +659,8 @@ def amdsmi_get_power_cap_info(
|
||||
)
|
||||
|
||||
return {"power_cap": power_info.power_cap,
|
||||
"default_power_cap": power_info.default_power_cap,
|
||||
"dpm_cap": power_info.dpm_cap,
|
||||
"power_cap_default": power_info.default_power_cap,
|
||||
"min_power_cap": power_info.min_power_cap,
|
||||
"max_power_cap": power_info.max_power_cap}
|
||||
|
||||
@@ -638,9 +681,9 @@ def amdsmi_get_gpu_vbios_info(
|
||||
|
||||
return {
|
||||
"name": vbios_info.name.decode("utf-8"),
|
||||
"version": vbios_info.version.decode("utf-8"),
|
||||
"build_date": vbios_info.build_date.decode("utf-8"),
|
||||
"part_number": vbios_info.part_number.decode("utf-8"),
|
||||
"version": vbios_info.version.decode("utf-8"),
|
||||
}
|
||||
|
||||
|
||||
@@ -668,7 +711,7 @@ def amdsmi_get_gpu_activity(
|
||||
|
||||
def amdsmi_get_clock_info(
|
||||
processor_handle: amdsmi_wrapper.amdsmi_processor_handle,
|
||||
clock_type: amdsmi_wrapper.amdsmi_clk_type_t,
|
||||
clock_type: AmdSmiClkType,
|
||||
) -> Dict[str, Any]:
|
||||
if not isinstance(processor_handle, amdsmi_wrapper.amdsmi_processor_handle):
|
||||
raise AmdSmiParameterException(
|
||||
@@ -681,15 +724,15 @@ def amdsmi_get_clock_info(
|
||||
_check_res(
|
||||
amdsmi_wrapper.amdsmi_get_clock_info(
|
||||
processor_handle,
|
||||
amdsmi_wrapper.amdsmi_clk_type_t(clock_type),
|
||||
clock_type,
|
||||
ctypes.byref(clock_measure),
|
||||
)
|
||||
)
|
||||
|
||||
return {
|
||||
"cur_clk": clock_measure.cur_clk,
|
||||
"min_clk": clock_measure.min_clk,
|
||||
"max_clk": clock_measure.max_clk,
|
||||
"min_clk": clock_measure.min_clk,
|
||||
}
|
||||
|
||||
|
||||
@@ -824,44 +867,44 @@ def amdsmi_get_gpu_ras_block_features_enabled(
|
||||
|
||||
def amdsmi_get_gpu_process_list(
|
||||
processor_handle: amdsmi_wrapper.amdsmi_processor_handle,
|
||||
) -> List[amdsmi_wrapper.amdsmi_process_handle]:
|
||||
) -> List[amdsmi_wrapper.amdsmi_process_handle_t]:
|
||||
if not isinstance(processor_handle, amdsmi_wrapper.amdsmi_processor_handle):
|
||||
raise AmdSmiParameterException(
|
||||
processor_handle, amdsmi_wrapper.amdsmi_processor_handle
|
||||
)
|
||||
|
||||
max_processes = ctypes.c_uint32(0)
|
||||
process_list = (amdsmi_wrapper.amdsmi_process_handle *
|
||||
process_list = (amdsmi_wrapper.amdsmi_process_handle_t *
|
||||
max_processes.value)()
|
||||
_check_res(
|
||||
amdsmi_wrapper.amdsmi_get_gpu_process_list(
|
||||
processor_handle, process_list, ctypes.byref(max_processes)
|
||||
processor_handle, ctypes.byref(max_processes), process_list
|
||||
)
|
||||
)
|
||||
|
||||
process_list = (amdsmi_wrapper.amdsmi_process_handle *
|
||||
process_list = (amdsmi_wrapper.amdsmi_process_handle_t *
|
||||
max_processes.value)()
|
||||
_check_res(
|
||||
amdsmi_wrapper.amdsmi_get_gpu_process_list(
|
||||
processor_handle, process_list, ctypes.byref(max_processes)
|
||||
processor_handle, ctypes.byref(max_processes), process_list
|
||||
)
|
||||
)
|
||||
|
||||
return [amdsmi_wrapper.amdsmi_process_handle(x) for x in list(process_list)]
|
||||
return [amdsmi_wrapper.amdsmi_process_handle_t(x) for x in list(process_list)]
|
||||
|
||||
|
||||
def amdsmi_get_gpu_process_info(
|
||||
processor_handle: amdsmi_wrapper.amdsmi_processor_handle,
|
||||
process: amdsmi_wrapper.amdsmi_process_handle,
|
||||
process: amdsmi_wrapper.amdsmi_process_handle_t,
|
||||
) -> Dict[str, Any]:
|
||||
if not isinstance(processor_handle, amdsmi_wrapper.amdsmi_processor_handle):
|
||||
raise AmdSmiParameterException(
|
||||
processor_handle, amdsmi_wrapper.amdsmi_processor_handle
|
||||
)
|
||||
|
||||
if not isinstance(process, amdsmi_wrapper.amdsmi_process_handle):
|
||||
if not isinstance(process, amdsmi_wrapper.amdsmi_process_handle_t):
|
||||
raise AmdSmiParameterException(
|
||||
process, amdsmi_wrapper.amdsmi_process_handle)
|
||||
process, amdsmi_wrapper.amdsmi_process_handle_t)
|
||||
|
||||
info = amdsmi_wrapper.amdsmi_proc_info_t()
|
||||
_check_res(
|
||||
@@ -946,6 +989,8 @@ def amdsmi_get_power_info(
|
||||
return {
|
||||
"average_socket_power": power_measure.average_socket_power,
|
||||
"gfx_voltage": power_measure.gfx_voltage,
|
||||
'soc_voltage': power_measure.soc_voltage,
|
||||
'mem_voltage': power_measure.mem_voltage,
|
||||
"power_limit" : power_measure.power_limit,
|
||||
}
|
||||
|
||||
@@ -1019,7 +1064,7 @@ def amdsmi_get_pcie_link_caps(
|
||||
processor_handle, ctypes.byref(pcie_info))
|
||||
)
|
||||
|
||||
return {"pcie_lanes": pcie_info.pcie_lanes, "pcie_speed": pcie_info.pcie_speed}
|
||||
return {"pcie_speed": pcie_info.pcie_speed, "pcie_lanes": pcie_info.pcie_lanes}
|
||||
|
||||
|
||||
def amdsmi_get_processor_handle_from_bdf(bdf):
|
||||
|
||||
@@ -190,13 +190,13 @@ else:
|
||||
|
||||
# values for enumeration 'c__EA_amdsmi_init_flags_t'
|
||||
c__EA_amdsmi_init_flags_t__enumvalues = {
|
||||
0: 'AMDSMI_INIT_ALL_DEVICES',
|
||||
0: 'AMDSMI_INIT_ALL_PROCESSORS',
|
||||
1: 'AMDSMI_INIT_AMD_CPUS',
|
||||
2: 'AMDSMI_INIT_AMD_GPUS',
|
||||
4: 'AMDSMI_INIT_NON_AMD_CPUS',
|
||||
8: 'AMDSMI_INIT_NON_AMD_GPUS',
|
||||
}
|
||||
AMDSMI_INIT_ALL_DEVICES = 0
|
||||
AMDSMI_INIT_ALL_PROCESSORS = 0
|
||||
AMDSMI_INIT_AMD_CPUS = 1
|
||||
AMDSMI_INIT_AMD_GPUS = 2
|
||||
AMDSMI_INIT_NON_AMD_CPUS = 4
|
||||
@@ -418,14 +418,46 @@ c__EA_amdsmi_fw_block_t__enumvalues = {
|
||||
36: 'FW_ID_MC',
|
||||
37: 'FW_ID_PSP_BL',
|
||||
38: 'FW_ID_CP_PM4',
|
||||
39: 'FW_ID_ASD',
|
||||
40: 'FW_ID_TA_RAS',
|
||||
41: 'FW_ID_XGMI',
|
||||
42: 'FW_ID_RLC_SRLG',
|
||||
43: 'FW_ID_RLC_SRLS',
|
||||
44: 'FW_ID_SMC',
|
||||
45: 'FW_ID_DMCU',
|
||||
46: 'FW_ID__MAX',
|
||||
39: 'FW_ID_RLC_P',
|
||||
40: 'FW_ID_SEC_POLICY_STAGE2',
|
||||
41: 'FW_ID_REG_ACCESS_WHITELIST',
|
||||
42: 'FW_ID_IMU_DRAM',
|
||||
43: 'FW_ID_IMU_IRAM',
|
||||
44: 'FW_ID_SDMA_TH0',
|
||||
45: 'FW_ID_SDMA_TH1',
|
||||
46: 'FW_ID_CP_MES',
|
||||
47: 'FW_ID_MES_STACK',
|
||||
48: 'FW_ID_MES_THREAD1',
|
||||
49: 'FW_ID_MES_THREAD1_STACK',
|
||||
50: 'FW_ID_RLX6',
|
||||
51: 'FW_ID_RLX6_DRAM_BOOT',
|
||||
52: 'FW_ID_RS64_ME',
|
||||
53: 'FW_ID_RS64_ME_P0_DATA',
|
||||
54: 'FW_ID_RS64_ME_P1_DATA',
|
||||
55: 'FW_ID_RS64_PFP',
|
||||
56: 'FW_ID_RS64_PFP_P0_DATA',
|
||||
57: 'FW_ID_RS64_PFP_P1_DATA',
|
||||
58: 'FW_ID_RS64_MEC',
|
||||
59: 'FW_ID_RS64_MEC_P0_DATA',
|
||||
60: 'FW_ID_RS64_MEC_P1_DATA',
|
||||
61: 'FW_ID_RS64_MEC_P2_DATA',
|
||||
62: 'FW_ID_RS64_MEC_P3_DATA',
|
||||
63: 'FW_ID_PPTABLE',
|
||||
64: 'FW_ID_PSP_SOC',
|
||||
65: 'FW_ID_PSP_DBG',
|
||||
66: 'FW_ID_PSP_INTF',
|
||||
67: 'FW_ID_RLX6_CORE1',
|
||||
68: 'FW_ID_RLX6_DRAM_BOOT_CORE1',
|
||||
69: 'FW_ID_RLCV_LX7',
|
||||
70: 'FW_ID_RLC_SAVE_RESTORE_LIST',
|
||||
71: 'FW_ID_ASD',
|
||||
72: 'FW_ID_TA_RAS',
|
||||
73: 'FW_ID_XGMI',
|
||||
74: 'FW_ID_RLC_SRLG',
|
||||
75: 'FW_ID_RLC_SRLS',
|
||||
76: 'FW_ID_SMC',
|
||||
77: 'FW_ID_DMCU',
|
||||
78: 'FW_ID__MAX',
|
||||
}
|
||||
FW_ID_SMU = 1
|
||||
FW_ID_FIRST = 1
|
||||
@@ -466,14 +498,46 @@ FW_ID_DRV_CAP = 35
|
||||
FW_ID_MC = 36
|
||||
FW_ID_PSP_BL = 37
|
||||
FW_ID_CP_PM4 = 38
|
||||
FW_ID_ASD = 39
|
||||
FW_ID_TA_RAS = 40
|
||||
FW_ID_XGMI = 41
|
||||
FW_ID_RLC_SRLG = 42
|
||||
FW_ID_RLC_SRLS = 43
|
||||
FW_ID_SMC = 44
|
||||
FW_ID_DMCU = 45
|
||||
FW_ID__MAX = 46
|
||||
FW_ID_RLC_P = 39
|
||||
FW_ID_SEC_POLICY_STAGE2 = 40
|
||||
FW_ID_REG_ACCESS_WHITELIST = 41
|
||||
FW_ID_IMU_DRAM = 42
|
||||
FW_ID_IMU_IRAM = 43
|
||||
FW_ID_SDMA_TH0 = 44
|
||||
FW_ID_SDMA_TH1 = 45
|
||||
FW_ID_CP_MES = 46
|
||||
FW_ID_MES_STACK = 47
|
||||
FW_ID_MES_THREAD1 = 48
|
||||
FW_ID_MES_THREAD1_STACK = 49
|
||||
FW_ID_RLX6 = 50
|
||||
FW_ID_RLX6_DRAM_BOOT = 51
|
||||
FW_ID_RS64_ME = 52
|
||||
FW_ID_RS64_ME_P0_DATA = 53
|
||||
FW_ID_RS64_ME_P1_DATA = 54
|
||||
FW_ID_RS64_PFP = 55
|
||||
FW_ID_RS64_PFP_P0_DATA = 56
|
||||
FW_ID_RS64_PFP_P1_DATA = 57
|
||||
FW_ID_RS64_MEC = 58
|
||||
FW_ID_RS64_MEC_P0_DATA = 59
|
||||
FW_ID_RS64_MEC_P1_DATA = 60
|
||||
FW_ID_RS64_MEC_P2_DATA = 61
|
||||
FW_ID_RS64_MEC_P3_DATA = 62
|
||||
FW_ID_PPTABLE = 63
|
||||
FW_ID_PSP_SOC = 64
|
||||
FW_ID_PSP_DBG = 65
|
||||
FW_ID_PSP_INTF = 66
|
||||
FW_ID_RLX6_CORE1 = 67
|
||||
FW_ID_RLX6_DRAM_BOOT_CORE1 = 68
|
||||
FW_ID_RLCV_LX7 = 69
|
||||
FW_ID_RLC_SAVE_RESTORE_LIST = 70
|
||||
FW_ID_ASD = 71
|
||||
FW_ID_TA_RAS = 72
|
||||
FW_ID_XGMI = 73
|
||||
FW_ID_RLC_SRLG = 74
|
||||
FW_ID_RLC_SRLS = 75
|
||||
FW_ID_SMC = 76
|
||||
FW_ID_DMCU = 77
|
||||
FW_ID__MAX = 78
|
||||
c__EA_amdsmi_fw_block_t = ctypes.c_uint32 # enum
|
||||
amdsmi_fw_block_t = c__EA_amdsmi_fw_block_t
|
||||
amdsmi_fw_block_t__enumvalues = c__EA_amdsmi_fw_block_t__enumvalues
|
||||
@@ -509,6 +573,7 @@ struct_c__SA_amdsmi_vram_info_t._pack_ = 1 # source:False
|
||||
struct_c__SA_amdsmi_vram_info_t._fields_ = [
|
||||
('vram_total', ctypes.c_uint32),
|
||||
('vram_used', ctypes.c_uint32),
|
||||
('reserved', ctypes.c_uint32 * 2),
|
||||
]
|
||||
|
||||
amdsmi_vram_info_t = struct_c__SA_amdsmi_vram_info_t
|
||||
@@ -567,7 +632,7 @@ struct_c__SA_amdsmi_vbios_info_t._fields_ = [
|
||||
('build_date', ctypes.c_char * 32),
|
||||
('part_number', ctypes.c_char * 64),
|
||||
('version', ctypes.c_char * 32),
|
||||
('reserved', ctypes.c_uint32 * 15),
|
||||
('reserved', ctypes.c_uint32 * 16),
|
||||
]
|
||||
|
||||
amdsmi_vbios_info_t = struct_c__SA_amdsmi_vbios_info_t
|
||||
@@ -589,7 +654,7 @@ struct_c__SA_amdsmi_fw_info_t._pack_ = 1 # source:False
|
||||
struct_c__SA_amdsmi_fw_info_t._fields_ = [
|
||||
('num_fw_info', ctypes.c_ubyte),
|
||||
('PADDING_0', ctypes.c_ubyte * 7),
|
||||
('fw_info_list', struct_c__SA_amdsmi_fw_info_t_0 * 46),
|
||||
('fw_info_list', struct_c__SA_amdsmi_fw_info_t_0 * 78),
|
||||
('reserved', ctypes.c_uint32 * 7),
|
||||
('PADDING_1', ctypes.c_ubyte * 4),
|
||||
]
|
||||
@@ -606,7 +671,7 @@ struct_c__SA_amdsmi_asic_info_t._fields_ = [
|
||||
('device_id', ctypes.c_uint64),
|
||||
('rev_id', ctypes.c_uint32),
|
||||
('asic_serial', ctypes.c_char * 32),
|
||||
('PADDING_0', ctypes.c_ubyte * 4),
|
||||
('reserved', ctypes.c_uint32 * 3),
|
||||
]
|
||||
|
||||
amdsmi_asic_info_t = struct_c__SA_amdsmi_asic_info_t
|
||||
@@ -648,7 +713,7 @@ struct_c__SA_amdsmi_clk_info_t._fields_ = [
|
||||
('cur_clk', ctypes.c_uint32),
|
||||
('min_clk', ctypes.c_uint32),
|
||||
('max_clk', ctypes.c_uint32),
|
||||
('reserved', ctypes.c_uint32 * 4),
|
||||
('reserved', ctypes.c_uint32 * 5),
|
||||
]
|
||||
|
||||
amdsmi_clk_info_t = struct_c__SA_amdsmi_clk_info_t
|
||||
@@ -664,10 +729,20 @@ struct_c__SA_amdsmi_engine_usage_t._fields_ = [
|
||||
]
|
||||
|
||||
amdsmi_engine_usage_t = struct_c__SA_amdsmi_engine_usage_t
|
||||
amdsmi_process_handle = ctypes.c_uint32
|
||||
amdsmi_process_handle_t = ctypes.c_uint32
|
||||
class struct_c__SA_amdsmi_proc_info_t(Structure):
|
||||
pass
|
||||
|
||||
class struct_c__SA_amdsmi_proc_info_t_0(Structure):
|
||||
pass
|
||||
|
||||
struct_c__SA_amdsmi_proc_info_t_0._pack_ = 1 # source:False
|
||||
struct_c__SA_amdsmi_proc_info_t_0._fields_ = [
|
||||
('gfx', ctypes.c_uint64),
|
||||
('enc', ctypes.c_uint64),
|
||||
('reserved', ctypes.c_uint32 * 12),
|
||||
]
|
||||
|
||||
class struct_c__SA_amdsmi_proc_info_t_1(Structure):
|
||||
pass
|
||||
|
||||
@@ -676,15 +751,7 @@ struct_c__SA_amdsmi_proc_info_t_1._fields_ = [
|
||||
('gtt_mem', ctypes.c_uint64),
|
||||
('cpu_mem', ctypes.c_uint64),
|
||||
('vram_mem', ctypes.c_uint64),
|
||||
]
|
||||
|
||||
class struct_c__SA_amdsmi_proc_info_t_0(Structure):
|
||||
pass
|
||||
|
||||
struct_c__SA_amdsmi_proc_info_t_0._pack_ = 1 # source:False
|
||||
struct_c__SA_amdsmi_proc_info_t_0._fields_ = [
|
||||
('gfx', ctypes.c_uint64),
|
||||
('enc', ctypes.c_uint64),
|
||||
('reserved', ctypes.c_uint32 * 10),
|
||||
]
|
||||
|
||||
struct_c__SA_amdsmi_proc_info_t._pack_ = 1 # source:False
|
||||
@@ -1322,7 +1389,7 @@ amdsmi_get_socket_handles.argtypes = [ctypes.POINTER(ctypes.c_uint32), ctypes.PO
|
||||
size_t = ctypes.c_uint64
|
||||
amdsmi_get_socket_info = _libraries['libamd_smi.so'].amdsmi_get_socket_info
|
||||
amdsmi_get_socket_info.restype = amdsmi_status_t
|
||||
amdsmi_get_socket_info.argtypes = [amdsmi_socket_handle, ctypes.POINTER(ctypes.c_char), size_t]
|
||||
amdsmi_get_socket_info.argtypes = [amdsmi_socket_handle, size_t, ctypes.POINTER(ctypes.c_char)]
|
||||
amdsmi_get_processor_handles = _libraries['libamd_smi.so'].amdsmi_get_processor_handles
|
||||
amdsmi_get_processor_handles.restype = amdsmi_status_t
|
||||
amdsmi_get_processor_handles.argtypes = [amdsmi_socket_handle, ctypes.POINTER(ctypes.c_uint32), ctypes.POINTER(ctypes.POINTER(None))]
|
||||
@@ -1587,7 +1654,7 @@ amdsmi_get_gpu_process_list.restype = amdsmi_status_t
|
||||
amdsmi_get_gpu_process_list.argtypes = [amdsmi_processor_handle, ctypes.POINTER(ctypes.c_uint32), ctypes.POINTER(ctypes.c_uint32)]
|
||||
amdsmi_get_gpu_process_info = _libraries['libamd_smi.so'].amdsmi_get_gpu_process_info
|
||||
amdsmi_get_gpu_process_info.restype = amdsmi_status_t
|
||||
amdsmi_get_gpu_process_info.argtypes = [amdsmi_processor_handle, amdsmi_process_handle, ctypes.POINTER(struct_c__SA_amdsmi_proc_info_t)]
|
||||
amdsmi_get_gpu_process_info.argtypes = [amdsmi_processor_handle, amdsmi_process_handle_t, ctypes.POINTER(struct_c__SA_amdsmi_proc_info_t)]
|
||||
amdsmi_get_gpu_total_ecc_count = _libraries['libamd_smi.so'].amdsmi_get_gpu_total_ecc_count
|
||||
amdsmi_get_gpu_total_ecc_count.restype = amdsmi_status_t
|
||||
amdsmi_get_gpu_total_ecc_count.argtypes = [amdsmi_processor_handle, ctypes.POINTER(struct_c__SA_amdsmi_error_count_t)]
|
||||
@@ -1629,7 +1696,7 @@ __all__ = \
|
||||
'AMDSMI_GPU_BLOCK_PCIE_BIF', 'AMDSMI_GPU_BLOCK_RESERVED',
|
||||
'AMDSMI_GPU_BLOCK_SDMA', 'AMDSMI_GPU_BLOCK_SEM',
|
||||
'AMDSMI_GPU_BLOCK_SMN', 'AMDSMI_GPU_BLOCK_UMC',
|
||||
'AMDSMI_GPU_BLOCK_XGMI_WAFL', 'AMDSMI_INIT_ALL_DEVICES',
|
||||
'AMDSMI_GPU_BLOCK_XGMI_WAFL', 'AMDSMI_INIT_ALL_PROCESSORS',
|
||||
'AMDSMI_INIT_AMD_CPUS', 'AMDSMI_INIT_AMD_GPUS',
|
||||
'AMDSMI_INIT_NON_AMD_CPUS', 'AMDSMI_INIT_NON_AMD_GPUS',
|
||||
'AMDSMI_IOLINK_TYPE_NUMIOLINKTYPES',
|
||||
@@ -1694,17 +1761,29 @@ __all__ = \
|
||||
'CLK_TYPE_VCLK1', 'CLK_TYPE__MAX', 'CONTAINER_DOCKER',
|
||||
'CONTAINER_LXC', 'FW_ID_ASD', 'FW_ID_CP_CE', 'FW_ID_CP_ME',
|
||||
'FW_ID_CP_MEC1', 'FW_ID_CP_MEC2', 'FW_ID_CP_MEC_JT1',
|
||||
'FW_ID_CP_MEC_JT2', 'FW_ID_CP_PFP', 'FW_ID_CP_PM4', 'FW_ID_DFC',
|
||||
'FW_ID_DMCU', 'FW_ID_DMCU_ERAM', 'FW_ID_DMCU_ISR',
|
||||
'FW_ID_DRV_CAP', 'FW_ID_FIRST', 'FW_ID_ISP', 'FW_ID_MC',
|
||||
'FW_ID_MMSCH', 'FW_ID_PSP_BL', 'FW_ID_PSP_KEYDB',
|
||||
'FW_ID_CP_MEC_JT2', 'FW_ID_CP_MES', 'FW_ID_CP_PFP',
|
||||
'FW_ID_CP_PM4', 'FW_ID_DFC', 'FW_ID_DMCU', 'FW_ID_DMCU_ERAM',
|
||||
'FW_ID_DMCU_ISR', 'FW_ID_DRV_CAP', 'FW_ID_FIRST',
|
||||
'FW_ID_IMU_DRAM', 'FW_ID_IMU_IRAM', 'FW_ID_ISP', 'FW_ID_MC',
|
||||
'FW_ID_MES_STACK', 'FW_ID_MES_THREAD1', 'FW_ID_MES_THREAD1_STACK',
|
||||
'FW_ID_MMSCH', 'FW_ID_PPTABLE', 'FW_ID_PSP_BL', 'FW_ID_PSP_DBG',
|
||||
'FW_ID_PSP_INTF', 'FW_ID_PSP_KEYDB', 'FW_ID_PSP_SOC',
|
||||
'FW_ID_PSP_SOSDRV', 'FW_ID_PSP_SPL', 'FW_ID_PSP_SYSDRV',
|
||||
'FW_ID_PSP_TOC', 'FW_ID_RLC', 'FW_ID_RLC_RESTORE_LIST_CNTL',
|
||||
'FW_ID_PSP_TOC', 'FW_ID_REG_ACCESS_WHITELIST', 'FW_ID_RLC',
|
||||
'FW_ID_RLCV_LX7', 'FW_ID_RLC_P', 'FW_ID_RLC_RESTORE_LIST_CNTL',
|
||||
'FW_ID_RLC_RESTORE_LIST_GPM_MEM',
|
||||
'FW_ID_RLC_RESTORE_LIST_SRM_MEM', 'FW_ID_RLC_SRLG',
|
||||
'FW_ID_RLC_SRLS', 'FW_ID_RLC_V', 'FW_ID_SDMA0', 'FW_ID_SDMA1',
|
||||
'FW_ID_RLC_RESTORE_LIST_SRM_MEM', 'FW_ID_RLC_SAVE_RESTORE_LIST',
|
||||
'FW_ID_RLC_SRLG', 'FW_ID_RLC_SRLS', 'FW_ID_RLC_V', 'FW_ID_RLX6',
|
||||
'FW_ID_RLX6_CORE1', 'FW_ID_RLX6_DRAM_BOOT',
|
||||
'FW_ID_RLX6_DRAM_BOOT_CORE1', 'FW_ID_RS64_ME', 'FW_ID_RS64_MEC',
|
||||
'FW_ID_RS64_MEC_P0_DATA', 'FW_ID_RS64_MEC_P1_DATA',
|
||||
'FW_ID_RS64_MEC_P2_DATA', 'FW_ID_RS64_MEC_P3_DATA',
|
||||
'FW_ID_RS64_ME_P0_DATA', 'FW_ID_RS64_ME_P1_DATA',
|
||||
'FW_ID_RS64_PFP', 'FW_ID_RS64_PFP_P0_DATA',
|
||||
'FW_ID_RS64_PFP_P1_DATA', 'FW_ID_SDMA0', 'FW_ID_SDMA1',
|
||||
'FW_ID_SDMA2', 'FW_ID_SDMA3', 'FW_ID_SDMA4', 'FW_ID_SDMA5',
|
||||
'FW_ID_SDMA6', 'FW_ID_SDMA7', 'FW_ID_SMC', 'FW_ID_SMU',
|
||||
'FW_ID_SDMA6', 'FW_ID_SDMA7', 'FW_ID_SDMA_TH0', 'FW_ID_SDMA_TH1',
|
||||
'FW_ID_SEC_POLICY_STAGE2', 'FW_ID_SMC', 'FW_ID_SMU',
|
||||
'FW_ID_TA_RAS', 'FW_ID_UVD', 'FW_ID_VCE', 'FW_ID_VCN',
|
||||
'FW_ID_XGMI', 'FW_ID__MAX', 'NON_AMD_CPU', 'NON_AMD_GPU',
|
||||
'TEMPERATURE_TYPE_EDGE', 'TEMPERATURE_TYPE_FIRST',
|
||||
@@ -1786,7 +1865,7 @@ __all__ = \
|
||||
'amdsmi_power_profile_preset_masks_t',
|
||||
'amdsmi_power_profile_preset_masks_t__enumvalues',
|
||||
'amdsmi_power_profile_status_t', 'amdsmi_proc_info_t',
|
||||
'amdsmi_process_handle', 'amdsmi_process_info_t',
|
||||
'amdsmi_process_handle_t', 'amdsmi_process_info_t',
|
||||
'amdsmi_processor_handle', 'amdsmi_range_t',
|
||||
'amdsmi_ras_err_state_t', 'amdsmi_ras_err_state_t__enumvalues',
|
||||
'amdsmi_reset_gpu', 'amdsmi_reset_gpu_fan',
|
||||
|
||||
@@ -196,7 +196,7 @@ amdsmi_status_t amdsmi_get_socket_handles(uint32_t *socket_count,
|
||||
|
||||
amdsmi_status_t amdsmi_get_socket_info(
|
||||
amdsmi_socket_handle socket_handle,
|
||||
char *name, size_t len) {
|
||||
size_t len, char *name) {
|
||||
AMDSMI_CHECK_INIT();
|
||||
|
||||
if (socket_handle == nullptr || name == nullptr) {
|
||||
@@ -1330,7 +1330,7 @@ amdsmi_get_gpu_total_ecc_count(amdsmi_processor_handle processor_handle, amdsmi_
|
||||
}
|
||||
|
||||
amdsmi_status_t
|
||||
amdsmi_get_gpu_process_list(amdsmi_processor_handle processor_handle, amdsmi_process_handle *list, uint32_t *max_processes) {
|
||||
amdsmi_get_gpu_process_list(amdsmi_processor_handle processor_handle, uint32_t *max_processes, amdsmi_process_handle_t *list) {
|
||||
AMDSMI_CHECK_INIT();
|
||||
|
||||
if (max_processes == nullptr) {
|
||||
@@ -1378,7 +1378,7 @@ amdsmi_get_gpu_process_list(amdsmi_processor_handle processor_handle, amdsmi_pro
|
||||
}
|
||||
|
||||
amdsmi_status_t
|
||||
amdsmi_get_gpu_process_info(amdsmi_processor_handle processor_handle, amdsmi_process_handle process, amdsmi_proc_info_t *info) {
|
||||
amdsmi_get_gpu_process_info(amdsmi_processor_handle processor_handle, amdsmi_process_handle_t process, amdsmi_proc_info_t *info) {
|
||||
AMDSMI_CHECK_INIT();
|
||||
|
||||
if (info == nullptr) {
|
||||
|
||||
@@ -138,7 +138,7 @@ amdsmi_status_t AMDSmiSystem::cleanup() {
|
||||
}
|
||||
processors_.clear();
|
||||
sockets_.clear();
|
||||
init_flag_ = AMDSMI_INIT_ALL_DEVICES;
|
||||
init_flag_ = AMDSMI_INIT_ALL_PROCESSORS;
|
||||
rsmi_status_t ret = rsmi_shut_down();
|
||||
if (ret != RSMI_STATUS_SUCCESS) {
|
||||
return amd::smi::rsmi_to_amdsmi_status(ret);
|
||||
|
||||
Tagairt in Eagrán Nua
Cuir bac ar úsáideoir