You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
87 lines
3.3 KiB
87 lines
3.3 KiB
if(NOT WITH_ROCM)
|
|
return()
|
|
endif()
|
|
|
|
if(NOT DEFINED ENV{ROCM_PATH})
|
|
set(ROCM_PATH "/opt/rocm" CACHE PATH "Path to which ROCm has been installed")
|
|
set(HIP_PATH ${ROCM_PATH}/hip CACHE PATH "Path to which HIP has been installed")
|
|
set(HIP_CLANG_PATH ${ROCM_PATH}/llvm/bin CACHE PATH "Path to which clang has been installed")
|
|
else()
|
|
set(ROCM_PATH $ENV{ROCM_PATH} CACHE PATH "Path to which ROCm has been installed")
|
|
set(HIP_PATH ${ROCM_PATH}/hip CACHE PATH "Path to which HIP has been installed")
|
|
set(HIP_CLANG_PATH ${ROCM_PATH}/llvm/bin CACHE PATH "Path to which clang has been installed")
|
|
endif()
|
|
set(CMAKE_MODULE_PATH "${HIP_PATH}/cmake" ${CMAKE_MODULE_PATH})
|
|
|
|
find_package(HIP REQUIRED)
|
|
include_directories(${ROCM_PATH}/include)
|
|
message(STATUS "HIP version: ${HIP_VERSION}")
|
|
message(STATUS "HIP_CLANG_PATH: ${HIP_CLANG_PATH}")
|
|
|
|
macro(find_package_and_include PACKAGE_NAME)
|
|
find_package("${PACKAGE_NAME}" REQUIRED)
|
|
include_directories("${ROCM_PATH}/${PACKAGE_NAME}/include")
|
|
message(STATUS "${PACKAGE_NAME} version: ${${PACKAGE_NAME}_VERSION}")
|
|
endmacro()
|
|
|
|
find_package_and_include(miopen)
|
|
find_package_and_include(rocblas)
|
|
find_package_and_include(hiprand)
|
|
find_package_and_include(rocrand)
|
|
find_package_and_include(rccl)
|
|
find_package_and_include(rocthrust)
|
|
find_package_and_include(hipcub)
|
|
find_package_and_include(rocprim)
|
|
find_package_and_include(hipsparse)
|
|
find_package_and_include(rocsparse)
|
|
find_package_and_include(rocfft)
|
|
|
|
# set CXX flags for HIP
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D__HIP_PLATFORM_HCC__")
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__HIP_PLATFORM_HCC__")
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DTHRUST_DEVICE_SYSTEM=THRUST_DEVICE_SYSTEM_HIP")
|
|
set(THRUST_DEVICE_SYSTEM THRUST_DEVICE_SYSTEM_HIP)
|
|
|
|
# define HIP_CXX_FLAGS
|
|
list(APPEND HIP_CXX_FLAGS -fPIC)
|
|
list(APPEND HIP_CXX_FLAGS -D__HIP_PLATFORM_HCC__=1)
|
|
list(APPEND HIP_CXX_FLAGS -D__HIP_NO_HALF_CONVERSIONS__=1)
|
|
list(APPEND HIP_CXX_FLAGS -Wno-macro-redefined)
|
|
list(APPEND HIP_CXX_FLAGS -Wno-inconsistent-missing-override)
|
|
list(APPEND HIP_CXX_FLAGS -Wno-exceptions)
|
|
list(APPEND HIP_CXX_FLAGS -Wno-shift-count-negative)
|
|
list(APPEND HIP_CXX_FLAGS -Wno-shift-count-overflow)
|
|
list(APPEND HIP_CXX_FLAGS -Wno-unused-command-line-argument)
|
|
list(APPEND HIP_CXX_FLAGS -Wno-duplicate-decl-specifier)
|
|
list(APPEND HIP_CXX_FLAGS -Wno-implicit-int-float-conversion)
|
|
list(APPEND HIP_CXX_FLAGS -Wno-pass-failed)
|
|
list(APPEND HIP_CXX_FLAGS -DTHRUST_DEVICE_SYSTEM=THRUST_DEVICE_SYSTEM_HIP)
|
|
list(APPEND HIP_CXX_FLAGS -std=c++14)
|
|
|
|
if(CMAKE_BUILD_TYPE MATCHES Debug)
|
|
list(APPEND HIP_CXX_FLAGS -g2)
|
|
list(APPEND HIP_CXX_FLAGS -O0)
|
|
list(APPEND HIP_HIPCC_FLAGS -fdebug-info-for-profiling)
|
|
endif(CMAKE_BUILD_TYPE MATCHES Debug)
|
|
|
|
set(HIP_HCC_FLAGS ${HIP_CXX_FLAGS})
|
|
set(HIP_CLANG_FLAGS ${HIP_CXX_FLAGS})
|
|
# Ask hcc to generate device code during compilation so we can use
|
|
# host linker to link.
|
|
list(APPEND HIP_HCC_FLAGS -fno-gpu-rdc)
|
|
list(APPEND HIP_HCC_FLAGS --amdgpu-target=gfx906)
|
|
list(APPEND HIP_CLANG_FLAGS -fno-gpu-rdc)
|
|
list(APPEND HIP_CLANG_FLAGS --amdgpu-target=gfx906)
|
|
|
|
|
|
if(HIP_COMPILER STREQUAL clang)
|
|
set(hip_library_name amdhip64)
|
|
else()
|
|
set(hip_library_name hip_hcc)
|
|
endif()
|
|
message(STATUS "HIP library name: ${hip_library_name}")
|
|
|
|
# set HIP link libs
|
|
find_library(ROCM_HIPRTC_LIB ${hip_library_name} HINTS ${HIP_PATH}/lib)
|
|
message(STATUS "ROCM_HIPRTC_LIB: ${ROCM_HIPRTC_LIB}")
|