[SWDEV-532129] Update amdsmi asic info (#369)
* Added `subsystem_id` to `amdsmi_get_gpu_asic_info`
---------
Signed-off-by: Narlo, Joseph <Joseph.Narlo@amd.com>
[ROCm/amdsmi commit: 9862db63dd]
This commit is contained in:
@@ -12,6 +12,8 @@ Full documentation for amd_smi_lib is available at [https://rocm.docs.amd.com/pr
|
|||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
|
- **Updated `amdsmi_get_gpu_asic_info` in `amdsmi.h`.**
|
||||||
|
- Added `subsystem_id` structure member.
|
||||||
- **Removed `amdsmi_io_link_type_t` and replaced with amdsmi_link_type_t**.
|
- **Removed `amdsmi_io_link_type_t` and replaced with amdsmi_link_type_t**.
|
||||||
- The IO Link type is no longer needed as the link type is sufficient.
|
- The IO Link type is no longer needed as the link type is sufficient.
|
||||||
|
|
||||||
|
|||||||
@@ -483,12 +483,6 @@ class AMDSMICommands():
|
|||||||
except amdsmi_exception.AmdSmiLibraryException as e:
|
except amdsmi_exception.AmdSmiLibraryException as e:
|
||||||
logging.debug("Failed to get asic info for gpu %s | %s", gpu_id, e.get_error_info())
|
logging.debug("Failed to get asic info for gpu %s | %s", gpu_id, e.get_error_info())
|
||||||
|
|
||||||
try:
|
|
||||||
subsystem_id = amdsmi_interface.amdsmi_get_gpu_subsystem_id(args.gpu)
|
|
||||||
asic_dict["subsystem_id"] = subsystem_id
|
|
||||||
except amdsmi_exception.AmdSmiLibraryException as e:
|
|
||||||
logging.debug("Failed to get asic info for gpu %s | %s", gpu_id, e.get_error_info())
|
|
||||||
|
|
||||||
static_dict['asic'] = asic_dict
|
static_dict['asic'] = asic_dict
|
||||||
if args.bus:
|
if args.bus:
|
||||||
bus_info = {
|
bus_info = {
|
||||||
|
|||||||
@@ -366,6 +366,7 @@ Field | Content
|
|||||||
`oam_id` | oam id
|
`oam_id` | oam id
|
||||||
`num_of_compute_units` | number of compute units on asic
|
`num_of_compute_units` | number of compute units on asic
|
||||||
`target_graphics_version` | hardware graphics version
|
`target_graphics_version` | hardware graphics version
|
||||||
|
`subsystem_id` | subsystem id
|
||||||
|
|
||||||
Exceptions that can be thrown by `amdsmi_get_gpu_asic_info` function:
|
Exceptions that can be thrown by `amdsmi_get_gpu_asic_info` function:
|
||||||
|
|
||||||
|
|||||||
@@ -380,6 +380,7 @@ int main() {
|
|||||||
printf("\tDeviceID: 0x%lx\n", asic_info.device_id);
|
printf("\tDeviceID: 0x%lx\n", asic_info.device_id);
|
||||||
printf("\tVendorID: 0x%x\n", asic_info.vendor_id);
|
printf("\tVendorID: 0x%x\n", asic_info.vendor_id);
|
||||||
printf("\tRevisionID: 0x%x\n", asic_info.rev_id);
|
printf("\tRevisionID: 0x%x\n", asic_info.rev_id);
|
||||||
|
printf("\tSubSystemID: 0x%x\n", asic_info.subsystem_id);
|
||||||
printf("\tAsic serial: 0x%s\n", asic_info.asic_serial);
|
printf("\tAsic serial: 0x%s\n", asic_info.asic_serial);
|
||||||
printf("\tNum of Computes: %d\n\n", asic_info.num_of_compute_units);
|
printf("\tNum of Computes: %d\n\n", asic_info.num_of_compute_units);
|
||||||
|
|
||||||
|
|||||||
@@ -129,6 +129,7 @@ int main() {
|
|||||||
printf("\tDeviceID: 0x%lx\n", asic_info.device_id);
|
printf("\tDeviceID: 0x%lx\n", asic_info.device_id);
|
||||||
printf("\tVendorID: 0x%x\n", asic_info.vendor_id);
|
printf("\tVendorID: 0x%x\n", asic_info.vendor_id);
|
||||||
printf("\tRevisionID: 0x%x\n", asic_info.rev_id);
|
printf("\tRevisionID: 0x%x\n", asic_info.rev_id);
|
||||||
|
printf("\tSubSystemID: 0x%x\n", asic_info.subsystem_id);
|
||||||
printf("\tAsic serial: 0x%s\n", asic_info.asic_serial);
|
printf("\tAsic serial: 0x%s\n", asic_info.asic_serial);
|
||||||
printf("\tOAM id: 0x%x\n", asic_info.oam_id);
|
printf("\tOAM id: 0x%x\n", asic_info.oam_id);
|
||||||
printf("\tNum of Computes: %d\n\n", asic_info.num_of_compute_units);
|
printf("\tNum of Computes: %d\n\n", asic_info.num_of_compute_units);
|
||||||
|
|||||||
@@ -814,14 +814,15 @@ typedef struct {
|
|||||||
char market_name[AMDSMI_MAX_STRING_LENGTH];
|
char market_name[AMDSMI_MAX_STRING_LENGTH];
|
||||||
uint32_t vendor_id; //!< Use 32 bit to be compatible with other platform.
|
uint32_t vendor_id; //!< Use 32 bit to be compatible with other platform.
|
||||||
char vendor_name[AMDSMI_MAX_STRING_LENGTH];
|
char vendor_name[AMDSMI_MAX_STRING_LENGTH];
|
||||||
uint32_t subvendor_id; //!< The subsystem vendor id
|
uint32_t subvendor_id; //!< The subsystem vendor ID
|
||||||
uint64_t device_id; //!< The device id of a GPU
|
uint64_t device_id; //!< The device ID of a GPU
|
||||||
uint32_t rev_id;
|
uint32_t rev_id; //!< The revision ID of a GPU
|
||||||
char asic_serial[AMDSMI_MAX_STRING_LENGTH];
|
char asic_serial[AMDSMI_MAX_STRING_LENGTH];
|
||||||
uint32_t oam_id; //!< 0xFFFF if not supported
|
uint32_t oam_id; //!< 0xFFFF if not supported
|
||||||
uint32_t num_of_compute_units; //!< 0xFFFFFFFF if not supported
|
uint32_t num_of_compute_units; //!< 0xFFFFFFFF if not supported
|
||||||
uint64_t target_graphics_version; //!< 0xFFFFFFFFFFFFFFFF if not supported
|
uint64_t target_graphics_version; //!< 0xFFFFFFFFFFFFFFFF if not supported
|
||||||
uint32_t reserved[22];
|
uint32_t subsystem_id; //!> The subsystem ID
|
||||||
|
uint32_t reserved[21];
|
||||||
} amdsmi_asic_info_t;
|
} amdsmi_asic_info_t;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1895,7 +1895,8 @@ def amdsmi_get_gpu_asic_info(
|
|||||||
"asic_serial": asic_info_struct.asic_serial.decode("utf-8"),
|
"asic_serial": asic_info_struct.asic_serial.decode("utf-8"),
|
||||||
"oam_id": asic_info_struct.oam_id,
|
"oam_id": asic_info_struct.oam_id,
|
||||||
"num_compute_units": asic_info_struct.num_of_compute_units,
|
"num_compute_units": asic_info_struct.num_of_compute_units,
|
||||||
"target_graphics_version": "gfx" + target_graphics_version
|
"target_graphics_version": "gfx" + target_graphics_version,
|
||||||
|
"subsystem_id": asic_info_struct.subsystem_id
|
||||||
}
|
}
|
||||||
|
|
||||||
string_values = ["market_name", "vendor_name"]
|
string_values = ["market_name", "vendor_name"]
|
||||||
@@ -1903,7 +1904,7 @@ def amdsmi_get_gpu_asic_info(
|
|||||||
if not asic_info[value]:
|
if not asic_info[value]:
|
||||||
asic_info[value] = "N/A"
|
asic_info[value] = "N/A"
|
||||||
|
|
||||||
hex_values = ["vendor_id", "subvendor_id", "device_id"]
|
hex_values = ["vendor_id", "subvendor_id", "device_id", "subsystem_id"]
|
||||||
for value in hex_values:
|
for value in hex_values:
|
||||||
if asic_info[value]:
|
if asic_info[value]:
|
||||||
asic_info[value] = hex(asic_info[value])
|
asic_info[value] = hex(asic_info[value])
|
||||||
|
|||||||
@@ -994,7 +994,8 @@ struct_amdsmi_asic_info_t._fields_ = [
|
|||||||
('num_of_compute_units', ctypes.c_uint32),
|
('num_of_compute_units', ctypes.c_uint32),
|
||||||
('PADDING_0', ctypes.c_ubyte * 4),
|
('PADDING_0', ctypes.c_ubyte * 4),
|
||||||
('target_graphics_version', ctypes.c_uint64),
|
('target_graphics_version', ctypes.c_uint64),
|
||||||
('reserved', ctypes.c_uint32 * 22),
|
('subsystem_id', ctypes.c_uint32),
|
||||||
|
('reserved', ctypes.c_uint32 * 21),
|
||||||
]
|
]
|
||||||
|
|
||||||
amdsmi_asic_info_t = struct_amdsmi_asic_info_t
|
amdsmi_asic_info_t = struct_amdsmi_asic_info_t
|
||||||
|
|||||||
@@ -919,7 +919,8 @@ pub struct AmdsmiAsicInfoT {
|
|||||||
pub oam_id: u32,
|
pub oam_id: u32,
|
||||||
pub num_of_compute_units: u32,
|
pub num_of_compute_units: u32,
|
||||||
pub target_graphics_version: u64,
|
pub target_graphics_version: u64,
|
||||||
pub reserved: [u32; 22usize],
|
pub subsystem_id: u32,
|
||||||
|
pub reserved: [u32; 21usize],
|
||||||
}
|
}
|
||||||
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
|
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
|
||||||
const _: () = {
|
const _: () = {
|
||||||
@@ -945,8 +946,10 @@ const _: () = {
|
|||||||
[::std::mem::offset_of!(AmdsmiAsicInfoT, num_of_compute_units) - 792usize];
|
[::std::mem::offset_of!(AmdsmiAsicInfoT, num_of_compute_units) - 792usize];
|
||||||
["Offset of field: AmdsmiAsicInfoT::target_graphics_version"]
|
["Offset of field: AmdsmiAsicInfoT::target_graphics_version"]
|
||||||
[::std::mem::offset_of!(AmdsmiAsicInfoT, target_graphics_version) - 800usize];
|
[::std::mem::offset_of!(AmdsmiAsicInfoT, target_graphics_version) - 800usize];
|
||||||
|
["Offset of field: AmdsmiAsicInfoT::subsystem_id"]
|
||||||
|
[::std::mem::offset_of!(AmdsmiAsicInfoT, subsystem_id) - 808usize];
|
||||||
["Offset of field: AmdsmiAsicInfoT::reserved"]
|
["Offset of field: AmdsmiAsicInfoT::reserved"]
|
||||||
[::std::mem::offset_of!(AmdsmiAsicInfoT, reserved) - 808usize];
|
[::std::mem::offset_of!(AmdsmiAsicInfoT, reserved) - 812usize];
|
||||||
};
|
};
|
||||||
#[repr(C)]
|
#[repr(C)]
|
||||||
#[derive(Debug, Copy, Clone)]
|
#[derive(Debug, Copy, Clone)]
|
||||||
|
|||||||
@@ -1431,6 +1431,7 @@ amdsmi_get_gpu_asic_info(amdsmi_processor_handle processor_handle, amdsmi_asic_i
|
|||||||
uint16_t vendor_id = 0;
|
uint16_t vendor_id = 0;
|
||||||
uint16_t subvendor_id = 0;
|
uint16_t subvendor_id = 0;
|
||||||
uint16_t device_id = 0;
|
uint16_t device_id = 0;
|
||||||
|
uint16_t subsystem_id = 0;
|
||||||
|
|
||||||
std::ostringstream ss;
|
std::ostringstream ss;
|
||||||
amd::smi::AMDSmiGPUDevice* gpu_device = nullptr;
|
amd::smi::AMDSmiGPUDevice* gpu_device = nullptr;
|
||||||
@@ -1543,6 +1544,10 @@ amdsmi_get_gpu_asic_info(amdsmi_processor_handle processor_handle, amdsmi_asic_i
|
|||||||
&subvendor_id);
|
&subvendor_id);
|
||||||
if (status == AMDSMI_STATUS_SUCCESS) info->subvendor_id = subvendor_id;
|
if (status == AMDSMI_STATUS_SUCCESS) info->subvendor_id = subvendor_id;
|
||||||
|
|
||||||
|
status = rsmi_wrapper(rsmi_dev_subsystem_id_get, processor_handle, 0,
|
||||||
|
&subsystem_id);
|
||||||
|
if (status == AMDSMI_STATUS_SUCCESS) info->subsystem_id = subsystem_id;
|
||||||
|
|
||||||
status = rsmi_wrapper(rsmi_dev_pcie_vendor_name_get, processor_handle, 0,
|
status = rsmi_wrapper(rsmi_dev_pcie_vendor_name_get, processor_handle, 0,
|
||||||
info->vendor_name, AMDSMI_MAX_STRING_LENGTH);
|
info->vendor_name, AMDSMI_MAX_STRING_LENGTH);
|
||||||
|
|
||||||
|
|||||||
@@ -501,6 +501,7 @@ test_walkthrough (__main__.TestAmdSmiPythonInterface) ...
|
|||||||
asic_info['vendor_name'] is: Advanced Micro Devices Inc. [AMD/ATI]
|
asic_info['vendor_name'] is: Advanced Micro Devices Inc. [AMD/ATI]
|
||||||
asic_info['device_id'] is: 0x73bf
|
asic_info['device_id'] is: 0x73bf
|
||||||
asic_info['rev_id'] is: 0xc1
|
asic_info['rev_id'] is: 0xc1
|
||||||
|
asic_info['subsystem_id'] is: 0xc34
|
||||||
asic_info['asic_serial'] is: 0xF8FFEB47A027DE4D
|
asic_info['asic_serial'] is: 0xF8FFEB47A027DE4D
|
||||||
asic_info['oam_id'] is: N/A
|
asic_info['oam_id'] is: N/A
|
||||||
asic_info['target_graphics_version'] is: gfx1030
|
asic_info['target_graphics_version'] is: gfx1030
|
||||||
|
|||||||
@@ -102,6 +102,8 @@ class TestAmdSmiPythonInterface(unittest.TestCase):
|
|||||||
asic_info['device_id']))
|
asic_info['device_id']))
|
||||||
print(" asic_info['rev_id'] is: {}".format(
|
print(" asic_info['rev_id'] is: {}".format(
|
||||||
asic_info['rev_id']))
|
asic_info['rev_id']))
|
||||||
|
print(" asic_info['subsystem_id'] is: {}".format(
|
||||||
|
asic_info['subsystem_id']))
|
||||||
print(" asic_info['asic_serial'] is: {}".format(
|
print(" asic_info['asic_serial'] is: {}".format(
|
||||||
asic_info['asic_serial']))
|
asic_info['asic_serial']))
|
||||||
print(" asic_info['oam_id'] is: {}".format(
|
print(" asic_info['oam_id'] is: {}".format(
|
||||||
|
|||||||
Reference in New Issue
Block a user