-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
executable file
·158 lines (147 loc) · 3.74 KB
/
Copy pathCMakeLists.txt
File metadata and controls
executable file
·158 lines (147 loc) · 3.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
cmake_minimum_required(VERSION 3.30)
project(learn-project LANGUAGES CXX CUDA)
# Project-wide — affects all targets
add_compile_options(
-Wall -Wextra -Wpedantic
-Wreorder -Werror=reorder
-Wnon-virtual-dtor
-Wuninitialized
-Wsign-compare
-Wunused-parameter
-fdiagnostics-color=always
)
find_package(glad CONFIG REQUIRED)
find_package(glfw3 CONFIG REQUIRED)
find_package(glm CONFIG REQUIRED)
execute_process(
COMMAND .venv/bin/python3 -c "import torch; print(torch.utils.cmake_prefix_path, end='')"
OUTPUT_VARIABLE LIBTORCH_PREFIX
OUTPUT_STRIP_TRAILING_WHITESPACE
)
list(APPEND CMAKE_PREFIX_PATH "${LIBTORCH_PREFIX}")
find_package(Torch CONFIG REQUIRED)
execute_process(
COMMAND .venv/bin/python3 -c "import nvidia.nccl; print(nvidia.nccl.__path__[0], end='')"
OUTPUT_VARIABLE NCCL_PREFIX
OUTPUT_STRIP_TRAILING_WHITESPACE
)
find_package(Python3 REQUIRED COMPONENTS Development)
find_package(OpenCV CONFIG REQUIRED)
find_package(implot CONFIG REQUIRED)
find_package(imgui CONFIG REQUIRED)
find_package(indicators CONFIG REQUIRED)
find_package(fmt CONFIG REQUIRED)
find_package(CLI11 CONFIG REQUIRED)
find_package(cereal CONFIG REQUIRED)
find_package(boost_pfr CONFIG REQUIRED)
find_package(Gloo CONFIG REQUIRED)
find_package(CUDAToolkit REQUIRED)
# Hooks
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/scripts/launch_opengl.sh"
DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/")
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/src/shaders/"
DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/shaders")
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/assets/"
DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/assets")
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
add_library(interop STATIC
src/interop.cu
)
set_source_files_properties(src/interop.cu PROPERTIES COMPILE_FLAGS "-Wno-pedantic")
target_include_directories(interop
PRIVATE
include
)
target_link_libraries(interop
PRIVATE
CUDA::cudart
glad::glad
)
add_library(eval STATIC
src/nn/eval/evaluation.cpp
src/nn/eval/eval_params.cpp
)
target_precompile_headers(eval PRIVATE include/pch.hpp)
target_compile_definitions(eval
PRIVATE
CMAKE_PROJECT_ROOT="${CMAKE_SOURCE_DIR}/"
)
target_include_directories(eval
PRIVATE
include
"${NCCL_PREFIX}/include"
)
target_link_libraries(eval
PRIVATE
torch
indicators::indicators
fmt::fmt
cereal::cereal
Boost::pfr
glad::glad
glfw
glm::glm
${OpenCV_LIBS}
interop
)
add_executable(nn src/torch.cpp)
target_precompile_headers(nn PRIVATE include/pch.hpp)
target_compile_definitions(nn
PRIVATE
CMAKE_PROJECT_ROOT="${CMAKE_SOURCE_DIR}/"
)
target_include_directories(nn
PRIVATE
include
"${NCCL_PREFIX}/include"
)
set_target_properties(nn
PROPERTIES
CUDA_STANDARD 20
CUDA_STANDARD_REQUIRED ON
CXX_STANDARD 20
CXX_STANDARD_REQUIRED ON
INTERPROCEDURAL_OPTIMIZATION TRUE
)
target_link_libraries(nn
PRIVATE
torch
indicators::indicators
fmt::fmt
CLI11::CLI11
cereal::cereal
Boost::pfr
gloo
${OpenCV_LIBS}
eval
# Python3::Python
)
add_executable(opengl src/opengl.cpp)
target_link_libraries(opengl
PRIVATE
glad::glad
glfw
glm::glm
${OpenCV_LIBS}
)
set_target_properties(opengl PROPERTIES CXX_SCAN_FOR_MODULES OFF)
target_include_directories(opengl
PRIVATE
include
)
target_compile_definitions(opengl
PRIVATE
CMAKE_PROJECT_ROOT="${CMAKE_SOURCE_DIR}/"
)
enable_testing()
find_package(GTest CONFIG REQUIRED)
add_executable(test_torch tests/torch.cpp)
target_compile_definitions(test_torch PRIVATE CMAKE_PROJECT_ROOT="${CMAKE_SOURCE_DIR}/")
target_include_directories(test_torch PRIVATE include "${NCCL_PREFIX}/include")
target_link_libraries(test_torch PRIVATE
torch
GTest::gtest GTest::gtest_main GTest::gmock GTest::gmock_main
)
include(GoogleTest)
gtest_discover_tests(test_torch)