Fix typo in vdw functional name and various CMake issues

This commit is contained in:
Taillefumier Mathieu 2025-12-19 11:31:12 +01:00 committed by GitHub
parent 2a23ee716d
commit 388ddf7259
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 104 additions and 124 deletions

View file

@ -23,7 +23,6 @@ endif()
# =================================================================================================
# PROJECT AND VERSION
include(CMakeDependentOption)
include(GitSubmodule)
include(CustomTargets)
cmake_policy(SET CMP0048 NEW)
@ -55,7 +54,7 @@ if(NOT DEFINED CMAKE_CUDA_STANDARD)
endif()
if(NOT DEFINED CMAKE_CXX_STANDARD)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
endif()
@ -185,18 +184,18 @@ cmake_dependent_option(CP2K_USE_SIRIUS_NLCG "Enable nlcg method in SIRIUS" OFF
cmake_dependent_option(
CP2K_DBCSR_USE_CPU_ONLY "Disable the DBCSR accelerated backend" OFF
"NOT CP2K_USE_ACCEL MATCHES \"OPENCL\"" OFF)
"NOT CP2K_USE_ACCEL MATCHES \"OPENCL|HIP|CUDA\"" OFF)
cmake_dependent_option(
CP2K_ENABLE_DBM_GPU "Disable the dbm accelerated backend (mostly GPU)." ON
CP2K_ENABLE_DBM_GPU "Enable the dbm accelerated backend (mostly GPU)." ON
"CP2K_USE_ACCEL" OFF)
cmake_dependent_option(
CP2K_ENABLE_GRID_GPU "Disable acceleration for grid related functions." ON
CP2K_ENABLE_GRID_GPU "Enable acceleration for grid related functions." ON
"CP2K_USE_ACCEL MATCHES \"HIP|CUDA\"" OFF)
cmake_dependent_option(
CP2K_ENABLE_PW_GPU "Disable the ffts accelerated backend (mostly GPU)." ON
CP2K_ENABLE_PW_GPU "Enable the ffts accelerated backend (mostly GPU)." ON
"CP2K_USE_ACCEL MATCHES \"HIP|CUDA\"" OFF)
cmake_dependent_option(
@ -230,7 +229,21 @@ cmake_dependent_option(
set(CP2K_BLAS_VENDOR
"auto"
CACHE STRING "BLAS library for computations on host")
CACHE STRING "blas vendor/generic libraries")
set_property(
CACHE CP2K_BLAS_VENDOR
PROPERTY STRINGS
"auto"
"MKL"
"OpenBLAS"
"SCI"
"GenericBLAS"
"Armpl"
"FlexiBLAS"
"Atlas"
"NVHPCBlas"
"CUSTOM")
set(CP2K_SCALAPACK_VENDOR_LIST "MKL" "SCI" "GENERIC" "auto")
set(CP2K_SCALAPACK_VENDOR
@ -655,6 +668,9 @@ if(CP2K_USE_COSMA)
" COSMA needs to be build with scalapack offloading support. COSTA_SCALAPACK and COSMA_SCALAPACK should probably be set properly"
)
endif()
add_library(cp2k::cosma INTERFACE)
target_link_libraries(cp2k::cosma INTERFACE cosma::cosma_prefixed_pxgemm
cosma::cosma)
endif()
if(CP2K_USE_VORI)
@ -761,14 +777,10 @@ endif()
if(CP2K_USE_ACE)
find_package(ACE REQUIRED)
get_target_property(CP2K_ACE_INCLUDE_DIRS ACE::pace
get_target_property(CP2K_ACE_INCLUDE_DIRS cp2k::ACE
INTERFACE_INCLUDE_DIRECTORIES)
get_target_property(CP2K_ACE_LINK_LIBRARIES ACE::pace
get_target_property(CP2K_ACE_LINK_LIBRARIES cp2k::ACE
INTERFACE_LINK_LIBRARIES)
get_target_property(LIB_PATH ACE::yaml-cpp-pace INTERFACE_LINK_LIBRARIES)
list(APPEND CP2K_ACE_LINK_LIBRARIES ${LIB_PATH})
get_target_property(LIB_PATH ACE::cnpy INTERFACE_LINK_LIBRARIES)
list(APPEND CP2K_ACE_LINK_LIBRARIES ${LIB_PATH})
endif()
if(CP2K_USE_TBLITE)
@ -776,9 +788,10 @@ if(CP2K_USE_TBLITE)
find_package(toml-f REQUIRED)
find_package(s-dftd3 REQUIRED)
find_package(tblite REQUIRED)
add_library(cp2k::tblite INTERFACE IMPORTED)
target_link_libraries(
tblite::tblite INTERFACE mctc-lib::mctc-lib dftd4::dftd4 toml-f::toml-f
s-dftd3::s-dftd3)
cp2k::tblite INTERFACE tblite::tblite mctc-lib::mctc-lib dftd4::dftd4
toml-f::toml-f s-dftd3::s-dftd3)
endif()
# SIRIUS
@ -825,6 +838,10 @@ if(CP2K_USE_GREENX)
set(CMAKE_EXE_LINKER_FLAGS ${CMAKE_EXE_LINKER_FLAGS} "-L${GMP_LIBRARY_PATH}")
set(CMAKE_SHARED_LINKER_FLAGS ${CMAKE_SHARED_LINKER_FLAGS}
"-L${GMP_LIBRARY_PATH}")
add_library(cp2k::greenx INTERFACE IMPORTED)
target_link_libraries(cp2k::greenx INTERFACE greenX::GXCommon greenX::LibGXAC
greenX::LibGXMiniMax)
endif()
# OPTION HANDLING
@ -1003,9 +1020,11 @@ if(CP2K_USE_PEXSI)
endif()
if(CP2K_USE_ACE)
message(" - ACE\n" # keep line break
" - include directories: ${CP2K_ACE_INCLUDE_DIRS}\n"
" - libraries: ${CP2K_ACE_LINK_LIBRARIES}\n\n")
message(
" - ACE\n" # keep line break
" - include directories: ${CP2K_ACE_INCLUDE_DIRS}\n"
" - libraries: ${CP2K_ACE_LINK_LIBRARIES};${CP2K_ACE_YAML_LINK_LIBRARIES};${CP2K_ACE_CNPY_LINK_LIBRARIES}\n\n"
)
endif()
if(CP2K_USE_LIBSMEAGOL)

View file

@ -37,16 +37,14 @@ endif()
add_compile_options(
"$<$<COMPILE_LANG_AND_ID:Fortran,GNU>:-std=f2008;-ffree-form;-fimplicit-none>"
"$<$<COMPILE_LANG_AND_ID:Fortran,GNU>:-g;-fno-omit-frame-pointer;-fbacktrace>"
"$<$<COMPILE_LANG_AND_ID:Fortran,GNU>:$<$<VERSION_GREATER_EQUAL:${CMAKE_Fortran_COMPILER_VERSION},11>:-fallow-argument-mismatch>>"
"$<$<COMPILE_LANG_AND_ID:Fortran,GNU>:$<$<VERSION_GREATER:$<Fortran_COMPILER_VERSION>,10>:-fallow-argument-mismatch>>"
"$<$<COMPILE_LANG_AND_ID:Fortran,GNU>:-Wno-deprecated-declarations;-Wno-maybe-uninitialized;-Wuninitialized;-Wuse-without-only>"
)
add_compile_options(
"$<$<COMPILE_LANG_AND_ID:CXX,GNU>:--std=c++17>"
"$<$<COMPILE_LANG_AND_ID:CXX,GNU>:-g;-fno-omit-frame-pointer>"
"$<$<COMPILE_LANG_AND_ID:CXX,GNU>:-Wno-deprecated-declarations;-Wno-vla-parameter>"
)
add_compile_options(
"$<$<COMPILE_LANG_AND_ID:C,GNU>:-std=c11>"
"$<$<COMPILE_LANG_AND_ID:C,GNU>:-g;-fno-omit-frame-pointer>"
"$<$<COMPILE_LANG_AND_ID:C,GNU>:-Wno-deprecated-declarations;-Wno-vla-parameter>"
)

View file

@ -1,30 +0,0 @@
#!-------------------------------------------------------------------------------------------------!
#! CP2K: A general program to perform molecular dynamics simulations !
#! Copyright 2000-2025 CP2K developers group <https://cp2k.org> !
#! !
#! SPDX-License-Identifier: GPL-2.0-or-later !
#!-------------------------------------------------------------------------------------------------!
# Call to ensure that the git submodule in location `path` is loaded. If the
# submodule is not loaded, an error message that describes how to update the
# submodules is printed. Sets the variable name_avail to `ON` if the submodule
# is available, or `OFF` otherwise. copyright github.com/arbor-sim
function(check_git_submodule name path)
set(success_var "${name}_avail")
set(${success_var}
ON
PARENT_SCOPE)
get_filename_component(dotgit "${path}/.git" ABSOLUTE)
if(NOT EXISTS ${dotgit})
message(
FATAL_ERROR
"\nThe git submodule for ${name} is not available.\n"
"To check out all submodules use the following commands:\n"
" git submodule init\n"
" git submodule update\n"
"Or download submodules recursively when checking out:\n"
" git clone --recursive https://github.com/cp2k/cp2k.git\n")
endif()
endfunction()

View file

@ -12,42 +12,25 @@ cp2k_set_default_paths(ACE "ace")
cp2k_include_dirs(
ACE "ace/ace_couplings.h;ace-evaluator/ace_types.h;yaml-cpp/yaml.h")
find_package_handle_standard_args(ACE DEFAULT_MSG CP2K_ACE_INCLUDE_DIRS)
cp2k_find_libraries(ACE "pace")
find_package_handle_standard_args(ACE DEFAULT_MSG CP2K_ACE_LINK_LIBRARIES)
cp2k_find_libraries(ACE_YAML "yaml-cpp-pace")
find_package_handle_standard_args(ACE DEFAULT_MSG CP2K_ACE_YAML_LINK_LIBRARIES)
cp2k_find_libraries(ACE_CNPY "cnpy")
find_package_handle_standard_args(ACE DEFAULT_MSG CP2K_ACE_CNPY_LINK_LIBRARIES)
find_package_handle_standard_args(
ACE DEFAULT_MSG CP2K_ACE_LINK_LIBRARIES CP2K_ACE_CNPY_LINK_LIBRARIES
CP2K_ACE_INCLUDE_DIRS CP2K_ACE_YAML_LINK_LIBRARIES)
if(CP2K_ACE_FOUND)
if(NOT TARGET ACE::pace)
add_library(ACE::pace INTERFACE IMPORTED)
if(NOT TARGET cp2k::ACE)
add_library(cp2k::ACE INTERFACE IMPORTED)
endif()
set_target_properties(
ACE::pace
PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${CP2K_ACE_INCLUDE_DIRS}"
INTERFACE_LINK_LIBRARIES "${CP2K_ACE_LINK_LIBRARIES}")
endif()
if(CP2K_ACE_YAML_FOUND)
if(NOT TARGET ACE::yaml-cpp-pace)
add_library(ACE::yaml-cpp-pace INTERFACE IMPORTED)
endif()
set_target_properties(
ACE::yaml-cpp-pace PROPERTIES INTERFACE_LINK_LIBRARIES
"${CP2K_ACE_YAML_LINK_LIBRARIES}")
endif()
if(CP2K_ACE_CNPY_FOUND)
if(NOT TARGET ACE::cnpy)
add_library(ACE::cnpy INTERFACE IMPORTED)
endif()
set_target_properties(ACE::cnpy PROPERTIES INTERFACE_LINK_LIBRARIES
"${CP2K_ACE_CNPY_LINK_LIBRARIES}")
cp2k::ACE
PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${CP2K_ACE_INCLUDE_DIRS}"
INTERFACE_LINK_LIBRARIES
"${CP2K_ACE_LINK_LIBRARIES};${CP2K_ACE_YAML_LINK_LIBRARIES};${CP2K_ACE_CNPY_LINK_LIBRARIES}"
)
endif()
mark_as_advanced(CP2K_ACE_FOUND CP2K_ACE_INCLUDE_DIRS CP2K_ACE_LINK_LIBRARIES

View file

@ -9,13 +9,6 @@
#
# authors : Mathieu Taillefumier
if(NOT
(CMAKE_C_COMPILER_LOADED
OR CMAKE_CXX_COMPILER_LOADED
OR CMAKE_Fortran_COMPILER_LOADED))
message(FATAL_ERROR "FindBLAS requires Fortran, C, or C++ to be enabled.")
endif()
if(NOT CP2K_CONFIG_PACKAGE)
set(CP2K_BLAS_VENDOR_LIST
# cmake-format: sortable
@ -34,8 +27,6 @@ if(NOT CP2K_CONFIG_PACKAGE)
list(REMOVE_ITEM __BLAS_VENDOR_LIST "auto")
list(REMOVE_ITEM __BLAS_VENDOR_LIST "CUSTOM")
# set(CP2K_BLAS_VENDOR "auto" CACHE STRING "Blas library for computations on
# host")
set_property(CACHE CP2K_BLAS_VENDOR PROPERTY STRINGS ${CP2K_BLAS_VENDOR_LIST})
if(NOT ${CP2K_BLAS_VENDOR} IN_LIST CP2K_BLAS_VENDOR_LIST)
@ -152,3 +143,4 @@ mark_as_advanced(CP2K_BLAS_INCLUDE_DIRS)
mark_as_advanced(CP2K_BLAS_LINK_LIBRARIES)
mark_as_advanced(CP2K_BLAS_VENDOR)
mark_as_advanced(CP2K_BLAS_FOUND)
mark_as_advanced(CP2K_BLAS_VENDOR_LIST)

View file

@ -75,26 +75,28 @@ else()
CP2K_LIBXSMM_LINK_LIBRARIES)
endif()
if(NOT TARGET cp2k::LibXSMM::libxsmm)
foreach(__lib libxsmm libxsmmf libxsmmext libxsmmnoblas)
if(NOT TARGET cp2k::LibXSMM)
add_library(cp2k::LibXSMM INTERFACE IMPORTED)
foreach(__lib libxsmmf libxsmmext libxsmm libxsmmnoblas)
string(TOUPPER "CP2K_${__lib}" __lib_search_up)
if(${__lib_search_up}_FOUND AND NOT TARGET cp2k::LibXSMM::${__lib})
add_library(cp2k::LibXSMM::${__lib} INTERFACE IMPORTED)
target_link_directories(cp2k::LibXSMM::${__lib} INTERFACE
${${__lib_search_up}_LIBRARY_DIRS})
endif()
set_target_properties(
cp2k::LibXSMM::${__lib} PROPERTIES INTERFACE_LINK_LIBRARIES
"${${__lib_search_up}_LINK_LIBRARIES}")
if(CP2K_LIBXSMM_INCLUDE_DIRS)
set_target_properties(
cp2k::LibXSMM::${__lib}
PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
"${CP2K_LIBXSMM_INCLUDE_DIRS};${CP2K_LIBXSMM_PREFIX}/include"
)
PROPERTIES INTERFACE_LINK_LIBRARIES
"${${__lib_search_up}_LINK_LIBRARIES}")
if(CP2K_LIBXSMM_INCLUDE_DIRS)
set_target_properties(
cp2k::LibXSMM::${__lib}
PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES
"${CP2K_LIBXSMM_INCLUDE_DIRS};${CP2K_LIBXSMM_PREFIX}/include")
endif()
target_link_libraries(cp2k::LibXSMM INTERFACE cp2k::LibXSMM::${__lib})
endif()
endforeach()
endif()

View file

@ -1643,9 +1643,10 @@ set(CP2K_GPU_DFLAGS
# ##############################################################################
add_fypp_sources(CP2K_SRCS ${CP2K_SRCS_F})
add_fypp_sources(CP2K_PROGS_F_FYPP ${CP2K_PROGS_F})
# set the __SHORT_FILE__ per file for CP2K sources
foreach(cp2k_src ${CP2K_SRCS})
foreach(cp2k_src ${CP2K_SRCS} ${CP2K_PROGS_F_FYPP})
# add_fypp_sources returns a path in the current binary dir
file(RELATIVE_PATH short_file "${CMAKE_BINARY_DIR}/src" "${cp2k_src}")
set_source_files_properties(
@ -1721,14 +1722,8 @@ target_link_libraries(
$<$<BOOL:${CP2K_USE_DEEPMD}>:DeePMD::deepmd
DeePMD::deepmd_c>
$<$<BOOL:${CP2K_USE_PEXSI}>:PEXSI::PEXSI>
$<$<BOOL:${CP2K_USE_ACE}>:ACE::pace>
$<$<BOOL:${CP2K_USE_ACE}>:ACE::yaml-cpp-pace>
$<$<BOOL:${CP2K_USE_ACE}>:ACE::cnpy>
$<$<BOOL:${CP2K_USE_TBLITE}>:toml-f::toml-f>
$<$<BOOL:${CP2K_USE_TBLITE}>:s-dftd3::s-dftd3>
$<$<BOOL:${CP2K_USE_TBLITE}>:mctc-lib::mctc-lib>
$<$<BOOL:${CP2K_USE_TBLITE}>:dftd4::dftd4>
$<$<BOOL:${CP2K_USE_TBLITE}>:tblite::tblite>
$<$<BOOL:${CP2K_USE_ACE}>:cp2k::ACE>
$<$<BOOL:${CP2K_USE_TBLITE}>:cp2k::tblite>
$<$<BOOL:${CP2K_USE_SIRIUS}>:sirius::sirius>
$<$<BOOL:${CP2K_USE_VORI}>:cp2k::VORI::vori>
$<$<BOOL:${CP2K_USE_SPGLIB}>:Spglib::symspg>
@ -1741,12 +1736,9 @@ target_link_libraries(
$<$<AND:$<BOOL:${CP2K_USE_FFTW3_}>,$<BOOL:${CP2K_ENABLE_FFTW3_OPENMP_SUPPORT}>>:cp2k::FFTW3::fftw3_omp>
$<$<BOOL:${CP2K_USE_SPLA}>:SPLA::spla>
$<$<BOOL:${CP2K_USE_LIBINT2}>:cp2k::Libint2::int2>
$<$<BOOL:${CP2K_USE_COSMA}>:cosma::cosma_prefixed_pxgemm>
$<$<BOOL:${CP2K_USE_COSMA}>:cosma::cosma>
$<$<BOOL:${CP2K_USE_COSMA}>:cp2k::cosma>
$<$<BOOL:${CP2K_USE_DLAF}>:DLAF::Fortran>
$<$<BOOL:${CP2K_USE_GREENX}>:greenX::GXCommon>
$<$<BOOL:${CP2K_USE_GREENX}>:greenX::LibGXAC>
$<$<BOOL:${CP2K_USE_GREENX}>:greenX::LibGXMiniMax>
$<$<BOOL:${CP2K_USE_GREENX}>:cp2k::greenx>
$<$<BOOL:${CP2K_USE_TREXIO}>:cp2k::trexio::trexio>
$<$<BOOL:${CP2K_USE_HDF5}>:HDF5::HDF5
hdf5::hdf5_fortran>

View file

@ -18,7 +18,7 @@ MODULE input_cp2k_pwdft
USE SIRIUS, ONLY: &
sirius_option_get, &
sirius_option_get_section_length, sirius_option_get_info, &
SIRIUS_INTEGER_TYPE, SIRIUS_NUMBER_TYPE, SIRIUS_STRING_TYPE, &
SIRIUS_INTEGER_TYPE, SIRIUS_NUMBER_TYPE, SIRIUS_STRING_TYPE, SIRIUS_OBJECT_TYPE, &
SIRIUS_LOGICAL_TYPE, SIRIUS_ARRAY_TYPE, SIRIUS_INTEGER_ARRAY_TYPE, SIRIUS_LOGICAL_ARRAY_TYPE, &
SIRIUS_NUMBER_ARRAY_TYPE, SIRIUS_STRING_ARRAY_TYPE, string_f2c
#endif
@ -186,13 +186,13 @@ CONTAINS
CHARACTER(len=*), INTENT(in) :: section_name
CHARACTER(len=128) :: name
CHARACTER(len=128), TARGET :: possible_values(1:16)
CHARACTER(len=128), TARGET :: possible_values(1:256)
CHARACTER(len=4096) :: description, usage
INTEGER :: ctype, enum_i_val(1:16), enum_length, i, &
j, length, num_possible_values
INTEGER, ALLOCATABLE, DIMENSION(:), TARGET :: ivec
INTEGER :: ctype, enum_length, i, j, length, &
num_possible_values
INTEGER, ALLOCATABLE, DIMENSION(:), TARGET :: enum_i_val, ivec
INTEGER, TARGET :: dummy_i
LOGICAL :: lvecl(1:16)
LOGICAL :: jump_dft_parameters, lvecl(1:16)
LOGICAL(4), ALLOCATABLE, DIMENSION(:), TARGET :: lvec
LOGICAL(4), TARGET :: dummy_l
REAL(kind=dp), ALLOCATABLE, DIMENSION(:), TARGET :: rvec
@ -202,7 +202,8 @@ CONTAINS
ALLOCATE (ivec(1:16))
ALLOCATE (rvec(1:16))
ALLOCATE (lvec(1:16))
ALLOCATE (enum_i_val(1:256))
jump_dft_parameters = .FALSE.
#ifdef __LIBVDWXC
IF (section_name == "parameters") THEN
NULLIFY (keyword)
@ -238,10 +239,18 @@ CONTAINS
4096, &
usage, &
4096)
! description and usage are ignored here
! it is a minor inconvenience from the api.
name = TRIM(ADJUSTL(name))
#if defined(__SIRIUS_DFTD4)
! need to implement the object case within a section
IF (((section_name == 'dftd3') .OR. (section_name == 'dftd4')) .AND. (name == 'parameters')) THEN
CYCLE
END IF
#endif
! I exclude these three keywords because one of them is for debugging
! purpose the other are replaced by a dedicated call in cp2k
!
@ -403,10 +412,19 @@ CONTAINS
END IF
CALL section_add_keyword(section, keyword)
CALL keyword_release(keyword)
!CASE (SIRIUS_OBJECT_TYPE)
! create a subsection for the dftd3/dftd4 parameters
!CALL create_sirius_section(sub_section, sub_section_name)
!CALL section_add_subsection(section, sub_section)
!CALL section_release(sub_section)
CASE default
END SELECT
END IF
END DO
DEALLOCATE (ivec)
DEALLOCATE (rvec)
DEALLOCATE (lvec)
DEALLOCATE (enum_i_val)
END SUBROUTINE fill_in_section
! **************************************************************************************************

View file

@ -239,7 +239,7 @@ CONTAINS
CASE (SIRIUS_FUNC_VDWDF2)
CALL sirius_add_xc_functional(sctx, "XC_FUNC_VDWDF2")
CASE (SIRIUS_FUNC_VDWDFCX)
CALL sirius_add_xc_functional(sctx, "XC_FUNC_VDWDF2")
CALL sirius_add_xc_functional(sctx, "XC_FUNC_VDWDFCX")
CASE default
END SELECT
#endif
@ -681,6 +681,12 @@ CONTAINS
4096, &
usage, &
4096)
! ignore the keyword parametes for sections dftd3 and dftd4.
IF (((section_name == 'dftd3') .OR. (section_name == 'dftd4')) .AND. (option_name == 'parameters')) THEN
CYCLE
END IF
IF ((option_name /= 'memory_usage') .AND. (option_name /= 'xc_functionals') .AND. (option_name /= 'vk')) THEN
CALL section_vals_val_get(section, option_name, explicit=found)
IF (found) THEN