mirror of
https://github.com/lordmathis/CUDANet.git
synced 2025-11-05 09:24:22 +00:00
65 lines
1.6 KiB
CMake
65 lines
1.6 KiB
CMake
cmake_minimum_required(VERSION 3.20)
|
|
|
|
project(CUDANet
|
|
LANGUAGES CXX CUDA
|
|
)
|
|
|
|
find_package(CUDAToolkit QUIET)
|
|
|
|
# Set USE_CUDA option based on whether CUDA was found
|
|
if(CUDAToolkit_FOUND)
|
|
option(USE_CUDA "Use CUDA implementation" ON)
|
|
else()
|
|
option(USE_CUDA "Use CUDA implementation" OFF)
|
|
endif()
|
|
|
|
if(USE_CUDA)
|
|
enable_language(CUDA)
|
|
add_definitions(-DUSE_CUDA)
|
|
message(STATUS "Building library with CUDA support")
|
|
else()
|
|
message(STATUS "CUDA not found or disabled. Defaulting to CPU implementation.")
|
|
endif()
|
|
|
|
|
|
file(GLOB_RECURSE CPU_SOURCES
|
|
src/layers/*.cpp
|
|
src/model/*.cpp
|
|
)
|
|
|
|
set(LIBRARY_SOURCES ${CPU_SOURCES})
|
|
|
|
if(USE_CUDA)
|
|
file(GLOB_RECURSE CUDA_SOURCES
|
|
src/backends/cuda/*.cu
|
|
src/backends/cuda/utils/*.cu
|
|
src/backends/cuda/kernels/*.cu
|
|
src/backends/cuda/layers/*.cu
|
|
src/layers/*.cu # To be removed
|
|
)
|
|
set(LIBRARY_SOURCES ${LIBRARY_SOURCES} ${CUDA_SOURCES})
|
|
endif()
|
|
|
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
|
|
|
# Build static library
|
|
add_library(${PROJECT_NAME} STATIC ${LIBRARY_SOURCES})
|
|
|
|
if(USE_CUDA)
|
|
target_link_libraries(${PROJECT_NAME} CUDA::cudart)
|
|
endif()
|
|
|
|
# Set include directories for the library
|
|
target_include_directories(${PROJECT_NAME} PUBLIC
|
|
${CMAKE_CURRENT_SOURCE_DIR}/include
|
|
${CMAKE_CURRENT_SOURCE_DIR}/include/utils
|
|
${CMAKE_CURRENT_SOURCE_DIR}/include/kernels
|
|
${CMAKE_CURRENT_SOURCE_DIR}/include/layers
|
|
${CMAKE_CURRENT_SOURCE_DIR}/include/model
|
|
${CMAKE_CURRENT_SOURCE_DIR}/src
|
|
)
|
|
|
|
set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 20)
|
|
|
|
# Add testing subdirectory
|
|
add_subdirectory(test) |