Signed-off-by: Galantsev, Dmitrii <dmitrii.galantsev@amd.com>


[ROCm/rdc commit: 40545dcb49]
Этот коммит содержится в:
Galantsev, Dmitrii
2025-06-24 17:35:03 -05:00
коммит произвёл Galantsev, Dmitrii
родитель 6b39188f89
Коммит 1d55c1d820
16 изменённых файлов: 446 добавлений и 332 удалений
+158 -132
Просмотреть файл
@@ -23,57 +23,63 @@
#
cmake_minimum_required(VERSION 3.15)
set(RDC
"rdc"
CACHE INTERNAL "")
set(RDC_PACKAGE
${RDC}
CACHE STRING "")
set(RDC "rdc" CACHE INTERNAL "")
set(RDC_PACKAGE ${RDC} CACHE STRING "")
# ROCM_DIR should be passed in via command line
set(ROCM_DIR
"/opt/rocm"
CACHE PATH "ROCm directory.")
set(ROCM_DIR "/opt/rocm" CACHE PATH "ROCm directory.")
if(DEFINED ROCM_PATH)
message(
WARNING "ROCM_PATH is not used by the build process! Did you mean to set ROCM_DIR instead?")
WARNING
"ROCM_PATH is not used by the build process! Did you mean to set ROCM_DIR instead?"
)
endif()
# Default libdir to "lib", this skips GNUInstallDirs from trying to take a guess if it's unset:
set(CMAKE_INSTALL_LIBDIR
"lib"
CACHE STRING "Library install directory")
set(CMAKE_INSTALL_LIBDIR "lib" CACHE STRING "Library install directory")
# Usually ROCM tools are installed into /opt/rocm
set(CMAKE_INSTALL_PREFIX
${ROCM_DIR}
CACHE PATH "Default installation directory.")
set(CMAKE_INSTALL_PREFIX ${ROCM_DIR} CACHE PATH "Default installation directory.")
set(CMAKE_BUILD_TYPE
"RelWithDebInfo"
CACHE STRING "Choose the type of build to perform: Debug, Release, RelWithDebInfo, MinSizeRel")
CACHE STRING
"Choose the type of build to perform: Debug, Release, RelWithDebInfo, MinSizeRel"
)
# Set the possible values of build type
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "RelWithDebInfo"
"MinSizeRel")
set_property(
CACHE CMAKE_BUILD_TYPE
PROPERTY STRINGS "Debug" "Release" "RelWithDebInfo" "MinSizeRel"
)
# Set compile flags
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -m64 -msse -msse2")
set(CMAKE_CXX_FLAGS_DEBUG
"${CMAKE_CXX_FLAGS_DEBUG} -O0 -ggdb -DDEBUG"
CACHE STRING "Flags for Debug builds")
CACHE STRING
"Flags for Debug builds"
)
set(CMAKE_CXX_FLAGS_RELEASE
"${CMAKE_CXX_FLAGS_RELEASE} -O2 -s -DNDEBUG"
CACHE STRING "Flags for Release builds")
CACHE STRING
"Flags for Release builds"
)
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO
"${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -O2 -g -DNDEBUG"
CACHE STRING "Flags for RelWithDebInfo builds")
CACHE STRING
"Flags for RelWithDebInfo builds"
)
set(CMAKE_CXX_FLAGS_MINSIZEREL
"${CMAKE_CXX_FLAGS_MINSIZEREL} -Os -DNDEBUG"
CACHE STRING "Flags for MinSizeRel builds")
CACHE STRING
"Flags for MinSizeRel builds"
)
set(CMAKE_MODULE_PATH
"${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules/"
CACHE INTERNAL "Default module path.")
CACHE INTERNAL
"Default module path."
)
# Include common cmake modules
include(utils)
# Setup the package version based on git tags
@@ -124,18 +130,18 @@ execute_process(
COMMAND ${GIT} rev-parse --short HEAD
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE GIT_HASH
OUTPUT_STRIP_TRAILING_WHITESPACE)
message("The HASH value of the current HEAD submission in this RDC code repository is : "
${GIT_HASH})
OUTPUT_STRIP_TRAILING_WHITESPACE
)
message(
"The HASH value of the current HEAD submission in this RDC code repository is : "
${GIT_HASH}
)
# Don't print 'Up-to-date' when installing
set(CMAKE_INSTALL_MESSAGE LAZY)
# this must go after some CMAKE_* variables
project(
${RDC}
VERSION "${VERSION_STRING}"
HOMEPAGE_URL "https://github.com/RadeonOpenCompute/rdc")
project(${RDC} VERSION "${VERSION_STRING}" HOMEPAGE_URL "https://github.com/RadeonOpenCompute/rdc")
# Include CMAKE_INSTALL_* variables
# this must go after project()
@@ -144,12 +150,8 @@ include(GNUInstallDirs)
set(COMMON_DIR "${CMAKE_CURRENT_SOURCE_DIR}/common")
set(GRPC_ROOT_DEFAULT "/usr")
set(GRPC_ROOT
${GRPC_ROOT_DEFAULT}
CACHE PATH "GRPC installation directory.")
set(GRPC_DESIRED_VERSION
1.67.1
CACHE STRING "GRPC desired package version.")
set(GRPC_ROOT ${GRPC_ROOT_DEFAULT} CACHE PATH "GRPC installation directory.")
set(GRPC_DESIRED_VERSION 1.67.1 CACHE STRING "GRPC desired package version.")
# add package search paths
list(APPEND CMAKE_PREFIX_PATH ${GRPC_ROOT} /usr/local)
@@ -157,61 +159,50 @@ set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} /usr/lib64 /usr/lib/x86_64-linux-gn
# configure packaging
# cpack version is populated with CMAKE_PROJECT_VERSION implicitly
set(CPACK_PACKAGE_NAME
${RDC_PACKAGE}
CACHE INTERNAL "")
set(CPACK_PACKAGE_VENDOR
"Advanced Micro Devices, Inc."
CACHE STRING "")
set(CPACK_PACKAGE_CONTACT
"RDC Support <rdc.support@amd.com>"
CACHE STRING "")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY
"Radeon Data Center Tools"
CACHE STRING "")
set(CPACK_PACKAGE_NAME ${RDC_PACKAGE} CACHE INTERNAL "")
set(CPACK_PACKAGE_VENDOR "Advanced Micro Devices, Inc." CACHE STRING "")
set(CPACK_PACKAGE_CONTACT "RDC Support <rdc.support@amd.com>" CACHE STRING "")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Radeon Data Center Tools" CACHE STRING "")
set(CPACK_PACKAGE_DESCRIPTION
"This package contains the AMD ${CPACK_PACKAGE_DESCRIPTION_SUMMARY}."
CACHE STRING "")
set(CPACK_PACKAGING_INSTALL_PREFIX
"${CMAKE_INSTALL_PREFIX}"
CACHE PATH "Default packaging prefix.")
set(CPACK_RESOURCE_FILE_LICENSE
"${CMAKE_CURRENT_SOURCE_DIR}/LICENSE"
CACHE INTERNAL "")
set(CPACK_RPM_PACKAGE_LICENSE
"MIT"
CACHE INTERNAL "")
set(CPACK_GENERATOR
"DEB;RPM"
CACHE STRING "Default packaging generators.")
CACHE STRING
""
)
set(CPACK_PACKAGING_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}" CACHE PATH "Default packaging prefix.")
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE" CACHE INTERNAL "")
set(CPACK_RPM_PACKAGE_LICENSE "MIT" CACHE INTERNAL "")
set(CPACK_GENERATOR "DEB;RPM" CACHE STRING "Default packaging generators.")
set(CPACK_DEB_COMPONENT_INSTALL ON)
set(CPACK_RPM_COMPONENT_INSTALL ON)
mark_as_advanced(CPACK_PACKAGE_VENDOR CPACK_PACKAGE_CONTACT CPACK_PACKAGE_DESCRIPTION_SUMMARY
CPACK_PACKAGE_DESCRIPTION CPACK_GENERATOR)
mark_as_advanced(
CPACK_PACKAGE_VENDOR
CPACK_PACKAGE_CONTACT
CPACK_PACKAGE_DESCRIPTION_SUMMARY
CPACK_PACKAGE_DESCRIPTION
CPACK_GENERATOR
)
# check if libcap exists
# needed for sys/capabilities.h
find_library(LIB_CAP NAMES cap REQUIRED)
if(BUILD_STANDALONE AND GRPC_ROOT STREQUAL GRPC_ROOT_DEFAULT)
message(WARNING "GRPC_ROOT is left default. Cannot install gRPC from default root!
message(
WARNING
"GRPC_ROOT is left default. Cannot install gRPC from default root!
Please specify -DGRPC_ROOT=<gRPC installation directory>
Continuing without gRPC install")
Continuing without gRPC install"
)
endif()
find_package(
amd_smi
26.0.0
NAMES
amd_smi
HINTS
${ROCM_DIR}/lib/cmake
CONFIG
REQUIRED)
find_package(amd_smi 26.0.0 NAMES amd_smi HINTS ${ROCM_DIR}/lib/cmake CONFIG REQUIRED)
if(NOT EXISTS "${AMD_SMI_INCLUDE_DIR}" OR NOT EXISTS "${AMD_SMI_LIB_DIR}")
message(FATAL_ERROR "amd_smi not found in ${AMD_SMI_INCLUDE_DIR}. Please
make sure amd_smi is installed and present in ${AMD_SMI_INCLUDE_DIR}.")
message(
FATAL_ERROR
"amd_smi not found in ${AMD_SMI_INCLUDE_DIR}. Please
make sure amd_smi is installed and present in ${AMD_SMI_INCLUDE_DIR}."
)
endif()
set(${RDC}_VERSION_MAJOR "${VERSION_MAJOR}")
@@ -220,9 +211,7 @@ set(${RDC}_VERSION_PATCH "0")
set(${RDC}_VERSION_BUILD "0")
set(CPACK_PACKAGE_VERSION ${VERSION_STRING})
set(CMAKE_CXX_STANDARD
17
CACHE STRING "The C++ standard to use")
set(CMAKE_CXX_STANDARD 17 CACHE STRING "The C++ standard to use")
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
@@ -241,12 +230,8 @@ message("-----------ROCM_DIR : " ${ROCM_DIR})
# this is needed for INSTALL_RPATH "\$ORIGIN" property to work correctly
# please note that because of --enable-new-dtags - this actually sets RUNPATH and not RPATH.
# this means LD_LIBRARY_PATH can override the library locations
set(CMAKE_BUILD_RPATH_USE_ORIGIN
TRUE
CACHE BOOL "Set all RPATH to be ORIGIN-based")
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH
TRUE
CACHE BOOL "Use link path for RPATH")
set(CMAKE_BUILD_RPATH_USE_ORIGIN TRUE CACHE BOOL "Set all RPATH to be ORIGIN-based")
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE CACHE BOOL "Use link path for RPATH")
## Add address sanitizer
if(${ADDRESS_SANITIZER})
@@ -265,8 +250,10 @@ if(${ADDRESS_SANITIZER})
endif()
# Create a configure file to get version info from within library
configure_file("${PROJECT_SOURCE_DIR}/src/${RDC}64Config.in"
"${PROJECT_SOURCE_DIR}/include/rdc/${RDC}64Config.h")
configure_file(
"${PROJECT_SOURCE_DIR}/src/${RDC}64Config.in"
"${PROJECT_SOURCE_DIR}/include/rdc/${RDC}64Config.h"
)
if(BUILD_STANDALONE)
# Compile .proto files
@@ -284,7 +271,9 @@ if(BUILD_STANDALONE)
COMMAND ${PROTOB_CMD} --proto_path=${PROTOB_SRC_DIR} --cpp_out=${PROTOB_OUT_DIR} ${file}
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
RESULT_VARIABLE PROTOB_RESULT
OUTPUT_VARIABLE PROTOB_OUT_VAR COMMAND_ERROR_IS_FATAL ANY)
OUTPUT_VARIABLE PROTOB_OUT_VAR
COMMAND_ERROR_IS_FATAL ANY
)
message("protoc command returned: ${PROTOB_RESULT}")
message("GRPC_PLUGIN=${GRPC_PLUGIN})")
@@ -294,13 +283,14 @@ if(BUILD_STANDALONE)
message("....--plugin=protoc-gen-grpc=\"${GRPC_PLUGIN}\" ${file}")
execute_process(
COMMAND ${PROTOB_CMD} --proto_path=${PROTOB_SRC_DIR} --grpc_out=${PROTOB_OUT_DIR}
--plugin=protoc-gen-grpc=${GRPC_PLUGIN} ${file}
COMMAND
${PROTOB_CMD} --proto_path=${PROTOB_SRC_DIR} --grpc_out=${PROTOB_OUT_DIR}
--plugin=protoc-gen-grpc=${GRPC_PLUGIN} ${file}
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
RESULT_VARIABLE PROTOB_RESULT
OUTPUT_VARIABLE PROTOB_OUT_VAR)
OUTPUT_VARIABLE PROTOB_OUT_VAR
)
message("protoc command returned: ${PROTOB_RESULT}")
endforeach()
endif()
@@ -324,15 +314,19 @@ if(BUILD_STANDALONE)
# This is needed because it's very difficult to track all gRPC dependencies
if(NOT GRPC_ROOT STREQUAL GRPC_ROOT_DEFAULT)
install(
DIRECTORY ${GRPC_ROOT}/lib USE_SOURCE_PERMISSIONS
DIRECTORY ${GRPC_ROOT}/lib
USE_SOURCE_PERMISSIONS
DESTINATION ${CMAKE_INSTALL_LIBDIR}/${RDC}/grpc
COMPONENT ${SERVER_COMPONENT})
COMPONENT ${SERVER_COMPONENT}
)
# In SLES, The libprotobuf is created under lib64 folder, install it as well
if(EXISTS ${GRPC_ROOT}/lib64)
install(
DIRECTORY ${GRPC_ROOT}/lib64/ USE_SOURCE_PERMISSIONS
DIRECTORY ${GRPC_ROOT}/lib64/
USE_SOURCE_PERMISSIONS
DESTINATION ${CMAKE_INSTALL_LIBDIR}/${RDC}/grpc/lib
COMPONENT ${SERVER_COMPONENT})
COMPONENT ${SERVER_COMPONENT}
)
endif()
# Also include dev setup for people do not want to build grpc
file(GLOB install_bin_files "${GRPC_ROOT}/bin/*")
@@ -342,12 +336,15 @@ if(BUILD_STANDALONE)
install(
FILES ${bin_files}
DESTINATION ${CMAKE_INSTALL_LIBDIR}/${RDC}/grpc/bin
COMPONENT ${SERVER_COMPONENT})
COMPONENT ${SERVER_COMPONENT}
)
install(
DIRECTORY ${GRPC_ROOT}/include USE_SOURCE_PERMISSIONS
DIRECTORY ${GRPC_ROOT}/include
USE_SOURCE_PERMISSIONS
DESTINATION ${CMAKE_INSTALL_LIBDIR}/${RDC}/grpc
COMPONENT ${SERVER_COMPONENT})
COMPONENT ${SERVER_COMPONENT}
)
endif()
# Restore printing verbosity
set(CMAKE_INSTALL_MESSAGE ${OLD_CMAKE_INSTALL_MESSAGE})
@@ -376,55 +373,59 @@ set(CONF_LIBS "librdc_bootstrap.so")
set(CONF_LIB_DIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
# Create the rdc-config.cmake and rdc-config-version files
configure_file(cmake_modules/rdc-config-version.cmake.in
"${PROJECT_BINARY_DIR}/rdc-config-version.cmake" @ONLY)
configure_file(
cmake_modules/rdc-config-version.cmake.in
"${PROJECT_BINARY_DIR}/rdc-config-version.cmake"
@ONLY
)
include(CMakePackageConfigHelpers)
set(CONFIG_PACKAGE_INSTALL_DIR ${CONF_LIB_DIR}/cmake/${RDC})
configure_package_config_file(
cmake_modules/rdc-config.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/rdc-config.cmake
INSTALL_DESTINATION ${CONFIG_PACKAGE_INSTALL_DIR})
cmake_modules/rdc-config.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/rdc-config.cmake
INSTALL_DESTINATION ${CONFIG_PACKAGE_INSTALL_DIR}
)
# Install the rdc-config.cmake and rdc-config-version.cmake
install(
FILES "${PROJECT_BINARY_DIR}/rdc-config.cmake" "${PROJECT_BINARY_DIR}/rdc-config-version.cmake"
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${RDC}"
COMPONENT dev)
COMPONENT dev
)
# Install the export set for use with the install-tree
install(
EXPORT rdcTargets
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${RDC}"
COMPONENT dev)
install(EXPORT rdcTargets DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${RDC}" COMPONENT dev)
# License file
install(
FILES ${CPACK_RESOURCE_FILE_LICENSE}
DESTINATION ${CMAKE_INSTALL_DOCDIR}
RENAME LICENSE.txt
COMPONENT dev)
COMPONENT dev
)
# Python binding
install(
DIRECTORY ${PROJECT_SOURCE_DIR}/python_binding
DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/${RDC}
COMPONENT ${CLIENT_COMPONENT})
COMPONENT ${CLIENT_COMPONENT}
)
install(
DIRECTORY ${PROJECT_SOURCE_DIR}/authentication
DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/${RDC}
COMPONENT ${CLIENT_COMPONENT})
COMPONENT ${CLIENT_COMPONENT}
)
install(
DIRECTORY ${PROJECT_SOURCE_DIR}/example
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/${RDC}
COMPONENT dev)
COMPONENT dev
)
#Identify between SLES and Centos for setting symlink for rdc.service
#SLES need serice file in /usr/lib/systemd/system/rdc.service
#CENTOS/RHEL Require file in /lib/systemd/system/rdc.service
file(
STRINGS /etc/os-release LINUX_DISTRO
LIMIT_COUNT 1
REGEX "NAME=")
file(STRINGS /etc/os-release LINUX_DISTRO LIMIT_COUNT 1 REGEX "NAME=")
message("Using Linux Distro: ${LINUX_DISTRO}")
if(LINUX_DISTRO MATCHES "SLES")
set(DISTRO_ROOT "/usr/lib/systemd/system")
@@ -440,17 +441,38 @@ set(INST_SCR_PERM
GROUP_READ
GROUP_EXECUTE
WORLD_READ
WORLD_EXECUTE)
configure_file("${PROJECT_SOURCE_DIR}/src/DEBIAN_postinst.in"
"${PROJECT_SOURCE_DIR}/DEBIAN/postinst" FILE_PERMISSIONS ${INST_SCR_PERM} @ONLY)
configure_file("${PROJECT_SOURCE_DIR}/src/DEBIAN_prerm.in" "${PROJECT_SOURCE_DIR}/DEBIAN/prerm"
FILE_PERMISSIONS ${INST_SCR_PERM} @ONLY)
configure_file("${PROJECT_SOURCE_DIR}/src/RPM_rpm_post.in" "${PROJECT_SOURCE_DIR}/RPM/rpm_post"
FILE_PERMISSIONS ${INST_SCR_PERM} @ONLY)
configure_file("${PROJECT_SOURCE_DIR}/src/RPM_preun.in" "${PROJECT_SOURCE_DIR}/RPM/rpm_preun"
FILE_PERMISSIONS ${INST_SCR_PERM} @ONLY)
configure_file("${PROJECT_SOURCE_DIR}/src/RPM_postun.in" "${PROJECT_SOURCE_DIR}/RPM/rpm_postun"
FILE_PERMISSIONS ${INST_SCR_PERM} @ONLY)
WORLD_EXECUTE
)
configure_file(
"${PROJECT_SOURCE_DIR}/src/DEBIAN_postinst.in"
"${PROJECT_SOURCE_DIR}/DEBIAN/postinst"
FILE_PERMISSIONS ${INST_SCR_PERM}
@ONLY
)
configure_file(
"${PROJECT_SOURCE_DIR}/src/DEBIAN_prerm.in"
"${PROJECT_SOURCE_DIR}/DEBIAN/prerm"
FILE_PERMISSIONS ${INST_SCR_PERM}
@ONLY
)
configure_file(
"${PROJECT_SOURCE_DIR}/src/RPM_rpm_post.in"
"${PROJECT_SOURCE_DIR}/RPM/rpm_post"
FILE_PERMISSIONS ${INST_SCR_PERM}
@ONLY
)
configure_file(
"${PROJECT_SOURCE_DIR}/src/RPM_preun.in"
"${PROJECT_SOURCE_DIR}/RPM/rpm_preun"
FILE_PERMISSIONS ${INST_SCR_PERM}
@ONLY
)
configure_file(
"${PROJECT_SOURCE_DIR}/src/RPM_postun.in"
"${PROJECT_SOURCE_DIR}/RPM/rpm_postun"
FILE_PERMISSIONS ${INST_SCR_PERM}
@ONLY
)
if(DEFINED ENV{ROCM_LIBPATCH_VERSION})
set(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION}.$ENV{ROCM_LIBPATCH_VERSION}")
message("Using CPACK_PACKAGE_VERSION ${CPACK_PACKAGE_VERSION}")
@@ -470,8 +492,10 @@ set(CPACK_DEBIAN_FILE_NAME "DEB-DEFAULT")
# Only add extras to RUNTIME package (not tests)
# It makes no sense to modify RDCD service when installing tests
# https://cmake.org/cmake/help/latest/cpack_gen/deb.html#variable:CPACK_DEBIAN_%3CCOMPONENT%3E_PACKAGE_CONTROL_EXTRA
set(CPACK_DEBIAN_RUNTIME_PACKAGE_CONTROL_EXTRA "${CMAKE_CURRENT_SOURCE_DIR}/DEBIAN/postinst"
"${CMAKE_CURRENT_SOURCE_DIR}/DEBIAN/prerm")
set(CPACK_DEBIAN_RUNTIME_PACKAGE_CONTROL_EXTRA
"${CMAKE_CURRENT_SOURCE_DIR}/DEBIAN/postinst"
"${CMAKE_CURRENT_SOURCE_DIR}/DEBIAN/prerm"
)
option(ROCM_DEP_ROCMCORE "Add debian dependency on rocm-core" OFF)
mark_as_advanced(ROCM_DEP_ROCMCORE)
@@ -496,7 +520,8 @@ execute_process(
COMMAND rpm --eval %{?dist}
RESULT_VARIABLE PROC_RESULT
OUTPUT_VARIABLE EVAL_RESULT
OUTPUT_STRIP_TRAILING_WHITESPACE)
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(PROC_RESULT EQUAL "0" AND NOT EVAL_RESULT STREQUAL "")
string(APPEND CPACK_RPM_PACKAGE_RELEASE "%{?dist}")
endif()
@@ -514,7 +539,8 @@ list(
"/lib/systemd"
"/lib/systemd/system"
"/usr"
"/opt")
"/opt"
)
# Only add extras to RUNTIME package (not tests)
# It makes no sense to modify RDCD service when installing tests
+10 -9
Просмотреть файл
@@ -8,30 +8,31 @@ if(NOT DEFINED ROCM_DIR)
endif()
list(APPEND CMAKE_PREFIX_PATH ${ROCM_DIR})
find_library(
${NAME}_LIBRARY
NAMES ${NAME} ${NAME}64 REQUIRED REGISTRY_VIEW BOTH
PATH_SUFFIXES lib)
find_library(${NAME}_LIBRARY NAMES ${NAME} ${NAME}64 REQUIRED REGISTRY_VIEW BOTH PATH_SUFFIXES lib)
if(NOT DEFINED (${NAME}_INCLUDE_DIR))
find_path(
${NAME}_INCLUDE_DIR
NAMES ${NAME}.h
HINTS "${ROCM_DIR}/include"
PATH_SUFFIXES ${NAME} ${NAME}/inc)
PATH_SUFFIXES ${NAME} ${NAME}/inc
)
endif()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(
${NAME}
FOUND_VAR ${NAME}_FOUND
REQUIRED_VARS ${NAME}_LIBRARY ${NAME}_INCLUDE_DIR)
REQUIRED_VARS ${NAME}_LIBRARY ${NAME}_INCLUDE_DIR
)
if(${NAME}_FOUND AND NOT TARGET ${NAME}::${NAME})
add_library(${NAME}::${NAME} UNKNOWN IMPORTED)
set_target_properties(
${NAME}::${NAME}
PROPERTIES IMPORTED_LOCATION "${${NAME}_LIBRARY}"
INTERFACE_COMPILE_OPTIONS "${PC_${NAME}_CFLAGS_OTHER}"
INTERFACE_INCLUDE_DIRECTORIES "${${NAME}_INCLUDE_DIR}")
PROPERTIES
IMPORTED_LOCATION "${${NAME}_LIBRARY}"
INTERFACE_COMPILE_OPTIONS "${PC_${NAME}_CFLAGS_OTHER}"
INTERFACE_INCLUDE_DIRECTORIES "${${NAME}_INCLUDE_DIR}"
)
endif()
+28 -16
Просмотреть файл
@@ -10,31 +10,41 @@ list(APPEND CMAKE_PREFIX_PATH ${ROCM_DIR})
find_library(
${NAME}_LIBRARY
NAMES ${NAME} ${NAME}64 ${NAME}lib # RVS is special and is named librvslib.so
REQUIRED REGISTRY_VIEW BOTH
PATH_SUFFIXES lib)
NAMES
${NAME}
${NAME}64
${NAME}lib # RVS is special and is named librvslib.so
REQUIRED
REGISTRY_VIEW
BOTH
PATH_SUFFIXES lib
)
if(NOT DEFINED (${NAME}_INCLUDE_DIR))
find_path(
${NAME}_INCLUDE_DIR
NAMES ${NAME}.h
HINTS "${ROCM_DIR}/include"
PATH_SUFFIXES ${NAME} ${NAME}/inc)
PATH_SUFFIXES ${NAME} ${NAME}/inc
)
endif()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(
${NAME}
FOUND_VAR ${NAME}_FOUND
REQUIRED_VARS ${NAME}_LIBRARY ${NAME}_INCLUDE_DIR)
REQUIRED_VARS ${NAME}_LIBRARY ${NAME}_INCLUDE_DIR
)
if(${NAME}_FOUND AND NOT TARGET ${NAME}::${NAME})
add_library(${NAME}::${NAME} UNKNOWN IMPORTED)
set_target_properties(
${NAME}::${NAME}
PROPERTIES IMPORTED_LOCATION "${${NAME}_LIBRARY}"
INTERFACE_COMPILE_OPTIONS "${PC_${NAME}_CFLAGS_OTHER}"
INTERFACE_INCLUDE_DIRECTORIES "${${NAME}_INCLUDE_DIR}")
PROPERTIES
IMPORTED_LOCATION "${${NAME}_LIBRARY}"
INTERFACE_COMPILE_OPTIONS "${PC_${NAME}_CFLAGS_OTHER}"
INTERFACE_INCLUDE_DIRECTORIES "${${NAME}_INCLUDE_DIR}"
)
find_library(rocm-core NAMES rocm-core REQUIRED)
find_package(yaml-cpp REQUIRED)
find_package(rocblas REQUIRED)
@@ -45,12 +55,14 @@ if(${NAME}_FOUND AND NOT TARGET ${NAME}::${NAME})
find_package(amd_smi REQUIRED)
target_link_libraries(
${NAME}::${NAME}
INTERFACE ${rocm-core}
yaml-cpp
roc::rocblas
roc::hipblaslt
hsakmt::hsakmt
hip::amdhip64
hsa-runtime64::hsa-runtime64
amd_smi)
INTERFACE
${rocm-core}
yaml-cpp
roc::rocblas
roc::hipblaslt
hsakmt::hsakmt
hip::amdhip64
hsa-runtime64::hsa-runtime64
amd_smi
)
endif()
+15 -39
Просмотреть файл
@@ -44,7 +44,6 @@
## the first, second and third number values in
## the major, minor and patch variables.
function(parse_version VERSION_STRING)
string(FIND ${VERSION_STRING} "-" STRING_INDEX)
if(${STRING_INDEX} GREATER -1)
@@ -57,32 +56,23 @@ function(parse_version VERSION_STRING)
if(${VERSION_COUNT} GREATER 0)
list(GET VERSIONS 0 MAJOR)
set(VERSION_MAJOR
${MAJOR}
PARENT_SCOPE)
set(VERSION_MAJOR ${MAJOR} PARENT_SCOPE)
set(TEMP_VERSION_STRING "${MAJOR}")
endif()
if(${VERSION_COUNT} GREATER 1)
list(GET VERSIONS 1 MINOR)
set(VERSION_MINOR
${MINOR}
PARENT_SCOPE)
set(VERSION_MINOR ${MINOR} PARENT_SCOPE)
set(TEMP_VERSION_STRING "${TEMP_VERSION_STRING}.${MINOR}")
endif()
if(${VERSION_COUNT} GREATER 2)
list(GET VERSIONS 2 PATCH)
set(VERSION_PATCH
${PATCH}
PARENT_SCOPE)
set(VERSION_PATCH ${PATCH} PARENT_SCOPE)
set(TEMP_VERSION_STRING "${TEMP_VERSION_STRING}.${PATCH}")
endif()
set(VERSION_STRING
"${TEMP_VERSION_STRING}"
PARENT_SCOPE)
set(VERSION_STRING "${TEMP_VERSION_STRING}" PARENT_SCOPE)
endfunction()
## Gets the current version of the repository
@@ -98,43 +88,31 @@ function(get_version_from_tag DEFAULT_VERSION_STRING VERSION_PREFIX GIT)
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
OUTPUT_VARIABLE GIT_TAG_STRING
OUTPUT_STRIP_TRAILING_WHITESPACE
RESULT_VARIABLE RESULT)
RESULT_VARIABLE RESULT
)
if(${RESULT} EQUAL 0)
parse_version(${GIT_TAG_STRING})
endif()
endif()
set(VERSION_STRING
"${VERSION_STRING}"
PARENT_SCOPE)
set(VERSION_MAJOR
"${VERSION_MAJOR}"
PARENT_SCOPE)
set(VERSION_MINOR
"${VERSION_MINOR}"
PARENT_SCOPE)
set(VERSION_PATCH
"${VERSION_PATCH}"
PARENT_SCOPE)
set(VERSION_STRING "${VERSION_STRING}" PARENT_SCOPE)
set(VERSION_MAJOR "${VERSION_MAJOR}" PARENT_SCOPE)
set(VERSION_MINOR "${VERSION_MINOR}" PARENT_SCOPE)
set(VERSION_PATCH "${VERSION_PATCH}" PARENT_SCOPE)
endfunction()
function(num_change_since_prev_pkg VERSION_PREFIX)
find_program(
get_commits
NAMES version_util.sh
PATHS ${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules)
find_program(get_commits NAMES version_util.sh PATHS ${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules)
if(get_commits)
execute_process(
COMMAND ${get_commits} -c ${VERSION_PREFIX}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
OUTPUT_VARIABLE NUM_COMMITS
OUTPUT_STRIP_TRAILING_WHITESPACE
RESULT_VARIABLE RESULT)
RESULT_VARIABLE RESULT
)
set(NUM_COMMITS
"${NUM_COMMITS}"
PARENT_SCOPE)
set(NUM_COMMITS "${NUM_COMMITS}" PARENT_SCOPE)
if(${RESULT} EQUAL 0)
message("${NUM_COMMITS} were found since previous release")
@@ -143,8 +121,6 @@ function(num_change_since_prev_pkg VERSION_PREFIX)
endif()
else()
message("WARNING: Didn't find version_util.sh")
set(NUM_COMMITS
"unknown"
PARENT_SCOPE)
set(NUM_COMMITS "unknown" PARENT_SCOPE)
endif()
endfunction()
+15 -13
Просмотреть файл
@@ -35,21 +35,27 @@ option(CMAKE_EXPORT_COMPILE_COMMANDS "Export compile commands for linters and au
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -m64 -msse -msse2")
set(CMAKE_CXX_FLAGS_DEBUG
"${CMAKE_CXX_FLAGS_DEBUG} -O0 -ggdb -DDEBUG"
CACHE STRING "Flags for Debug builds")
CACHE STRING
"Flags for Debug builds"
)
# note: no '-s' here unlike other CMakeLists.txt
set(CMAKE_CXX_FLAGS_RELEASE
"${CMAKE_CXX_FLAGS_RELEASE} -O2 -DNDEBUG"
CACHE STRING "Flags for Release builds")
CACHE STRING
"Flags for Release builds"
)
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO
"${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -O2 -g -DNDEBUG"
CACHE STRING "Flags for RelWithDebInfo builds")
CACHE STRING
"Flags for RelWithDebInfo builds"
)
set(CMAKE_CXX_FLAGS_MINSIZEREL
"${CMAKE_CXX_FLAGS_MINSIZEREL} -Os -DNDEBUG"
CACHE STRING "Flags for MinSizeRel builds")
CACHE STRING
"Flags for MinSizeRel builds"
)
set(CMAKE_CXX_STANDARD
17
CACHE STRING "The C++ standard to use")
set(CMAKE_CXX_STANDARD 17 CACHE STRING "The C++ standard to use")
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
@@ -65,13 +71,9 @@ include(CMakePrintHelpers)
# required variables
if(DEFINED ENV{ROCM_PATH})
set(ROCM_DIR
"$ENV{ROCM_PATH}"
CACHE STRING "ROCm directory.")
set(ROCM_DIR "$ENV{ROCM_PATH}" CACHE STRING "ROCm directory.")
else()
set(ROCM_DIR
"/opt/rocm"
CACHE STRING "ROCm directory.")
set(ROCM_DIR "/opt/rocm" CACHE STRING "ROCm directory.")
endif()
# add package search paths
+11 -9
Просмотреть файл
@@ -94,7 +94,8 @@ export(TARGETS ${BOOTSTRAP_LIB} ${RDC_LIB} FILE "${PROJECT_BINARY_DIR}/rdc_libs.
install(
TARGETS ${BOOTSTRAP_LIB} ${RDC_LIB}
EXPORT rdcTargets
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT ${CLIENT_COMPONENT})
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT ${CLIENT_COMPONENT}
)
if(BUILD_STANDALONE)
# add librdc_client.so
@@ -102,11 +103,9 @@ if(BUILD_STANDALONE)
install(
TARGETS ${RDCCLIENT_LIB}
EXPORT rdcTargets
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT ${CLIENT_COMPONENT})
export(
TARGETS ${RDCCLIENT_LIB}
APPEND
FILE "${PROJECT_BINARY_DIR}/rdc_libs.cmake")
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT ${CLIENT_COMPONENT}
)
export(TARGETS ${RDCCLIENT_LIB} APPEND FILE "${PROJECT_BINARY_DIR}/rdc_libs.cmake")
endif()
# Add module directives if those exist
@@ -114,14 +113,16 @@ if(RDC_LIB_MODULES)
install(
TARGETS ${RDC_LIB_MODULES}
EXPORT rdcTargets
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}/${RDC} COMPONENT ${CLIENT_COMPONENT})
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}/${RDC} COMPONENT ${CLIENT_COMPONENT}
)
set_target_properties(${RDC_LIB_MODULES} PROPERTIES INSTALL_RPATH "\$ORIGIN:\$ORIGIN/..")
endif()
install(
FILES ${PROJECT_SOURCE_DIR}/include/rdc/rdc.h
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${RDC}
COMPONENT ${CLIENT_COMPONENT})
COMPONENT ${CLIENT_COMPONENT}
)
# Don't print kernel install because it floods the terminal
set(OLD_CMAKE_INSTALL_MESSAGE ${CMAKE_INSTALL_MESSAGE})
@@ -130,7 +131,8 @@ set(CMAKE_INSTALL_MESSAGE NEVER)
install(
DIRECTORY ${SRC_DIR}/rdc_modules/kernels/hsaco
DESTINATION ${CMAKE_INSTALL_LIBDIR}/${RDC}
COMPONENT ${CLIENT_COMPONENT})
COMPONENT ${CLIENT_COMPONENT}
)
# Restore printing verbosity
set(CMAKE_INSTALL_MESSAGE ${OLD_CMAKE_INSTALL_MESSAGE})
unset(OLD_CMAKE_INSTALL_MESSAGE)
+25 -11
Просмотреть файл
@@ -5,14 +5,16 @@ message("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&")
set(SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src")
set(INC_DIR "${RDC_LIB_INC_DIR}")
# need source dir for rocr
set(BOOTSTRAP_LIB_SRC_DIR
"${SRC_DIR}"
PARENT_SCOPE)
set(BOOTSTRAP_LIB_SRC_DIR "${SRC_DIR}" PARENT_SCOPE)
set(BOOTSTRAP_LIB_COMPONENT "lib${BOOTSTRAP_LIB}")
set(BOOTSTRAP_LIB_SRC_LIST
"${COMMON_DIR}/rdc_fields_supported.cc" "${SRC_DIR}/RdcBootStrap.cc"
"${SRC_DIR}/RdcLibraryLoader.cc" "${SRC_DIR}/RdcLogger.cc" "${SRC_DIR}/RdcEntityCodec.cc")
"${COMMON_DIR}/rdc_fields_supported.cc"
"${SRC_DIR}/RdcBootStrap.cc"
"${SRC_DIR}/RdcLibraryLoader.cc"
"${SRC_DIR}/RdcLogger.cc"
"${SRC_DIR}/RdcEntityCodec.cc"
)
set(BOOTSTRAP_LIB_INC_LIST
"${COMMON_DIR}/rdc_fields_supported.h"
"${INC_DIR}/RdcHandler.h"
@@ -20,17 +22,28 @@ set(BOOTSTRAP_LIB_INC_LIST
"${INC_DIR}/RdcLogger.h"
"${INC_DIR}/RdcEntityCodec.h"
"${INC_DIR}/rdc_common.h"
"${PROJECT_SOURCE_DIR}/include/rdc/rdc.h")
"${PROJECT_SOURCE_DIR}/include/rdc/rdc.h"
)
message("BOOTSTRAP_LIB_INC_LIST=${BOOTSTRAP_LIB_INC_LIST}")
add_library(${BOOTSTRAP_LIB} SHARED ${BOOTSTRAP_LIB_SRC_LIST} ${BOOTSTRAP_LIB_INC_LIST})
target_link_libraries(${BOOTSTRAP_LIB} pthread dl)
target_include_directories(
${BOOTSTRAP_LIB} PRIVATE "${PROJECT_SOURCE_DIR}" "${PROJECT_SOURCE_DIR}/include"
"${COMMON_DIR}" "${AMD_SMI_INCLUDE_DIR}" "${ROCM_DIR}/include")
${BOOTSTRAP_LIB}
PRIVATE
"${PROJECT_SOURCE_DIR}"
"${PROJECT_SOURCE_DIR}/include"
"${COMMON_DIR}"
"${AMD_SMI_INCLUDE_DIR}"
"${ROCM_DIR}/include"
)
target_include_directories(${BOOTSTRAP_LIB} PUBLIC $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
target_include_directories(
${BOOTSTRAP_LIB}
PUBLIC
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
)
# Set the VERSION and SOVERSION values
set_property(TARGET ${BOOTSTRAP_LIB} PROPERTY SOVERSION "${VERSION_MAJOR}")
@@ -42,5 +55,6 @@ if("${CMAKE_BUILD_TYPE}" STREQUAL Release)
add_custom_command(
TARGET ${BOOTSTRAP_LIB}
POST_BUILD
COMMAND ${CMAKE_STRIP} ${BOOTSTRAP_LIB_COMPONENT}.so)
COMMAND ${CMAKE_STRIP} ${BOOTSTRAP_LIB_COMPONENT}.so
)
endif()
+8 -8
Просмотреть файл
@@ -30,7 +30,8 @@ set(RDC_LIB_SRC_LIST
"${SRC_DIR}/RdcTelemetryModule.cc"
"${SRC_DIR}/RdcWatchTableImpl.cc"
"${SRC_DIR}/RdcPartitionImpl.cc"
"${SRC_DIR}/SmiUtils.cc")
"${SRC_DIR}/SmiUtils.cc"
)
# TODO: remove all headers? Will just dir be ok after install?
set(RDC_LIB_INC_LIST
@@ -64,15 +65,17 @@ set(RDC_LIB_INC_LIST
"${INC_DIR}/impl/RdcTelemetryModule.h"
"${INC_DIR}/impl/RdcWatchTableImpl.h"
"${INC_DIR}/impl/RdcPartitionImpl.h"
"${INC_DIR}/impl/SmiUtils.h")
"${INC_DIR}/impl/SmiUtils.h"
)
message("RDC_LIB_INC_LIST=${RDC_LIB_INC_LIST}")
add_library(${RDC_LIB} SHARED ${RDC_LIB_SRC_LIST} ${RDC_LIB_INC_LIST})
target_link_libraries(${RDC_LIB} ${BOOTSTRAP_LIB} pthread amd_smi cap)
target_include_directories(
${RDC_LIB} PRIVATE "${PROJECT_SOURCE_DIR}" "${PROJECT_SOURCE_DIR}/include"
"${AMD_SMI_INCLUDE_DIR}")
${RDC_LIB}
PRIVATE "${PROJECT_SOURCE_DIR}" "${PROJECT_SOURCE_DIR}/include" "${AMD_SMI_INCLUDE_DIR}"
)
# Set the VERSION and SOVERSION values
set_property(TARGET ${RDC_LIB} PROPERTY SOVERSION "${VERSION_MAJOR}")
@@ -81,10 +84,7 @@ set_target_properties(${RDC_LIB} PROPERTIES INSTALL_RPATH "\$ORIGIN")
# If the library is a release, strip the target library
if("${CMAKE_BUILD_TYPE}" STREQUAL Release)
add_custom_command(
TARGET ${RDC_LIB}
POST_BUILD
COMMAND ${CMAKE_STRIP} ${RDC_LIB_COMPONENT}.so)
add_custom_command(TARGET ${RDC_LIB} POST_BUILD COMMAND ${CMAKE_STRIP} ${RDC_LIB_COMPONENT}.so)
endif()
# pass ROCM_DIR to compiler
+23 -6
Просмотреть файл
@@ -11,16 +11,32 @@ file(GLOB PROTOBUF_GENERATED_SRCS "${PROTOB_OUT_DIR}/*.cc")
set(RDCCLIENT_LIB_COMPONENT "lib${RDCCLIENT_LIB}")
set(RDCCLIENT_LIB_SRC_LIST "${SRC_DIR}/RdcStandaloneHandler.cc" "${PROTOBUF_GENERATED_SRCS}")
set(RDCCLIENT_LIB_INC_LIST "${PROJECT_SOURCE_DIR}/include/rdc/rdc.h" "${INC_DIR}/rdc_common.h"
"${INC_DIR}/RdcHandler.h" "${INC_DIR}/impl/RdcStandaloneHandler.h")
set(RDCCLIENT_LIB_INC_LIST
"${PROJECT_SOURCE_DIR}/include/rdc/rdc.h"
"${INC_DIR}/rdc_common.h"
"${INC_DIR}/RdcHandler.h"
"${INC_DIR}/impl/RdcStandaloneHandler.h"
)
message("RDCCLIENT_LIB_INC_LIST=${RDCCLIENT_LIB_INC_LIST}")
add_library(${RDCCLIENT_LIB} SHARED ${RDCCLIENT_LIB_SRC_LIST} ${RDCCLIENT_LIB_INC_LIST})
target_link_libraries(${RDCCLIENT_LIB} ${BOOTSTRAP_LIB} pthread rt gRPC::grpc++ dl)
target_link_libraries(
${RDCCLIENT_LIB}
${BOOTSTRAP_LIB}
pthread
rt
gRPC::grpc++
dl
)
target_include_directories(
${RDCCLIENT_LIB} PRIVATE "${GRPC_ROOT}/include" "${PROJECT_SOURCE_DIR}"
"${PROJECT_SOURCE_DIR}/include" "${PROTOB_OUT_DIR}")
${RDCCLIENT_LIB}
PRIVATE
"${GRPC_ROOT}/include"
"${PROJECT_SOURCE_DIR}"
"${PROJECT_SOURCE_DIR}/include"
"${PROTOB_OUT_DIR}"
)
# Set the VERSION and SOVERSION values
set_property(TARGET ${RDCCLIENT_LIB} PROPERTY SOVERSION "${VERSION_MAJOR}")
@@ -30,5 +46,6 @@ if("${CMAKE_BUILD_TYPE}" STREQUAL Release)
add_custom_command(
TARGET ${RDCCLIENT_LIB}
POST_BUILD
COMMAND ${CMAKE_STRIP} ${RDCCLIENT_LIB_COMPONENT}.so)
COMMAND ${CMAKE_STRIP} ${RDCCLIENT_LIB_COMPONENT}.so
)
endif()
+25 -21
Просмотреть файл
@@ -7,9 +7,12 @@ set(INC_DIR "${PROJECT_SOURCE_DIR}/include/rdc_modules/rdc_rocp")
set(RDC_ROCP_LIB_COMPONENT "lib${RDC_ROCP_LIB}")
set(RDC_ROCP_LIB_SRC_LIST
"${BOOTSTRAP_LIB_SRC_DIR}/RdcLogger.cc" "${BOOTSTRAP_LIB_SRC_DIR}/RdcEntityCodec.cc"
"${SRC_DIR}/RdcTelemetryLib.cc" "${SRC_DIR}/RdcRocpCounterSampler.cc"
"${SRC_DIR}/RdcRocpBase.cc")
"${BOOTSTRAP_LIB_SRC_DIR}/RdcLogger.cc"
"${BOOTSTRAP_LIB_SRC_DIR}/RdcEntityCodec.cc"
"${SRC_DIR}/RdcTelemetryLib.cc"
"${SRC_DIR}/RdcRocpCounterSampler.cc"
"${SRC_DIR}/RdcRocpBase.cc"
)
set(RDC_ROCP_LIB_INC_LIST
"${PROJECT_SOURCE_DIR}/include/rdc/rdc.h"
"${RDC_LIB_INC_DIR}/RdcDiagnosticLibInterface.h"
@@ -18,7 +21,8 @@ set(RDC_ROCP_LIB_INC_LIST
"${RDC_LIB_INC_DIR}/RdcEntityCodec.h"
"${SRC_DIR}/../../rdc/src/SmiUtils.cc"
"${INC_DIR}/RdcRocpBase.h"
"${INC_DIR}/RdcRocpCounterSampler.h")
"${INC_DIR}/RdcRocpCounterSampler.h"
)
if(BUILD_PROFILER)
message("Build librdc_rocp.so is enabled, make sure ROCmTools is installed.")
@@ -26,32 +30,31 @@ if(BUILD_PROFILER)
message("RDC_ROCP_LIB_INC_LIST=${RDC_ROCP_LIB_INC_LIST}")
find_package(rocprofiler-sdk 1.0.0 HINTS ${ROCM_DIR}/lib/cmake CONFIG REQUIRED)
find_package(
hsa-runtime64
NAMES
hsa-runtime64
HINTS
${ROCM_DIR}/lib/cmake
CONFIG
REQUIRED)
set(RDC_LIB_MODULES
${RDC_LIB_MODULES} ${RDC_ROCP_LIB}
PARENT_SCOPE)
find_package(hsa-runtime64 NAMES hsa-runtime64 HINTS ${ROCM_DIR}/lib/cmake CONFIG REQUIRED)
set(RDC_LIB_MODULES ${RDC_LIB_MODULES} ${RDC_ROCP_LIB} PARENT_SCOPE)
add_library(${RDC_ROCP_LIB} SHARED ${RDC_ROCP_LIB_SRC_LIST} ${RDC_ROCP_LIB_INC_LIST})
target_link_libraries(
${RDC_ROCP_LIB} PRIVATE hsa-runtime64::hsa-runtime64 rocprofiler-sdk::rocprofiler-sdk
pthread dl amd_smi)
${RDC_ROCP_LIB}
PRIVATE hsa-runtime64::hsa-runtime64 rocprofiler-sdk::rocprofiler-sdk pthread dl amd_smi
)
target_include_directories(
${RDC_ROCP_LIB}
PRIVATE "${PROJECT_SOURCE_DIR}" "${PROJECT_SOURCE_DIR}/include" "${COMMON_DIR}"
"${AMD_SMI_INCLUDE_DIR}" "${ROCM_DIR}/include" "${ROCM_DIR}/include/hsa")
PRIVATE
"${PROJECT_SOURCE_DIR}"
"${PROJECT_SOURCE_DIR}/include"
"${COMMON_DIR}"
"${AMD_SMI_INCLUDE_DIR}"
"${ROCM_DIR}/include"
"${ROCM_DIR}/include/hsa"
)
# let bootstrap find this module at build time
# at install-time the directory structure is a lot simpler
set_property(
TARGET ${BOOTSTRAP_LIB}
APPEND
PROPERTY BUILD_RPATH "\$ORIGIN/../rdc_modules/${RDC_ROCP_LIB}")
PROPERTY BUILD_RPATH "\$ORIGIN/../rdc_modules/${RDC_ROCP_LIB}"
)
# Set the VERSION and SOVERSION values
set_property(TARGET ${RDC_ROCP_LIB} PROPERTY SOVERSION "${VERSION_MAJOR}")
@@ -62,6 +65,7 @@ if(BUILD_PROFILER)
add_custom_command(
TARGET ${RDC_ROCP_LIB}
POST_BUILD
COMMAND ${CMAKE_STRIP} ${RDC_ROCP_LIB_COMPONENT}.so)
COMMAND ${CMAKE_STRIP} ${RDC_ROCP_LIB_COMPONENT}.so
)
endif()
endif()
+26 -19
Просмотреть файл
@@ -15,7 +15,8 @@ set(RDC_ROCR_LIB_SRC_LIST
"${SRC_DIR}/RdcRocrBase.cc"
"${SRC_DIR}/TestBase.cc"
"${SRC_DIR}/base_rocr_utils.cc"
"${SRC_DIR}/common.cc")
"${SRC_DIR}/common.cc"
)
set(RDC_ROCR_LIB_INC_LIST
"${INC_DIR}/MemoryAccess.h"
@@ -27,37 +28,42 @@ set(RDC_ROCR_LIB_INC_LIST
"${PROJECT_SOURCE_DIR}/include/rdc/rdc.h"
"${RDC_LIB_INC_DIR}/RdcLogger.h"
"${RDC_LIB_INC_DIR}/RdcDiagnosticLibInterface.h"
"${RDC_LIB_INC_DIR}/rdc_common.h")
"${RDC_LIB_INC_DIR}/rdc_common.h"
)
if(BUILD_RUNTIME)
message("Build librdc_rocr.so is enabled, make sure the Rocm run time is installed.")
message("RDC_ROCR_LIB_INC_LIST=${RDC_ROCR_LIB_INC_LIST}")
find_package(
hsa-runtime64
NAMES
hsa-runtime64
HINTS
${ROCM_DIR}/lib/cmake
CONFIG
REQUIRED)
set(RDC_LIB_MODULES
${RDC_LIB_MODULES} ${RDC_ROCR_LIB}
PARENT_SCOPE)
find_package(hsa-runtime64 NAMES hsa-runtime64 HINTS ${ROCM_DIR}/lib/cmake CONFIG REQUIRED)
set(RDC_LIB_MODULES ${RDC_LIB_MODULES} ${RDC_ROCR_LIB} PARENT_SCOPE)
add_library(${RDC_ROCR_LIB} SHARED ${RDC_ROCR_LIB_SRC_LIST} ${RDC_ROCR_LIB_INC_LIST})
target_link_libraries(${RDC_ROCR_LIB} ${RDC_LIB} ${BOOTSTRAP_LIB} hsa-runtime64::hsa-runtime64
pthread dl)
target_link_libraries(
${RDC_ROCR_LIB}
${RDC_LIB}
${BOOTSTRAP_LIB}
hsa-runtime64::hsa-runtime64
pthread
dl
)
target_include_directories(
${RDC_ROCR_LIB} PRIVATE "${PROJECT_SOURCE_DIR}" "${PROJECT_SOURCE_DIR}/include"
"${COMMON_DIR}" "${AMD_SMI_INCLUDE_DIR}" "${ROCM_DIR}/include")
${RDC_ROCR_LIB}
PRIVATE
"${PROJECT_SOURCE_DIR}"
"${PROJECT_SOURCE_DIR}/include"
"${COMMON_DIR}"
"${AMD_SMI_INCLUDE_DIR}"
"${ROCM_DIR}/include"
)
# let bootstrap find this module at build time
# at install-time the directory structure is a lot simpler
set_property(
TARGET ${BOOTSTRAP_LIB}
APPEND
PROPERTY BUILD_RPATH "\$ORIGIN/../rdc_modules/${RDC_ROCR_LIB}")
PROPERTY BUILD_RPATH "\$ORIGIN/../rdc_modules/${RDC_ROCR_LIB}"
)
# Set the VERSION and SOVERSION values
set_property(TARGET ${RDC_ROCR_LIB} PROPERTY SOVERSION "${VERSION_MAJOR}")
@@ -68,6 +74,7 @@ if(BUILD_RUNTIME)
add_custom_command(
TARGET ${RDC_ROCR_LIB}
POST_BUILD
COMMAND ${CMAKE_STRIP} ${RDC_ROCR_LIB_COMPONENT}.so)
COMMAND ${CMAKE_STRIP} ${RDC_ROCR_LIB_COMPONENT}.so
)
endif()
endif()
+32 -19
Просмотреть файл
@@ -6,12 +6,19 @@ set(SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
set(INC_DIR "${PROJECT_SOURCE_DIR}/include/rdc_modules/rdc_rvs")
set(RDC_RVS_LIB_COMPONENT "lib${RDC_RVS_LIB}")
set(RDC_RVS_LIB_SRC_LIST "${BOOTSTRAP_LIB_SRC_DIR}/RdcLogger.cc" "${SRC_DIR}/RvsBase.cc"
"${SRC_DIR}/RdcDiagnosticLib.cc")
set(RDC_RVS_LIB_SRC_LIST
"${BOOTSTRAP_LIB_SRC_DIR}/RdcLogger.cc"
"${SRC_DIR}/RvsBase.cc"
"${SRC_DIR}/RdcDiagnosticLib.cc"
)
set(RDC_RVS_LIB_INC_LIST
"${PROJECT_SOURCE_DIR}/include/rdc/rdc.h" "${RDC_LIB_INC_DIR}/RdcDiagnostic.h"
"${RDC_LIB_INC_DIR}/RdcDiagnosticLibInterface.h" "${RDC_LIB_INC_DIR}/rdc_common.h"
"${RDC_LIB_INC_DIR}/RdcLogger.h" "${INC_DIR}/RvsBase.h")
"${PROJECT_SOURCE_DIR}/include/rdc/rdc.h"
"${RDC_LIB_INC_DIR}/RdcDiagnostic.h"
"${RDC_LIB_INC_DIR}/RdcDiagnosticLibInterface.h"
"${RDC_LIB_INC_DIR}/rdc_common.h"
"${RDC_LIB_INC_DIR}/RdcLogger.h"
"${INC_DIR}/RvsBase.h"
)
if(BUILD_RVS)
message("Build librdc_rvs.so is enabled, make sure RVS is installed.")
@@ -25,27 +32,31 @@ if(BUILD_RVS)
list(APPEND CMAKE_PREFIX_PATH ${ROCM_DIR})
find_package(rvs REQUIRED)
set(RDC_LIB_MODULES
${RDC_LIB_MODULES} ${RDC_RVS_LIB}
PARENT_SCOPE)
set(RDC_LIB_MODULES ${RDC_LIB_MODULES} ${RDC_RVS_LIB} PARENT_SCOPE)
add_library(${RDC_RVS_LIB} SHARED ${RDC_RVS_LIB_SRC_LIST} ${RDC_RVS_LIB_INC_LIST})
target_link_libraries(${RDC_RVS_LIB} PRIVATE ${RDC_LIB} ${BOOTSTRAP_LIB} rvs::rvs pthread dl)
target_link_libraries(
${RDC_RVS_LIB}
PRIVATE ${RDC_LIB} ${BOOTSTRAP_LIB} rvs::rvs pthread dl
)
target_include_directories(
${RDC_RVS_LIB}
PRIVATE "${PROJECT_SOURCE_DIR}"
"${PROJECT_SOURCE_DIR}/include"
"${COMMON_DIR}"
"${AMD_SMI_INCLUDE_DIR}"
"${ROCM_DIR}/include"
"${ROCM_DIR}/include/hsa"
"${ROCM_VALIDATION_SUITE_INCLUDE_DIR}")
PRIVATE
"${PROJECT_SOURCE_DIR}"
"${PROJECT_SOURCE_DIR}/include"
"${COMMON_DIR}"
"${AMD_SMI_INCLUDE_DIR}"
"${ROCM_DIR}/include"
"${ROCM_DIR}/include/hsa"
"${ROCM_VALIDATION_SUITE_INCLUDE_DIR}"
)
# let bootstrap find this module at build time
# at install-time the directory structure is a lot simpler
set_property(
TARGET ${BOOTSTRAP_LIB}
APPEND
PROPERTY BUILD_RPATH "\$ORIGIN/../rdc_modules/${RDC_RVS_LIB}")
PROPERTY BUILD_RPATH "\$ORIGIN/../rdc_modules/${RDC_RVS_LIB}"
)
# Set the VERSION and SOVERSION values
set_property(TARGET ${RDC_RVS_LIB} PROPERTY SOVERSION "${VERSION_MAJOR}")
@@ -56,12 +67,14 @@ if(BUILD_RVS)
add_custom_command(
TARGET ${RDC_RVS_LIB}
POST_BUILD
COMMAND ${CMAKE_STRIP} ${RDC_RVS_LIB_COMPONENT}.so)
COMMAND ${CMAKE_STRIP} ${RDC_RVS_LIB_COMPONENT}.so
)
endif()
# Install RVS config files into /opt/rocm/share/rdc/conf/rvs/
install(
DIRECTORY "${SRC_DIR}/conf/"
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/${RDC}/conf/rvs/
COMPONENT ${SERVER_COMPONENT})
COMPONENT ${SERVER_COMPONENT}
)
endif()
+15 -6
Просмотреть файл
@@ -42,8 +42,13 @@ message("")
set(SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src")
set(INC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/include")
include_directories(${INC_DIR} ${PROJECT_SOURCE_DIR}/include "${GRPC_ROOT}/include"
${PROJECT_SOURCE_DIR} ${AMD_SMI_INCLUDE_DIR})
include_directories(
${INC_DIR}
${PROJECT_SOURCE_DIR}/include
"${GRPC_ROOT}/include"
${PROJECT_SOURCE_DIR}
${AMD_SMI_INCLUDE_DIR}
)
set(RDCI_SRC_LIST
"${COMMON_DIR}/rdc_fields_supported.cc"
@@ -60,7 +65,8 @@ set(RDCI_SRC_LIST
"${SRC_DIR}/RdciSubSystem.cc"
"${SRC_DIR}/RdciTopologyLinkSubSystem.cc"
"${SRC_DIR}/RdciXgmiLinkStatusSubSystem.cc"
"${SRC_DIR}/rdci.cc")
"${SRC_DIR}/rdci.cc"
)
message("RDCI_SRC_LIST=${RDCI_SRC_LIST}")
set(RDCI_EXE "rdci")
@@ -70,8 +76,10 @@ add_executable(${RDCI_EXE} "${RDCI_SRC_LIST}")
target_compile_definitions(${RDCI_EXE} PRIVATE CURRENT_GIT_HASH=${GIT_HASH})
# help find librdc_bootstrap.so at runtime
set_target_properties(${RDCI_EXE} PROPERTIES INSTALL_RPATH
"\$ORIGIN/../lib:\$ORIGIN/../lib/rdc/grpc/lib")
set_target_properties(
${RDCI_EXE}
PROPERTIES INSTALL_RPATH "\$ORIGIN/../lib:\$ORIGIN/../lib/rdc/grpc/lib"
)
target_link_libraries(${RDCI_EXE} pthread dl gRPC::grpc++ rdc_bootstrap)
@@ -87,7 +95,8 @@ install(
WORLD_READ
WORLD_EXECUTE
DESTINATION ${CMAKE_INSTALL_BINDIR}
COMPONENT ${CLIENT_COMPONENT})
COMPONENT ${CLIENT_COMPONENT}
)
message("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&")
message(" Finished Cmake rdci ")
+30 -13
Просмотреть файл
@@ -40,8 +40,10 @@ message("")
# See:
# - https://github.com/llvm/llvm-project/issues/102443
# - https://github.com/abseil/abseil-cpp/issues/1747
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL
18.0.0)
if(
CMAKE_CXX_COMPILER_ID STREQUAL "Clang"
AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 18.0.0
)
message("Compiler is " ${CMAKE_CXX_COMPILER_ID} ":" ${CMAKE_CXX_COMPILER_VERSION})
message("Applying abi patch...")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fclang-abi-compat=17")
@@ -55,13 +57,22 @@ file(GLOB PROTOBUF_GENERATED_INCLUDES "${PROTOB_OUT_DIR}/*.h")
file(GLOB PROTOBUF_GENERATED_SRCS "${PROTOB_OUT_DIR}/*.cc")
include_directories(
${CMAKE_CURRENT_SOURCE_DIR}/include "${PROJECT_SOURCE_DIR}/include" "${GRPC_ROOT}/include"
"${PROTOB_OUT_DIR}" "${AMD_SMI_INCLUDE_DIR}" "${PROJECT_SOURCE_DIR}")
${CMAKE_CURRENT_SOURCE_DIR}/include
"${PROJECT_SOURCE_DIR}/include"
"${GRPC_ROOT}/include"
"${PROTOB_OUT_DIR}"
"${AMD_SMI_INCLUDE_DIR}"
"${PROJECT_SOURCE_DIR}"
)
set(SERVER_SRC_LIST
"${COMMON_DIR}/rdc_capabilities.cc" "${COMMON_DIR}/rdc_utils.cc" "${PROTOBUF_GENERATED_SRCS}"
"${SRC_DIR}/rdc_admin_service.cc" "${SRC_DIR}/rdc_api_service.cc"
"${SRC_DIR}/rdc_server_main.cc")
"${COMMON_DIR}/rdc_capabilities.cc"
"${COMMON_DIR}/rdc_utils.cc"
"${PROTOBUF_GENERATED_SRCS}"
"${SRC_DIR}/rdc_admin_service.cc"
"${SRC_DIR}/rdc_api_service.cc"
"${SRC_DIR}/rdc_server_main.cc"
)
message("SERVER_SRC_LIST=${SERVER_SRC_LIST}")
set(SERVER_DAEMON_EXE "rdcd")
@@ -76,8 +87,10 @@ add_executable(${SERVER_DAEMON_EXE} "${SERVER_SRC_LIST}")
target_compile_definitions(${SERVER_DAEMON_EXE} PRIVATE CURRENT_GIT_HASH=${GIT_HASH})
# help find librdc_bootstrap.so at runtime
set_target_properties(${SERVER_DAEMON_EXE}
PROPERTIES INSTALL_RPATH "\$ORIGIN/../lib:\$ORIGIN/../lib/rdc/grpc/lib")
set_target_properties(
${SERVER_DAEMON_EXE}
PROPERTIES INSTALL_RPATH "\$ORIGIN/../lib:\$ORIGIN/../lib/rdc/grpc/lib"
)
target_link_libraries(
${SERVER_DAEMON_EXE}
@@ -87,7 +100,8 @@ target_link_libraries(
cap
dl
amd_smi
rdc_bootstrap)
rdc_bootstrap
)
install(
TARGETS ${SERVER_DAEMON_EXE}
@@ -100,15 +114,18 @@ install(
WORLD_READ
WORLD_EXECUTE
DESTINATION ${CMAKE_INSTALL_BINDIR}
COMPONENT ${SERVER_COMPONENT})
COMPONENT ${SERVER_COMPONENT}
)
install(
FILES ${PROJECT_BINARY_DIR}/${SERVICE_FILE_NAME}
DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/${RDC}
COMPONENT ${SERVER_COMPONENT})
COMPONENT ${SERVER_COMPONENT}
)
install(
FILES ${PROJECT_BINARY_DIR}/${SERVER_CONFIG_FILE}
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/${RDC}/conf
COMPONENT ${SERVER_COMPONENT})
COMPONENT ${SERVER_COMPONENT}
)
message("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&")
message(" Finished Cmake Server ")
+15 -6
Просмотреть файл
@@ -26,17 +26,25 @@ message("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -m64 -msse -msse2")
set(CMAKE_CXX_FLAGS_DEBUG
"${CMAKE_CXX_FLAGS_DEBUG} -O0 -ggdb -DDEBUG"
CACHE STRING "Flags for Debug builds")
CACHE STRING
"Flags for Debug builds"
)
# note: no '-s' here unlike other CMakeLists.txt
set(CMAKE_CXX_FLAGS_RELEASE
"${CMAKE_CXX_FLAGS_RELEASE} -O2 -DNDEBUG"
CACHE STRING "Flags for Release builds")
CACHE STRING
"Flags for Release builds"
)
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO
"${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -O2 -g -DNDEBUG"
CACHE STRING "Flags for RelWithDebInfo builds")
CACHE STRING
"Flags for RelWithDebInfo builds"
)
set(CMAKE_CXX_FLAGS_MINSIZEREL
"${CMAKE_CXX_FLAGS_MINSIZEREL} -Os -DNDEBUG"
CACHE STRING "Flags for MinSizeRel builds")
CACHE STRING
"Flags for MinSizeRel builds"
)
# Required Defines first:
@@ -72,8 +80,9 @@ set(TEST_CLIENT_EXE "rdc_test_client")
add_executable(${TEST_CLIENT_EXE} "${EXAMPLE_SRC_LIST}")
target_include_directories(
${TEST_CLIENT_EXE} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/../../client/include"
"${AMD_SMI_INCLUDE_DIR}")
${TEST_CLIENT_EXE}
PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/../../client/include" "${AMD_SMI_INCLUDE_DIR}"
)
target_link_libraries(${TEST_CLIENT_EXE} rdc_client)
+10 -5
Просмотреть файл
@@ -47,7 +47,8 @@ include(FetchContent)
FetchContent_Declare(
googletest
GIT_REPOSITORY https://github.com/google/googletest.git
GIT_TAG v1.14.0)
GIT_TAG v1.14.0
)
FetchContent_MakeAvailable(googletest)
# Source files
@@ -66,7 +67,8 @@ target_include_directories(
${RDCTST}
PUBLIC ${PROJECT_SOURCE_DIR}/include
PUBLIC ${AMD_SMI_INCLUDE_DIR}
PUBLIC ${SRC_DIR}/..)
PUBLIC ${SRC_DIR}/..
)
target_link_libraries(
${RDCTST}
@@ -75,14 +77,17 @@ target_link_libraries(
PUBLIC GTest::gtest_main
PUBLIC c
PUBLIC stdc++
PUBLIC pthread)
PUBLIC pthread
)
install(
TARGETS ${RDCTST} gtest gtest_main
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/${RDC}/rdctst_tests
COMPONENT ${TESTS_COMPONENT})
COMPONENT ${TESTS_COMPONENT}
)
install(
FILES ${RDCTST}.exclude
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/${RDC}/rdctst_tests
COMPONENT ${TESTS_COMPONENT})
COMPONENT ${TESTS_COMPONENT}
)