[SWDEV-493274/SWDEV-514998] Add AMD SMI partition tests + Add Guest amd-smi static --partition (#127)
* [SWDEV-493274/SWDEV-514998] Add AMD SMI partition tests + Add Guest amd-smi static --partition
Changes:
- Added amd-smi static --partition for guest systems
- Added C++ tests for memory and compute (accelerator) partitions
- Added Python tests for amdsmi_get_gpu_vram_info(),
amdsmi_get_gpu_accelerator_partition_profile_config()
- Updated Python tests for
amdsmi_get_gpu_accelerator_partition_profile()
Now includes more profile and resource detail
- Added amdsmi_get_gpu_xcd_counter();
Tests provided for both C++/Python APIs
- Added AmdSmiVramType & AmdSmiVramVendor: they were missing
python testing required adding.
Change-Id: Ib6549d8ccc5fb68726f38745b87c78f890186022
Signed-off-by: Charis Poag <Charis.Poag@amd.com>
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
d9fee767c3
Коммит
48cb5529d2
@@ -94,6 +94,7 @@ from .amdsmi_interface import amdsmi_get_gpu_kfd_info
|
||||
from .amdsmi_interface import amdsmi_get_power_cap_info
|
||||
from .amdsmi_interface import amdsmi_get_gpu_vram_info
|
||||
from .amdsmi_interface import amdsmi_get_gpu_cache_info
|
||||
from .amdsmi_interface import amdsmi_get_gpu_xcd_counter
|
||||
|
||||
# # Microcode and VBIOS Information
|
||||
from .amdsmi_interface import amdsmi_get_gpu_vbios_info
|
||||
@@ -272,6 +273,8 @@ from .amdsmi_interface import AmdSmiLinkType
|
||||
from .amdsmi_interface import AmdSmiUtilizationCounterType
|
||||
from .amdsmi_interface import AmdSmiProcessorType
|
||||
from .amdsmi_interface import AmdSmiVirtualizationMode
|
||||
from .amdsmi_interface import AmdSmiVramType
|
||||
from .amdsmi_interface import AmdSmiVramVendor
|
||||
|
||||
# Exceptions
|
||||
from .amdsmi_exception import AmdSmiLibraryException
|
||||
|
||||
@@ -460,6 +460,36 @@ class AmdSmiVirtualizationMode(IntEnum):
|
||||
GUEST = amdsmi_wrapper.AMDSMI_VIRTUALIZATION_MODE_GUEST
|
||||
PASSTHROUGH = amdsmi_wrapper.AMDSMI_VIRTUALIZATION_MODE_PASSTHROUGH
|
||||
|
||||
class AmdSmiVramType(IntEnum):
|
||||
UNKNOWN = amdsmi_wrapper.AMDSMI_VRAM_TYPE_UNKNOWN
|
||||
HBM = amdsmi_wrapper.AMDSMI_VRAM_TYPE_HBM
|
||||
HBM2 = amdsmi_wrapper.AMDSMI_VRAM_TYPE_HBM2
|
||||
HBM2E = amdsmi_wrapper.AMDSMI_VRAM_TYPE_HBM2E
|
||||
HBM3 = amdsmi_wrapper.AMDSMI_VRAM_TYPE_HBM3
|
||||
DDR2 = amdsmi_wrapper.AMDSMI_VRAM_TYPE_DDR2
|
||||
DDR3 = amdsmi_wrapper.AMDSMI_VRAM_TYPE_DDR3
|
||||
DDR4 = amdsmi_wrapper.AMDSMI_VRAM_TYPE_DDR4
|
||||
GDDR1 = amdsmi_wrapper.AMDSMI_VRAM_TYPE_GDDR1
|
||||
GDDR2 = amdsmi_wrapper.AMDSMI_VRAM_TYPE_GDDR2
|
||||
GDDR3 = amdsmi_wrapper.AMDSMI_VRAM_TYPE_GDDR3
|
||||
GDDR4 = amdsmi_wrapper.AMDSMI_VRAM_TYPE_GDDR4
|
||||
GDDR5 = amdsmi_wrapper.AMDSMI_VRAM_TYPE_GDDR5
|
||||
GDDR6 = amdsmi_wrapper.AMDSMI_VRAM_TYPE_GDDR6
|
||||
GDDR7 = amdsmi_wrapper.AMDSMI_VRAM_TYPE_GDDR7
|
||||
MAX = amdsmi_wrapper.AMDSMI_VRAM_TYPE__MAX
|
||||
|
||||
class AmdSmiVramVendor(IntEnum):
|
||||
SAMSUNG = amdsmi_wrapper.AMDSMI_VRAM_VENDOR_SAMSUNG
|
||||
INFINEON = amdsmi_wrapper.AMDSMI_VRAM_VENDOR_INFINEON
|
||||
ELPIDA = amdsmi_wrapper.AMDSMI_VRAM_VENDOR_ELPIDA
|
||||
ETRON = amdsmi_wrapper.AMDSMI_VRAM_VENDOR_ETRON
|
||||
NANYA = amdsmi_wrapper.AMDSMI_VRAM_VENDOR_NANYA
|
||||
HYNIX = amdsmi_wrapper.AMDSMI_VRAM_VENDOR_HYNIX
|
||||
MOSEL = amdsmi_wrapper.AMDSMI_VRAM_VENDOR_MOSEL
|
||||
WINBOND = amdsmi_wrapper.AMDSMI_VRAM_VENDOR_WINBOND
|
||||
ESMT = amdsmi_wrapper.AMDSMI_VRAM_VENDOR_ESMT
|
||||
MICRON = amdsmi_wrapper.AMDSMI_VRAM_VENDOR_MICRON
|
||||
UNKNOWN = amdsmi_wrapper.AMDSMI_VRAM_VENDOR_UNKNOWN
|
||||
|
||||
class AmdSmiEventReader:
|
||||
def __init__(
|
||||
@@ -2525,6 +2555,18 @@ def amdsmi_get_pcie_info(
|
||||
|
||||
return pcie_info_dict
|
||||
|
||||
def amdsmi_get_gpu_xcd_counter(processor_handle: amdsmi_wrapper.amdsmi_processor_handle) -> Dict[str, Any]:
|
||||
if not isinstance(processor_handle, amdsmi_wrapper.amdsmi_processor_handle):
|
||||
raise AmdSmiParameterException(processor_handle, amdsmi_wrapper.amdsmi_processor_handle)
|
||||
|
||||
xcd_counter = ctypes.c_uint16()
|
||||
_check_res(
|
||||
amdsmi_wrapper.amdsmi_get_gpu_xcd_counter(
|
||||
processor_handle, ctypes.byref(xcd_counter)
|
||||
)
|
||||
)
|
||||
|
||||
return xcd_counter.value
|
||||
|
||||
def amdsmi_get_processor_handle_from_bdf(bdf):
|
||||
bdf = _parse_bdf(bdf)
|
||||
@@ -2958,15 +3000,11 @@ def amdsmi_get_gpu_accelerator_partition_profile(
|
||||
|
||||
length = profile.num_partitions
|
||||
partition_ids = []
|
||||
for i in range(profile.num_partitions):
|
||||
partition_ids.append(partition_id_list[i])
|
||||
|
||||
last_element = 0
|
||||
if length > 0:
|
||||
last_element = length - 1
|
||||
if ((partition_ids[last_element] == 0)
|
||||
and not((profile_type_ret == str("SPX")) or (profile_type_ret == str("N/A")))):
|
||||
partition_ids = "N/A"
|
||||
|
||||
#partition_id[0] will contain the partition id of each device
|
||||
#BM/Guest will include this logic. Host will only display primary partition ids.
|
||||
kPOSITION_OF_PARTITION_ID = 0
|
||||
partition_ids.append(partition_id_list[kPOSITION_OF_PARTITION_ID])
|
||||
|
||||
mem_caps_list = []
|
||||
if profile.memory_caps.nps_flags.nps1_cap == 1:
|
||||
|
||||
@@ -2603,6 +2603,9 @@ amdsmi_get_power_cap_info.argtypes = [amdsmi_processor_handle, uint32_t, ctypes.
|
||||
amdsmi_get_pcie_info = _libraries['libamd_smi.so'].amdsmi_get_pcie_info
|
||||
amdsmi_get_pcie_info.restype = amdsmi_status_t
|
||||
amdsmi_get_pcie_info.argtypes = [amdsmi_processor_handle, ctypes.POINTER(struct_amdsmi_pcie_info_t)]
|
||||
amdsmi_get_gpu_xcd_counter = _libraries['libamd_smi.so'].amdsmi_get_gpu_xcd_counter
|
||||
amdsmi_get_gpu_xcd_counter.restype = amdsmi_status_t
|
||||
amdsmi_get_gpu_xcd_counter.argtypes = [amdsmi_processor_handle, ctypes.POINTER(ctypes.c_uint16)]
|
||||
amdsmi_get_fw_info = _libraries['libamd_smi.so'].amdsmi_get_fw_info
|
||||
amdsmi_get_fw_info.restype = amdsmi_status_t
|
||||
amdsmi_get_fw_info.argtypes = [amdsmi_processor_handle, ctypes.POINTER(struct_amdsmi_fw_info_t)]
|
||||
@@ -3050,7 +3053,7 @@ __all__ = \
|
||||
'amdsmi_get_gpu_virtualization_mode',
|
||||
'amdsmi_get_gpu_volt_metric', 'amdsmi_get_gpu_vram_info',
|
||||
'amdsmi_get_gpu_vram_usage', 'amdsmi_get_gpu_vram_vendor',
|
||||
'amdsmi_get_gpu_xgmi_link_status',
|
||||
'amdsmi_get_gpu_xcd_counter', 'amdsmi_get_gpu_xgmi_link_status',
|
||||
'amdsmi_get_hsmp_metrics_table',
|
||||
'amdsmi_get_hsmp_metrics_table_version', 'amdsmi_get_lib_version',
|
||||
'amdsmi_get_link_metrics', 'amdsmi_get_link_topology_nearest',
|
||||
|
||||
Ссылка в новой задаче
Block a user