Check NVFORTRAN_CUDA_CC and NVFORTRAN_CUDA_VERSION together.

This commit is contained in:
Ye Luo 2021-11-20 12:25:12 -06:00
parent 5f9ebda198
commit 9fa77942e2
1 changed files with 10 additions and 17 deletions

View File

@ -1,4 +1,4 @@
include(CheckFortranSourceCompiles)
include(CheckFortranCompilerFlag)
qe_add_global_compile_definitions(__PGI)
@ -16,30 +16,23 @@ if(QE_ENABLE_CUDA)
set(QE_CUDA_LINK_OPTIONS ${CUDA_FLAG})
if(DEFINED NVFORTRAN_CUDA_VERSION)
set(CMAKE_REQUIRED_FLAGS "-Mfree ${CUDA_FLAG} -gpu=cuda${NVFORTRAN_CUDA_VERSION}")
check_fortran_source_compiles("program abc; end program" NVFORTRAN_CUDA_VERSION_VALID)
unset(CMAKE_REQUIRED_FLAGS)
if(NOT NVFORTRAN_CUDA_VERSION_VALID)
unset(NVFORTRAN_CUDA_VERSION_VALID CACHE)
message(FATAL_ERROR "nvfortran CUDA version check failed! "
"NVFORTRAN_CUDA_VERSION=${NVFORTRAN_CUDA_VERSION} (-gpu=cuda${NVFORTRAN_CUDA_VERSION}) not accepted")
endif()
list(APPEND QE_CUDA_COMPILE_OPTIONS "-gpu=cuda${NVFORTRAN_CUDA_VERSION}")
endif()
if(DEFINED NVFORTRAN_CUDA_CC)
set(CMAKE_REQUIRED_FLAGS "-Mfree ${CUDA_FLAG} -gpu=cc${NVFORTRAN_CUDA_CC}")
check_fortran_source_compiles("program abc; end program" NVFORTRAN_CUDA_CC_VALID)
unset(CMAKE_REQUIRED_FLAGS)
if(NOT NVFORTRAN_CUDA_CC_VALID)
unset(NVFORTRAN_CUDA_CC_VALID CACHE)
message(FATAL_ERROR "nvfortran GPU architecture check failed! "
"NVFORTRAN_CUDA_CC=${NVFORTRAN_CUDA_CC} (-gpu=cc${NVFORTRAN_CUDA_CC}) not accepted")
endif()
list(APPEND QE_CUDA_COMPILE_OPTIONS "-gpu=cc${NVFORTRAN_CUDA_CC}")
endif()
message(" nvfortran CUDA related compile and link options : ${QE_CUDA_COMPILE_OPTIONS}")
set(CMAKE_REQUIRED_LINK_OPTIONS ${QE_CUDA_LINK_OPTIONS})
check_fortran_compiler_flag("${QE_CUDA_COMPILE_OPTIONS}" NVFORTRAN_CUDA_VALID)
unset(CMAKE_REQUIRED_LINK_OPTIONS)
if(NOT NVFORTRAN_CUDA_VALID)
unset(NVFORTRAN_CUDA_VALID CACHE)
message(FATAL_ERROR "nvfortran CUDA related option check failed! "
"Please check CMakeError.log for the exact error.")
endif()
# CMake default CMAKE_Fortran_FLAGS_RELEASE as -fast -O3
# -O3 makes the CUDA runs fail at stres_us_gpu.f90, thus override
set(CMAKE_Fortran_FLAGS_RELEASE "-fast")