Skip to content

Commit 0ba2f45

Browse files
committed
Fixes needed by CUDA 13.0 - now code compiles also on CUDA 12.x
1 parent 1f27876 commit 0ba2f45

File tree

1 file changed

+18
-3
lines changed

1 file changed

+18
-3
lines changed

CMakeLists.txt

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -209,16 +209,29 @@ set_property(TARGET aprObjLib PROPERTY POSITION_INDEPENDENT_CODE ON)
209209

210210
if(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

Comments
 (0)