Fix python loading of librocm_smi64

The librocm_smi64.so is used for development, while
librocm_smi64.so.MAJOR is used for runtime, thus the python front end
should not be loading the .so binary, but rather the .so.MAJOR binary.

As well, it's good not to hardcode "lib" as some distros will change
this.

rsmiBindings.py is now generated with CMake

Signed-off-by: Jeremy Newton <Jeremy.Newton@amd.com>
Change-Id: I7cb745f8936fdf10d3ebd6c1e606031f713184ca


[ROCm/amdsmi commit: 2d2c73a5e6]
Этот коммит содержится в:
Jeremy Newton
2023-07-05 12:54:24 -05:00
родитель dd8eaa40b2
Коммит b214d2047e
3 изменённых файлов: 13 добавлений и 9 удалений
+3 -3
Просмотреть файл
@@ -117,12 +117,12 @@ CTestTestfile.cmake
_deps
#
# ROCm files
# Removes generated config headers like rocmsmi64Config.h & oamConfig.h
# below files are generated via CMake
#
*Config.h
python_smi_tools/rsmiBindings.py
#
# Fake SYSFS files
#
/device/*
/device/*
@@ -12,16 +12,16 @@ import os
# Use ROCm installation path if running from standard installation
# With File Reorg rsmiBindings.py will be installed in /opt/rocm/libexec/rocm_smi.
# relative path changed accordingly
path_librocm = os.path.dirname(os.path.realpath(__file__)) + '/../../lib/librocm_smi64.so'
path_librocm = os.path.dirname(os.path.realpath(__file__)) + '/../../@CMAKE_INSTALL_LIBDIR@/librocm_smi64.so.@VERSION_MAJOR@'
if not os.path.isfile(path_librocm):
print('Unable to find %s . Trying /opt/rocm*' % path_librocm)
for root, dirs, files in os.walk('/opt', followlinks=True):
if 'librocm_smi64.so' in files:
path_librocm = os.path.join(os.path.realpath(root), 'librocm_smi64.so')
if 'librocm_smi64.so.@VERSION_MAJOR@' in files:
path_librocm = os.path.join(os.path.realpath(root), 'librocm_smi64.so.@VERSION_MAJOR@')
if os.path.isfile(path_librocm):
print('Using lib from %s' % path_librocm)
else:
print('Unable to find librocm_smi64.so')
print('Unable to find librocm_smi64.so.@VERSION_MAJOR@')
# ----------> TODO: Support static libs as well as SO
@@ -30,7 +30,7 @@ try:
rocmsmi = CDLL(path_librocm)
except OSError:
print('Unable to load the rocm_smi library.\n'\
'Set LD_LIBRARY_PATH to the folder containing librocm_smi64.\n'\
'Set LD_LIBRARY_PATH to the folder containing librocm_smi64.so.@VERSION_MAJOR@\n'\
'{0}Please refer to https://github.com/'\
'RadeonOpenCompute/rocm_smi_lib for the installation guide.{1}'\
.format('\33[33m', '\033[0m'))
@@ -638,4 +638,4 @@ rsmi_nps_mode_type = rsmi_nps_mode_type_t
# Usage example to get corresponding names:
# nps_mode_type_l[rsmi_nps_mode_type_t.RSMI_MEMORY_PARTITION_NPS2]
# will return string 'NPS2'
nps_mode_type_l = ['NPS1', 'NPS2', 'NPS4', 'NPS8']
nps_mode_type_l = ['NPS1', 'NPS2', 'NPS4', 'NPS8']
+4
Просмотреть файл
@@ -54,6 +54,10 @@ set(${ROCM_SMI}_VERSION_PATCH "0")
set(${ROCM_SMI}_VERSION_BUILD "0")
message("SOVERSION: ${SO_VERSION_STRING}")
# Configure rsmiBindings.py.in with SO major version:
configure_file(
"${COMMON_SRC_ROOT}/python_smi_tools/rsmiBindings.py.in"
"${COMMON_SRC_ROOT}/python_smi_tools/rsmiBindings.py")
# Create a configure file to get version info from within library
configure_file(