From dfbd0ab8bad1da6774e2d66105f7884616bb1c4a Mon Sep 17 00:00:00 2001 From: Maisam Arif Date: Mon, 23 Sep 2024 22:53:13 -0500 Subject: [PATCH 1/5] Update spacing in amdsmi.h Signed-off-by: Maisam Arif Change-Id: I6147b8e545fdb50f3d3ef37f4df994e7cd9c3046 --- include/amd_smi/amdsmi.h | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/include/amd_smi/amdsmi.h b/include/amd_smi/amdsmi.h index 4326f47115..ab91abf82b 100644 --- a/include/amd_smi/amdsmi.h +++ b/include/amd_smi/amdsmi.h @@ -625,15 +625,15 @@ typedef struct { * This union is used to identify various memory partitioning settings. */ typedef union { - struct nps_flags_ { - uint32_t nps1_cap :1; // bool 1 = true; 0 = false; Max uint32 means unsupported - uint32_t nps2_cap :1; // bool 1 = true; 0 = false; Max uint32 means unsupported - uint32_t nps4_cap :1; // bool 1 = true; 0 = false; Max uint32 means unsupported - uint32_t nps8_cap :1; // bool 1 = true; 0 = false; Max uint32 means unsupported - uint32_t reserved :28; - } amdsmi_nps_flags_t; + struct nps_flags_ { + uint32_t nps1_cap :1; // bool 1 = true; 0 = false; Max uint32 means unsupported + uint32_t nps2_cap :1; // bool 1 = true; 0 = false; Max uint32 means unsupported + uint32_t nps4_cap :1; // bool 1 = true; 0 = false; Max uint32 means unsupported + uint32_t nps8_cap :1; // bool 1 = true; 0 = false; Max uint32 means unsupported + uint32_t reserved :28; + } amdsmi_nps_flags_t; - uint32_t nps_cap_mask; + uint32_t nps_cap_mask; } amdsmi_nps_caps_t; /** From 3660724a08fc0bd66a22184c29e6a9a93863234c Mon Sep 17 00:00:00 2001 From: Harkirat Gill Date: Mon, 23 Sep 2024 13:11:45 -0400 Subject: [PATCH 2/5] Updated error message when driver modules not loaded Small change to add sudo modprobe amdgpu/amd_hsmp suggestion if modules are not loaded. Requested per Maisam, will close https://github.com/ROCm/amdsmi/issues/45 Change-Id: Ia7ffcc99df18296c5c682f2082ff8dd8f007d557 --- amdsmi_cli/amdsmi_commands.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/amdsmi_cli/amdsmi_commands.py b/amdsmi_cli/amdsmi_commands.py index 6bd534413f..880fd66788 100644 --- a/amdsmi_cli/amdsmi_commands.py +++ b/amdsmi_cli/amdsmi_commands.py @@ -64,7 +64,7 @@ class AMDSMICommands(): if len(self.device_handles) == 0: # No GPU's found post amdgpu driver initialization - logging.error('Unable to detect any GPU devices, check amdgpu version and module status') + logging.error('Unable to detect any GPU devices, check amdgpu version and module status (sudo modprobe amdgpu)') exit_flag = True if self.helpers.is_amd_hsmp_initialized(): @@ -73,7 +73,7 @@ class AMDSMICommands(): except amdsmi_exception.AmdSmiLibraryException as e: if e.err_code in (amdsmi_interface.amdsmi_wrapper.AMDSMI_STATUS_NOT_INIT, amdsmi_interface.amdsmi_wrapper.AMDSMI_STATUS_NO_DRV): - logging.info('Unable to get CPU devices, amd_hsmp driver not loaded') + logging.info('Unable to detect any CPU devices, check amd_hsmp version and module status (sudo modprobe amd_hsmp)') else: raise e @@ -83,13 +83,13 @@ class AMDSMICommands(): except amdsmi_exception.AmdSmiLibraryException as e: if e.err_code in (amdsmi_interface.amdsmi_wrapper.AMDSMI_STATUS_NOT_INIT, amdsmi_interface.amdsmi_wrapper.AMDSMI_STATUS_NO_DRV): - logging.info('Unable to get CORE devices, amd_hsmp driver not loaded') + logging.info('Unable to get CORE devices, amd_hsmp driver not loaded (sudo modprobe amd_hsmp)') else: raise e if len(self.cpu_handles) == 0 and len(self.core_handles) == 0: # No CPU's found post amd_hsmp driver initialization - logging.error('Unable to detect any CPU devices, check amd_hsmp version and module status') + logging.error('Unable to detect any CPU devices, check amd_hsmp version and module status (sudo modprobe amd_hsmp)') exit_flag = True if exit_flag: From 69109de8d394d2949062975eefa7de9494656af9 Mon Sep 17 00:00:00 2001 From: "Bill(Shuzhou) Liu" Date: Mon, 23 Sep 2024 09:23:11 -0500 Subject: [PATCH 3/5] amdsmi cannot read power cap more than 10 characters Extend the default read array size. Change-Id: I2739981873cb3c360661e3ef5f6e70d4f36cb0e8 --- src/amd_smi/amd_smi_utils.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/amd_smi/amd_smi_utils.cc b/src/amd_smi/amd_smi_utils.cc index 018a358234..1e490d3829 100644 --- a/src/amd_smi/amd_smi_utils.cc +++ b/src/amd_smi/amd_smi_utils.cc @@ -218,7 +218,7 @@ amdsmi_status_t smi_amdgpu_get_power_cap(amd::smi::AMDSmiGPUDevice* device, int if (!device->check_if_drm_is_supported()) { return AMDSMI_STATUS_NOT_SUPPORTED; } - constexpr int DATA_SIZE = 10; + constexpr int DATA_SIZE = 16; char val[DATA_SIZE]; std::string fullpath; amdsmi_status_t ret = AMDSMI_STATUS_SUCCESS; From e037cde86b4f9288f6c3abacc129b0863e2cc1d3 Mon Sep 17 00:00:00 2001 From: muthusamy Date: Tue, 24 Sep 2024 11:19:42 +0000 Subject: [PATCH 4/5] amdsmi: Optimizing go shim to default pick amdsmi Optimizing go shim to default pick amdsmi and other code cleanup in goshim. Signed-off-by: muthusamy Change-Id: I0e6a2d28404cbb751d2b6e90c793b359fec9be13 --- goamdsmi_shim/CMakeLists.txt | 25 ++-------- goamdsmi_shim/goamdsmi_shim64Config.in | 14 ------ goamdsmi_shim/smiwrapper/amdsmi_go_shim.c | 58 ----------------------- 3 files changed, 5 insertions(+), 92 deletions(-) delete mode 100644 goamdsmi_shim/goamdsmi_shim64Config.in diff --git a/goamdsmi_shim/CMakeLists.txt b/goamdsmi_shim/CMakeLists.txt index 7a4a202bb0..dceee4e29e 100644 --- a/goamdsmi_shim/CMakeLists.txt +++ b/goamdsmi_shim/CMakeLists.txt @@ -6,20 +6,12 @@ # cmake_minimum_required(VERSION 3.5.0) -message("*******************************************************************") +message("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&") message(" CMake AMD goamdsmi_shim Library ") -message("*******************************************************************") - -option(WITH_AMDSMI "Support unified cpu and gpu" ON) +message("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&") set(AMDSMI_DIR "" CACHE PATH "path to amdsmi installation") -if(WITH_AMDSMI) -add_definitions(-DAMDSMI_BUILD) -add_definitions(-DENABLE_ESMI_LIB) -#include(deps/SetupAmdsmi.cmake) -endif() - if(ENABLE_DEBUG_LEVEL) add_definitions(-DENABLE_DEBUG_LEVEL=${ENABLE_DEBUG_LEVEL}) message("**** Enabling Debug Level=${ENABLE_DEBUG_LEVEL} ****") @@ -51,11 +43,6 @@ message("SOVERSION: ${SO_VERSION_STRING}") project(${GOAMDSMI_SHIM_TARGET}) -# Create a configure file to get version info from within library -configure_file( - "${PROJECT_SOURCE_DIR}/${GOAMDSMI_SHIM_TARGET}Config.in" - "${PROJECT_SOURCE_DIR}/include/${GOAMDSMI_SHIM_TARGET}Config.h") - if (NOT DEFINED CPACK_PACKAGE_VENDOR) set(CPACK_PACKAGE_VENDOR "AMD") endif() @@ -109,11 +96,9 @@ add_library(${GOAMDSMI_SHIM_TARGET} SHARED target_link_libraries(${GOAMDSMI_SHIM_TARGET} pthread rt m) -if(WITH_AMDSMI) - target_link_libraries(${GOAMDSMI_SHIM_TARGET} amd_smi) - target_link_libraries(${GOAMDSMI_SHIM_TARGET} -L${AMDSMI_DIR}/lib) - target_link_libraries(${GOAMDSMI_SHIM_TARGET} -L${AMDSMI_DIR}/lib64) -endif() +target_link_libraries(${GOAMDSMI_SHIM_TARGET} amd_smi) +target_link_libraries(${GOAMDSMI_SHIM_TARGET} -L${AMDSMI_DIR}/lib) +target_link_libraries(${GOAMDSMI_SHIM_TARGET} -L${AMDSMI_DIR}/lib64) ## Set the VERSION and SOVERSION values set_property(TARGET ${GOAMDSMI_SHIM_TARGET} PROPERTY diff --git a/goamdsmi_shim/goamdsmi_shim64Config.in b/goamdsmi_shim/goamdsmi_shim64Config.in deleted file mode 100644 index b12a6f0b59..0000000000 --- a/goamdsmi_shim/goamdsmi_shim64Config.in +++ /dev/null @@ -1,14 +0,0 @@ -# SPDX-License-Identifier: MIT -# Copyright (c) 2024, Advanced Micro Devices, Inc. - -#ifndef INCLUDE_GOAMDSMI_SHIM64CONFIG_H_ -#define INCLUDE_GOAMDSMI_SHIM64CONFIG_H_ - -// This file is generated on build. - -#define goamdsmi_shim_VERSION_MAJOR @goamdsmi_shim_VERSION_MAJOR@ -#define goamdsmi_shim_VERSION_MINOR @goamdsmi_shim_VERSION_MINOR@ -#define goamdsmi_shim_VERSION_PATCH @goamdsmi_shim_VERSION_PATCH@ -#define goamdsmi_shim_VERSION_BUILD "@goamdsmi_shim_VERSION_BUILD@" - -#endif // INCLUDE_GOAMDSMI_SHIM_SMI64CONFIG_H_ diff --git a/goamdsmi_shim/smiwrapper/amdsmi_go_shim.c b/goamdsmi_shim/smiwrapper/amdsmi_go_shim.c index 599b44a307..9056be84b9 100644 --- a/goamdsmi_shim/smiwrapper/amdsmi_go_shim.c +++ b/goamdsmi_shim/smiwrapper/amdsmi_go_shim.c @@ -39,13 +39,10 @@ #include #include #include "amdsmi_go_shim.h" -#ifdef AMDSMI_BUILD #include -#endif #include #define nullptr ((void*)0) -#ifdef AMDSMI_BUILD #define MAX_SOCKET_ACROSS_SYSTEM 4 #define CPU_0 0 #define GPU_SENSOR_0 0 @@ -94,15 +91,6 @@ goamdsmi_status_t is_file_present(const char* driver_name, const char* file_name return GOAMDSMI_STATUS_FAILURE; } -goamdsmi_status_t go_shim_amdsmi_present() -{ - if((GOAMDSMI_STATUS_SUCCESS == is_file_present(AMDSMI_DRIVER_NAME, AMDSMI_LIB_FILE)) || (GOAMDSMI_STATUS_SUCCESS == is_file_present(AMDSMI_DRIVER_NAME, AMDSMI_LIB64_FILE))) - { - return GOAMDSMI_STATUS_SUCCESS; - } - return GOAMDSMI_STATUS_FAILURE; -} - goamdsmi_status_t check_amdgpu_driver() { return is_file_present(AMDGPU_DRIVER_NAME, AMDGPU_INITSTATE_FILE); @@ -143,13 +131,6 @@ goamdsmi_status_t go_shim_amdsmiapu_init(goamdsmi_Init_t goamdsmi_Init) } } -#if 0 - if(GOAMDSMI_STATUS_FAILURE == go_shim_amdsmi_present()) - { - if (enable_debug_level(GOAMDSMI_DEBUG_LEVEL_1)) {printf("AMDSMI, Failed, AMDSMI not present in the System, missing \"%s\" (or) \"%s\"\n", AMDSMI_LIB_FILE, AMDSMI_LIB64_FILE);} - return GOAMDSMI_STATUS_FAILURE; - } -#endif if ((GOAMDSMI_STATUS_SUCCESS == check_amdgpu_driver()) && (GOAMDSMI_STATUS_SUCCESS == check_hsmp_driver())) { @@ -693,42 +674,3 @@ uint64_t goamdsmi_gpu_dev_gpu_memory_total_get(uint32_t dv_ind) return gpu_memory_total; } -#else -////////////////////////////////////////////////------------CPU------------//////////////////////////////////////////////// -bool goamdsmi_cpu_init() {return false;} -uint32_t goamdsmi_cpu_threads_per_core_get() {return GOAMDSMI_VALUE_0;} -uint32_t goamdsmi_cpu_number_of_threads_get() {return GOAMDSMI_VALUE_0;} -uint32_t goamdsmi_cpu_number_of_sockets_get() {return GOAMDSMI_VALUE_0;} -uint64_t goamdsmi_cpu_core_energy_get(uint32_t thread_index) {return GOAMDSMI_UINT64_MAX;} -uint64_t goamdsmi_cpu_socket_energy_get(uint32_t socket_index) {return GOAMDSMI_UINT64_MAX;} -uint32_t goamdsmi_cpu_prochot_status_get(uint32_t socket_index) {return GOAMDSMI_UINT32_MAX;} -uint32_t goamdsmi_cpu_socket_power_get(uint32_t socket_index) {return GOAMDSMI_UINT32_MAX;} -uint32_t goamdsmi_cpu_socket_power_cap_get(uint32_t socket_index) {return GOAMDSMI_UINT32_MAX;} -uint32_t goamdsmi_cpu_core_boostlimit_get(uint32_t thread_index) {return GOAMDSMI_UINT32_MAX;} - -////////////////////////////////////////////////------------GPU------------//////////////////////////////////////////////// -bool goamdsmi_gpu_init() {return false;} -bool goamdsmi_gpu_shutdown() {return false;} -uint32_t goamdsmi_gpu_num_monitor_devices() {return GOAMDSMI_VALUE_0;} -char* goamdsmi_gpu_dev_name_get(uint32_t dv_ind) {return NULL;} -uint16_t goamdsmi_gpu_dev_id_get(uint32_t dv_ind) {return GOAMDSMI_UINT16_MAX;} -uint64_t goamdsmi_gpu_dev_pci_id_get(uint32_t dv_ind) {return GOAMDSMI_UINT64_MAX;} -char* goamdsmi_gpu_dev_vendor_name_get(uint32_t dv_ind) {return NULL;} -char* goamdsmi_gpu_dev_vbios_version_get(uint32_t dv_ind) {return NULL;} -uint64_t goamdsmi_gpu_dev_power_cap_get(uint32_t dv_ind) {return GOAMDSMI_UINT64_MAX;} -uint64_t goamdsmi_gpu_dev_power_get(uint32_t dv_ind) {return GOAMDSMI_UINT64_MAX;} -uint64_t goamdsmi_gpu_dev_temp_metric_get(uint32_t dv_ind, uint32_t sensor, uint32_t metric) {return GOAMDSMI_UINT64_MAX;} -uint32_t goamdsmi_gpu_dev_overdrive_level_get(uint32_t dv_ind) {return GOAMDSMI_UINT32_MAX;} -uint32_t goamdsmi_gpu_dev_mem_overdrive_level_get(uint32_t dv_ind) {return GOAMDSMI_UINT32_MAX;} -uint32_t goamdsmi_gpu_dev_perf_level_get(uint32_t dv_ind) {return GOAMDSMI_UINT32_MAX;} -uint64_t goamdsmi_gpu_dev_gpu_clk_freq_get_sclk(uint32_t dv_ind) {return GOAMDSMI_UINT64_MAX;} -uint64_t goamdsmi_gpu_dev_gpu_clk_freq_get_mclk(uint32_t dv_ind) {return GOAMDSMI_UINT64_MAX;} -uint64_t goamdsmi_gpu_od_volt_freq_range_min_get_sclk(uint32_t dv_ind) {return GOAMDSMI_UINT64_MAX;} -uint64_t goamdsmi_gpu_od_volt_freq_range_min_get_mclk(uint32_t dv_ind) {return GOAMDSMI_UINT64_MAX;} -uint64_t goamdsmi_gpu_od_volt_freq_range_max_get_sclk(uint32_t dv_ind) {return GOAMDSMI_UINT64_MAX;} -uint64_t goamdsmi_gpu_od_volt_freq_range_max_get_mclk(uint32_t dv_ind) {return GOAMDSMI_UINT64_MAX;} -uint32_t goamdsmi_gpu_dev_gpu_busy_percent_get(uint32_t dv_ind) {return GOAMDSMI_UINT32_MAX;} -uint64_t goamdsmi_gpu_dev_gpu_memory_busy_percent_get(uint32_t dv_ind) {return GOAMDSMI_UINT64_MAX;} -uint64_t goamdsmi_gpu_dev_gpu_memory_usage_get(uint32_t dv_ind) {return GOAMDSMI_UINT64_MAX;} -uint64_t goamdsmi_gpu_dev_gpu_memory_total_get(uint32_t dv_ind) {return GOAMDSMI_UINT64_MAX;} -#endif From 807f1e3111f0c44b8399054b9e78d32d63ce2f48 Mon Sep 17 00:00:00 2001 From: Justin Williams Date: Wed, 25 Sep 2024 18:20:23 -0500 Subject: [PATCH 5/5] Removed Post Install PyYAML and Pip Upgrades Signed-off-by: Justin Williams Change-Id: I25f0e8087a212fd29d33a8a40303436279789029 --- DEBIAN/postinst.in | 21 +-------------------- RPM/post.in | 22 +--------------------- 2 files changed, 2 insertions(+), 41 deletions(-) diff --git a/DEBIAN/postinst.in b/DEBIAN/postinst.in index 8312a77830..929de884b4 100755 --- a/DEBIAN/postinst.in +++ b/DEBIAN/postinst.in @@ -133,7 +133,6 @@ do_install_amdsmi_python_lib() { local PREVIOUS_PIP_BREAK_SYSTEM_PACKAGES="$PIP_BREAK_SYSTEM_PACKAGES" export PIP_BREAK_SYSTEM_PACKAGES=1 - # Remove old python library local pip_list_output pip_list_output=$(python3 -m pip list --format=columns --disable-pip-version-check) @@ -149,27 +148,9 @@ do_install_amdsmi_python_lib() { return fi - # upgrade pip if it's an ancient version, typically should not execute - # otherwise the amdsmi install will fail - local pip_version - pip_version=$(python3 -m pip --version | grep -Eo '^[^\ ]+ ([0-9]+)' | grep -Eo '[0-9]+$') - if [[ "$pip_version" -lt 19 ]]; then - echo "Detected ancient pip version ($pip_version)... Upgrading..." - python3 -m pip install --upgrade pip --quiet --disable-pip-version-check - fi - unset pip_version - - # Check PyYAML dependency, typically should not execute - pyyaml_version=$(python3 -m pip show pyyaml | grep -Po '(?<=Version: )[0-9]') - if [[ "$pyyaml_version" -lt 3 ]]; then - echo "Detected ancient pyyaml version ($pyyaml_version)... Upgrading..." - python3 -m pip install 'PyYAML>=5.1' --quiet --disable-pip-version-check --ignore-installed - fi - unset pyyaml_version - # install python library at @CPACK_PACKAGING_INSTALL_PREFIX@/@SHARE_INSTALL_PREFIX@/amdsmi local python_lib_path=@CPACK_PACKAGING_INSTALL_PREFIX@/@SHARE_INSTALL_PREFIX@ - python3 -m pip install "$python_lib_path" --quiet --disable-pip-version-check --no-build-isolation + python3 -m pip install "$python_lib_path" --quiet --disable-pip-version-check --no-build-isolation --no-index export PIP_ROOT_USER_ACTION="$PREVIOUS_PIP_ROOT_USER_ACTION" export PIP_BREAK_SYSTEM_PACKAGES="$PREVIOUS_PIP_BREAK_SYSTEM_PACKAGES" diff --git a/RPM/post.in b/RPM/post.in index fd182ef414..315e67cc0a 100755 --- a/RPM/post.in +++ b/RPM/post.in @@ -148,29 +148,9 @@ do_install_amdsmi_python_lib() { return fi - # upgrade pip if it's an ancient version - # otherwise amdsmi install will fail - local pip_version - pip_version=$(python3 -m pip --version | grep -Eo '^[^\ ]+ ([0-9]+)' | grep -Eo '[0-9]+$') - if [[ "$pip_version" -lt 19 ]]; then - echo "Detected ancient pip version ($pip_version)... Upgrading..." - python3 -m pip install --upgrade pip --quiet --disable-pip-version-check - fi - unset pip_version - - # Check PyYAML dependency, typically should not execute - local pyyaml_version - pyyaml_version=$(python3 -m pip show pyyaml | grep -Po '(?<=Version: )[0-9]') - if [[ "$pyyaml_version" -lt 3 ]]; then - echo "Detected ancient pyyaml version ($pyyaml_version)... Upgrading..." - python3 -m pip install 'PyYAML>=5.1' --quiet --disable-pip-version-check --ignore-installed - fi - unset pyyaml_version - # install python library at @CPACK_PACKAGING_INSTALL_PREFIX@/@SHARE_INSTALL_PREFIX@/amdsmi local python_lib_path=@CPACK_PACKAGING_INSTALL_PREFIX@/@SHARE_INSTALL_PREFIX@ - python3 -m pip install "$python_lib_path" --quiet --disable-pip-version-check --no-build-isolation - + python3 -m pip install "$python_lib_path" --quiet --disable-pip-version-check --no-build-isolation --no-index export PIP_ROOT_USER_ACTION="$PREVIOUS_PIP_ROOT_USER_ACTION" export PIP_BREAK_SYSTEM_PACKAGES="$PREVIOUS_PIP_BREAK_SYSTEM_PACKAGES"