@@ -23,8 +23,8 @@ option(USE_ABACUS_LIBM "Build libmath from source to speed up" OFF)
2323option (ENABLE_LIBXC "Enable using the LibXC package" OFF )
2424option (ENABLE_FLOAT_FFTW "Enable using single-precision FFTW library." OFF )
2525
26- # option(ENABLE_DEEPKS "Enable the DeePKS algorithm" OFF)
27- # option(ENABLE_MLKEDF "Enable the Machine-Learning-based KEDF for OFDFT" OFF)
26+ # option(ENABLE_DEEPKS "Enable the DeePKS algorithm" OFF) option(ENABLE_MLKEDF
27+ # "Enable the Machine-Learning-based KEDF for OFDFT" OFF)
2828
2929option (ENABLE_MLALGO "Enable the machine learning algorithms" OFF )
3030
@@ -51,7 +51,8 @@ option(ENABLE_GOOGLEBENCH "Enable GOOGLE-benchmark usage" OFF)
5151option (ENABLE_RAPIDJSON "Enable rapid-json usage" OFF )
5252option (ENABLE_CNPY "Enable cnpy usage" OFF )
5353option (ENABLE_CUSOLVERMP "Enable cusolvermp" OFF )
54- option (ENABLE_NCCL_PARALLEL_DEVICE "Enable NCCL-backed collectives in parallel_device" OFF )
54+ option (ENABLE_NCCL_PARALLEL_DEVICE
55+ "Enable NCCL-backed collectives in parallel_device" OFF )
5556
5657if (NOT DEFINED NVHPC_ROOT_DIR AND DEFINED ENV{NVHPC_ROOT})
5758 set (NVHPC_ROOT_DIR
@@ -70,8 +71,7 @@ if(ENABLE_RAPIDJSON)
7071 include (FetchContent )
7172 FetchContent_Declare (
7273 rapidjson
73- URL https://codeload.github.com/Tencent/rapidjson/tar.gz/24b5e7a
74- )
74+ URL https://codeload.github.com/Tencent/rapidjson/tar.gz/24b5e7a)
7575 set (RAPIDJSON_BUILD_TESTS
7676 OFF
7777 CACHE INTERNAL "" )
@@ -145,7 +145,7 @@ if(ENABLE_LCAO)
145145 set (ABACUS_BIN_NAME abacus_max_gpu)
146146 endif ()
147147 endif ()
148- # Case: CPU is enabled (suffix with 'p' for parallel)
148+ # Case: CPU is enabled (suffix with 'p' for parallel)
149149 else ()
150150 if (ENABLE_MPI)
151151 if (NOT ENABLE_LIBRI AND NOT ENABLE_MLALGO)
@@ -169,7 +169,7 @@ if(ENABLE_LCAO)
169169 endif ()
170170 endif ()
171171 endif ()
172- # Case : PW only
172+ # Case : PW only
173173else ()
174174 if (USE_CUDA)
175175 if (ENABLE_MPI)
@@ -184,18 +184,17 @@ else()
184184 endif ()
185185endif ()
186186
187-
188187# Use DSP hardware
189- if (USE_DSP)
188+ if (USE_DSP)
190189 set (USE_ELPA OFF )
191190 set (ABACUS_BIN_NAME abacus_dsp)
192191endif ()
193192
194- if (USE_CUDA_ON_DCU)
193+ if (USE_CUDA_ON_DCU)
195194 add_compile_definitions (__CUDA_ON_DCU )
196195endif ()
197196
198- if (USE_CUDA_MPI)
197+ if (USE_CUDA_MPI)
199198 add_compile_definitions (__CUDA_MPI )
200199endif ()
201200
@@ -210,11 +209,11 @@ if(ENABLE_COVERAGE)
210209 GIT_REPOSITORY https://github.com/RWTH-HPC/CMake-codecov.git
211210 GIT_TAG master
212211 GIT_SHALLOW TRUE
213- GIT_PROGRESS TRUE
214- )
212+ GIT_PROGRESS TRUE )
215213 FetchContent_Populate (cmakecodecov)
216214 list (APPEND CMAKE_MODULE_PATH ${cmakecodecov_SOURCE_DIR} /cmake)
217- set (CMAKE_MODULE_PATH "${cmakecodecov_SOURCE_DIR} /cmake" ${CMAKE_MODULE_PATH} )
215+ set (CMAKE_MODULE_PATH "${cmakecodecov_SOURCE_DIR} /cmake"
216+ ${CMAKE_MODULE_PATH} )
218217 find_package (codecov REQUIRED )
219218 endif ()
220219endif ()
@@ -235,7 +234,6 @@ if(ENABLE_COVERAGE)
235234 add_coverage (${ABACUS_BIN_NAME} )
236235endif ()
237236
238-
239237macro (set_if_higher VARIABLE VALUE )
240238 if (${VARIABLE} LESS ${VALUE} )
241239 set (${VARIABLE} ${VALUE} )
@@ -275,9 +273,7 @@ if(CMAKE_CXX_COMPILER_ID MATCHES Intel)
275273 # stick to strict floating point model on Intel Compiler
276274 add_compile_options (-fp-model=strict )
277275 set (USE_ABACUS_LIBM OFF ) # Force turn off USE_ABACUS_LIBM on Intel Compiler
278- set (CMAKE_CXX_FLAGS
279- "${CMAKE_CXX_FLAGS} -Wno-write-strings "
280- )
276+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-write-strings " )
281277endif ()
282278
283279if (USE_ABACUS_LIBM)
@@ -306,7 +302,9 @@ if(ENABLE_LCAO)
306302
307303 if (ENABLE_PEXSI)
308304 find_package (PEXSI REQUIRED )
309- target_link_libraries (${ABACUS_BIN_NAME} ${PEXSI_LIBRARY} ${SuperLU_DIST_LIBRARY} ${ParMETIS_LIBRARY} ${METIS_LIBRARY} pexsi )
305+ target_link_libraries (
306+ ${ABACUS_BIN_NAME} ${PEXSI_LIBRARY} ${SuperLU_DIST_LIBRARY}
307+ ${ParMETIS_LIBRARY} ${METIS_LIBRARY} pexsi )
310308 include_directories (${PEXSI_INCLUDE_DIR} ${ParMETIS_INCLUDE_DIR} )
311309 add_compile_definitions (__PEXSI )
312310 set (CMAKE_CXX_STANDARD 14)
@@ -321,23 +319,27 @@ if(DEBUG_INFO)
321319endif ()
322320
323321if (ENABLE_MPI)
324- find_package (MPI COMPONENTS CXX REQUIRED )
322+ find_package (
323+ MPI
324+ COMPONENTS CXX
325+ REQUIRED )
325326 include_directories (${MPI_CXX_INCLUDE_PATH} )
326327 target_link_libraries (${ABACUS_BIN_NAME} MPI::MPI_CXX )
327328 add_compile_definitions (__MPI )
328329 list (APPEND math_libs MPI::MPI_CXX)
329330endif ()
330331
331-
332- if (USE_DSP)
332+ if (USE_DSP)
333333 add_compile_definitions (__DSP )
334334 target_link_libraries (${ABACUS_BIN_NAME} ${OMPI_LIBRARY1} )
335335 include_directories (${MTBLAS_FFT_DIR} /libmtblas/include )
336336 include_directories (${MT_HOST_DIR} /include )
337- target_link_libraries (${ABACUS_BIN_NAME} ${MT_HOST_DIR} /hthreads/lib/libhthread_device.a )
338- target_link_libraries (${ABACUS_BIN_NAME} ${MT_HOST_DIR} /hthreads/lib/libhthread_host.a )
337+ target_link_libraries (${ABACUS_BIN_NAME}
338+ ${MT_HOST_DIR} /hthreads/lib/libhthread_device.a )
339+ target_link_libraries (${ABACUS_BIN_NAME}
340+ ${MT_HOST_DIR} /hthreads/lib/libhthread_host.a )
339341endif ()
340- if (USE_SW)
342+ if (USE_SW)
341343 add_compile_definitions (__SW )
342344 set (SW ON )
343345 include_directories (${SW_MATH} /include )
@@ -374,21 +376,22 @@ if(CMAKE_CUDA_COMPILER)
374376 endif ()
375377else () # CUDA not found
376378 if (USE_CUDA)
377- message (
378- FATAL_ERROR
379- "USE_CUDA is set but no CUDA components found." )
379+ message (FATAL_ERROR "USE_CUDA is set but no CUDA components found." )
380380 endif ()
381381endif ()
382382
383383if (USE_CUDA)
384384 cmake_minimum_required (VERSION 3.18 ) # required by `CUDA_ARCHITECTURES` below
385-
385+
386386 # Always find CUDAToolkit to get CUDAToolkit_VERSION
387387 find_package (CUDAToolkit REQUIRED )
388-
388+
389389 set_if_higher (CMAKE_CXX_STANDARD 14 )
390390 if (CUDAToolkit_VERSION VERSION_GREATER_EQUAL "13.0" )
391- message (STATUS "CUDA ${CUDAToolkit_VERSION} detected. Setting CMAKE_CUDA_STANDARD to 17." )
391+ message (
392+ STATUS
393+ "CUDA ${CUDAToolkit_VERSION} detected. Setting CMAKE_CUDA_STANDARD to 17."
394+ )
392395 set_if_higher (CMAKE_CXX_STANDARD 17 )
393396 endif ()
394397 set (CMAKE_CXX_EXTENSIONS ON )
@@ -399,21 +402,20 @@ if(USE_CUDA)
399402 # check
400403 # https://gitlab.kitware.com/cmake/cmake/-/blob/master/Modules/Internal/CMakeCUDAArchitecturesAll.cmake
401404 # for available architectures in different CUDA versions
402-
405+
403406 # CUDA 13.0+ dropped support for architectures below 75
404407 if (CUDAToolkit_VERSION VERSION_LESS "13.0" )
405- set (CMAKE_CUDA_ARCHITECTURES
406- 60 # P100
407- 70 # V100
408+ set (CMAKE_CUDA_ARCHITECTURES 60 # P100
409+ 70 # V100
408410 )
409411 else ()
410412 # Start with empty list; architectures 75+ will be added below
411413 set (CMAKE_CUDA_ARCHITECTURES)
412414 endif ()
413-
414- # Add your CUDA arch here Check the Compute Capability version of your
415- # GPU at: https://en.wikipedia.org/wiki/CUDA#GPUs_supported
416-
415+
416+ # Add your CUDA arch here Check the Compute Capability version of your GPU
417+ # at: https://en.wikipedia.org/wiki/CUDA#GPUs_supported
418+
417419 if (CUDAToolkit_VERSION VERSION_GREATER_EQUAL 10.0)
418420 list (APPEND CMAKE_CUDA_ARCHITECTURES 75) # T4
419421 endif ()
@@ -429,13 +431,13 @@ if(USE_CUDA)
429431 endif ()
430432 enable_language (CUDA )
431433 # ${ABACUS_BIN_NAME} is added before CUDA is enabled
432- set_property (TARGET ${ABACUS_BIN_NAME}
433- PROPERTY CUDA_ARCHITECTURES ${CMAKE_CUDA_ARCHITECTURES} )
434- if (CUDAToolkit_VERSION VERSION_GREATER_EQUAL 12.9)
434+ set_property (TARGET ${ABACUS_BIN_NAME} PROPERTY CUDA_ARCHITECTURES
435+ ${CMAKE_CUDA_ARCHITECTURES} )
436+ if (CUDAToolkit_VERSION VERSION_GREATER_EQUAL 12.9)
435437 target_link_libraries (${ABACUS_BIN_NAME} cudart )
436- else ()
438+ else ()
437439 target_link_libraries (${ABACUS_BIN_NAME} cudart nvToolsExt )
438- endif ()
440+ endif ()
439441 include_directories (${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES} )
440442 if (CUDAToolkit_VERSION VERSION_GREATER_EQUAL 13.0)
441443 if (EXISTS "${CUDAToolkit_ROOT} /include/cccl" )
@@ -446,40 +448,46 @@ if(USE_CUDA)
446448 add_compile_definitions (__CUDA )
447449 add_compile_definitions (__UT_USE_CUDA )
448450 target_compile_definitions (${ABACUS_BIN_NAME} PRIVATE __USE_NVTX )
449- if (CMAKE_BUILD_TYPE STREQUAL "Debug" )
450- set (CMAKE_CUDA_FLAGS_DEBUG "${CMAKE_CUDA_FLAGS_DEBUG} -g -G" CACHE STRING "CUDA flags for debug build" FORCE )
451+ if (CMAKE_BUILD_TYPE STREQUAL "Debug" )
452+ set (CMAKE_CUDA_FLAGS_DEBUG
453+ "${CMAKE_CUDA_FLAGS_DEBUG} -g -G"
454+ CACHE STRING "CUDA flags for debug build" FORCE )
451455 endif ()
452- if (USE_OPENMP AND OpenMP_CXX_FOUND)
453- set (CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -Xcompiler=${OpenMP_CXX_FLAGS} " CACHE STRING "CUDA flags" FORCE )
456+ if (USE_OPENMP AND OpenMP_CXX_FOUND)
457+ set (CMAKE_CUDA_FLAGS
458+ "${CMAKE_CUDA_FLAGS} -Xcompiler=${OpenMP_CXX_FLAGS} "
459+ CACHE STRING "CUDA flags" FORCE )
454460 endif ()
455- if (ENABLE_NCCL_PARALLEL_DEVICE)
456- if (NOT ENABLE_MPI)
457- message (FATAL_ERROR
458- "ENABLE_NCCL_PARALLEL_DEVICE requires ENABLE_MPI=ON." )
461+ if (ENABLE_NCCL_PARALLEL_DEVICE)
462+ if (NOT ENABLE_MPI)
463+ message (
464+ FATAL_ERROR "ENABLE_NCCL_PARALLEL_DEVICE requires ENABLE_MPI=ON." )
459465 endif ()
460466 add_compile_definitions (__NCCL_PARALLEL_DEVICE )
461467 include (cmake/SetupNccl.cmake )
462468 abacus_setup_nccl (${ABACUS_BIN_NAME} )
463469 endif ()
464- if (ENABLE_CUSOLVERMP)
470+ if (ENABLE_CUSOLVERMP)
465471 # Keep cuSOLVERMp discovery/linking logic in a dedicated module.
466472 include (cmake/SetupCuSolverMp.cmake )
467473 abacus_setup_cusolvermp (${ABACUS_BIN_NAME} )
468474 endif ()
469- if (ENABLE_CUBLASMP)
475+ if (ENABLE_CUBLASMP)
470476 # Enforcement 1: cuBLASMp requires cuSOLVERMp to be enabled
471- if (NOT ENABLE_CUSOLVERMP)
472- message (FATAL_ERROR
473- "ENABLE_CUBLASMP is set to ON, but ENABLE_CUSOLVERMP is OFF."
474- "In ABACUS, cuBLASMp support requires cuSOLVERMp to be enabled simultaneously."
475- "Please set -DENABLE_CUSOLVERMP=ON." )
477+ if (NOT ENABLE_CUSOLVERMP)
478+ message (
479+ FATAL_ERROR
480+ "ENABLE_CUBLASMP is set to ON, but ENABLE_CUSOLVERMP is OFF."
481+ "In ABACUS, cuBLASMp support requires cuSOLVERMp to be enabled simultaneously."
482+ "Please set -DENABLE_CUSOLVERMP=ON." )
476483 endif ()
477- # Enforcement 2: cuBLASMp 0.8.0+ is incompatible with CAL backend
478- # Note: _use_cal is defined inside abacus_setup_cusolvermp
479- if (_use_cal)
480- message (FATAL_ERROR
481- "cuBLASMp 0.8.0+ requires NCCL Symmetric Memory, but cuSOLVERMp is using CAL backend."
482- "Please upgrade cuSOLVERMp to >= 0.7.0 to use NCCL for both." )
484+ # Enforcement 2: cuBLASMp 0.8.0+ is incompatible with CAL backend Note:
485+ # _use_cal is defined inside abacus_setup_cusolvermp
486+ if (_use_cal)
487+ message (
488+ FATAL_ERROR
489+ "cuBLASMp 0.8.0+ requires NCCL Symmetric Memory, but cuSOLVERMp is using CAL backend."
490+ "Please upgrade cuSOLVERMp to >= 0.7.0 to use NCCL for both." )
483491 endif ()
484492 include (cmake/SetupCuBlasMp.cmake )
485493 abacus_setup_cublasmp (${ABACUS_BIN_NAME} )
@@ -609,8 +617,8 @@ if(ENABLE_MLALGO)
609617 add_compile_definitions (__MLALGO )
610618endif ()
611619
612- # Torch uses outdated components to detect CUDA arch, causing failure on
613- # latest CUDA kits. Set CMake variable TORCH_CUDA_ARCH_LIST in the form of
620+ # Torch uses outdated components to detect CUDA arch, causing failure on latest
621+ # CUDA kits. Set CMake variable TORCH_CUDA_ARCH_LIST in the form of
614622# "major.minor" if required.
615623if (ENABLE_MLALGO OR DEFINED Torch_DIR)
616624 find_package (Torch REQUIRED )
@@ -628,18 +636,14 @@ if(ENABLE_MLALGO OR DEFINED Torch_DIR)
628636 add_compile_options (${TORCH_CXX_FLAGS} )
629637endif ()
630638
631- if (ENABLE_CNPY)
632- find_path (cnpy_SOURCE_DIR
633- cnpy.h
634- HINTS ${libnpy_INCLUDE_DIR}
635- )
639+ if (ENABLE_CNPY)
640+ find_path (cnpy_SOURCE_DIR cnpy.h HINTS ${libnpy_INCLUDE_DIR} )
636641 if (NOT cnpy_SOURCE_DIR )
637642 include (FetchContent )
638643 FetchContent_Declare (
639644 cnpy
640645 GIT_REPOSITORY https://github.com/rogersce/cnpy.git
641- GIT_PROGRESS TRUE
642- )
646+ GIT_PROGRESS TRUE )
643647 FetchContent_MakeAvailable (cnpy)
644648 else ()
645649 include_directories (${cnpy_INCLUDE_DIR} )
@@ -681,6 +685,7 @@ endif()
681685if (ENABLE_LIBRI)
682686 set_if_higher (CMAKE_CXX_STANDARD 14 )
683687 if (LIBRI_DIR)
688+
684689 else ()
685690 find_package (LibRI REQUIRED )
686691 endif ()
@@ -695,13 +700,13 @@ if(ENABLE_LIBRI OR DEFINED LIBCOMM_DIR)
695700endif ()
696701if (ENABLE_LIBCOMM)
697702 if (LIBCOMM_DIR)
703+
698704 else ()
699705 find_package (LibComm REQUIRED )
700706 endif ()
701707 include_directories (${LIBCOMM_DIR} /include )
702708endif ()
703709
704-
705710if (DEFINED Libxc_DIR)
706711 set (ENABLE_LIBXC ON )
707712endif ()
@@ -815,7 +820,7 @@ if(ENABLE_RAPIDJSON)
815820 target_link_libraries (${ABACUS_BIN_NAME} json_output )
816821endif ()
817822
818- if (USE_SW)
823+ if (USE_SW)
819824 target_link_libraries (${ABACUS_BIN_NAME} ${SW_MATH} /libswfft.a )
820825 target_link_libraries (${ABACUS_BIN_NAME} ${SW_MATH} /libswscalapack.a )
821826 target_link_libraries (${ABACUS_BIN_NAME} ${SW_MATH} /libswlapack.a )
@@ -826,13 +831,14 @@ endif()
826831list (APPEND math_libs m)
827832target_link_libraries (${ABACUS_BIN_NAME} ${math_libs} )
828833
829- install (PROGRAMS ${ABACUS_BIN_PATH}
830- TYPE BIN
831- # DESTINATION ${CMAKE_INSTALL_BINDIR}
834+ install (PROGRAMS ${ABACUS_BIN_PATH} TYPE BIN # DESTINATION
835+ # ${CMAKE_INSTALL_BINDIR}
832836)
833837
834838# Create a symbolic link 'abacus' pointing to the actual executable
835- install (CODE "execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ${ABACUS_BIN_NAME} ${CMAKE_INSTALL_PREFIX} /bin/abacus WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX} /bin)" )
839+ install (
840+ CODE "execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ${ABACUS_BIN_NAME} ${CMAKE_INSTALL_PREFIX} /bin/abacus WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX} /bin)"
841+ )
836842
837843if (ENABLE_COVERAGE)
838844 coverage_evaluate ()
0 commit comments