Skip to content

Commit 6361c0d

Browse files
Fix inclusion of external libraries (#5082)
2 parents 47bfe00 + 75b95a3 commit 6361c0d

File tree

10 files changed

+182
-131
lines changed

10 files changed

+182
-131
lines changed

.gitlab-ci.yml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -242,11 +242,11 @@ cuda12-maxset:
242242
with_coverage_python: 'true'
243243
test_timeout: '900'
244244
srcdir: '${CI_PROJECT_DIR}'
245+
with_caliper: 'true'
245246
with_scafacos: 'true'
246247
with_walberla: 'true'
247248
with_walberla_avx: 'true'
248249
with_stokesian_dynamics: 'true'
249-
with_caliper: 'true'
250250
with_shared_memory_parallelism: 'true'
251251
script:
252252
- bash maintainer/CI/build_cmake.sh
@@ -392,6 +392,7 @@ installation:
392392
with_walberla: 'true'
393393
with_walberla_avx: 'true'
394394
with_stokesian_dynamics: 'true'
395+
with_shared_memory_parallelism: 'true'
395396
srcdir: '${CI_PROJECT_DIR}'
396397
build_type: 'Release'
397398
script:
@@ -536,11 +537,12 @@ maxset_3_cores:
536537
with_coverage: 'false'
537538
with_coverage_python: 'false'
538539
srcdir: '${CI_PROJECT_DIR}'
540+
with_caliper: 'true'
539541
with_scafacos: 'true'
540542
with_walberla: 'true'
541543
with_walberla_avx: 'true'
542544
with_stokesian_dynamics: 'true'
543-
with_caliper: 'true'
545+
with_shared_memory_parallelism: 'true'
544546
check_odd_only: 'true'
545547
cmake_params: '-D ESPRESSO_TEST_NP=3'
546548
script:

CMakeLists.txt

Lines changed: 148 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -91,41 +91,6 @@ set(CMAKE_FIND_FRAMEWORK LAST)
9191
# avoid applying patches twice with FetchContent
9292
set(FETCHCONTENT_UPDATES_DISCONNECTED ON)
9393

94-
#
95-
# External dependencies declarations
96-
#
97-
98-
# cmake-format: off
99-
FetchContent_Declare(
100-
walberla
101-
GIT_REPOSITORY https://i10git.cs.fau.de/walberla/walberla.git
102-
GIT_TAG 0aab9c0af2335b1f6fec75deae06e514ccb233ab
103-
PATCH_COMMAND patch -p0 < ${CMAKE_CURRENT_SOURCE_DIR}/cmake/walberla.patch
104-
)
105-
FetchContent_Declare(
106-
stokesian_dynamics
107-
GIT_REPOSITORY https://github.com/hmenke/espresso-stokesian-dynamics.git
108-
GIT_TAG 90f6de70d1c0ac9cf468f2fc90f9c601139e4c88
109-
)
110-
FetchContent_Declare(
111-
caliper
112-
GIT_REPOSITORY https://github.com/LLNL/Caliper.git
113-
GIT_TAG v2.12.1
114-
)
115-
FetchContent_Declare(
116-
heffte
117-
GIT_REPOSITORY https://github.com/icl-utk-edu/heffte.git
118-
GIT_TAG v2.4.1
119-
PATCH_COMMAND patch -p0 < ${CMAKE_CURRENT_SOURCE_DIR}/cmake/heffte.patch
120-
)
121-
FetchContent_Declare(
122-
cabana
123-
GIT_REPOSITORY https://github.com/ECP-copa/Cabana.git
124-
GIT_TAG 7914d28708b1c67b40d5743c1fbc09e221144dd3
125-
PATCH_COMMAND patch -p0 < ${CMAKE_CURRENT_SOURCE_DIR}/cmake/cabana.patch
126-
)
127-
# cmake-format: on
128-
12994
# ##############################################################################
13095
# User input options
13196
# ##############################################################################
@@ -351,6 +316,8 @@ target_compile_options(
351316
$<$<NOT:$<CXX_COMPILER_ID:IntelLLVM>>:-Wno-implicit-fallthrough>
352317
$<$<NOT:$<CXX_COMPILER_ID:IntelLLVM,GNU>>:-Wno-unused-private-field>
353318
$<$<AND:$<CXX_COMPILER_ID:GNU>,$<STREQUAL:${CMAKE_SYSTEM_PROCESSOR},arm>>:-Wno-psabi>
319+
$<$<BOOL:${ESPRESSO_BUILD_WITH_SHARED_MEMORY_PARALLELISM}>:-Wno-implicit-int-float-conversion>
320+
$<$<BOOL:${ESPRESSO_BUILD_WITH_SHARED_MEMORY_PARALLELISM}>:-Wno-float-conversion>
354321
# warnings are errors
355322
$<$<BOOL:${ESPRESSO_WARNINGS_ARE_ERRORS}>:-Werror>)
356323

@@ -484,45 +451,126 @@ endif()
484451
# Libraries
485452
#
486453

487-
if(ESPRESSO_BUILD_WITH_SHARED_MEMORY_PARALLELISM)
488-
FetchContent_GetProperties(cabana)
489-
set(Cabana_REQUIRE_HEFFTE OFF CACHE BOOL "")
490-
if(NOT cabana_POPULATED)
491-
FetchContent_MakeAvailable(cabana)
492-
endif()
493-
find_package(Kokkos REQUIRED)
494-
endif()
495-
496454
if(ESPRESSO_BUILD_WITH_FFTW)
497455
find_package(FFTW3 REQUIRED)
498-
FetchContent_GetProperties(heffte)
499-
set(Heffte_ENABLE_FFTW on CACHE BOOL "")
500-
if(ESPRESSO_BUILD_WITH_CUDA)
501-
set(Heffte_ENABLE_CUDA "on" CACHE BOOL "")
456+
457+
if(NOT EXISTS ${FETCHCONTENT_BASE_DIR}/heffte-src)
458+
find_package(Heffte 2.4.1 QUIET)
502459
endif()
503-
if(NOT heffte_POPULATED)
460+
if(NOT DEFINED Heffte_FOUND OR NOT ${Heffte_FOUND})
461+
# cmake-format: off
462+
FetchContent_Declare(
463+
heffte
464+
GIT_REPOSITORY https://github.com/icl-utk-edu/heffte.git
465+
GIT_TAG v2.4.1
466+
OVERRIDE_FIND_PACKAGE
467+
)
468+
# cmake-format: on
469+
set(Heffte_ENABLE_FFTW ON CACHE BOOL "")
470+
if(ESPRESSO_BUILD_WITH_CUDA)
471+
set(Heffte_ENABLE_CUDA ON CACHE BOOL "")
472+
endif()
504473
set(BUILD_SHARED_LIBS ON)
505474
FetchContent_MakeAvailable(heffte)
506475
set(BUILD_SHARED_LIBS ${ESPRESSO_BUILD_SHARED_LIBS_DEFAULT})
476+
foreach(HEFFTE_MODULE IN ITEMS FFTW CUDA)
477+
if(TARGET Heffte::${HEFFTE_MODULE})
478+
set(Heffte_${HEFFTE_MODULE}_FOUND true)
479+
endif()
480+
endforeach()
481+
add_library(Heffte::Heffte INTERFACE IMPORTED GLOBAL)
482+
target_link_libraries(Heffte::Heffte INTERFACE Heffte)
483+
install(TARGETS Heffte LIBRARY DESTINATION "${ESPRESSO_INSTALL_LIBDIR}")
484+
if(ESPRESSO_BUILD_WITH_CLANG_TIDY)
485+
set(HEFFTE_CXX_CLANG_TIDY "${ESPRESSO_CXX_CLANG_TIDY}")
486+
set(SKIP_CLANG_TIDY_CHECKS "")
487+
set(SKIP_CLANG_TIDY_CHECKS_CXX "")
488+
# silence heFFTe diagnostics
489+
list(APPEND SKIP_CLANG_TIDY_CHECKS "-bugprone-exception-escape")
490+
list(APPEND SKIP_CLANG_TIDY_CHECKS "-bugprone-narrowing-conversions")
491+
list(APPEND SKIP_CLANG_TIDY_CHECKS "-bugprone-branch-clone")
492+
list(APPEND SKIP_CLANG_TIDY_CHECKS "-modernize-loop-convert")
493+
list(APPEND SKIP_CLANG_TIDY_CHECKS "-modernize-use-override")
494+
list(APPEND SKIP_CLANG_TIDY_CHECKS "-modernize-use-auto")
495+
list(APPEND SKIP_CLANG_TIDY_CHECKS "-readability-else-after-return")
496+
list(APPEND SKIP_CLANG_TIDY_CHECKS
497+
"-readability-avoid-const-params-in-decls")
498+
espresso_override_clang_tidy_checks(
499+
HEFFTE_CXX_CLANG_TIDY "${SKIP_CLANG_TIDY_CHECKS}"
500+
"${SKIP_CLANG_TIDY_CHECKS_CXX}")
501+
endif()
507502
endif()
508-
install(TARGETS Heffte LIBRARY DESTINATION "${ESPRESSO_INSTALL_LIBDIR}")
503+
endif()
504+
505+
if(ESPRESSO_BUILD_WITH_SHARED_MEMORY_PARALLELISM)
506+
if(NOT EXISTS ${FETCHCONTENT_BASE_DIR}/kokkos-src)
507+
find_package(Kokkos 4.3 QUIET)
508+
endif()
509+
if(NOT DEFINED Kokkos_FOUND OR NOT ${Kokkos_FOUND})
510+
# cmake-format: off
511+
FetchContent_Declare(
512+
kokkos
513+
GIT_REPOSITORY https://github.com/kokkos/kokkos.git
514+
GIT_TAG b4f7c84 # version 4.6.1 with patches
515+
OVERRIDE_FIND_PACKAGE
516+
)
517+
# cmake-format: on
518+
set(BUILD_SHARED_LIBS ON)
519+
set(CMAKE_SHARED_LIBRARY_PREFIX "lib")
520+
FetchContent_MakeAvailable(kokkos)
521+
set(BUILD_SHARED_LIBS ${ESPRESSO_BUILD_SHARED_LIBS_DEFAULT})
522+
set(CMAKE_SHARED_LIBRARY_PREFIX "${ESPRESSO_SHARED_LIBRARY_PREFIX}")
523+
install(TARGETS kokkos LIBRARY DESTINATION "${ESPRESSO_INSTALL_LIBDIR}")
524+
# install all kokkos shared objects
525+
foreach(target_name IN LISTS KOKKOS_COMPONENT_LIBRARIES)
526+
get_target_property(target_type ${target_name} TYPE)
527+
if(${target_type} STREQUAL "SHARED_LIBRARY")
528+
install(TARGETS ${target_name}
529+
LIBRARY DESTINATION "${ESPRESSO_INSTALL_LIBDIR}")
530+
endif()
531+
endforeach()
532+
endif()
533+
534+
if(NOT EXISTS ${FETCHCONTENT_BASE_DIR}/cabana-src)
535+
find_package(Cabana 0.7.0 QUIET)
536+
endif()
537+
if(NOT DEFINED Cabana_FOUND OR NOT ${Cabana_FOUND})
538+
# cmake-format: off
539+
FetchContent_Declare(
540+
cabana
541+
GIT_REPOSITORY https://github.com/ECP-copa/Cabana.git
542+
GIT_TAG 6647fed3 # 0.7.0 with patches
543+
PATCH_COMMAND patch -p0 < ${CMAKE_CURRENT_SOURCE_DIR}/cmake/cabana.patch
544+
)
545+
# cmake-format: on
546+
set(Cabana_REQUIRE_HEFFTE ${ESPRESSO_BUILD_WITH_FFTW} CACHE BOOL "")
547+
FetchContent_MakeAvailable(cabana)
548+
endif()
549+
509550
if(ESPRESSO_BUILD_WITH_CLANG_TIDY)
510-
set(HEFFTE_CXX_CLANG_TIDY "${ESPRESSO_CXX_CLANG_TIDY}")
511-
set(SKIP_CLANG_TIDY_CHECKS "")
512-
set(SKIP_CLANG_TIDY_CHECKS_CXX "")
513-
# silence heFFTe diagnostics
514-
list(APPEND SKIP_CLANG_TIDY_CHECKS "-bugprone-exception-escape")
515-
list(APPEND SKIP_CLANG_TIDY_CHECKS "-bugprone-narrowing-conversions")
516-
list(APPEND SKIP_CLANG_TIDY_CHECKS "-bugprone-branch-clone")
517-
list(APPEND SKIP_CLANG_TIDY_CHECKS "-modernize-loop-convert")
518-
list(APPEND SKIP_CLANG_TIDY_CHECKS "-modernize-use-override")
519-
list(APPEND SKIP_CLANG_TIDY_CHECKS "-modernize-use-auto")
520-
list(APPEND SKIP_CLANG_TIDY_CHECKS "-readability-else-after-return")
551+
# silence Kokkos and Cabana diagnostics
552+
set(CABANA_CXX_CLANG_TIDY "${ESPRESSO_CXX_CLANG_TIDY}")
553+
set(CABANA_CUDA_CLANG_TIDY "${ESPRESSO_CUDA_CLANG_TIDY}")
554+
unset(SKIP_CLANG_TIDY_CHECKS)
555+
unset(SKIP_CLANG_TIDY_CHECKS_CXX)
556+
unset(SKIP_CLANG_TIDY_CHECKS_CUDA)
557+
list(APPEND SKIP_CLANG_TIDY_CHECKS "-modernize-*")
558+
list(APPEND SKIP_CLANG_TIDY_CHECKS "-readability-*")
559+
list(APPEND SKIP_CLANG_TIDY_CHECKS "-clang-diagnostic-float-conversion")
521560
list(APPEND SKIP_CLANG_TIDY_CHECKS
522-
"-readability-avoid-const-params-in-decls")
561+
"-clang-diagnostic-implicit-int-float-conversion")
562+
list(APPEND SKIP_CLANG_TIDY_CHECKS
563+
"-bugprone-return-const-ref-from-parameter")
564+
list(APPEND SKIP_CLANG_TIDY_CHECKS "-bugprone-narrowing-conversions")
565+
list(APPEND SKIP_CLANG_TIDY_CHECKS "-bugprone-sizeof-expression")
566+
list(APPEND SKIP_CLANG_TIDY_CHECKS "-bugprone-fold-init-type")
567+
list(APPEND SKIP_CLANG_TIDY_CHECKS_CUDA "-bugprone-branch-clone")
523568
espresso_override_clang_tidy_checks(
524-
HEFFTE_CXX_CLANG_TIDY "${SKIP_CLANG_TIDY_CHECKS}"
569+
CABANA_CXX_CLANG_TIDY "${SKIP_CLANG_TIDY_CHECKS}"
525570
"${SKIP_CLANG_TIDY_CHECKS_CXX}")
571+
espresso_override_clang_tidy_checks(
572+
CABANA_CUDA_CLANG_TIDY "${SKIP_CLANG_TIDY_CHECKS}"
573+
"${SKIP_CLANG_TIDY_CHECKS_CUDA}")
526574
endif()
527575
endif()
528576

@@ -624,13 +672,17 @@ if(ESPRESSO_BUILD_WITH_GSL)
624672
endif()
625673

626674
if(ESPRESSO_BUILD_WITH_STOKESIAN_DYNAMICS)
627-
FetchContent_GetProperties(stokesian_dynamics)
675+
# cmake-format: off
676+
FetchContent_Declare(
677+
stokesian_dynamics
678+
GIT_REPOSITORY https://github.com/hmenke/espresso-stokesian-dynamics.git
679+
GIT_TAG 90f6de70d1c0ac9cf468f2fc90f9c601139e4c88
680+
)
681+
# cmake-format: on
628682
set(STOKESIAN_DYNAMICS 1)
629-
if(NOT stokesian_dynamics_POPULATED)
630-
set(CMAKE_INSTALL_LIBDIR "${ESPRESSO_INSTALL_LIBDIR}")
631-
FetchContent_MakeAvailable(stokesian_dynamics)
632-
set(CMAKE_INSTALL_LIBDIR "${ESPRESSO_OLD_CMAKE_INSTALL_LIBDIR}")
633-
endif()
683+
set(CMAKE_INSTALL_LIBDIR "${ESPRESSO_INSTALL_LIBDIR}")
684+
FetchContent_MakeAvailable(stokesian_dynamics)
685+
set(CMAKE_INSTALL_LIBDIR "${ESPRESSO_OLD_CMAKE_INSTALL_LIBDIR}")
634686
endif()
635687

636688
if(ESPRESSO_BUILD_WITH_VALGRIND)
@@ -790,7 +842,14 @@ endif()
790842
#
791843

792844
if(ESPRESSO_BUILD_WITH_WALBERLA)
793-
FetchContent_GetProperties(walberla)
845+
# cmake-format: off
846+
FetchContent_Declare(
847+
walberla
848+
GIT_REPOSITORY https://i10git.cs.fau.de/walberla/walberla.git
849+
GIT_TAG 0aab9c0af2335b1f6fec75deae06e514ccb233ab
850+
PATCH_COMMAND patch -p0 < ${CMAKE_CURRENT_SOURCE_DIR}/cmake/walberla.patch
851+
)
852+
# cmake-format: on
794853
string(REGEX REPLACE "([/\\]walberla)-src$" "\\1-build" walberla_BINARY_DIR
795854
"${walberla_SOURCE_DIR}")
796855
set(WALBERLA_BUILD_TESTS off CACHE BOOL "")
@@ -816,13 +875,11 @@ if(ESPRESSO_BUILD_WITH_WALBERLA)
816875
set(WALBERLA_BUILD_WITH_FFTW off CACHE BOOL "")
817876
endif()
818877
set(WALBERLA_BUILD_WITH_FASTMATH off CACHE BOOL "")
819-
if(NOT walberla_POPULATED)
820-
set(BUILD_SHARED_LIBS ON)
821-
set(CMAKE_SHARED_LIBRARY_PREFIX "lib")
822-
FetchContent_MakeAvailable(walberla)
823-
set(BUILD_SHARED_LIBS ${ESPRESSO_BUILD_SHARED_LIBS_DEFAULT})
824-
set(CMAKE_SHARED_LIBRARY_PREFIX "${ESPRESSO_SHARED_LIBRARY_PREFIX}")
825-
endif()
878+
set(BUILD_SHARED_LIBS ON)
879+
set(CMAKE_SHARED_LIBRARY_PREFIX "lib")
880+
FetchContent_MakeAvailable(walberla)
881+
set(BUILD_SHARED_LIBS ${ESPRESSO_BUILD_SHARED_LIBS_DEFAULT})
882+
set(CMAKE_SHARED_LIBRARY_PREFIX "${ESPRESSO_SHARED_LIBRARY_PREFIX}")
826883
set(WALBERLA_LIBS
827884
walberla::core walberla::domain_decomposition walberla::blockforest
828885
walberla::boundary walberla::field walberla::lbm walberla::timeloop
@@ -868,22 +925,26 @@ if(ESPRESSO_BUILD_WITH_WALBERLA)
868925
endif()
869926

870927
if(ESPRESSO_BUILD_WITH_CALIPER)
871-
FetchContent_GetProperties(caliper)
928+
# cmake-format: off
929+
FetchContent_Declare(
930+
caliper
931+
GIT_REPOSITORY https://github.com/LLNL/Caliper.git
932+
GIT_TAG v2.12.1
933+
)
934+
# cmake-format: on
872935
set(CALIPER_OPTION_PREFIX on CACHE BOOL "")
873936
set(CALIPER_WITH_MPI on CACHE BOOL "")
874937
set(CALIPER_WITH_NVTX off CACHE BOOL "")
875938
set(CALIPER_WITH_CUPTI off CACHE BOOL "")
876939
set(CALIPER_INSTALL_CONFIG off CACHE BOOL "")
877940
set(CALIPER_INSTALL_HEADERS off CACHE BOOL "")
878-
if(NOT caliper_POPULATED)
879-
set(BUILD_SHARED_LIBS ON)
880-
set(CMAKE_INSTALL_LIBDIR "${ESPRESSO_INSTALL_LIBDIR}")
881-
set(CMAKE_SHARED_LIBRARY_PREFIX "lib")
882-
FetchContent_MakeAvailable(caliper)
883-
set(BUILD_SHARED_LIBS ${ESPRESSO_BUILD_SHARED_LIBS_DEFAULT})
884-
set(CMAKE_INSTALL_LIBDIR "${ESPRESSO_OLD_CMAKE_INSTALL_LIBDIR}")
885-
set(CMAKE_SHARED_LIBRARY_PREFIX "${ESPRESSO_SHARED_LIBRARY_PREFIX}")
886-
endif()
941+
set(BUILD_SHARED_LIBS ON)
942+
set(CMAKE_INSTALL_LIBDIR "${ESPRESSO_INSTALL_LIBDIR}")
943+
set(CMAKE_SHARED_LIBRARY_PREFIX "lib")
944+
FetchContent_MakeAvailable(caliper)
945+
set(BUILD_SHARED_LIBS ${ESPRESSO_BUILD_SHARED_LIBS_DEFAULT})
946+
set(CMAKE_INSTALL_LIBDIR "${ESPRESSO_OLD_CMAKE_INSTALL_LIBDIR}")
947+
set(CMAKE_SHARED_LIBRARY_PREFIX "${ESPRESSO_SHARED_LIBRARY_PREFIX}")
887948
target_compile_options(caliper-common
888949
PRIVATE $<$<CXX_COMPILER_ID:GNU>:-Wno-restrict>)
889950
target_compile_options(

cmake/cabana.patch

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,6 @@
1-
https://github.com/ECP-copa/Cabana/pull/815
21
--- CMakeLists.txt
32
+++ CMakeLists.txt
4-
@@ -216,12 +216,6 @@
5-
enable_testing()
3+
@@ -56,3 +56,2 @@ endforeach()
4+
if(Kokkos_ENABLE_CUDA)
5+
- kokkos_check(OPTIONS CUDA_LAMBDA)
66
endif()
7-
8-
-# enable doxygen
9-
-find_package(Doxygen)
10-
-if(Doxygen_FOUND)
11-
- doxygen_add_docs(doxygen core/src grid/src)
12-
-endif()
13-
-
14-
##---------------------------------------------------------------------------##
15-
## Libraries and Examples
16-
##---------------------------------------------------------------------------##

cmake/espresso_unit_test.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ function(ESPRESSO_UNIT_TEST)
7171
if(NOT TEST_NUM_PROC AND ESPRESSO_MPIEXEC_GUARD_SINGLETON_NUMA AND "${TEST_DEPENDS}" MATCHES "(^|;)([Bb]oost::mpi|MPI::MPI_CXX)($|;)")
7272
list(APPEND TEST_ENV_VARIABLES "OMPI_MCA_hwloc_base_binding_policy=none")
7373
endif()
74-
list(APPEND TEST_ENV_VARIABLES "OMP_PROC_BIND=false")
74+
list(APPEND TEST_ENV_VARIABLES "OMP_PROC_BIND=false" "OMP_NUM_THREADS=2")
7575
set_tests_properties(
7676
${TEST_NAME} PROPERTIES ENVIRONMENT "${TEST_ENV_VARIABLES}")
7777

cmake/heffte.patch

Lines changed: 0 additions & 10 deletions
This file was deleted.

0 commit comments

Comments
 (0)