|
1 | 1 | # CuBool library Cmake config file |
2 | 2 | # Add this file as sub-directory to your project to use library functionality |
| 3 | + |
3 | 4 | cmake_minimum_required(VERSION 3.17 FATAL_ERROR) |
4 | | -project(CUBOOL LANGUAGES CXX CUDA) |
| 5 | +project(cubool LANGUAGES CXX) |
5 | 6 |
|
6 | 7 | # Exposed to the user build options |
7 | | -option(CUBOOL_WITH_CUB "Build project with locally stored CUB library" ON) |
8 | | -option(CUBOOL_WITH_NSPARSE "Build library with nsparse crs matrix multiplication backend" ON) |
9 | | -option(CUBOOL_WITH_NAIVE "Build library with naive and naive-shared dense matrix multiplication" ON) |
10 | | -option(CUBOOL_BUILD_TESTS "Build project unit-tests with gtest" ON) |
| 8 | +option(CUBOOL_WITH_CUDA "Build library with cuda backend (default)" ON) |
| 9 | +option(CUBOOL_WITH_SEQUENTIAL "Build library with cpu sequential backend (fallback)" ON) |
| 10 | +option(CUBOOL_WITH_NAIVE "Build library with naive and naive-shared dense matrix multiplication" OFF) |
| 11 | +option(CUBOOL_BUILD_TESTS "Build project unit-tests with gtest" ON) |
11 | 12 |
|
12 | 13 | set(CUBOOL_VERSION_MAJOR 1) |
13 | 14 | set(CUBOOL_VERSION_MINOR 0) |
| 15 | +set(CUBOOL_VERSION_SUB 0) |
| 16 | + |
| 17 | +set(CUBOOL_DEBUG OFF) |
| 18 | +set(CUBOOL_RELEASE OFF) |
| 19 | + |
| 20 | +if (${CMAKE_BUILD_TYPE} MATCHES Release) |
| 21 | + message(STATUS "Build cubool in release mode") |
| 22 | + set(CUBOOL_RELEASE ON) |
| 23 | +elseif (${CMAKE_BUILD_TYPE} MATCHES Debug) |
| 24 | + message(STATUS "Build cubool in debug mode") |
| 25 | + set(CUBOOL_DEBUG ON) |
| 26 | +else() |
| 27 | + message(STATUS "Build cubool in release mode (default: was not specified)") |
| 28 | + set(CUBOOL_RELEASE ON) |
| 29 | + set(CMAKE_BUILD_TYPE Release) |
| 30 | +endif() |
14 | 31 |
|
15 | | -# Configure dependencies |
16 | | -if (CUBOOL_WITH_CUB) |
| 32 | +# Configure cuda dependencies |
| 33 | +if (CUBOOL_WITH_CUDA) |
17 | 34 | message(STATUS "Add cub as cuda utility") |
18 | 35 | set(CUB_ENABLE_HEADER_TESTING OFF CACHE BOOL "" FORCE) |
19 | 36 | set(CUB_ENABLE_TESTING OFF CACHE BOOL "" FORCE) |
20 | 37 | set(CUB_ENABLE_EXAMPLES OFF CACHE BOOL "" FORCE) |
21 | | - add_subdirectory(thirdparty/cub) |
| 38 | + add_subdirectory(deps/cub) |
22 | 39 | add_library(cub INTERFACE IMPORTED) |
23 | 40 | target_link_libraries(cub INTERFACE CUB::CUB) |
24 | | -endif() |
25 | 41 |
|
26 | | -if (CUBOOL_WITH_NSPARSE) |
27 | 42 | message(STATUS "Add nsparse library as crs matrix multiplication backend") |
28 | | - add_subdirectory(thirdparty/nsparse-um) |
| 43 | + add_subdirectory(deps/nsparse-um) |
29 | 44 | endif() |
30 | 45 |
|
31 | 46 | if (CUBOOL_WITH_NAIVE) |
32 | 47 | message(STATUS "Add naive library as dense matrix multiplication implementation for benchmarks") |
33 | | - add_subdirectory(thirdparty/naive) |
| 48 | + add_subdirectory(deps/naive) |
34 | 49 | endif() |
35 | 50 |
|
36 | 51 | if (CUBOOL_BUILD_TESTS) |
37 | 52 | message(STATUS "Add googletest as unit-testing library") |
38 | | - add_subdirectory(thirdparty/googletest) |
| 53 | + add_subdirectory(deps/gtest) |
39 | 54 | endif() |
40 | 55 |
|
41 | | -# Library sources |
42 | | -set(CUBOOL_SOURCES |
43 | | - # Public sources |
44 | | - include/cubool/cubool.h |
45 | | - # Private sources |
46 | | - src/cubool/config.hpp |
47 | | - src/cubool/cubool.cu |
48 | | - src/cubool/version.hpp |
49 | | - src/cubool/instance.cu |
50 | | - src/cubool/instance.cpp |
51 | | - src/cubool/instance.hpp |
52 | | - src/cubool/matrix_base.hpp |
53 | | - src/cubool/matrix_dense.cu |
54 | | - src/cubool/matrix_dense.hpp |
55 | | - src/cubool/matrix_csr.hpp |
56 | | - src/cubool/matrix_csr.cu |
57 | | - src/cubool/matrix_csr_multiply_sum.cu |
58 | | - src/cubool/matrix_csr_multiply_add.cu |
59 | | - src/cubool/matrix_csr_ewise_add.cu |
60 | | - src/cubool/matrix_csr_kron.cu |
61 | | - src/cubool/matrix_csr_transpose.cu |
62 | | - src/cubool/kernels/matrix_dense_multiply_add.cuh |
63 | | - src/cubool/kernels/matrix_dense_common.cuh |
64 | | - src/cubool/kernels/matrix_csr_spkron.cuh |
65 | | - src/cubool/kernels/matrix_csr_spmerge.cuh |
66 | | - src/cubool/kernels/matrix_csr_sptranspose.cuh |
67 | | - src/cubool/details/error.hpp |
68 | | - src/cubool/details/device_allocator.cuh |
69 | | - src/cubool/details/host_allocator.hpp |
70 | | - ) |
71 | | - |
72 | | -# Shared library object config |
73 | | -add_library(cubool SHARED ${CUBOOL_SOURCES}) |
74 | | - |
75 | | -target_include_directories(cubool PUBLIC ${CMAKE_CURRENT_LIST_DIR}/include) |
76 | | -target_include_directories(cubool PRIVATE ${CMAKE_CURRENT_LIST_DIR}/src) |
77 | | - |
78 | | -target_compile_definitions(cubool PRIVATE CUBOOL_VERSION_MAJOR=${CUBOOL_VERSION_MAJOR}) |
79 | | -target_compile_definitions(cubool PRIVATE CUBOOL_VERSION_MINOR=${CUBOOL_VERSION_MINOR}) |
80 | | - |
81 | | -target_link_libraries(cubool PRIVATE nsparse_um) |
82 | | -target_compile_features(cubool PUBLIC cxx_std_14) |
83 | | - |
84 | | -set_target_properties(cubool PROPERTIES CXX_STANDARD 17) |
85 | | -set_target_properties(cubool PROPERTIES CXX_STANDARD_REQUIRED ON) |
86 | | -set_target_properties(cubool PROPERTIES CUDA_STANDARD 14) |
87 | | -set_target_properties(cubool PROPERTIES CUDA_STANDARD_REQUIRED ON) |
88 | | -set_target_properties(cubool PROPERTIES CUDA_SEPARABLE_COMPILATION ON) |
89 | | - |
90 | | - |
91 | | -set(CUBOOL_DUMMY_SOURCES |
92 | | - include/cubool/cubool.h |
93 | | - src/cubool-dummy/cubool.cpp |
94 | | - src/cubool-dummy/version.hpp |
95 | | - src/cubool-dummy/instance.hpp |
96 | | - src/cubool-dummy/matrix.hpp |
97 | | - ) |
98 | | - |
99 | | -# Create dummy library instance for testing purposes |
100 | | -add_library(cubool_dummy SHARED ${CUBOOL_DUMMY_SOURCES}) |
101 | | - |
102 | | -target_include_directories(cubool_dummy PUBLIC ${CMAKE_CURRENT_LIST_DIR}/include) |
103 | | -target_include_directories(cubool_dummy PRIVATE ${CMAKE_CURRENT_LIST_DIR}/src) |
104 | | - |
105 | | -target_compile_definitions(cubool_dummy PRIVATE CUBOOL_VERSION_MAJOR=${CUBOOL_VERSION_MAJOR}) |
106 | | -target_compile_definitions(cubool_dummy PRIVATE CUBOOL_VERSION_MINOR=${CUBOOL_VERSION_MINOR}) |
107 | | - |
108 | | -target_compile_features(cubool_dummy PUBLIC cxx_std_11) |
109 | | - |
110 | | -set_target_properties(cubool_dummy PROPERTIES CXX_STANDARD 11) |
111 | | -set_target_properties(cubool_dummy PROPERTIES CXX_STANDARD_REQUIRED ON) |
112 | | - |
113 | | -# If tests enabled, add tests sources to the build |
114 | | -if (CUBOOL_BUILD_TESTS) |
115 | | - add_subdirectory(tests) |
116 | | -endif() |
| 56 | +# Actual cxx implementation |
| 57 | +add_subdirectory(cubool) |
117 | 58 |
|
118 | 59 | # Copy scripts into binary directory |
119 | 60 | file(COPY scripts DESTINATION ${CMAKE_BINARY_DIR}/) |
|
0 commit comments