1+ # cmake-lint: disable=C0103,C0111,E1120,R0913,R0915
2+
13cmake_minimum_required (VERSION 3.16 )
24cmake_policy (SET CMP0110 NEW )
35
@@ -8,10 +10,10 @@ project(
810 VERSION 1.2.0
911 LANGUAGES CXX C )
1012add_compile_options ("-D ENTITY_VERSION=\" ${PROJECT_VERSION} \" " )
13+ set (hash_cmd "git diff --quiet src/ && echo $(git rev-parse HEAD) " )
14+ string (APPEND hash_cmd "|| echo $(git rev-parse HEAD)-mod" )
1115execute_process (
12- COMMAND
13- bash -c
14- "git diff --quiet src/ && echo $(git rev-parse HEAD) || echo $(git rev-parse HEAD)-mod"
16+ COMMAND bash -c ${hash_cmd}
1517 WORKING_DIRECTORY "${CMAKE_SOURCE_DIR} "
1618 OUTPUT_VARIABLE GIT_HASH
1719 ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE )
@@ -46,6 +48,10 @@ set(mpi
4648 ${default_mpi}
4749 CACHE BOOL "Use MPI" )
4850
51+ set (gpu_aware_mpi
52+ ${default_gpu_aware_mpi}
53+ CACHE BOOL "Enable GPU-aware MPI" )
54+
4955# -------------------------- Compilation settings -------------------------- #
5056set (CMAKE_CXX_STANDARD 17)
5157set (CMAKE_CXX_STANDARD_REQUIRED ON )
@@ -55,9 +61,7 @@ if(${DEBUG} STREQUAL "OFF")
5561 set (CMAKE_BUILD_TYPE
5662 Release
5763 CACHE STRING "CMake build type" )
58- set (CMAKE_CXX_FLAGS
59- "${CMAKE_CXX_FLAGS} -DNDEBUG -Wno-unused-local-typedefs -Wno-unknown-cuda-version"
60- )
64+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DNDEBUG" )
6165else ()
6266 set (CMAKE_BUILD_TYPE
6367 Debug
@@ -79,38 +83,60 @@ set(BUILD_TESTING
7983 CACHE BOOL "Build tests" )
8084
8185# ------------------------ Third-party dependencies ------------------------ #
82- include (${CMAKE_CURRENT_SOURCE_DIR} /cmake/kokkosConfig.cmake )
8386include (${CMAKE_CURRENT_SOURCE_DIR} /cmake/dependencies.cmake )
8487
85- find_or_fetch_dependency (Kokkos FALSE )
86- find_or_fetch_dependency (plog TRUE )
88+ find_or_fetch_dependency (Kokkos FALSE QUIET )
89+ find_or_fetch_dependency (plog TRUE QUIET )
8790set (DEPENDENCIES Kokkos::kokkos)
8891include_directories (${plog_SRC} /include )
8992
9093# -------------------------------- Main code ------------------------------- #
9194set_precision (${precision} )
95+ if ("${Kokkos_DEVICES} " MATCHES "CUDA" )
96+ add_compile_options ("-D CUDA_ENABLED" )
97+ set (DEVICE_ENABLED ON )
98+ add_compile_options ("-D DEVICE_ENABLED" )
99+ elseif ("${Kokkos_DEVICES} " MATCHES "HIP" )
100+ add_compile_options ("-D HIP_ENABLED" )
101+ set (DEVICE_ENABLED ON )
102+ add_compile_options ("-D DEVICE_ENABLED" )
103+ elseif ("${Kokkos_DEVICES} " MATCHES "SYCL" )
104+ add_compile_options ("-D SYCL_ENABLED" )
105+ set (DEVICE_ENABLED ON )
106+ add_compile_options ("-D DEVICE_ENABLED" )
107+ else ()
108+ set (DEVICE_ENABLED OFF )
109+ endif ()
110+
111+ if (("${Kokkos_DEVICES} " MATCHES "CUDA" )
112+ OR ("${Kokkos_DEVICES} " MATCHES "HIP" )
113+ OR ("${Kokkos_DEVICES} " MATCHES "SYCL" ))
114+ set (DEVICE_ENABLED ON )
115+ else ()
116+ set (DEVICE_ENABLED OFF )
117+ endif ()
92118
93119# MPI
94120if (${mpi} )
95- include (${CMAKE_CURRENT_SOURCE_DIR} /cmake/MPIConfig.cmake )
121+ find_or_fetch_dependency (MPI FALSE REQUIRED )
122+ include_directories (${MPI_CXX_INCLUDE_PATH} )
123+ add_compile_options ("-D MPI_ENABLED" )
96124 set (DEPENDENCIES ${DEPENDENCIES} MPI::MPI_CXX)
125+ if (${DEVICE_ENABLED} )
126+ if (${gpu_aware_mpi} )
127+ add_compile_options ("-D GPU_AWARE_MPI" )
128+ endif ()
129+ else ()
130+ set (gpu_aware_mpi
131+ OFF
132+ CACHE BOOL "Use explicit copy when using MPI + GPU" )
133+ endif ()
97134endif ()
98135
99136# Output
100137if (${output} )
101- include (${CMAKE_CURRENT_SOURCE_DIR} /cmake/adios2Config.cmake )
102- find_or_fetch_dependency (adios2 FALSE )
103- if (NOT DEFINED ENV{HDF5_ROOT})
104- if (DEFINED ENV{CONDA_PREFIX})
105- execute_process (COMMAND bash -c "conda list | grep \" hdf5\" -q"
106- RESULT_VARIABLE HDF5_INSTALLED )
107- if (HDF5_INSTALLED EQUAL 0)
108- set (HDF5_ROOT $ENV{CONDA_PREFIX} )
109- endif ()
110- endif ()
111- endif ()
112- find_package (HDF5 REQUIRED )
113-
138+ find_or_fetch_dependency (adios2 FALSE QUIET )
139+ add_compile_options ("-D OUTPUT_ENABLED" )
114140 if (${mpi} )
115141 set (DEPENDENCIES ${DEPENDENCIES} adios2::cxx11_mpi)
116142 else ()
@@ -129,11 +155,12 @@ elseif(BENCHMARK)
129155else ()
130156 # ----------------------------------- GUI ---------------------------------- #
131157 if (${gui} )
132- find_or_fetch_dependency (nttiny FALSE )
158+ find_or_fetch_dependency (nttiny FALSE QUIET )
133159 endif ()
134160
135161 # ------------------------------- Main source ------------------------------ #
136162 set_problem_generator (${pgen} )
137163 add_subdirectory (${CMAKE_CURRENT_SOURCE_DIR} /src src )
138- include (${CMAKE_CURRENT_SOURCE_DIR} /cmake/report.cmake )
139164endif ()
165+
166+ include (${CMAKE_CURRENT_SOURCE_DIR} /cmake/report.cmake )
0 commit comments