@@ -27,13 +27,24 @@ set(ENABLE_EXAMPLES Off CACHE BOOL "Enable RAJA examples")
2727set (RAJA_ENABLE_EXERCISES Off CACHE BOOL "Enable RAJA exercises" )
2828
2929if (ENABLE_KOKKOS)
30- set (CMAKE_CXX_STANDARD 14)
31- set (BLT_CXX_STANDARD 14)
30+ set (CMAKE_CXX_STANDARD 17)
31+ set (BLT_CXX_STANDARD 17)
32+ else ()
33+ set (CMAKE_CXX_STANDARD 11)
34+ set (BLT_CXX_STANDARD 11)
3235endif ()
36+
3337include (blt/SetupBLT.cmake )
3438
39+ #
40+ # Define RAJA PERFSUITE settings...
41+ #
42+
43+ cmake_dependent_option (RAJA_PERFSUITE_ENABLE_MPI "Build with MPI" On "ENABLE_MPI" Off )
44+
3545#
3646# Define RAJA settings...
47+ #
3748
3849set (ENABLE_TESTS Off CACHE BOOL "" )
3950set (ENABLE_EXAMPLES Off CACHE BOOL "" )
@@ -54,8 +65,11 @@ add_subdirectory(tpl/RAJA)
5465get_property (RAJA_INCLUDE_DIRS DIRECTORY tpl/RAJA PROPERTY INCLUDE_DIRECTORIES )
5566include_directories (${RAJA_INCLUDE_DIRS} )
5667
68+
5769#
5870# Setup variables to pass to Perf suite
71+ #
72+
5973#
6074# These (hopefully temporary) macro constants are needed to work-around
6175# performance issues in the xl compiler.
@@ -73,6 +87,9 @@ set(RAJA_PERFSUITE_VERSION_PATCHLEVEL 0)
7387
7488set (RAJA_PERFSUITE_DEPENDS RAJA)
7589
90+ if (RAJA_PERFSUITE_ENABLE_MPI)
91+ list (APPEND RAJA_PERFSUITE_DEPENDS mpi)
92+ endif ()
7693if (ENABLE_OPENMP)
7794 list (APPEND RAJA_PERFSUITE_DEPENDS openmp)
7895endif ()
@@ -81,7 +98,7 @@ if (ENABLE_CUDA)
8198endif ()
8299
83100# Kokkos requires hipcc as the CMAKE_CXX_COMPILER for HIP AMD/VEGA GPU
84- # platforms, whereas RAJAPerf Suite uses blt/CMake FindHIP to set HIP compiler
101+ # platforms, whereas RAJAPerf Suite uses blt/CMake FindHIP to set HIP compiler.
85102# Separate RAJAPerf Suite and Kokkos handling of HIP compilers
86103
87104if ((ENABLE_HIP) AND (NOT ENABLE_KOKKOS))
@@ -92,10 +109,16 @@ set(RAJAPERF_BUILD_SYSTYPE $ENV{SYS_TYPE})
92109set (RAJAPERF_BUILD_HOST $ENV{HOSTNAME} )
93110
94111if (ENABLE_CUDA)
95- if (ENABLE_CUDA AND ENABLE_KOKKOS)
96- set (CMAKE_CUDA_STANDARD 14)
112+ set (CMAKE_CUDA_STANDARD 11)
113+
114+ # Kokkos Cuda handling
115+ if (ENABLE_KOKKOS)
116+ set (CMAKE_CUDA_STANDARD 17)
117+ set (CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -restrict --extended-lambda --expt-relaxed-constexpr" )
118+ else ()
119+ set (CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -restrict -arch ${CUDA_ARCH} --expt-extended-lambda --expt-relaxed-constexpr" )
97120 endif ()
98- set (CMAKE_CUDA_FLAGS " ${CMAKE_CUDA_FLAGS} -restrict -arch ${CUDA_ARCH} --expt-extended-lambda --expt-relaxed-constexpr" )
121+
99122 set (RAJAPERF_COMPILER "${CUDA_NVCC_EXECUTABLE} " )
100123 list (APPEND RAJAPERF_COMPILER ${CMAKE_CXX_COMPILER} )
101124 set (RAJAPERF_COMPILER_OPTIONS "${CUDA_NVCC_FLAGS} " )
@@ -115,44 +138,41 @@ configure_file(${CMAKE_SOURCE_DIR}/src/rajaperf_config.hpp.in
115138
116139include_directories ($<BUILD_INTERFACE :${PROJECT_BINARY_DIR} /bin >)
117140
118- # Make sure RAJA flags propagate (we need to do some tidying to
141+ # Make sure RAJA flags propagate (we need to do some tidying to
119142# remove project-specific CMake variables that are no longer needed)
120143set (CUDA_NVCC_FLAGS ${RAJA_NVCC_FLAGS} )
121144
145+ #
146+ # Each directory in the perf suite has its own CMakeLists.txt file.
147+ #
148+
122149# The statement below is required for Kokkos compilation.
123150if (ENABLE_KOKKOS)
124151 include_directories (SYSTEM ${CMAKE_CURRENT_SOURCE_DIR} /tpl/RAJA/include/ )
125152endif ()
126153
127-
128154# ENABLE_KOKKOS is A RAJAPerf Suite Option
129155if (ENABLE_KOKKOS)
130156 add_definitions (-DRUN_KOKKOS )
131157 if (ENABLE_HIP)
132158 set (Kokkos_ENABLE_HIP ON CACHE BOOL "Kokkos builds for AMD HIP set the
133- Kokkos_ENABLE_HIP variable to ON" )
134- #set(Kokkos_ARCH_VEGA900 ON CACHE BOOL "Docstring") #TODO: better
159+ Kokkos_ENABLE_HIP variable to ON" )
135160 endif ()
161+
136162 if (ENABLE_TARGET_OPENMP)
137- set (Kokkos_ENABLE_OPENMPTARGET ON CACHE BOOL "Docstring" )
138- set (Kokkos_ARCH_VOLTA70 ON CACHE BOOL "Docstring" ) #TODO: better
139- set (CMAKE_CXX_STANDARD 17)
140- set (BLT_CXX_STANDARD 17)
163+ set (Kokkos_ENABLE_OPENMPTARGET ON CACHE BOOL "Docstring" )
141164 set (RAJA_ENABLE_TARGET_OPENMP ON CACHE BOOL "Docstring" )
142165 if (NOT CMAKE_BUILD_TYPE MATCHES Debug)
143166 if (NOT EXPERIMENTAL_BUILD)
144- message (FATAL_ERROR "Kokkos builds with OpenMPTarget require a Debug build to succeed at the moment. Rebuild with CMAKE_BUILD_TYPE=Debug. If you're a compiler developer, rebuild with -DEXPERIMENTAL_BUILD=ON" )
167+ message (FATAL_ERROR "Kokkos builds with OpenMPTarget require a Debug build to succeed at the moment. Rebuild with CMAKE_BUILD_TYPE=Debug. If you're a compiler developer, rebuild with -DEXPERIMENTAL_BUILD=ON" )
145168 endif ()
146169 endif ()
147-
148- #add_definitions(-DRAJA_ENABLE_TARGET_OPENMP)
149170 endif ()
150171
151172# ENABLE_CUDA IS A RAJA PERFSUITE OPTION
152173 if (ENABLE_CUDA)
153- set (Kokkos_ENABLE_CUDA ON CACHE BOOL "Docstring" )
154- set (Kokkos_ENABLE_CUDA_LAMBDA ON CACHE BOOL "Docstring" )
155- set (Kokkos_ARCH_VOLTA70 ON CACHE BOOL "Docstring" ) #TODO: better
174+ set (Kokkos_ENABLE_CUDA ON CACHE BOOL "Docstring" )
175+ set (Kokkos_ENABLE_CUDA_LAMBDA ON CACHE BOOL "Docstring" )
156176 enable_language (CUDA )
157177 endif ()
158178 if (ENABLE_OPENMP)
@@ -162,7 +182,6 @@ Kokkos_ENABLE_HIP variable to ON")
162182 add_subdirectory (tpl/kokkos )
163183 get_property (KOKKOS_INCLUDE_DIRS DIRECTORY tpl/kokkos PROPERTY INCLUDE_DIRECTORIES )
164184 include_directories (${KOKKOS_INCLUDE_DIRS} )
165-
166185 list (APPEND RAJA_PERFSUITE_DEPENDS kokkos)
167186endif ()
168187
0 commit comments