From a719ae970706e5f1848218d5c7c828a6f07ccbd4 Mon Sep 17 00:00:00 2001 From: Maisam Arif Date: Wed, 21 Feb 2024 21:46:32 -0600 Subject: [PATCH] SWDEV-445396 - Aligned Static Command with Host Signed-off-by: Maisam Arif Change-Id: I4182b9104e173f54830fc44819a61d74d31d65d7 --- amdsmi_cli/README.md | 228 ++++++++++++------------------- amdsmi_cli/amdsmi_commands.py | 40 ++++-- py-interface/README.md | 4 +- py-interface/amdsmi_interface.py | 15 +- py-interface/amdsmi_wrapper.py | 24 ++-- 5 files changed, 133 insertions(+), 178 deletions(-) diff --git a/amdsmi_cli/README.md b/amdsmi_cli/README.md index 0fa72b8534..cfa66890ee 100644 --- a/amdsmi_cli/README.md +++ b/amdsmi_cli/README.md @@ -637,8 +637,8 @@ BOARD: MODEL_NUMBER: N/A PRODUCT_SERIAL: N/A FRU_ID: N/A - MANUFACTURER_NAME: N/A PRODUCT_NAME: N/A + MANUFACTURER_NAME: N/A LIMIT: MAX_POWER: 550 W CURRENT_POWER: 0 W @@ -649,13 +649,13 @@ LIMIT: SHUTDOWN_HOTSPOT_TEMPERATURE: 110 °C SHUTDOWN_VRAM_TEMPERATURE: 105 °C DRIVER: - DRIVER_NAME: amdgpu - DRIVER_VERSION: 6.5.2 + NAME: amdgpu + VERSION: 6.5.2 VRAM: - VRAM_TYPE: HBM - VRAM_VENDOR: HYNIX - VRAM_SIZE_MB: 96432 MB -CACHE: + TYPE: HBM + VENDOR: N/A + SIZE: 96432 MB +CACHE_INFO: CACHE_0: CACHE_PROPERTIES: DATA_CACHE, SIMD_CACHE CACHE_SIZE: 32 KB @@ -688,34 +688,20 @@ RAS: DOUBLE_BIT_SCHEMA: DISABLED POISON_SCHEMA: ENABLED ECC_BLOCK_STATE: - BLOCK: UMC - STATUS: DISABLED - BLOCK: SDMA - STATUS: ENABLED - BLOCK: GFX - STATUS: ENABLED - BLOCK: MMHUB - STATUS: ENABLED - BLOCK: ATHUB - STATUS: DISABLED - BLOCK: PCIE_BIF - STATUS: DISABLED - BLOCK: HDP - STATUS: DISABLED - BLOCK: XGMI_WAFL - STATUS: DISABLED - BLOCK: DF - STATUS: DISABLED - BLOCK: SMN - STATUS: DISABLED - BLOCK: SEM - STATUS: DISABLED - BLOCK: MP0 - STATUS: DISABLED - BLOCK: MP1 - STATUS: DISABLED - BLOCK: FUSE - STATUS: DISABLED + UMC: DISABLED + SDMA: ENABLED + GFX: ENABLED + MMHUB: ENABLED + ATHUB: DISABLED + PCIE_BIF: DISABLED + HDP: DISABLED + XGMI_WAFL: DISABLED + DF: DISABLED + SMN: DISABLED + SEM: DISABLED + MP0: DISABLED + MP1: DISABLED + FUSE: DISABLED PARTITION: COMPUTE_PARTITION: SPX MEMORY_PARTITION: NPS1 @@ -748,8 +734,8 @@ BOARD: MODEL_NUMBER: N/A PRODUCT_SERIAL: N/A FRU_ID: N/A - MANUFACTURER_NAME: N/A PRODUCT_NAME: N/A + MANUFACTURER_NAME: N/A LIMIT: MAX_POWER: 550 W CURRENT_POWER: 0 W @@ -760,14 +746,13 @@ LIMIT: SHUTDOWN_HOTSPOT_TEMPERATURE: 110 °C SHUTDOWN_VRAM_TEMPERATURE: 105 °C DRIVER: - DRIVER_NAME: amdgpu - DRIVER_VERSION: 6.5.2 + NAME: amdgpu + VERSION: 6.5.2 VRAM: - VRAM_TYPE: HBM - VRAM_VENDOR: HYNIX - VRAM_SIZE_MB: 96432 MB -CACHE: - CACHE: + TYPE: HBM + VENDOR: N/A + SIZE: 96432 MB +CACHE_INFO: CACHE_0: CACHE_PROPERTIES: DATA_CACHE, SIMD_CACHE CACHE_SIZE: 32 KB @@ -799,34 +784,20 @@ RAS: DOUBLE_BIT_SCHEMA: DISABLED POISON_SCHEMA: ENABLED ECC_BLOCK_STATE: - BLOCK: UMC - STATUS: DISABLED - BLOCK: SDMA - STATUS: ENABLED - BLOCK: GFX - STATUS: ENABLED - BLOCK: MMHUB - STATUS: ENABLED - BLOCK: ATHUB - STATUS: DISABLED - BLOCK: PCIE_BIF - STATUS: DISABLED - BLOCK: HDP - STATUS: DISABLED - BLOCK: XGMI_WAFL - STATUS: DISABLED - BLOCK: DF - STATUS: DISABLED - BLOCK: SMN - STATUS: DISABLED - BLOCK: SEM - STATUS: DISABLED - BLOCK: MP0 - STATUS: DISABLED - BLOCK: MP1 - STATUS: DISABLED - BLOCK: FUSE - STATUS: DISABLED + UMC: DISABLED + SDMA: ENABLED + GFX: ENABLED + MMHUB: ENABLED + ATHUB: DISABLED + PCIE_BIF: DISABLED + HDP: DISABLED + XGMI_WAFL: DISABLED + DF: DISABLED + SMN: DISABLED + SEM: DISABLED + MP0: DISABLED + MP1: DISABLED + FUSE: DISABLED PARTITION: COMPUTE_PARTITION: SPX MEMORY_PARTITION: NPS1 @@ -859,8 +830,8 @@ BOARD: MODEL_NUMBER: N/A PRODUCT_SERIAL: N/A FRU_ID: N/A - MANUFACTURER_NAME: N/A PRODUCT_NAME: N/A + MANUFACTURER_NAME: N/A LIMIT: MAX_POWER: 550 W CURRENT_POWER: 0 W @@ -871,14 +842,13 @@ LIMIT: SHUTDOWN_HOTSPOT_TEMPERATURE: 110 °C SHUTDOWN_VRAM_TEMPERATURE: 105 °C DRIVER: - DRIVER_NAME: amdgpu - DRIVER_VERSION: 6.5.2 + NAME: amdgpu + VERSION: 6.5.2 VRAM: - VRAM_TYPE: HBM - VRAM_VENDOR: HYNIX - VRAM_SIZE_MB: 96432 MB -CACHE: - CACHE: + TYPE: HBM + VENDOR: N/A + SIZE: 96432 MB +CACHE_INFO: CACHE_0: CACHE_PROPERTIES: DATA_CACHE, SIMD_CACHE CACHE_SIZE: 32 KB @@ -910,34 +880,20 @@ RAS: DOUBLE_BIT_SCHEMA: DISABLED POISON_SCHEMA: ENABLED ECC_BLOCK_STATE: - BLOCK: UMC - STATUS: DISABLED - BLOCK: SDMA - STATUS: ENABLED - BLOCK: GFX - STATUS: ENABLED - BLOCK: MMHUB - STATUS: ENABLED - BLOCK: ATHUB - STATUS: DISABLED - BLOCK: PCIE_BIF - STATUS: DISABLED - BLOCK: HDP - STATUS: DISABLED - BLOCK: XGMI_WAFL - STATUS: DISABLED - BLOCK: DF - STATUS: DISABLED - BLOCK: SMN - STATUS: DISABLED - BLOCK: SEM - STATUS: DISABLED - BLOCK: MP0 - STATUS: DISABLED - BLOCK: MP1 - STATUS: DISABLED - BLOCK: FUSE - STATUS: DISABLED + UMC: DISABLED + SDMA: ENABLED + GFX: ENABLED + MMHUB: ENABLED + ATHUB: DISABLED + PCIE_BIF: DISABLED + HDP: DISABLED + XGMI_WAFL: DISABLED + DF: DISABLED + SMN: DISABLED + SEM: DISABLED + MP0: DISABLED + MP1: DISABLED + FUSE: DISABLED PARTITION: COMPUTE_PARTITION: SPX MEMORY_PARTITION: NPS1 @@ -970,8 +926,8 @@ BOARD: MODEL_NUMBER: N/A PRODUCT_SERIAL: N/A FRU_ID: N/A - MANUFACTURER_NAME: N/A PRODUCT_NAME: N/A + MANUFACTURER_NAME: N/A LIMIT: MAX_POWER: 550 W CURRENT_POWER: 0 W @@ -982,15 +938,13 @@ LIMIT: SHUTDOWN_HOTSPOT_TEMPERATURE: 110 °C SHUTDOWN_VRAM_TEMPERATURE: 105 °C DRIVER: - DRIVER_NAME: amdgpu - DRIVER_VERSION: 6.5.2 + NAME: amdgpu + VERSION: 6.5.2 VRAM: - VRAM_TYPE: HBM - VRAM_VENDOR: HYNIX - VRAM_SIZE_MB: 96432 MB -CACHE: - CACHE_0: -CACHE: + TYPE: HBM + VENDOR: N/A + SIZE: 96432 MB +CACHE_INFO: CACHE_0: CACHE_PROPERTIES: INST_CACHE, SIMD_CACHE CACHE_SIZE: 32 KB @@ -1022,34 +976,20 @@ RAS: DOUBLE_BIT_SCHEMA: DISABLED POISON_SCHEMA: ENABLED ECC_BLOCK_STATE: - BLOCK: UMC - STATUS: DISABLED - BLOCK: SDMA - STATUS: ENABLED - BLOCK: GFX - STATUS: ENABLED - BLOCK: MMHUB - STATUS: ENABLED - BLOCK: ATHUB - STATUS: DISABLED - BLOCK: PCIE_BIF - STATUS: DISABLED - BLOCK: HDP - STATUS: DISABLED - BLOCK: XGMI_WAFL - STATUS: DISABLED - BLOCK: DF - STATUS: DISABLED - BLOCK: SMN - STATUS: DISABLED - BLOCK: SEM - STATUS: DISABLED - BLOCK: MP0 - STATUS: DISABLED - BLOCK: MP1 - STATUS: DISABLED - BLOCK: FUSE - STATUS: DISABLED + UMC: DISABLED + SDMA: ENABLED + GFX: ENABLED + MMHUB: ENABLED + ATHUB: DISABLED + PCIE_BIF: DISABLED + HDP: DISABLED + XGMI_WAFL: DISABLED + DF: DISABLED + SMN: DISABLED + SEM: DISABLED + MP0: DISABLED + MP1: DISABLED + FUSE: DISABLED PARTITION: COMPUTE_PARTITION: SPX MEMORY_PARTITION: NPS1 diff --git a/amdsmi_cli/amdsmi_commands.py b/amdsmi_cli/amdsmi_commands.py index 6b62982f7c..6529269a6d 100644 --- a/amdsmi_cli/amdsmi_commands.py +++ b/amdsmi_cli/amdsmi_commands.py @@ -399,8 +399,8 @@ class AMDSMICommands(): static_dict['board'] = {"model_number": "N/A", "product_serial": "N/A", "fru_id": "N/A", - "manufacturer_name": "N/A", - "product_name": "N/A"} + "product_name": "N/A", + "manufacturer_name": "N/A"} try: board_info = amdsmi_interface.amdsmi_get_gpu_board_info(args.gpu) for key, value in board_info.items(): @@ -524,17 +524,21 @@ class AMDSMICommands(): limit_info['shutdown_vram_temperature'] = shutdown_temp_vram_limit static_dict['limit'] = limit_info if args.driver: - driver_info = {"driver_name" : "N/A", - "driver_version" : "N/A" - } + driver_info_dict = {"name" : "N/A", + "version" : "N/A"} try: driver_info = amdsmi_interface.amdsmi_get_gpu_driver_info(args.gpu) + driver_info_dict["name"] = driver_info["driver_name"] + driver_info_dict["version"] = driver_info["driver_version"] except amdsmi_exception.AmdSmiLibraryException as e: logging.debug("Failed to get driver info for gpu %s | %s", gpu_id, e.get_error_info()) - static_dict['driver'] = driver_info + static_dict['driver'] = driver_info_dict if args.vram: + vram_info_dict = {"type" : "N/A", + "vendor" : "N/A", + "size" : "N/A"} try: vram_info = amdsmi_interface.amdsmi_get_gpu_vram_info(args.gpu) @@ -556,16 +560,24 @@ class AMDSMICommands(): # Remove amdsmi enum prefix vram_vendor = vram_vendor.replace('AMDSMI_VRAM_VENDOR__', '') - vram_info['vram_type'] = vram_type - vram_info['vram_vendor'] = vram_vendor + # Assign cleaned values to vram_info_dict + vram_info_dict['type'] = vram_type + vram_info_dict['vendor'] = vram_vendor + + # Populate vram size with unit + vram_info_dict['size'] = vram_info['vram_size_mb'] + vram_size_unit = "MB" if self.logger.is_human_readable_format(): - vram_info['vram_size_mb'] = f"{vram_info['vram_size_mb']} MB" + vram_info_dict['size'] = f"{vram_info['vram_size_mb']} {vram_size_unit}" + + if self.logger.is_json_format(): + vram_info_dict['size'] = {"value" : vram_info['vram_size_mb'], + "unit" : vram_size_unit} except amdsmi_exception.AmdSmiLibraryException as e: - vram_info = "N/A" logging.debug("Failed to get vram info for gpu %s | %s", gpu_id, e.get_error_info()) - static_dict['vram'] = vram_info + static_dict['vram'] = vram_info_dict if args.cache: try: cache_info_list = amdsmi_interface.amdsmi_get_gpu_cache_info(args.gpu)['cache'] @@ -628,7 +640,11 @@ class AMDSMICommands(): logging.debug("Failed to get ras info for gpu %s | %s", gpu_id, e.get_error_info()) try: - ras_dict["ecc_block_state"] = amdsmi_interface.amdsmi_get_gpu_ras_block_features_enabled(args.gpu) + ras_states = amdsmi_interface.amdsmi_get_gpu_ras_block_features_enabled(args.gpu) + ecc_block_state_dict = {} + for state in ras_states: + ecc_block_state_dict[state["block"]] = state["status"] + ras_dict["ecc_block_state"] = ecc_block_state_dict except amdsmi_exception.AmdSmiLibraryException as e: logging.debug("Failed to get ras block features for gpu %s | %s", gpu_id, e.get_error_info()) diff --git a/py-interface/README.md b/py-interface/README.md index d812dc7375..b28c50ec4b 100644 --- a/py-interface/README.md +++ b/py-interface/README.md @@ -989,8 +989,8 @@ Field | Description `model_number` | Board serial number `product_serial` | Product serial `fru_id` | FRU ID -`manufacturer_name` | Manufacturer name `product_name` | Product name +`manufacturer_name` | Manufacturer name Exceptions that can be thrown by `amdsmi_get_gpu_board_info` function: @@ -1007,8 +1007,8 @@ try: print(board_info["model_number"]) print(board_info["product_serial"]) print(board_info["fru_id"]) - print(board_info["manufacturer_name"]) print(board_info["product_name"]) + print(board_info["manufacturer_name"]) except AmdSmiException as e: print(e) ``` diff --git a/py-interface/amdsmi_interface.py b/py-interface/amdsmi_interface.py index a7ebc41f08..98844c700f 100644 --- a/py-interface/amdsmi_interface.py +++ b/py-interface/amdsmi_interface.py @@ -1851,8 +1851,8 @@ def amdsmi_get_gpu_board_info( "model_number": board_info.model_number.decode("utf-8").strip(), "product_serial": board_info.product_serial.decode("utf-8").strip(), "fru_id": board_info.fru_id.decode("utf-8").strip(), - "manufacturer_name" : board_info.manufacturer_name.decode("utf-8").strip(), - "product_name": board_info.product_name.decode("utf-8").strip() + "product_name": board_info.product_name.decode("utf-8").strip(), + "manufacturer_name": board_info.manufacturer_name.decode("utf-8").strip() } @@ -2002,8 +2002,6 @@ def amdsmi_get_gpu_driver_info( length = ctypes.c_int() length.value = _AMDSMI_MAX_DRIVER_VERSION_LENGTH - version = ctypes.create_string_buffer(_AMDSMI_MAX_DRIVER_VERSION_LENGTH) - info = amdsmi_wrapper.amdsmi_driver_info_t() _check_res( amdsmi_wrapper.amdsmi_get_gpu_driver_info( @@ -2013,7 +2011,8 @@ def amdsmi_get_gpu_driver_info( return { "driver_name": info.driver_name.decode("utf-8"), - "driver_version": info.driver_version.decode("utf-8") + "driver_version": info.driver_version.decode("utf-8"), + "driver_date": info.driver_date.decode("utf-8") } @@ -2110,13 +2109,13 @@ def amdsmi_get_gpu_vram_usage( processor_handle, amdsmi_wrapper.amdsmi_processor_handle ) - vram_info = amdsmi_wrapper.amdsmi_vram_usage_t() + vram_usage = amdsmi_wrapper.amdsmi_vram_usage_t() _check_res( amdsmi_wrapper.amdsmi_get_gpu_vram_usage( - processor_handle, ctypes.byref(vram_info)) + processor_handle, ctypes.byref(vram_usage)) ) - return {"vram_total": vram_info.vram_total, "vram_used": vram_info.vram_used} + return {"vram_total": vram_usage.vram_total, "vram_used": vram_usage.vram_used} def amdsmi_get_pcie_info( diff --git a/py-interface/amdsmi_wrapper.py b/py-interface/amdsmi_wrapper.py index eafde217c7..91bdc8bd4d 100644 --- a/py-interface/amdsmi_wrapper.py +++ b/py-interface/amdsmi_wrapper.py @@ -2570,10 +2570,10 @@ __all__ = \ 'amdsmi_gpu_counter_group_supported', 'amdsmi_gpu_create_counter', 'amdsmi_gpu_destroy_counter', 'amdsmi_gpu_metrics_t', 'amdsmi_gpu_read_counter', 'amdsmi_gpu_xgmi_error_status', - 'amdsmi_hsmp_metrics_table_t', 'amdsmi_init', - 'amdsmi_init_flags_t', 'amdsmi_init_gpu_event_notification', - 'amdsmi_io_bw_encoding_t', 'amdsmi_io_link_type_t', - 'amdsmi_is_P2P_accessible', + 'amdsmi_hsmp_freqlimit_src_names', 'amdsmi_hsmp_metrics_table_t', + 'amdsmi_init', 'amdsmi_init_flags_t', + 'amdsmi_init_gpu_event_notification', 'amdsmi_io_bw_encoding_t', + 'amdsmi_io_link_type_t', 'amdsmi_is_P2P_accessible', 'amdsmi_is_gpu_power_management_enabled', 'amdsmi_link_id_bw_type_t', 'amdsmi_link_metrics_t', 'amdsmi_link_type_t', 'amdsmi_memory_page_status_t', @@ -2619,14 +2619,14 @@ __all__ = \ 'amdsmi_voltage_type_t', 'amdsmi_vram_info_t', 'amdsmi_vram_type_t', 'amdsmi_vram_usage_t', 'amdsmi_vram_vendor_type_t', 'amdsmi_xgmi_info_t', - 'amdsmi_xgmi_status_t', 'amdsmi_hsmp_freqlimit_src_names', - 'processor_type_t', 'size_t', 'struct__links', - 'struct_amd_metrics_table_header_t', 'struct_amdsmi_asic_info_t', - 'struct_amdsmi_board_info_t', 'struct_amdsmi_clk_info_t', - 'struct_amdsmi_counter_value_t', 'struct_amdsmi_ddr_bw_metrics_t', - 'struct_amdsmi_dimm_power_t', 'struct_amdsmi_dimm_thermal_t', - 'struct_amdsmi_dpm_level_t', 'struct_amdsmi_driver_info_t', - 'struct_amdsmi_engine_usage_t', 'struct_amdsmi_error_count_t', + 'amdsmi_xgmi_status_t', 'processor_type_t', 'size_t', + 'struct__links', 'struct_amd_metrics_table_header_t', + 'struct_amdsmi_asic_info_t', 'struct_amdsmi_board_info_t', + 'struct_amdsmi_clk_info_t', 'struct_amdsmi_counter_value_t', + 'struct_amdsmi_ddr_bw_metrics_t', 'struct_amdsmi_dimm_power_t', + 'struct_amdsmi_dimm_thermal_t', 'struct_amdsmi_dpm_level_t', + 'struct_amdsmi_driver_info_t', 'struct_amdsmi_engine_usage_t', + 'struct_amdsmi_error_count_t', 'struct_amdsmi_evt_notification_data_t', 'struct_amdsmi_freq_volt_region_t', 'struct_amdsmi_frequencies_t', 'struct_amdsmi_frequency_range_t', 'struct_amdsmi_fw_info_t',