Skip to content
Snippets Groups Projects

Fix: cuda linking and Release jobs dependencies pulling

Merged Houssem ROUIS requested to merge fix_cuda_link into main
3 files
+ 44
34
Compare changes
  • Side-by-side
  • Inline
Files
3
+ 38
26
Include(FetchContent)
include(FetchContent)
# Fetch and make available Catch2 for unit testing
FetchContent_Declare(
Catch2
GIT_REPOSITORY https://github.com/catchorg/Catch2.git
GIT_TAG v3.0.1 # or a later release
)
FetchContent_MakeAvailable(Catch2)
# Gather all source files for the test executable
file(GLOB_RECURSE src_files "*.cpp")
set(tests_exe tests${module_name})
add_executable(tests_exe ${src_files})
set_target_properties(tests_exe PROPERTIES CUDA_SEPARABLE_COMPILATION ON)
# Find required and optional dependencies
find_package(aidge_backend_cpu REQUIRED)
find_package(aidge_backend_cuda)
if(NOT DEFINED CMAKE_CUDA_STANDARD)
set(CMAKE_CUDA_STANDARD 14)
set(CMAKE_CUDA_STANDARD_REQUIRED ON)
# Find CUDA Toolkit if CUDA backend is available
if(aidge_backend_cuda_FOUND)
# Specify CUDA Toolkit without COMPONENTS to avoid missing imported targets
enable_language(CUDA)
find_package(CUDA REQUIRED)
find_package(CUDAToolkit REQUIRED)
if(NOT DEFINED CMAKE_CUDA_STANDARD)
set(CMAKE_CUDA_STANDARD 14)
set(CMAKE_CUDA_STANDARD_REQUIRED ON)
endif()
endif()
target_link_libraries(tests_exe
# Define the test executable
add_executable(${tests_exe} ${src_files})
# Include CUDA headers
include_directories(${CUDA_INCLUDE_DIRS})
# Link against the required aidge_backend_cpu library
target_link_libraries(${tests_exe}
PUBLIC ${module_name} _aidge_backend_cpu
PRIVATE Catch2::Catch2WithMain
)
# Conditional CUDA linkage and definitions
if(aidge_backend_cuda_FOUND)
# Enable CUDA language support and separable compilation for the target
enable_language(CUDA)
find_package(CUDAToolkit REQUIRED)
target_link_libraries( _aidge_backend_cuda
INTERFACE
cudart # Ensure CUDA dependencies are included
cublas # Include other CUDA components if needed
cudnn
)
target_include_directories(_aidge_backend_cuda INTERFACE ${CUDAToolkit_INCLUDE_DIRS})
target_link_libraries(tests_exe
PUBLIC ${module_name} _aidge_backend_cuda
set_target_properties(${tests_exe} PROPERTIES CUDA_SEPARABLE_COMPILATION ON)
target_include_directories(${tests_exe} PRIVATE ${CUDAToolkit_INCLUDE_DIRS})
# Link manually specified CUDA libraries if the targets are not available
target_link_libraries(${tests_exe}
PUBLIC
_aidge_backend_cuda
CUDA::cudart
CUDA::cublas
cudnn
)
# Define a preprocessor macro if aidge_backend_cuda is linked
target_compile_definitions(tests_exe PUBLIC USE_AIDGE_BACKEND_CUDA)
# Define a preprocessor macro to indicate CUDA support
target_compile_definitions(${tests_exe} PUBLIC USE_AIDGE_BACKEND_CUDA)
endif()
# Add Catch2 test discovery
list(APPEND CMAKE_MODULE_PATH ${catch2_SOURCE_DIR}/extras)
include(CTest)
include(Catch)
catch_discover_tests(tests_exe)
catch_discover_tests(${tests_exe})
Loading