Skip to content

Commit 3475102

Browse files
committed
Revise cmake/CollectBuildInfoVars.cmake
- Output crucial information as a build summary - Make MPI implementation detection valid (at least for non-cross build) - Use version of MPI standard one MPI implementation follows [RFC]
1 parent 75d2623 commit 3475102

1 file changed

Lines changed: 38 additions & 40 deletions

File tree

cmake/CollectBuildInfoVars.cmake

Lines changed: 38 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -66,52 +66,16 @@ set(ABACUS_MPI_IMPLEMENTATION "no")
6666
set(ABACUS_MPI_VERSION "no")
6767
set(ABACUS_CUDA_AWARE_MPI "no")
6868
if(ENABLE_MPI)
69-
execute_process(COMMAND ${MPI_CXX_COMPILER} --version OUTPUT_VARIABLE MPI_VERSION_OUTPUT OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
70-
if(MPI_VERSION_OUTPUT MATCHES "Intel")
69+
if("${MPI_CXX_LIBRARY_VERSION_STRING}" MATCHES "Intel")
7170
set(ABACUS_MPI_IMPLEMENTATION "Intel MPI")
72-
string(REGEX MATCH "Intel\\(R\\) oneAPI DPC\\+\\+/C\\+\\+ Compiler ([0-9]+\\.[0-9]+\\.[0-9]+)" _ "${MPI_VERSION_OUTPUT}")
73-
if(CMAKE_MATCH_1)
74-
set(MPI_DETECTED_VERSION "${CMAKE_MATCH_1}")
75-
else()
76-
string(REGEX MATCH "icpc \\(ICC\\) ([0-9]+\\.[0-9]+\\.[0-9]+)" _ "${MPI_VERSION_OUTPUT}")
77-
if(CMAKE_MATCH_1)
78-
set(MPI_DETECTED_VERSION "${CMAKE_MATCH_1}")
79-
endif()
80-
endif()
81-
elseif(MPI_VERSION_OUTPUT MATCHES "Open MPI")
71+
elseif("${MPI_CXX_LIBRARY_VERSION_STRING}" MATCHES "Open MPI")
8272
set(ABACUS_MPI_IMPLEMENTATION "OpenMPI")
83-
elseif(MPI_VERSION_OUTPUT MATCHES "MPICH")
73+
elseif("${MPI_CXX_LIBRARY_VERSION_STRING}" MATCHES "MPICH")
8474
set(ABACUS_MPI_IMPLEMENTATION "MPICH")
8575
else()
8676
set(ABACUS_MPI_IMPLEMENTATION "Unknown")
8777
endif()
88-
# Fallback: try mpirun/mpiexec
89-
if(NOT MPI_DETECTED_VERSION)
90-
find_program(MPIRUN_EXECUTABLE mpirun)
91-
if(MPIRUN_EXECUTABLE)
92-
execute_process(COMMAND ${MPIRUN_EXECUTABLE} --version OUTPUT_VARIABLE MPIRUN_VERSION_OUTPUT OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
93-
if(MPIRUN_VERSION_OUTPUT MATCHES "Open MPI")
94-
set(ABACUS_MPI_IMPLEMENTATION "OpenMPI")
95-
string(REGEX MATCH "Open MPI ([0-9]+\\.[0-9]+\\.[0-9]+)" _ "${MPIRUN_VERSION_OUTPUT}")
96-
if(CMAKE_MATCH_1)
97-
set(MPI_DETECTED_VERSION "${CMAKE_MATCH_1}")
98-
endif()
99-
elseif(MPIRUN_VERSION_OUTPUT MATCHES "MPICH")
100-
set(ABACUS_MPI_IMPLEMENTATION "MPICH")
101-
string(REGEX MATCH "MPICH Version: ([0-9]+\\.[0-9]+\\.[0-9]+)" _ "${MPIRUN_VERSION_OUTPUT}")
102-
if(CMAKE_MATCH_1)
103-
set(MPI_DETECTED_VERSION "${CMAKE_MATCH_1}")
104-
endif()
105-
endif()
106-
endif()
107-
endif()
108-
if(MPI_DETECTED_VERSION)
109-
set(ABACUS_MPI_VERSION "yes (v${MPI_DETECTED_VERSION})")
110-
elseif(MPI_VERSION)
111-
set(ABACUS_MPI_VERSION "yes (v${MPI_VERSION})")
112-
else()
113-
set(ABACUS_MPI_VERSION "yes (version unknown)")
114-
endif()
78+
set(ABACUS_MPI_VERSION "(MPI standard: ${MPI_CXX_VERSION})")
11579
if(USE_CUDA)
11680
# OpenMPI hint
11781
find_program(OMPI_INFO_EXECUTABLE ompi_info)
@@ -144,6 +108,12 @@ else()
144108
set(ABACUS_OPENMP_VERSION "no")
145109
endif()
146110

111+
if(ENABLE_LCAO)
112+
set(ABACUS_LCAO_ENABLED "True")
113+
else()
114+
set(ABACUS_LCAO_ENABLED "False")
115+
endif()
116+
147117
# Core Math Libraries
148118
if(ENABLE_LCAO AND ENABLE_ELPA)
149119
set(ABACUS_ELPA_VERSION "yes (version unknown)")
@@ -410,3 +380,31 @@ list(APPEND CMAKE_FIND_PACKAGES_LIST " LibRI Found=${LIBRI_FOUND}")
410380
foreach(package_line ${CMAKE_FIND_PACKAGES_LIST})
411381
set(ABACUS_CMAKE_FIND_PACKAGES "${ABACUS_CMAKE_FIND_PACKAGES}${package_line}")
412382
endforeach()
383+
384+
# ==============================================================================
385+
# Print Build Summary
386+
# ==============================================================================
387+
message(STATUS "===================================================================")
388+
message(STATUS " ABACUS Build Summary ")
389+
message(STATUS "===================================================================")
390+
message(STATUS "Build Type : ${ABACUS_BUILD_TYPE}")
391+
message(STATUS "Platform : ${ABACUS_PLATFORM_NAME}")
392+
message(STATUS "Compiler : ${ABACUS_CXX_COMPILER_ID} ${ABACUS_CXX_COMPILER_VERSION}")
393+
message(STATUS "-------------------------------------------------------------------")
394+
message(STATUS "MPI Support : ${ABACUS_MPI_IMPLEMENTATION} ${ABACUS_MPI_VERSION}")
395+
message(STATUS "CUDA-Aware MPI : ${ABACUS_CUDA_AWARE_MPI}")
396+
message(STATUS "OpenMP Support : ${ABACUS_OPENMP_VERSION}")
397+
message(STATUS "-------------------------------------------------------------------")
398+
message(STATUS "LCAO Enabled : ${ABACUS_LCAO_ENABLED}")
399+
message(STATUS "-------------------------------------------------------------------")
400+
message(STATUS "Math Libraries : MKL = ${ABACUS_MKL_SUPPORT}")
401+
message(STATUS " FFTW = ${ABACUS_FFTW_VERSION}")
402+
message(STATUS " ELPA = ${ABACUS_ELPA_VERSION}")
403+
message(STATUS "Accelerators : CUDA = ${ABACUS_CUDA_VERSION}")
404+
message(STATUS " ROCm = ${ABACUS_ROCM_VERSION}")
405+
message(STATUS "Machine Learning : Torch = ${ABACUS_LIBTORCH_VERSION}")
406+
message(STATUS " DeePMD = ${ABACUS_DEEPMD_VERSION}")
407+
message(STATUS " NEP = ${ABACUS_NEP_VERSION}")
408+
message(STATUS "Features : Libxc = ${ABACUS_LIBXC_VERSION}")
409+
message(STATUS " LibRI = ${ABACUS_LIBRI_VERSION}")
410+
message(STATUS "===================================================================")

0 commit comments

Comments
 (0)