diff --git a/CMakeLists.txt b/CMakeLists.txt index d3d99f6e7c8..2c25a70ccfc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.18) +cmake_minimum_required(VERSION 3.24) # # Setting a cmake_policy to OLD is deprecated by definition and will raise a @@ -24,16 +24,6 @@ if(POLICY CMP0127) cmake_policy(SET CMP0127 NEW) endif() -# -# CMake 3.18+: CMAKE_CUDA_ARCHITECTURES -# https://cmake.org/cmake/help/latest/policy/CMP0104.html -# We have to migrate there, but maybe the new "native" option (CMake 3.24+) -# is what we want to wait for: -# https://cmake.org/cmake/help/v3.24/prop_tgt/CUDA_ARCHITECTURES.html -if(POLICY CMP0104) - cmake_policy(SET CMP0104 OLD) -endif() - # # Prevent in-source builds # diff --git a/Tools/CMake/AMReXCUDAOptions.cmake b/Tools/CMake/AMReXCUDAOptions.cmake index cce0306f4b9..79b06caee90 100644 --- a/Tools/CMake/AMReXCUDAOptions.cmake +++ b/Tools/CMake/AMReXCUDAOptions.cmake @@ -17,16 +17,7 @@ endmacro () # message(STATUS "Enabled CUDA options:") -set(AMReX_CUDA_ARCH_DEFAULT "Auto") -if(DEFINED CMAKE_CUDA_ARCHITECTURES) - set(AMReX_CUDA_ARCH_DEFAULT "${CMAKE_CUDA_ARCHITECTURES}") -endif () -if(DEFINED ENV{AMREX_CUDA_ARCH}) - set(AMReX_CUDA_ARCH_DEFAULT "$ENV{AMREX_CUDA_ARCH}") -endif() -set(AMReX_CUDA_ARCH ${AMReX_CUDA_ARCH_DEFAULT} CACHE STRING "CUDA architecture (Use 'Auto' for automatic detection)") - -option(AMReX_CUDA_FASTMATH "Enable CUDA fastmath" ON) # Note: inconsistent with AMReX_FASTMATH defaults +option(AMReX_CUDA_FASTMATH "Enable CUDA fastmath" ON) cuda_print_option( AMReX_CUDA_FASTMATH ) set(AMReX_CUDA_MAXREGCOUNT "255" CACHE STRING diff --git a/Tools/CMake/AMReXParallelBackends.cmake b/Tools/CMake/AMReXParallelBackends.cmake index 4119b1b2678..83d9d490814 100644 --- a/Tools/CMake/AMReXParallelBackends.cmake +++ b/Tools/CMake/AMReXParallelBackends.cmake @@ -109,8 +109,14 @@ if ( AMReX_GPU_BACKEND STREQUAL "CUDA" ) endforeach() - # Take care of cuda archs - set_cuda_architectures(AMReX_CUDA_ARCH) + # default to building for the architecture of the available GPU + set(AMREX_CUDA_ARCHS native) + + # but, if the user specifies architectures explicitly then use that instead + if (DEFINED CMAKE_CUDA_ARCHITECTURES) + set(AMREX_CUDA_ARCHS ${CMAKE_CUDA_ARCHITECTURES}) + endif() + foreach(D IN LISTS AMReX_SPACEDIM) set_target_properties(amrex_${D}d PROPERTIES