Mentions légales du service

Skip to content
Snippets Groups Projects
Commit d2b184f7 authored by PRUVOST Florent's avatar PRUVOST Florent
Browse files

cmake:

 - search rocm hipblas with the find_package config method
 - use the official target name from rocm: roc::hipblas
 - export CMAKE_PREFIX_PATH in CHAMELEONConfig.cmake to let users find rocm hipblas the same way
parent a0377dba
No related branches found
No related tags found
1 merge request!521Update submodules
Pipeline #1123633 failed
...@@ -427,10 +427,16 @@ if(NOT CHAMELEON_SIMULATION) ...@@ -427,10 +427,16 @@ if(NOT CHAMELEON_SIMULATION)
# CHAMELEON depends on HIP/HIPBLAS # CHAMELEON depends on HIP/HIPBLAS
#---------------------------------- #----------------------------------
if (CHAMELEON_USE_HIP) if (CHAMELEON_USE_HIP)
if (CHAMELEON_USE_HIP_ROC) if (CHAMELEON_USE_HIP_ROC)
find_package(HIP REQUIRED) # should define targets: hip::host, hip::device
find_package(hipblas REQUIRED) find_package(hip REQUIRED CONFIG)
message(STATUS "hip target found")
# should define targets: roc::hipblas
find_package(hipblas REQUIRED CONFIG)
message(STATUS "hipblas target found")
elseif(CHAMELEON_USE_HIP_CUDA) elseif(CHAMELEON_USE_HIP_CUDA)
...@@ -466,56 +472,49 @@ if(NOT CHAMELEON_SIMULATION) ...@@ -466,56 +472,49 @@ if(NOT CHAMELEON_SIMULATION)
if(CHAMELEON_HIPBLAS_PATH) if(CHAMELEON_HIPBLAS_PATH)
list(APPEND HIPBLAS_INCLUDE_DIRS "${CHAMELEON_HIPBLAS_PATH}/include") list(APPEND HIPBLAS_INCLUDE_DIRS "${CHAMELEON_HIPBLAS_PATH}/include")
list(APPEND HIPBLAS_LIBRARIES "${CHAMELEON_HIPBLAS_PATH}/lib/libhipblas.so") list(APPEND HIPBLAS_LIBRARIES "${CHAMELEON_HIPBLAS_PATH}/lib/libhipblas.so")
message(STATUS "HIPBLAS_INCLUDE_DIRS: ${HIP_INCLUDE_DIRS}")
message(STATUS "HIPBLAS_LIBRARIES: ${HIPBLAS_LIBRARIES}")
else() else()
message(FATAL_ERROR "Please set CHAMELEON_HIPBLAS_PATH to your HIPBLAS installation.") message(FATAL_ERROR "Please set CHAMELEON_HIPBLAS_PATH to your HIPBLAS installation.")
endif() endif()
endif()
if (HIP_FOUND)
message("-- ${Blue}Add definition CHAMELEON_USE_HIP"
" - Activate HIP in Chameleon${ColourReset}")
# create imported target because not provided with old cmake # create imported target because not provided with old cmake
add_library(HIP::HIP INTERFACE IMPORTED) add_library(hip::hip INTERFACE IMPORTED)
add_library(HIP::HIPBLAS INTERFACE IMPORTED) add_library(roc::hipblas INTERFACE IMPORTED)
target_compile_definitions(hip::hip INTERFACE "__HIP_PLATFORM_NVIDIA__")
if (CHAMELEON_USE_HIP_CUDA) set(HIP_INCLUDE_DIRS "${HIP_INCLUDE_DIRS};${CUDA_INCLUDE_DIRS}")
target_compile_definitions(HIP::HIP INTERFACE "__HIP_PLATFORM_NVIDIA__") set(HIP_LIBRARIES "${HIP_LIBRARIES};${CUDA_LIBRARIES}")
set(HIP_INCLUDE_DIRS "${HIP_INCLUDE_DIRS};${CUDA_INCLUDE_DIRS}")
set(HIP_LIBRARIES "${HIP_LIBRARIES};${CUDA_LIBRARIES}")
endif()
if (HIP_INCLUDE_DIRS) if (HIP_INCLUDE_DIRS)
set_target_properties(HIP::HIP PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${HIP_INCLUDE_DIRS}") set_target_properties(hip::hip PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${HIP_INCLUDE_DIRS}")
if (HIPBLAS_INCLUDE_DIRS) if (HIPBLAS_INCLUDE_DIRS)
set_target_properties(HIP::HIPBLAS PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${HIPBLAS_INCLUDE_DIRS}") set_target_properties(roc::hipblas PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${HIPBLAS_INCLUDE_DIRS}")
else() else()
message(WARNING "CHAMELEON_USE_HIP requires" message(WARNING "CHAMELEON_USE_HIP_CUDA requires"
"\n HIPBLAS_INCLUDE_DIRS to be found. Be sure you have" "\n HIPBLAS_INCLUDE_DIRS to be found. Be sure you have"
"\n hipblas headers with your distribution of HIP.") "\n hipblas headers with your distribution of HIP.")
endif() endif()
else() else()
message(WARNING "CHAMELEON_USE_HIP requires" message(WARNING "CHAMELEON_USE_HIP_CUDA requires"
"\n HIP_INCLUDE_DIRS to be found. Be sure you have" "\n HIP_INCLUDE_DIRS to be found. Be sure you have"
"\n hip headers with your distribution of HIP.") "\n hip headers with your distribution of HIP.")
endif() endif()
if (HIP_LIBRARIES) if (HIP_LIBRARIES)
set_target_properties(HIP::HIP PROPERTIES INTERFACE_LINK_LIBRARIES "${HIP_LIBRARIES}") set_target_properties(hip::hip PROPERTIES INTERFACE_LINK_LIBRARIES "${HIP_LIBRARIES}")
if (HIPBLAS_LIBRARIES) if (HIPBLAS_LIBRARIES)
set_target_properties(HIP::HIPBLAS PROPERTIES INTERFACE_LINK_LIBRARIES "${HIPBLAS_LIBRARIES}") set_target_properties(roc::hipblas PROPERTIES INTERFACE_LINK_LIBRARIES "${HIPBLAS_LIBRARIES}")
target_link_libraries(HIP::HIPBLAS INTERFACE HIP::HIP) target_link_libraries(roc::hipblas INTERFACE hip::hip)
message("-- ${Blue}Add definition CHAMELEON_USE_HIPBLAS"
" - Use GPU kernels from hipblas${ColourReset}")
else() else()
message(FATAL_ERROR "CHAMELEON_USE_HIP requires" message(FATAL_ERROR "CHAMELEON_USE_HIP_CUDA requires"
"\n HIPBLAS_LIBRARIES to be found. Be sure you have" "\n HIPBLAS_LIBRARIES to be found. Be sure you have"
"\n libhipblas with your distribution of HIP.") "\n libhipblas with your distribution of HIP.")
endif() endif()
else() else()
message(FATAL_ERROR "CHAMELEON_USE_HIP requires" message(FATAL_ERROR "CHAMELEON_USE_HIP_CUDA requires"
"\n HIP_LIBRARIES to be found. Be sure you have" "\n HIP_LIBRARIES to be found. Be sure you have"
"\n libamdhip64 with your distribution of ROCm.") "\n libamdhip64 with your distribution of ROCm.")
endif() endif()
if (CHAMELEON_USE_HIP_CUDA AND NOT CUDA_LIBRARIES) if (NOT CUDA_LIBRARIES)
message(FATAL_ERROR "CHAMELEON_USE_HIP_CUDA requires" message(FATAL_ERROR "CHAMELEON_USE_HIP_CUDA requires"
"\n CUDA_LIBRARIES to be found. Be sure you have" "\n CUDA_LIBRARIES to be found. Be sure you have"
"\n libcuda with your distribution of CUDA.") "\n libcuda with your distribution of CUDA.")
...@@ -531,17 +530,13 @@ if(NOT CHAMELEON_SIMULATION) ...@@ -531,17 +530,13 @@ if(NOT CHAMELEON_SIMULATION)
message("-- HIPBLAS include path: ${HIPBLAS_INCLUDE_DIRS}") message("-- HIPBLAS include path: ${HIPBLAS_INCLUDE_DIRS}")
message("-- HIPBLAS libraries: ${HIPBLAS_LIBRARIES}") message("-- HIPBLAS libraries: ${HIPBLAS_LIBRARIES}")
morse_export_imported_target(HIP::HIP hip chameleon) morse_export_imported_target(hip::hip hip chameleon)
morse_export_imported_target(HIP::HIPBLAS hipblas chameleon) morse_export_imported_target(roc::hipblas hipblas chameleon)
if (CHAMELEON_USE_HIP_ROC)
morse_export_imported_target(roc::hipblas rochipblas chameleon) endif()
morse_export_imported_target(hip::host hiphost chameleon)
morse_export_imported_target(hip::device hipdevice chameleon) message("-- ${Blue}Add definition CHAMELEON_USE_HIP"
morse_export_imported_target(hip::amdhip64 hipamdhip64 chameleon) " - Activate HIP in Chameleon${ColourReset}")
endif()
else(HIP_FOUND)
message(FATAL_ERROR "CHAMELEON_USE_HIP requires HIP to be found")
endif (HIP_FOUND)
endif(CHAMELEON_USE_HIP) endif(CHAMELEON_USE_HIP)
...@@ -801,10 +796,19 @@ set(BIN_INSTALL_DIR "bin/" CACHE STRING "where to install executables relative t ...@@ -801,10 +796,19 @@ set(BIN_INSTALL_DIR "bin/" CACHE STRING "where to install executables relative t
set(INC_INSTALL_DIR "include/" CACHE STRING "where to install headers relative to prefix" ) set(INC_INSTALL_DIR "include/" CACHE STRING "where to install headers relative to prefix" )
set(LIB_INSTALL_DIR "lib/" CACHE STRING "where to install libraries relative to prefix" ) set(LIB_INSTALL_DIR "lib/" CACHE STRING "where to install libraries relative to prefix" )
if (CMAKE_PREFIX_PATH)
list(APPEND PREFIX_PATH ${CMAKE_PREFIX_PATH})
endif()
if (DEFINED ENV{CMAKE_PREFIX_PATH})
set(ENV_PREFIX_PATH $ENV{CMAKE_PREFIX_PATH})
string(REGEX REPLACE ":" ";" ENV_PREFIX_PATH "${ENV_PREFIX_PATH}" )
list(APPEND PREFIX_PATH ${ENV_PREFIX_PATH})
endif()
configure_package_config_file(cmake_modules/CHAMELEONConfig.cmake.in configure_package_config_file(cmake_modules/CHAMELEONConfig.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/CHAMELEONConfig.cmake ${CMAKE_CURRENT_BINARY_DIR}/CHAMELEONConfig.cmake
INSTALL_DESTINATION ${LIB_INSTALL_DIR}/cmake/chameleon INSTALL_DESTINATION ${LIB_INSTALL_DIR}/cmake/chameleon
PATH_VARS BIN_INSTALL_DIR INC_INSTALL_DIR LIB_INSTALL_DIR) PATH_VARS BIN_INSTALL_DIR INC_INSTALL_DIR LIB_INSTALL_DIR PREFIX_PATH)
write_basic_package_version_file(CHAMELEONConfigVersion.cmake write_basic_package_version_file(CHAMELEONConfigVersion.cmake
VERSION ${CHAMELEON_VERSION} VERSION ${CHAMELEON_VERSION}
COMPATIBILITY AnyNewerVersion) COMPATIBILITY AnyNewerVersion)
......
...@@ -9,6 +9,9 @@ set_and_check(CHAMELEON_LIB_DIR "@PACKAGE_LIB_INSTALL_DIR@") ...@@ -9,6 +9,9 @@ set_and_check(CHAMELEON_LIB_DIR "@PACKAGE_LIB_INSTALL_DIR@")
check_required_components(CHAMELEON) check_required_components(CHAMELEON)
# propagate the CMAKE_PREFIX_PATH informations used during chameleon installation to give paths to dependencies
list(APPEND CMAKE_PREFIX_PATH "@PACKAGE_PREFIX_PATH@")
# dependencies of CHAMELEON # dependencies of CHAMELEON
include("${CMAKE_CURRENT_LIST_DIR}/mTargets.cmake") include("${CMAKE_CURRENT_LIST_DIR}/mTargets.cmake")
if (EXISTS "${CMAKE_CURRENT_LIST_DIR}/threadsTargets.cmake") if (EXISTS "${CMAKE_CURRENT_LIST_DIR}/threadsTargets.cmake")
...@@ -38,13 +41,13 @@ if (@CHAMELEON_USE_CUDA@ AND NOT @CHAMELEON_SIMULATION@) ...@@ -38,13 +41,13 @@ if (@CHAMELEON_USE_CUDA@ AND NOT @CHAMELEON_SIMULATION@)
include("${CMAKE_CURRENT_LIST_DIR}/cublasTargets.cmake") include("${CMAKE_CURRENT_LIST_DIR}/cublasTargets.cmake")
endif() endif()
if (@CHAMELEON_USE_HIP@ AND NOT @CHAMELEON_SIMULATION@) if (@CHAMELEON_USE_HIP@ AND NOT @CHAMELEON_SIMULATION@)
include("${CMAKE_CURRENT_LIST_DIR}/hipTargets.cmake")
include("${CMAKE_CURRENT_LIST_DIR}/hipblasTargets.cmake")
if (@CHAMELEON_USE_HIP_ROC@) if (@CHAMELEON_USE_HIP_ROC@)
include("${CMAKE_CURRENT_LIST_DIR}/rochipblasTargets.cmake") include(CMakeFindDependencyMacro)
include("${CMAKE_CURRENT_LIST_DIR}/hiphostTargets.cmake") find_dependency(hip REQUIRED)
include("${CMAKE_CURRENT_LIST_DIR}/hipdeviceTargets.cmake") find_dependency(hipblas REQUIRED)
include("${CMAKE_CURRENT_LIST_DIR}/hipamdhip64Targets.cmake") else ()
include("${CMAKE_CURRENT_LIST_DIR}/hipTargets.cmake")
include("${CMAKE_CURRENT_LIST_DIR}/hipblasTargets.cmake")
endif() endif()
endif() endif()
......
...@@ -375,7 +375,7 @@ endif() ...@@ -375,7 +375,7 @@ endif()
if (CHAMELEON_USE_HIP) if (CHAMELEON_USE_HIP)
if (NOT CHAMELEON_SIMULATION) if (NOT CHAMELEON_SIMULATION)
target_link_libraries(chameleon PUBLIC gpuhipblas) target_link_libraries(chameleon PUBLIC gpuhipblas)
target_link_libraries(chameleon PUBLIC HIP::HIPBLAS) target_link_libraries(chameleon PUBLIC roc::hipblas)
endif() endif()
endif() endif()
target_link_libraries(chameleon PUBLIC MORSE::M) target_link_libraries(chameleon PUBLIC MORSE::M)
......
...@@ -71,7 +71,7 @@ target_include_directories(gpuhipblas PUBLIC ...@@ -71,7 +71,7 @@ target_include_directories(gpuhipblas PUBLIC
set_property(TARGET gpuhipblas PROPERTY INSTALL_NAME_DIR "${CMAKE_INSTALL_PREFIX}/lib") set_property(TARGET gpuhipblas PROPERTY INSTALL_NAME_DIR "${CMAKE_INSTALL_PREFIX}/lib")
target_link_libraries(gpuhipblas PRIVATE coreblas) target_link_libraries(gpuhipblas PRIVATE coreblas)
target_link_libraries(gpuhipblas PUBLIC HIP::HIPBLAS) target_link_libraries(gpuhipblas PUBLIC roc::hipblas)
target_link_libraries(gpuhipblas PUBLIC MORSE::M) target_link_libraries(gpuhipblas PUBLIC MORSE::M)
# export target coreblas # export target coreblas
......
...@@ -405,7 +405,7 @@ if (NOT CHAMELEON_SIMULATION) ...@@ -405,7 +405,7 @@ if (NOT CHAMELEON_SIMULATION)
target_link_libraries(chameleon_starpu PUBLIC CUDA::CUBLAS) target_link_libraries(chameleon_starpu PUBLIC CUDA::CUBLAS)
endif() endif()
if (CHAMELEON_USE_HIP) if (CHAMELEON_USE_HIP)
target_link_libraries(chameleon_starpu PUBLIC HIP::HIPBLAS) target_link_libraries(chameleon_starpu PUBLIC roc::hipblas)
endif() endif()
endif() endif()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment