mirror of https://gitlab.com/QEF/q-e.git
Merge branch 'remove-eigensolver_gpu' into 'develop'
[WIP] Remove eigensolver_gpu submodule and CMake See merge request QEF/q-e!1750
This commit is contained in:
commit
19aa41534d
|
@ -10,9 +10,6 @@
|
|||
[submodule "external/mbd"]
|
||||
path = external/mbd
|
||||
url = https://github.com/libmbd/libmbd.git
|
||||
[submodule "external/eigensolver_gpu"]
|
||||
path = external/eigensolver_gpu
|
||||
url = https://github.com/NVIDIA/Eigensolver_gpu.git
|
||||
[submodule "external/devxlib"]
|
||||
path = external/devxlib
|
||||
url = https://gitlab.com/max-centre/components/devicexlib.git
|
||||
|
|
|
@ -68,8 +68,6 @@ option(QE_ENABLE_CUDA
|
|||
"enable CUDA acceleration on NVIDIA GPUs" OFF)
|
||||
if(QE_ENABLE_CUDA)
|
||||
option(QE_ENABLE_OPENACC "enable OpenACC acceleration" ON)
|
||||
option(QE_ENABLE_LAXLIB_CUSOLVER
|
||||
"enable CUDA solver acceleration for LAXLib on NVIDIA GPUs" ON)
|
||||
# OpenMP enabled by default if CUDA is enable
|
||||
option(QE_ENABLE_OPENMP
|
||||
"enable distributed execution support via OpenMP" ON)
|
||||
|
@ -183,9 +181,6 @@ endif()
|
|||
if(QE_ENABLE_MPI_GPU_AWARE AND NOT (QE_ENABLE_CUDA AND QE_ENABLE_MPI))
|
||||
message(FATAL_ERROR "GPU aware MPI requires both MPI and CUDA features enabled")
|
||||
endif()
|
||||
if(QE_ENABLE_LAXLIB_CUSOLVER AND (NOT QE_ENABLE_CUDA))
|
||||
message(FATAL_ERROR "CUDA Solver for LAXLib requires CUDA support, enable it with '-DQE_ENABLE_CUDA=ON' or disable CUDA Solver for LAXLib with '-DQE_ENABLE_LAXLIB_CUSOLVER=OFF'")
|
||||
endif()
|
||||
# if(QE_ENABLE_HDF5 AND NOT QE_ENABLE_MPI)
|
||||
# message(FATAL_ERROR "HDF5 requires MPI support, enable it with '-DQE_ENABLE_MPI=ON' or disable HDF5 with '-DQE_ENABLE_HDF5=OFF'")
|
||||
# endif()
|
||||
|
|
|
@ -24,34 +24,25 @@ target_link_libraries(qe_lax
|
|||
qe_utilx
|
||||
qe_devxlib)
|
||||
if(QE_ENABLE_CUDA)
|
||||
if(QE_ENABLE_LAXLIB_CUSOLVER)
|
||||
if(CMAKE_Fortran_COMPILER_ID MATCHES "PGI" OR CMAKE_Fortran_COMPILER_ID MATCHES "NVHPC")
|
||||
set(CMAKE_REQUIRED_LINK_OPTIONS "${CUDA_FLAG}lib=cusolver;-fortranlibs")
|
||||
check_function_exists(cusolverDnZhegvdx cusolverDnZhegvdx_FOUND)
|
||||
if (NOT cusolverDnZhegvdx_FOUND)
|
||||
unset(cusolverDnZhegvdx_FOUND CACHE)
|
||||
message(FATAL_ERROR "The version of CUDAToolkit chosen by the PGI/NVHPC compiler internally"
|
||||
" doesn't contain cusolverDnZhegvdx. cuSOLVER features used by LAXLib are"
|
||||
" only supported since CUDAToolkit 10.1 release. Use a newer compiler or"
|
||||
" disable cuSOLVER in LAXLIB by '-DQE_ENABLE_LAXLIB_CUSOLVER=OFF'.")
|
||||
endif()
|
||||
else()
|
||||
if(CUDAToolkit_VERSION VERSION_LESS 10.1)
|
||||
message(FATAL_ERROR "cuSOLVER for LAXLib is only supported from CUDA compiler 10.1, disable it with '-DQE_ENABLE_LAXLIB_CUSOLVER=OFF'")
|
||||
endif()
|
||||
if(CMAKE_Fortran_COMPILER_ID MATCHES "PGI" OR CMAKE_Fortran_COMPILER_ID MATCHES "NVHPC")
|
||||
set(CMAKE_REQUIRED_LINK_OPTIONS "${CUDA_FLAG}lib=cusolver;-fortranlibs")
|
||||
check_function_exists(cusolverDnZhegvdx cusolverDnZhegvdx_FOUND)
|
||||
if (NOT cusolverDnZhegvdx_FOUND)
|
||||
unset(cusolverDnZhegvdx_FOUND CACHE)
|
||||
message(FATAL_ERROR "The version of CUDAToolkit chosen by the PGI/NVHPC compiler internally"
|
||||
" doesn't contain cusolverDnZhegvdx. cuSOLVER features used by LAXLib are"
|
||||
" only supported since CUDAToolkit 10.1 release. Use a newer compiler"
|
||||
" or select a newer CUDAToolkit internal to the PGI/NVHPC compiler.")
|
||||
endif()
|
||||
target_link_libraries(qe_lax
|
||||
PRIVATE
|
||||
CUDA::cusolver
|
||||
CUDA::cublas)
|
||||
set_property(TARGET qe_lax APPEND
|
||||
PROPERTY
|
||||
COMPILE_DEFINITIONS __USE_CUSOLVER)
|
||||
else()
|
||||
target_link_libraries(qe_lax
|
||||
PRIVATE
|
||||
qe_eigensolver_gpu)
|
||||
if(CUDAToolkit_VERSION VERSION_LESS 10.1)
|
||||
message(FATAL_ERROR "cuSOLVER for LAXLib is only supported from CUDA compiler 10.1")
|
||||
endif()
|
||||
endif()
|
||||
target_link_libraries(qe_lax
|
||||
PRIVATE
|
||||
CUDA::cusolver
|
||||
CUDA::cublas)
|
||||
endif()
|
||||
|
||||
# LAX relies on header files that should be preprocessed
|
||||
|
|
|
@ -6,6 +6,11 @@ qe_add_global_compile_definitions(__PGI)
|
|||
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -Mcache_align -Mlarge_arrays")
|
||||
|
||||
if(QE_ENABLE_CUDA)
|
||||
if(CMAKE_Fortran_COMPILER_VERSION VERSION_LESS 19.10)
|
||||
message(FATAL_ERROR "Compiler Version ${CMAKE_Fortran_COMPILER_VERSION}. "
|
||||
"GPU acceleration requires PGI 19.10 or NVIDIA HPC SDK 20.7 or higher!")
|
||||
endif()
|
||||
|
||||
if(CMAKE_Fortran_COMPILER_VERSION VERSION_GREATER_EQUAL 20.7)
|
||||
set(CUDA_FLAG "-cuda")
|
||||
else()
|
||||
|
|
|
@ -13,13 +13,6 @@ include(wannier90.cmake)
|
|||
###########################################################
|
||||
include(mbd.cmake)
|
||||
|
||||
###########################################################
|
||||
# Eigensolver_GPU
|
||||
###########################################################
|
||||
if(QE_ENABLE_CUDA AND NOT QE_ENABLE_LAXLIB_CUSOLVER)
|
||||
include(eigensolver_gpu.cmake)
|
||||
endif()
|
||||
|
||||
###########################################################
|
||||
# DeviceXlib
|
||||
###########################################################
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
Subproject commit d0197c76ae76bbf4d3fed20444fac31af550069d
|
|
@ -1,56 +0,0 @@
|
|||
###########################################################
|
||||
# Eigensolver_GPU
|
||||
###########################################################
|
||||
qe_git_submodule_update(external/eigensolver_gpu)
|
||||
|
||||
set(src_eigensolver_gpu
|
||||
eigensolver_gpu/lib_eigsolve/dsyevd_gpu.F90
|
||||
eigensolver_gpu/lib_eigsolve/dsygst_gpu.F90
|
||||
eigensolver_gpu/lib_eigsolve/dsygvdx_gpu.F90
|
||||
eigensolver_gpu/lib_eigsolve/dsymv_gpu.F90
|
||||
eigensolver_gpu/lib_eigsolve/dsytd2_gpu.F90
|
||||
eigensolver_gpu/lib_eigsolve/dsytrd_gpu.F90
|
||||
eigensolver_gpu/lib_eigsolve/eigsolve_vars.F90
|
||||
eigensolver_gpu/lib_eigsolve/toolbox.F90
|
||||
eigensolver_gpu/lib_eigsolve/zheevd_gpu.F90
|
||||
eigensolver_gpu/lib_eigsolve/zhegst_gpu.F90
|
||||
eigensolver_gpu/lib_eigsolve/zhegvdx_gpu.F90
|
||||
eigensolver_gpu/lib_eigsolve/zhemv_gpu.F90
|
||||
eigensolver_gpu/lib_eigsolve/zhetd2_gpu.F90
|
||||
eigensolver_gpu/lib_eigsolve/zhetrd_gpu.F90)
|
||||
|
||||
# See: https://github.com/NVIDIA/Eigensolver_gpu/blob/master/lib_eigsolve/Makefile
|
||||
# Comment: the flags "-O3 -mp -Mlarge_arrays" are inherited
|
||||
# from the global flags of PGI compiler
|
||||
set(FLAGS -pgf90libs -Mcuda)
|
||||
set(FLAGS2 -pgf90libs -Mcuda,maxregcount:64)
|
||||
if(NOT DEFINED CMAKE_CUDA_ARCHITECTURES)
|
||||
set(FLAGS3 -pgf90libs -Mcuda=cc35,cc60,nordc,maxregcount:255)
|
||||
elseif(CMAKE_CUDA_ARCHITECTURES GREATER 60)
|
||||
set(FLAGS3 -pgf90libs -Mcuda=cc60,nordc,maxregcount:255)
|
||||
else()
|
||||
set(FLAGS3 -pgf90libs -Mcuda=nordc,maxregcount:255)
|
||||
endif()
|
||||
set_source_files_properties(
|
||||
eigensolver_gpu/lib_eigsolve/dsyevd_gpu.F90
|
||||
eigensolver_gpu/lib_eigsolve/dsygst_gpu.F90
|
||||
eigensolver_gpu/lib_eigsolve/dsygvdx_gpu.F90
|
||||
eigensolver_gpu/lib_eigsolve/dsytd2_gpu.F90
|
||||
eigensolver_gpu/lib_eigsolve/dsytrd_gpu.F90
|
||||
eigensolver_gpu/lib_eigsolve/eigsolve_vars.F90
|
||||
eigensolver_gpu/lib_eigsolve/toolbox.F90
|
||||
eigensolver_gpu/lib_eigsolve/zheevd_gpu.F90
|
||||
eigensolver_gpu/lib_eigsolve/zhegst_gpu.F90
|
||||
eigensolver_gpu/lib_eigsolve/zhegvdx_gpu.F90
|
||||
eigensolver_gpu/lib_eigsolve/zhetrd_gpu.F90
|
||||
PROPERTIES COMPILE_OPTIONS "${FLAGS}")
|
||||
set_source_files_properties(eigensolver_gpu/lib_eigsolve/zhetd2_gpu.F90 eigensolver_gpu/lib_eigsolve/dsymv_gpu.F90
|
||||
PROPERTIES COMPILE_OPTIONS "${FLAGS2}")
|
||||
set_source_files_properties(eigensolver_gpu/lib_eigsolve/zhemv_gpu.F90 PROPERTIES COMPILE_OPTIONS "${FLAGS3}")
|
||||
|
||||
add_library(qe_eigensolver_gpu ${src_eigensolver_gpu})
|
||||
qe_fix_fortran_modules(qe_eigensolver_gpu)
|
||||
|
||||
target_link_libraries(qe_eigensolver_gpu PRIVATE qe_openmp_fortran qe_lapack CUDA::cusolver)
|
||||
|
||||
qe_install_targets(qe_eigensolver_gpu)
|
|
@ -1,6 +1,5 @@
|
|||
87685245bc5bc14f226fc18e5126305501b368e8 d3q
|
||||
a6b89ef77b1ceda48e967921f1f5488d2df9226d devxlib
|
||||
d0197c76ae76bbf4d3fed20444fac31af550069d eigensolver_gpu
|
||||
3453648e6837658b747b895bb7bef4b1ed2eac40 fox
|
||||
12d825396fcef1e0a1b27be9f119f9e554621e55 lapack
|
||||
82005cbb65bdf5d32ca021848eec8f19da956a77 mbd
|
||||
|
|
Loading…
Reference in New Issue