SWDEV-463405: Add amdsmi_get_link_topology_nearest support

amdsmi_get_link_topology_nearest() is used to retrieve
the set of GPUs that are nearest to a given device
at a specific interconnectivity level.

Code changes related to the following:
    * API
    * CLI
    * Unit tests
    * Examples

Header Unification Change: "/amdsmi/+/1122408"

Change-Id: Id0317797c652c267742513936d321677793ec634
Signed-off-by: Lang Yu <lang.yu@amd.com>
Bu işleme şunda yer alıyor:
Lang Yu
2024-08-26 05:29:24 -04:00
işlemeyi yapan: Oliveira, Daniel
ebeveyn f00a03ed2b
işleme 7a557b1c50
11 değiştirilmiş dosya ile 535 ekleme ve 69 silme
+33 -13
Dosyayı Görüntüle
@@ -978,15 +978,17 @@ amdsmi_accelerator_partition_profile_t = struct_amdsmi_accelerator_partition_pro
# values for enumeration 'amdsmi_link_type_t'
amdsmi_link_type_t__enumvalues = {
0: 'AMDSMI_LINK_TYPE_PCIE',
0: 'AMDSMI_LINK_TYPE_INTERNAL',
1: 'AMDSMI_LINK_TYPE_XGMI',
2: 'AMDSMI_LINK_TYPE_NOT_APPLICABLE',
3: 'AMDSMI_LINK_TYPE_UNKNOWN',
2: 'AMDSMI_LINK_TYPE_PCIE',
3: 'AMDSMI_LINK_TYPE_NOT_APPLICABLE',
4: 'AMDSMI_LINK_TYPE_UNKNOWN',
}
AMDSMI_LINK_TYPE_PCIE = 0
AMDSMI_LINK_TYPE_INTERNAL = 0
AMDSMI_LINK_TYPE_XGMI = 1
AMDSMI_LINK_TYPE_NOT_APPLICABLE = 2
AMDSMI_LINK_TYPE_UNKNOWN = 3
AMDSMI_LINK_TYPE_PCIE = 2
AMDSMI_LINK_TYPE_NOT_APPLICABLE = 3
AMDSMI_LINK_TYPE_UNKNOWN = 4
amdsmi_link_type_t = ctypes.c_uint32 # enum
class struct_amdsmi_link_metrics_t(Structure):
pass
@@ -1842,6 +1844,19 @@ struct_amdsmi_process_info_t._fields_ = [
]
amdsmi_process_info_t = struct_amdsmi_process_info_t
class struct_amdsmi_topology_nearest_t(Structure):
pass
struct_amdsmi_topology_nearest_t._pack_ = 1 # source:False
struct_amdsmi_topology_nearest_t._fields_ = [
('count', ctypes.c_uint32),
('PADDING_0', ctypes.c_ubyte * 4),
('processor_list', ctypes.POINTER(None) * 32),
('reserved', ctypes.c_uint32 * 15),
('PADDING_1', ctypes.c_ubyte * 4),
]
amdsmi_topology_nearest_t = struct_amdsmi_topology_nearest_t
class struct_amdsmi_smu_fw_version_t(Structure):
pass
@@ -2376,6 +2391,9 @@ amdsmi_get_gpu_process_list.argtypes = [amdsmi_processor_handle, ctypes.POINTER(
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_amdsmi_error_count_t)]
amdsmi_get_link_topology_nearest = _libraries['libamd_smi.so'].amdsmi_get_link_topology_nearest
amdsmi_get_link_topology_nearest.restype = amdsmi_status_t
amdsmi_get_link_topology_nearest.argtypes = [amdsmi_processor_handle, amdsmi_link_type_t, ctypes.POINTER(struct_amdsmi_topology_nearest_t)]
amdsmi_get_cpu_core_energy = _libraries['libamd_smi.so'].amdsmi_get_cpu_core_energy
amdsmi_get_cpu_core_energy.restype = amdsmi_status_t
amdsmi_get_cpu_core_energy.argtypes = [amdsmi_processor_handle, ctypes.POINTER(ctypes.c_uint64)]
@@ -2616,11 +2634,11 @@ __all__ = \
'AMDSMI_IOLINK_TYPE_NUMIOLINKTYPES',
'AMDSMI_IOLINK_TYPE_PCIEXPRESS', 'AMDSMI_IOLINK_TYPE_SIZE',
'AMDSMI_IOLINK_TYPE_UNDEFINED', 'AMDSMI_IOLINK_TYPE_XGMI',
'AMDSMI_LINK_TYPE_NOT_APPLICABLE', 'AMDSMI_LINK_TYPE_PCIE',
'AMDSMI_LINK_TYPE_UNKNOWN', 'AMDSMI_LINK_TYPE_XGMI',
'AMDSMI_MEMORY_PARTITION_NPS1', 'AMDSMI_MEMORY_PARTITION_NPS2',
'AMDSMI_MEMORY_PARTITION_NPS4', 'AMDSMI_MEMORY_PARTITION_NPS8',
'AMDSMI_MEMORY_PARTITION_UNKNOWN',
'AMDSMI_LINK_TYPE_INTERNAL', 'AMDSMI_LINK_TYPE_NOT_APPLICABLE',
'AMDSMI_LINK_TYPE_PCIE', 'AMDSMI_LINK_TYPE_UNKNOWN',
'AMDSMI_LINK_TYPE_XGMI', 'AMDSMI_MEMORY_PARTITION_NPS1',
'AMDSMI_MEMORY_PARTITION_NPS2', 'AMDSMI_MEMORY_PARTITION_NPS4',
'AMDSMI_MEMORY_PARTITION_NPS8', 'AMDSMI_MEMORY_PARTITION_UNKNOWN',
'AMDSMI_MEM_PAGE_STATUS_PENDING',
'AMDSMI_MEM_PAGE_STATUS_RESERVED',
'AMDSMI_MEM_PAGE_STATUS_UNRESERVABLE', 'AMDSMI_MEM_TYPE_FIRST',
@@ -2798,7 +2816,7 @@ __all__ = \
'amdsmi_get_gpu_vram_info', 'amdsmi_get_gpu_vram_usage',
'amdsmi_get_gpu_vram_vendor', 'amdsmi_get_hsmp_metrics_table',
'amdsmi_get_hsmp_metrics_table_version', 'amdsmi_get_lib_version',
'amdsmi_get_link_metrics',
'amdsmi_get_link_metrics', 'amdsmi_get_link_topology_nearest',
'amdsmi_get_minmax_bandwidth_between_processors',
'amdsmi_get_pcie_info', 'amdsmi_get_power_cap_info',
'amdsmi_get_power_info',
@@ -2862,7 +2880,8 @@ __all__ = \
'amdsmi_temp_range_refresh_rate_t', 'amdsmi_temperature_metric_t',
'amdsmi_temperature_type_t', 'amdsmi_topo_get_link_type',
'amdsmi_topo_get_link_weight', 'amdsmi_topo_get_numa_node_number',
'amdsmi_topo_get_p2p_status', 'amdsmi_utilization_counter_t',
'amdsmi_topo_get_p2p_status', 'amdsmi_topology_nearest_t',
'amdsmi_utilization_counter_t',
'amdsmi_utilization_counter_type_t', 'amdsmi_vbios_info_t',
'amdsmi_version_t', 'amdsmi_voltage_metric_t',
'amdsmi_voltage_type_t', 'amdsmi_vram_info_t',
@@ -2896,6 +2915,7 @@ __all__ = \
'struct_amdsmi_retired_page_record_t',
'struct_amdsmi_smu_fw_version_t',
'struct_amdsmi_temp_range_refresh_rate_t',
'struct_amdsmi_topology_nearest_t',
'struct_amdsmi_utilization_counter_t',
'struct_amdsmi_vbios_info_t', 'struct_amdsmi_version_t',
'struct_amdsmi_vram_info_t', 'struct_amdsmi_vram_usage_t',