From 4a7b23b848cded5f59ccfcddac0cae224fcac720 Mon Sep 17 00:00:00 2001 From: anusha GodavarthySurya Date: Mon, 4 Oct 2021 04:01:28 -0700 Subject: [PATCH] SWDEV-287830 - Remove hardcoding of /opt/rocm path Change-Id: I3b654f46d8867651734804f19a4456e17ada740d [ROCm/clr commit: 63cd524f1df6181e85c07960e11238b85eb20192] --- projects/clr/hipamd/CMakeLists.txt | 39 ++++++++++--------------- projects/clr/hipamd/INSTALL.md | 2 +- projects/clr/hipamd/hip-config.cmake.in | 2 +- projects/clr/hipamd/install.sh | 3 +- projects/clr/hipamd/src/CMakeLists.txt | 8 ++--- 5 files changed, 23 insertions(+), 31 deletions(-) diff --git a/projects/clr/hipamd/CMakeLists.txt b/projects/clr/hipamd/CMakeLists.txt index b1ab39e7f6..94e4feac28 100755 --- a/projects/clr/hipamd/CMakeLists.txt +++ b/projects/clr/hipamd/CMakeLists.txt @@ -21,17 +21,18 @@ cmake_minimum_required(VERSION 3.16.8) project(hip) # sample command for hip-rocclr runtime, you'll need to have rocclr built +# ROCM_PATH is the path where ROCM is installed # For shared lib of hip-rocclr runtime # For release version -# cmake -DHIP_COMMON_DIR="$HIP_DIR" -DAMD_OPENCL_PATH=$OPENCL_DIR -DROCCLR_PATH=$ROCCLR_DIR -DCMAKE_PREFIX_PATH="/opt/rocm/" -DCMAKE_INSTALL_PREFIX= .. +# cmake -DHIP_COMMON_DIR="$HIP_DIR" -DAMD_OPENCL_PATH=$OPENCL_DIR -DROCCLR_PATH=$ROCCLR_DIR -DCMAKE_PREFIX_PATH="/" -DCMAKE_INSTALL_PREFIX= .. # For debug version -# cmake -DHIP_COMMON_DIR="$HIP_DIR" -DAMD_OPENCL_PATH=$OPENCL_DIR -DROCCLR_PATH=$ROCCLR_DIR -DCMAKE_PREFIX_PATH="/opt/rocm/" -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX= .. +# cmake -DHIP_COMMON_DIR="$HIP_DIR" -DAMD_OPENCL_PATH=$OPENCL_DIR -DROCCLR_PATH=$ROCCLR_DIR -DCMAKE_PREFIX_PATH="/" -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX= .. # For static lib of hip-rocclr runtime # For release version -# cmake -DHIP_COMMON_DIR="$HIP_DIR" -DAMD_OPENCL_PATH=$OPENCL_DIR -DROCCLR_PATH=$ROCCLR_DIR -DBUILD_SHARED_LIBS=OFF -DCMAKE_PREFIX_PATH="/opt/rocm/" -DCMAKE_INSTALL_PREFIX= .. +# cmake -DHIP_COMMON_DIR="$HIP_DIR" -DAMD_OPENCL_PATH=$OPENCL_DIR -DROCCLR_PATH=$ROCCLR_DIR -DBUILD_SHARED_LIBS=OFF -DCMAKE_PREFIX_PATH="/" -DCMAKE_INSTALL_PREFIX= .. # For debug version -# cmake -DHIP_COMMON_DIR="$HIP_DIR" -DAMD_OPENCL_PATH=$OPENCL_DIR -DROCCLR_PATH=$ROCCLR_DIR -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Debug -DCMAKE_PREFIX_PATH="/opt/rocm/" -DCMAKE_INSTALL_PREFIX= .. -# If you don't specify CMAKE_INSTALL_PREFIX, hip-rocclr runtime will be installed to "/opt/rocm/hip". +# cmake -DHIP_COMMON_DIR="$HIP_DIR" -DAMD_OPENCL_PATH=$OPENCL_DIR -DROCCLR_PATH=$ROCCLR_DIR -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Debug -DCMAKE_PREFIX_PATH="/" -DCMAKE_INSTALL_PREFIX= .. +# If you don't specify CMAKE_INSTALL_PREFIX, hip-rocclr runtime will be installed to "/hip". # By default, CMake will search for a folder named vdi or ROCclr relative to the current path. Specify -DROCCLR_PATH=$ROCCLR_DIR if rocclr source is in obscure location. # By default, CMake will search for a folder named opencl or ROCm-OpenCL-Runtime relative to the current path. Specify -DAMD_OPENCL_PATH=$OPENCL_DIR if opencl source is in obscure location. list(APPEND CMAKE_MODULE_PATH ${HIP_COMMON_DIR}/cmake) @@ -229,9 +230,14 @@ if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "Release") endif() +if (NOT DEFINED ROCM_PATH ) + set ( ROCM_PATH "/opt/rocm" CACHE STRING "Default ROCM installation directory." ) +endif () +message (STATUS "ROCM Installation path(ROCM_PATH): ${ROCM_PATH}") + # Determine HIP install path if (UNIX) - set(HIP_DEFAULT_INSTALL_PREFIX "/opt/rocm/hip") + set(HIP_DEFAULT_INSTALL_PREFIX "${ROCM_PATH}/hip") endif() if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) set(CMAKE_INSTALL_PREFIX ${HIP_DEFAULT_INSTALL_PREFIX} CACHE PATH "Installation path for HIP" FORCE) @@ -241,7 +247,7 @@ if(DEV_LOG_ENABLE MATCHES "yes") add_definitions(-DDEV_LOG_ENABLE) endif() -# Set default install path as "/opt/rocm/hip", can override the path from cmake build. +# Set default install path as "${ROCM_PATH}/hip", can override the path from cmake build. set(CPACK_INSTALL_PREFIX ${HIP_DEFAULT_INSTALL_PREFIX} CACHE PATH "Package Installation path for HIP") if(IS_ABSOLUTE ${CMAKE_INSTALL_PREFIX}) @@ -250,15 +256,10 @@ else() message(FATAL_ERROR "Don't know where to install HIP. Please specify absolute path using -DCMAKE_INSTALL_PREFIX") endif() -if (NOT DEFINED ROCM_PATH ) - set ( ROCM_PATH "/opt/rocm" CACHE STRING "Default ROCM installation directory." ) -endif () -message (STATUS "ROCM Installation path(ROCM_PATH): ${ROCM_PATH}") - # set the installation path for the installer package set(CPACK_SET_DESTDIR ON CACHE BOOL "Installer package will install hip to CMAKE_INSTALL_PREFIX instead of CPACK_PACKAGING_INSTALL_PREFIX") if (NOT CPACK_SET_DESTDIR) - set(CPACK_PACKAGING_INSTALL_PREFIX "/opt/rocm/hip" CACHE PATH "Default installation path of hcc installer package") + set(CPACK_PACKAGING_INSTALL_PREFIX "${ROCM_PATH}/hip" CACHE PATH "Default installation path of hcc installer package") endif (NOT CPACK_SET_DESTDIR) ############################# @@ -463,16 +464,6 @@ if(POLICY CMP0037) endif() endif() -############################# -# Code analysis -############################# -# Target: cppcheck -find_program(CPPCHECK_EXE cppcheck) -if(CPPCHECK_EXE) - add_custom_target(cppcheck COMMAND ${CPPCHECK_EXE} --force --quiet --enable=warning,performance,portability,information,missingInclude src include -I /opt/rocm/include/hcc -I /opt/rocm/include --suppress=*:/opt/rocm/include/hcc/hc.hpp - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) -endif() - ############################# # Code formatting ############################# @@ -519,7 +510,7 @@ endif() # Target: clang if(HIP_HIPCC_EXECUTABLE) add_custom_target(analyze - COMMAND ${HIP_HIPCC_EXECUTABLE} -fvisibility=hidden -fvisibility-inlines-hidden --analyze --analyzer-outputtext -isystem /opt/rocm/include -Wno-unused-command-line-argument -I/opt/rocm/include -c src/*.cpp -Iinclude/ -I./ + COMMAND ${HIP_HIPCC_EXECUTABLE} -fvisibility=hidden -fvisibility-inlines-hidden --analyze --analyzer-outputtext -isystem ${ROCM_PATH}/include -Wno-unused-command-line-argument -I${ROCM_PATH}/include -c src/*.cpp -Iinclude/ -I./ WORKING_DIRECTORY ${HIP_SRC_PATH}) if(CPPCHECK_EXE) add_dependencies(analyze cppcheck) diff --git a/projects/clr/hipamd/INSTALL.md b/projects/clr/hipamd/INSTALL.md index 1d365ead70..bd829a90ce 100644 --- a/projects/clr/hipamd/INSTALL.md +++ b/projects/clr/hipamd/INSTALL.md @@ -27,7 +27,7 @@ Commands to build hipamd are as following, ```bash cd "$HIPAMD_DIR" mkdir -p build; cd build -cmake -DHIP_COMMON_DIR=$HIP_DIR -DAMD_OPENCL_PATH=$OPENCL_DIR -DROCCLR_PATH=$ROCCLR_DIR -DCMAKE_PREFIX_PATH="/opt/rocm/" -DCMAKE_INSTALL_PREFIX=$PWD/install .. +cmake -DHIP_COMMON_DIR=$HIP_DIR -DAMD_OPENCL_PATH=$OPENCL_DIR -DROCCLR_PATH=$ROCCLR_DIR -DCMAKE_PREFIX_PATH="/" -DCMAKE_INSTALL_PREFIX=$PWD/install .. make -j$(nproc) sudo make install ``` diff --git a/projects/clr/hipamd/hip-config.cmake.in b/projects/clr/hipamd/hip-config.cmake.in index 2edce6cd01..7541437828 100755 --- a/projects/clr/hipamd/hip-config.cmake.in +++ b/projects/clr/hipamd/hip-config.cmake.in @@ -188,7 +188,7 @@ if(NOT WIN32) find_path(HSA_HEADER hsa/hsa.h PATHS "${_IMPORT_PREFIX}/../include" - /opt/rocm/include + ${ROCM_PATH}/include ) if (HSA_HEADER-NOTFOUND) diff --git a/projects/clr/hipamd/install.sh b/projects/clr/hipamd/install.sh index 2e608e78d8..aae947f9ab 100755 --- a/projects/clr/hipamd/install.sh +++ b/projects/clr/hipamd/install.sh @@ -71,6 +71,7 @@ SRC_ROOT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" WORKING_DIR=$PWD DASH_JAY="-j $(getconf _NPROCESSORS_ONLN)" OS_NAME="$(cat /etc/os-release | awk -F '=' '/^NAME/{print $2}' | awk '{print $1}' | tr -d '"')" +[[ -z "$ROCM_PATH" ]] && ROCM_PATH=/opt/rocm err() { echo "${1-Died}." >&2 @@ -109,7 +110,7 @@ function buildHIP() HIP_BUILD_DIR="$BUILD_ROOT/hip_build" mkdir $HIP_BUILD_DIR pushd $HIP_BUILD_DIR - cmake $SRC_ROOT -DHIP_COMMON_DIR="$HIP_DIR" -DAMD_OPENCL_PATH=$OPENCL_DIR -DROCCLR_PATH=$ROCCLR_DIR -DCMAKE_PREFIX_PATH="/opt/rocm" -DCMAKE_BUILD_TYPE=Release + cmake $SRC_ROOT -DHIP_COMMON_DIR="$HIP_DIR" -DAMD_OPENCL_PATH=$OPENCL_DIR -DROCCLR_PATH=$ROCCLR_DIR -DCMAKE_PREFIX_PATH="$ROCM_PATH" -DCMAKE_BUILD_TYPE=Release make $DASH_JAY make package if [ "$OS_NAME" == "Ubuntu" ] diff --git a/projects/clr/hipamd/src/CMakeLists.txt b/projects/clr/hipamd/src/CMakeLists.txt index fb4ccada11..1afbf216f5 100644 --- a/projects/clr/hipamd/src/CMakeLists.txt +++ b/projects/clr/hipamd/src/CMakeLists.txt @@ -162,7 +162,7 @@ endif() if(__HIP_ENABLE_PCH) find_package(LLVM REQUIRED CONFIG PATHS - /opt/rocm/llvm) + ${ROCM_PATH}/llvm) # find_package(LLVM) returns the lib/cmake/llvm location. We require the root. if(NOT DEFINED HIP_LLVM_ROOT) set(HIP_LLVM_ROOT "${LLVM_DIR}/../../..") @@ -182,8 +182,8 @@ if(__HIP_ENABLE_RTC) message(STATUS "HIP RTC enabled.") include(HIPRTC RESULT_VARIABLE HIPRTC_CMAKE) # Requires clang and llvm-mc to create this library. - find_package(LLVM REQUIRED CONFIG PATHS /opt/rocm/llvm) - find_package(Clang REQUIRED CONFIG PATHS /opt/rocm/llvm) + find_package(LLVM REQUIRED CONFIG PATHS ${ROCM_PATH}/llvm) + find_package(Clang REQUIRED CONFIG PATHS ${ROCM_PATH}/llvm) set(HIPRTC_GEN_DIR "${CMAKE_CURRENT_BINARY_DIR}/hip_rtc_gen") set(HIPRTC_GEN_HEADER "${HIPRTC_GEN_DIR}/hipRTC_header.h") set(HIPRTC_GEN_MCIN "${HIPRTC_GEN_DIR}/hipRTC_header.mcin") @@ -309,7 +309,7 @@ target_link_libraries(host INTERFACE amdhip64) add_library(device INTERFACE) target_link_libraries(device INTERFACE host) -# Current packaging assumes that HIP runtime will always be installed in /opt/rocm/lib +# Current packaging assumes that HIP runtime will always be installed in ${ROCM_PATH}/lib # This is false to assume, because some distros like CentOS will use the lib64 directory instead of lib # Relying on CMake to choose the library directory for us will default in that case to lib64 # Hence there will be a mismatch between where HIP is installed and where CMake thinks it is