CUDA
This commit is contained in:
+30
-1
@@ -6,12 +6,16 @@ set(CMAKE_CXX_STANDARD 17)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
set(CMAKE_CXX_EXTENSIONS OFF)
|
||||
|
||||
option(SZILASSI_ENABLE_CUDA "Build the FP32 CUDA global-search backend" ON)
|
||||
|
||||
set(EIGEN_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/external/eigen-3.4.0" CACHE PATH "Eigen include root")
|
||||
if(NOT EXISTS "${EIGEN_ROOT}/Eigen/Dense")
|
||||
message(FATAL_ERROR "Eigen not found at ${EIGEN_ROOT}. Download Eigen 3.4.0 into external/eigen-3.4.0 or pass -DEIGEN_ROOT=...")
|
||||
endif()
|
||||
|
||||
add_library(neighborly_core
|
||||
src/Checkpoint/GlobalCheckpoint.cpp
|
||||
src/Checkpoint/GlobalCheckpoint.h
|
||||
src/NeighborlyCore/plane.h
|
||||
src/NeighborlyCore/precise_geometry.h
|
||||
src/NeighborlyCore/util.cpp
|
||||
@@ -21,9 +25,33 @@ add_library(neighborly_core
|
||||
projects/Szilassi/solver.h
|
||||
)
|
||||
|
||||
include(CheckLanguage)
|
||||
if(SZILASSI_ENABLE_CUDA)
|
||||
check_language(CUDA)
|
||||
endif()
|
||||
|
||||
if(SZILASSI_ENABLE_CUDA AND CMAKE_CUDA_COMPILER)
|
||||
enable_language(CUDA)
|
||||
add_library(neighborly_cuda src/CudaSearch/cuda_search.cu)
|
||||
set_target_properties(neighborly_cuda PROPERTIES
|
||||
CUDA_ARCHITECTURES "89-real;120-real;120-virtual"
|
||||
CUDA_STANDARD 17
|
||||
CUDA_STANDARD_REQUIRED ON
|
||||
)
|
||||
target_compile_definitions(neighborly_cuda PUBLIC SZILASSI_HAS_CUDA=1)
|
||||
else()
|
||||
add_library(neighborly_cuda src/CudaSearch/cuda_search_stub.cpp)
|
||||
message(STATUS "CUDA Toolkit not found: building a diagnostic stub backend")
|
||||
endif()
|
||||
|
||||
target_include_directories(neighborly_cuda PUBLIC
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/CudaSearch"
|
||||
)
|
||||
|
||||
target_include_directories(neighborly_core
|
||||
PUBLIC
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/NeighborlyCore"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/Checkpoint"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/projects/Szilassi"
|
||||
"${EIGEN_ROOT}"
|
||||
)
|
||||
@@ -36,7 +64,7 @@ else()
|
||||
endif()
|
||||
|
||||
add_executable(neighborly_main projects/Szilassi/main.cpp)
|
||||
target_link_libraries(neighborly_main PRIVATE neighborly_core)
|
||||
target_link_libraries(neighborly_main PRIVATE neighborly_core neighborly_cuda)
|
||||
|
||||
add_executable(verify_cpp projects/VerifyCpp/verify_cpp.cpp)
|
||||
target_link_libraries(verify_cpp PRIVATE neighborly_core)
|
||||
@@ -44,5 +72,6 @@ target_link_libraries(verify_cpp PRIVATE neighborly_core)
|
||||
add_executable(polyhedron_gui WIN32 projects/PolyhedronGui/launcher_gui.cpp)
|
||||
if(MSVC)
|
||||
target_compile_definitions(polyhedron_gui PRIVATE UNICODE _UNICODE NOMINMAX)
|
||||
target_compile_options(polyhedron_gui PRIVATE /utf-8)
|
||||
target_link_libraries(polyhedron_gui PRIVATE shell32)
|
||||
endif()
|
||||
|
||||
Reference in New Issue
Block a user