@@ -64,9 +64,20 @@ function(set_target_hip_arch target)
6464 endif ()
6565endfunction ()
6666
67- # Detect and enable CUDA
68- STRING (REGEX REPLACE "\- std=[^ ]*" "" O2_GPU_CMAKE_CXX_FLAGS_NOSTD "${CMAKE_CXX_FLAGS} " ) # Need to strip c++17 imposed by alidist defaults
67+ # Need to strip c++17 imposed by alidist defaults
68+ STRING (REGEX REPLACE "\- std=[^ ]*" "" O2_GPU_CMAKE_CXX_FLAGS_NOSTD "${CMAKE_CXX_FLAGS} " )
6969
70+ # ---------------------------------- Fast Math / Deterministic Mode ----------------------------------
71+ if (GPUCA_NO_FAST_MATH_WHOLEO2)
72+ set (GPUCA_NO_FAST_MATH 1)
73+ add_definitions (-DGPUCA_NO_FAST_MATH)
74+ set (CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE_UPPER} "${CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE_UPPER} } -fno-fast-math -ffp-contract=off" )
75+ set (CMAKE_C_FLAGS_${CMAKE_BUILD_TYPE_UPPER} "${CMAKE_C_FLAGS_${CMAKE_BUILD_TYPE_UPPER} } -fno-fast-math -ffp-contract=off" )
76+ endif ()
77+ set (GPUCA_CXX_NO_FAST_MATH_FLAGS "-fno-fast-math -ffp-contract=off" )
78+ set (GPUCA_CUDA_NO_FAST_MATH_FLAGS "--ftz=false --prec-div=true --prec-sqrt=true --fmad false" )
79+
80+ # ---------------------------------- CUDA ----------------------------------
7081if (ENABLE_CUDA)
7182 set (CMAKE_CUDA_STANDARD ${CMAKE_CXX_STANDARD} )
7283 set (CMAKE_CUDA_STANDARD_REQUIRED TRUE )
@@ -124,7 +135,6 @@ if(ENABLE_CUDA)
124135 else ()
125136 set (CMAKE_CUDA_FLAGS_${CMAKE_BUILD_TYPE_UPPER} "${CMAKE_CUDA_FLAGS_${CMAKE_BUILD_TYPE_UPPER} } -Xptxas -O4 -Xcompiler -O4" )
126137 endif ()
127- set (GPUCA_CUDA_NO_FAST_MATH_FLAGS "--ftz=false --prec-div=true --prec-sqrt=true --fmad false" )
128138 if (DEFINED GPUCA_NO_FAST_MATH AND "${GPUCA_NO_FAST_MATH} " )
129139 set (CMAKE_CUDA_FLAGS_${CMAKE_BUILD_TYPE_UPPER} "${CMAKE_CUDA_FLAGS_${CMAKE_BUILD_TYPE_UPPER} } ${GPUCA_CUDA_NO_FAST_MATH_FLAGS} " )
130140 elseif (NOT CMAKE_BUILD_TYPE_UPPER STREQUAL "DEBUG" )
@@ -146,19 +156,14 @@ if(ENABLE_CUDA)
146156 endif ()
147157endif ()
148158
149- # Detect and enable OpenCL 1.2 from AMD
159+ # ---------------------------------- HIP ----------------------------------
150160if (ENABLE_OPENCL)
151161 find_package (OpenCL)
152162 if (ENABLE_OPENCL AND NOT ENABLE_OPENCL STREQUAL "AUTO" )
153163 set_package_properties(OpenCL PROPERTIES TYPE REQUIRED)
154164 else ()
155165 set_package_properties(OpenCL PROPERTIES TYPE OPTIONAL )
156166 endif ()
157- endif ()
158-
159- # Detect and enable OpenCL 2.x
160- if (ENABLE_OPENCL)
161- find_package (OpenCL)
162167 find_package (LLVM)
163168 if (LLVM_FOUND)
164169 find_package (Clang)
@@ -196,7 +201,7 @@ if(ENABLE_OPENCL)
196201 endif ()
197202endif ()
198203
199- # Detect and enable HIP
204+ # ---------------------------------- HIP ----------------------------------
200205if (ENABLE_HIP)
201206 if (NOT "$ENV{CMAKE_PREFIX_PATH} " MATCHES "rocm" AND NOT CMAKE_PREFIX_PATH MATCHES "rocm" AND EXISTS "/opt/rocm/lib/cmake/" )
202207 list (APPEND CMAKE_PREFIX_PATH "/opt/rocm/lib/cmake" )
@@ -303,7 +308,6 @@ if(ENABLE_HIP)
303308 endif ()
304309 message (FATAL_ERROR "HIP requested but some of the above packages are not found" )
305310 endif ()
306-
307311endif ()
308312
309313# if we end up here without a FATAL, it means we have found the "O2GPU" package
0 commit comments