diff --git a/CMakePresets.json b/CMakePresets.json index facf23187c44..93d5082399e6 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -73,7 +73,6 @@ "description": "use HIP back-end on AMD GPUs", "inherits": "develop", "cacheVariables": { - "CMAKE_CXX_COMPILER": "hipcc", "alpaka_ACC_CPU_B_SEQ_T_SEQ_ENABLE": "ON", "alpaka_ACC_GPU_HIP_ENABLE": "ON" } diff --git a/cmake/addExecutable.cmake b/cmake/addExecutable.cmake index 41b7e31200a3..f80f3ae8769f 100644 --- a/cmake/addExecutable.cmake +++ b/cmake/addExecutable.cmake @@ -41,7 +41,6 @@ macro(alpaka_add_executable In_Name) foreach(_file ${ARGN}) if((${_file} MATCHES "\\.cpp$") OR (${_file} MATCHES "\\.cxx$") OR - (${_file} MATCHES "\\.cu$") OR (${_file} MATCHES "\\.hip$") ) set_source_files_properties(${_file} PROPERTIES LANGUAGE HIP) diff --git a/cmake/addLibrary.cmake b/cmake/addLibrary.cmake index 43b87def5c5a..103b35630803 100644 --- a/cmake/addLibrary.cmake +++ b/cmake/addLibrary.cmake @@ -42,7 +42,6 @@ macro(alpaka_add_library libraryName) foreach(_file ${ARGN}) if((${_file} MATCHES "\\.cpp$") OR (${_file} MATCHES "\\.cxx$") OR - (${_file} MATCHES "\\.cu$") OR (${_file} MATCHES "\\.hip$") ) set_source_files_properties(${_file} PROPERTIES LANGUAGE HIP) diff --git a/cmake/alpakaCommon.cmake b/cmake/alpakaCommon.cmake index 74dce9fd0c87..ad2325196e1b 100644 --- a/cmake/alpakaCommon.cmake +++ b/cmake/alpakaCommon.cmake @@ -512,14 +512,32 @@ if(alpaka_ACC_GPU_HIP_ENABLE) if(CMAKE_HIP_COMPILER) enable_language(HIP) find_package(hip REQUIRED) - target_link_libraries(alpaka INTERFACE "$<$:hip::host") + + set(_alpaka_HIP_MIN_VER 5.1) + set(_alpaka_HIP_MAX_VER 6.0) + + # construct hip version only with major and minor level + # cannot use hip_VERSION because of the patch level + # 6.0 is smaller than 6.0.1234, so _alpaka_HIP_MAX_VER would have to be defined with a large patch level or + # the next minor level, e.g. 6.1, would have to be used. + set(_hip_MAJOR_MINOR_VERSION "${hip_VERSION_MAJOR}.${hip_VERSION_MINOR}") + + if(${_hip_MAJOR_MINOR_VERSION} VERSION_LESS ${_alpaka_HIP_MIN_VER} OR ${_hip_MAJOR_MINOR_VERSION} VERSION_GREATER ${_alpaka_HIP_MAX_VER}) + message(WARNING "HIP ${_hip_MAJOR_MINOR_VERSION} is not official supported by alpaka. Supported versions: ${_alpaka_HIP_MIN_VER} - ${_alpaka_HIP_MAX_VER}") + endif() + + + target_link_libraries(alpaka INTERFACE "$<$:hip::host>") + alpaka_set_compiler_options(HOST_DEVICE target alpaka "$<$:-D__HIP_PLATFORM_AMD__>") + # only required for HIP 5.1 and maybe older + alpaka_set_compiler_options(HOST_DEVICE target alpaka "$<$:-D__HIP_PLATFORM_HCC__>") alpaka_compiler_option(HIP_KEEP_FILES "Keep all intermediate files that are generated during internal compilation steps 'CMakeFiles/.dir'" OFF) if(alpaka_HIP_KEEP_FILES) alpaka_set_compiler_options(HOST_DEVICE target alpaka "$<$:SHELL:-save-temps>") endif() - if(alpaka_FAST_MATH) + if(alpaka_FAST_MATH STREQUAL ON) alpaka_set_compiler_options(DEVICE target alpaka "$<$:SHELL:-ffast-math>") endif() diff --git a/docs/source/advanced/cmake.rst b/docs/source/advanced/cmake.rst index df0541094943..3e12f4a1f340 100644 --- a/docs/source/advanced/cmake.rst +++ b/docs/source/advanced/cmake.rst @@ -322,7 +322,7 @@ alpaka_ACC_GPU_HIP_ONLY_MODE Only back-ends using HIP can be enabled in this mode. -GPU_TARGETS +CMAKE_HIP_ARCHITECTURES .. code-block:: Set the GPU architecture: e.g. "gfx900;gfx906;gfx908". diff --git a/script/install_hip.sh b/script/install_hip.sh index 9a1bd568146d..3d71095b54f1 100755 --- a/script/install_hip.sh +++ b/script/install_hip.sh @@ -73,7 +73,7 @@ fi if [ -z ${CI_GPU_ARCH+x} ] ; then # In case the runner is not providing a GPU architecture e.g. a CPU runner set the architecture # to Radeon VII or MI50/60. - export GPU_TARGETS="gfx906" + export CMAKE_HIP_ARCHITECTURES="gfx906" fi # environment overview