@@ -209,16 +209,29 @@ set_property(TARGET aprObjLib PROPERTY POSITION_INDEPENDENT_CODE ON)
209209
210210if (APR_USE_CUDA)
211211 message (STATUS "APR: Building CUDA for APR" )
212- set (CMAKE_CUDA_COMPILER "/usr/local/cuda/bin/nvcc" )
212+ # set(CMAKE_CUDA_COMPILER "/usr/local/cuda/bin/nvcc")
213213 set (CMAKE_CUDA_STANDARD 17)
214+ if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.24.0" )
215+ set (CMAKE_CUDA_ARCHITECTURES native)
216+ endif ()
217+ set (CMAKE_CUDA_SEPARABLE_COMPILATION ON )
218+ set (CMAKE_POSITION_INDEPENDENT_CODE ON )
214219 set (CMAKE_CUDA_RUNTIME_LIBRARY "Static" )
215- set (CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -rdc=true --fmad=false --default-stream per-thread -Wno-deprecated-gpu-targets -Xptxas -v -DAPR_USE_CUDA" )
220+ set (CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} --fmad=false --default-stream per-thread -Wno-deprecated-gpu-targets -Xptxas -v -DAPR_USE_CUDA" )
221+
216222 set (CMAKE_CUDA_FLAGS_RELEASE "-O3" ) # -lineinfo for profiling
217223 set (CMAKE_CUDA_FLAGS_DEBUG "-O0 -g -G" )
218224 if (APR_BENCHMARK)
219225 set (CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -DAPR_BENCHMARK" )
220226 endif ()
221227 enable_language (CUDA)
228+
229+ if (${CMAKE_CUDA_COMPILER_VERSION} VERSION_GREATER 13.0.0)
230+ # For CUDA versions > 13.0.0 keep compatibility with older CUDAs - new CUDA introduce changes that
231+ # impact ELF visibility and linkage for __global__ functions and device variables
232+ set (CMAKE_CUDA_FLAGS "--device-entity-has-hidden-visibility=false -static-global-template-stub=false ${CMAKE_CUDA_FLAGS} " )
233+ endif ()
234+
222235 set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DAPR_USE_CUDA" )
223236 set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DAPR_USE_CUDA" )
224237 set (APR_CUDA_SOURCE_FILES
@@ -243,8 +256,9 @@ if(APR_BUILD_STATIC_LIB)
243256 # generate static library used as a intermediate step in generating fat lib
244257 set (STATIC_TARGET_NAME staticLib)
245258 add_library (${STATIC_TARGET_NAME} STATIC $<TARGET_OBJECTS:aprObjLib> ${APR_CUDA_SOURCE_FILES} )
259+ set_property (TARGET ${STATIC_TARGET_NAME} PROPERTY CUDA_SEPARABLE_COMPILATION ON )
246260 set_property (TARGET ${STATIC_TARGET_NAME} PROPERTY CUDA_ARCHITECTURES OFF )
247- target_compile_features (${STATIC_TARGET_NAME} PUBLIC cxx_std_14 )
261+ target_compile_features (${STATIC_TARGET_NAME} PUBLIC cxx_std_17 )
248262 set_target_properties (${STATIC_TARGET_NAME} PROPERTIES OUTPUT_NAME ${LIBRARY_NAME} )
249263 set_target_properties (${STATIC_TARGET_NAME} PROPERTIES CUDA_SEPARABLE_COMPILATION OFF )
250264 target_include_directories (${STATIC_TARGET_NAME} PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /src> $<BUILD_INTERFACE:${PROJECT_BINARY_DIR} >)
@@ -266,6 +280,7 @@ if(APR_BUILD_SHARED_LIB)
266280 set (SHARED_TARGET_NAME sharedLib)
267281 add_library (${SHARED_TARGET_NAME} SHARED $<TARGET_OBJECTS:aprObjLib> ${APR_CUDA_SOURCE_FILES} )
268282 set_property (TARGET ${SHARED_TARGET_NAME} PROPERTY CUDA_ARCHITECTURES OFF )
283+ set_property (TARGET ${SHARED_TARGET_NAME} PROPERTY CUDA_SEPARABLE_COMPILATION ON )
269284 target_include_directories (${SHARED_TARGET_NAME} PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /src> $<BUILD_INTERFACE:${PROJECT_BINARY_DIR} >)
270285 set_target_properties (${SHARED_TARGET_NAME} PROPERTIES OUTPUT_NAME ${LIBRARY_NAME} )
271286 set_target_properties (${SHARED_TARGET_NAME} PROPERTIES LIBRARY_OUTPUT_NAME ${LIBRARY_NAME} )
0 commit comments