-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
159 lines (137 loc) · 5.13 KB
/
CMakeLists.txt
File metadata and controls
159 lines (137 loc) · 5.13 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
159
cmake_minimum_required(VERSION 3.15)
include (FetchContent)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS ON)
project(GraphZeppelinExperiments)
# Make the default build type Release. If user or another
# project sets a different value than use that
if(NOT CMAKE_BUILD_TYPE)
message(STATUS "Setting build type to default -- Release")
set(CMAKE_BUILD_TYPE "Release" CACHE
STRING "Choose the type of build." FORCE)
endif()
message(STATUS "Experiments Build Type ${CMAKE_BUILD_TYPE}")
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
message(STATUS "Adding GNU compiler flags")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -W -Wall")
elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
message(STATUS "Adding MSVC compiler flags")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Wall")
else()
message(STATUS "${CMAKE_CXX_COMPILER_ID} not recognized, no flags added")
endif()
# Install GraphZeppelin Project
FetchContent_Declare(
GraphZeppelin
GIT_REPOSITORY https://github.com/GraphStreamingProject/GraphZeppelin
GIT_TAG v1.0.0
)
find_package(Boost 1.62.0)
if(NOT Boost_FOUND)
message("ERROR: Boost not found. AGM-sketching experiments will not be built. Please install boost 1.62.0 or higher")
endif()
FetchContent_MakeAvailable(GraphZeppelin)
###############################################################
######################### Utilities #########################
###############################################################
# clean gets top logs ready for processing by max_finder
add_executable(top_cleaner
util/clean.cpp
)
# max_finder gives the maximum memory usage of a log
# and returns RES/SWAP that gave this
add_executable(top_max_finder
util/max_finder.cpp
)
###############################################################
######################## Experiments ########################
###############################################################
# Test the speed and memory consumption of the algorithm
add_executable(speed_process_stream
util/configuration.cpp
util/insertion_mgr.cpp
speed_expr/speed_process_stream.cpp
)
add_dependencies(speed_process_stream GraphZeppelin)
target_link_libraries(speed_process_stream PRIVATE GraphZeppelin GraphZeppelinCommon)
add_executable(speed_experiment
util/configuration.cpp
util/insertion_mgr.cpp
util/shell_exec.cpp
speed_expr/speed_expr_manager.cpp
)
add_dependencies(speed_experiment GraphZeppelin speed_process_stream)
target_link_libraries(speed_experiment PRIVATE GraphZeppelin)
# Test how insertion rate scales with additional threads
add_executable(parallel_experiment
util/configuration.cpp
util/insertion_mgr.cpp
parallel_expr/parallel_expr.cpp
)
add_dependencies(parallel_experiment GraphZeppelin)
target_link_libraries(parallel_experiment PRIVATE GraphZeppelin)
# Test the impact of buffer size upon performace
add_executable(buffersize_experiment
util/configuration.cpp
util/insertion_mgr.cpp
buffer_expr/buffer_expr.cpp
)
add_dependencies(buffersize_experiment GraphZeppelin)
target_link_libraries(buffersize_experiment PRIVATE GraphZeppelin)
# Test correctness by running many insertions and many queries
add_executable(cont_test
cont_expr/cont_expr.cpp)
add_dependencies(cont_test GraphZeppelin)
target_link_libraries(cont_test PRIVATE GraphZeppelinVerifyCC)
# Test query performance by running many queries during ingestion
add_executable(one_query_expr
query_expr/query_expr.cpp
util/configuration.cpp
)
add_dependencies(one_query_expr GraphZeppelin)
target_link_libraries(one_query_expr PRIVATE GraphZeppelin)
# Executable for managing query experiment
add_executable(query_experiment
query_expr/query_expr_manager.cpp
util/shell_exec.cpp
)
add_dependencies(query_experiment GraphZeppelin)
target_link_libraries(query_experiment PRIVATE GraphZeppelin)
#########
# Three executables for the purpose of comparing the performance
# of CubeSketch with state of the art l0-sketching
# Another executable to combine results and calculate speedup/size reduction
#########
# Sketch_experiment on CubeSketch
add_executable(cube_sketch
sketch_expr/cube_sketch_expr.cpp
)
add_dependencies(cube_sketch GraphZeppelin)
target_link_libraries(cube_sketch PRIVATE GraphZeppelin)
if(Boost_FOUND)
# AGM sketching using 64 bit types
add_executable(agm_sketch_native
sketch_expr/agm_sketch_expr.cpp
sketch_expr/agm_sketching/src/bucket.cpp
sketch_expr/agm_sketching/src/int127.cpp
sketch_expr/agm_sketching/src/agm_sketch.cpp
sketch_expr/agm_sketching/src/update.cpp
sketch_expr/agm_sketching/src/util.cpp
)
target_link_libraries(agm_sketch_native PRIVATE xxhash)
target_compile_definitions(agm_sketch_native PRIVATE USE_NATIVE_F)
# AGM sketching using 128 bit types
add_executable(agm_sketch
sketch_expr/agm_sketch_expr.cpp
sketch_expr/agm_sketching/src/bucket.cpp
sketch_expr/agm_sketching/src/int127.cpp
sketch_expr/agm_sketching/src/agm_sketch.cpp
sketch_expr/agm_sketching/src/update.cpp
sketch_expr/agm_sketching/src/util.cpp
)
target_link_libraries(agm_sketch PRIVATE xxhash)
add_executable(combine_sketch_expr_results
sketch_expr/combine_sketch_expr_results.cpp
)
endif()