Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
120 commits
Select commit Hold shift + click to select a range
601640f
added SPAA graphs, density sweep, and batch size sweep scripts
quintendeman Jul 11, 2024
5f923c5
finished code and script for batch size sweep experiment
quintendeman Jul 12, 2024
2ab83b1
replace sketch buffer const with compiler directive
quintendeman Jul 15, 2024
9f5b309
tweak
quintendeman Jul 15, 2024
ca92edd
edit cmake line
Jul 15, 2024
7122dc2
adding sketch size to cmake
dandelayo-sbu Jul 17, 2024
37c1547
sketch_buffer space script
quintendeman Jul 22, 2024
4cf35ef
full mixed workload experiment script
quintendeman Jul 31, 2024
44e5101
added switch to full test
dandelayo-sbu Aug 7, 2024
c6619f0
better script
dandelayo-sbu Aug 26, 2024
ae1e8d4
formats results to a fixed width
dandelayo-sbu Aug 26, 2024
b2cbd3b
newlines and call export from where the results are
dandelayo-sbu Aug 28, 2024
ab300f1
fixing mem script
dandelayo-sbu Nov 18, 2024
b03f66a
rerunning space
dandelayo-sbu Nov 18, 2024
580d706
fixing space test
dandelayo-sbu Nov 18, 2024
ab44b94
script to run default gibb's algorithm
quintendeman Mar 26, 2025
949e668
Merge branch 'scripts' of github.com:etwest/DynamicQueriesCC into scr…
quintendeman Mar 26, 2025
8f76243
seawulf
dandelayo-sbu Mar 26, 2025
4f8aafa
Merge branch 'scripts' of github.com:etwest/DynamicQueriesCC into scr…
dandelayo-sbu Mar 26, 2025
62a69b7
missing header for stdlib call
Gillgamesh May 4, 2025
c7a637c
first attempt at integrating hybrid sketching
Gillgamesh May 7, 2025
09083ed
changes for getting functioning testcases with new gz verifier
Gillgamesh May 8, 2025
66bd1e9
thorough templating
Gillgamesh May 8, 2025
5dfe381
more work on templating
Gillgamesh May 8, 2025
2608c30
first version of using column sketches
Gillgamesh May 9, 2025
641a3e0
updated cmakelists for removing unncessary import
Gillgamesh May 15, 2025
8faa33d
Merge remote-tracking branch 'origin/scripts' into hybrid1
Gillgamesh May 15, 2025
b97bae0
order switched skiplist things
Gillgamesh May 15, 2025
d5bd0d1
changed dependency gz to use normal depth hashes
Gillgamesh May 15, 2025
b1935bb
changed to non-static seeding branch
Gillgamesh May 16, 2025
6616e60
got rid of seed truncation stuff
Gillgamesh May 16, 2025
81de48a
attempt to use references/move semantics?
Gillgamesh May 19, 2025
2d93856
changes to stuff
Gillgamesh May 21, 2025
1f9eb40
more properly doing move semantic integration
Gillgamesh May 22, 2025
8a139c3
compiling move semantics
Gillgamesh May 22, 2025
18709e2
switching more things to consts
Gillgamesh May 23, 2025
b22fe1e
more attempts to fix
Gillgamesh May 23, 2025
bdffcbf
uncovered a few bugs with path agg update
Gillgamesh May 23, 2025
f85b4f9
cmake changes for dycon import + transaction log
Gillgamesh May 29, 2025
63e5a45
boilerplating + initial thought process + (non-AI) vibe coding
Gillgamesh May 29, 2025
64456e8
logic including recovery structure
Gillgamesh Jun 3, 2025
325fe81
more setup work
Gillgamesh Jun 7, 2025
50f630f
setup of test case?
Gillgamesh Jun 7, 2025
575f565
stuff
Gillgamesh Jun 9, 2025
d16b953
minimum viable?
Gillgamesh Jun 10, 2025
a598f20
fixed a noexcept inconsistency in gz?
Gillgamesh Jun 10, 2025
2a308c0
forgot two noexcepts
Gillgamesh Jun 10, 2025
220ea56
lots more bug fixes
Gillgamesh Jun 11, 2025
61b4033
actual mvp? yeehaw
Gillgamesh Jun 11, 2025
3bfcd20
more stuff
Gillgamesh Jun 11, 2025
73e8890
switched over to sliding window
Gillgamesh Jun 11, 2025
13bc230
bunch of changes
Gillgamesh Jul 2, 2025
f7a1dda
stuff
Gillgamesh Jul 8, 2025
4293ef8
more work
Gillgamesh Jul 20, 2025
8fcae26
finished sketching the shmem algorithm?
Gillgamesh Jul 20, 2025
d1922b8
finished sketching the shmem algorithm? part 2
Gillgamesh Jul 20, 2025
4e86c82
components
Gillgamesh Jul 21, 2025
8f52caf
working now?
Gillgamesh Jul 21, 2025
a24e5dd
more changes
Gillgamesh Jul 21, 2025
534c3ac
added another lineto the init
Gillgamesh Jul 21, 2025
25d3fdc
stuff
Gillgamesh Jul 21, 2025
1e7abb6
fixed a bunch of correctenss bugs (inc vector length)
Gillgamesh Jul 21, 2025
59f7123
stuff
Gillgamesh Jul 22, 2025
833b7cc
locality improvements
Gillgamesh Jul 22, 2025
259b84a
refactoring + a few more optimization attempts
Gillgamesh Jul 22, 2025
14de6ad
sequential per tier
Gillgamesh Jul 22, 2025
19b6a46
sequential per tier but correct
Gillgamesh Jul 22, 2025
217a245
changed some constants
Gillgamesh Jul 22, 2025
79445be
accidental update_sketch_atomics
Gillgamesh Jul 22, 2025
f449524
stuff
Gillgamesh Jul 22, 2025
28020f1
stuff2
Gillgamesh Jul 22, 2025
442b1f4
changed gz version to fix resizeable col bug
Gillgamesh Jul 22, 2025
0993eb3
fixed memory order
Gillgamesh Jul 22, 2025
8d4c262
changed memory order stuff
Gillgamesh Jul 22, 2025
b3ad619
more pending work I forgot to commit on batching
Gillgamesh Aug 20, 2025
99e8049
more stuff
Gillgamesh Sep 7, 2025
b29e6e3
stuff
Gillgamesh Sep 11, 2025
fa1243d
atomic apply delta support
Gillgamesh Sep 16, 2025
e3ad1fa
using tbb
Gillgamesh Sep 17, 2025
a4065e9
using tbb seemed to help a lot
Gillgamesh Sep 17, 2025
5aae41c
current cfg
Gillgamesh Sep 18, 2025
7df04b9
mpi reduced hash recalculates
Gillgamesh Sep 18, 2025
870c654
stuff
Gillgamesh Sep 18, 2025
16b288d
got rid of silly goofy height factor thing
Gillgamesh Sep 18, 2025
bb42c24
stuff
Gillgamesh Sep 19, 2025
6f1795c
stuff
Gillgamesh Sep 19, 2025
6cfead8
templating on ETT class container
Gillgamesh Sep 24, 2025
1e9e881
wrote out code for cas-based updating
Gillgamesh Sep 24, 2025
0046d32
is it time?
Gillgamesh Sep 25, 2025
f96189c
some space usage stuff
Gillgamesh Oct 3, 2025
dad6bbe
changed back to hashmap container
Gillgamesh Oct 3, 2025
b7d7961
bunch of templating for map based tree containers
Gillgamesh Oct 20, 2025
80681f3
disalbed turning off the lct
Gillgamesh Oct 20, 2025
dc8a51c
final commit before removing the old LCT
Gillgamesh Oct 20, 2025
d7e158f
resizeable lct
Gillgamesh Oct 23, 2025
fd3b8e0
got rid of some redundant code
Gillgamesh Oct 23, 2025
42a5cb7
first attempt at the fancy parallel ett update algo
Gillgamesh Oct 23, 2025
bc64403
stuff
Gillgamesh Oct 23, 2025
a0756ef
changing some numbers
Gillgamesh Oct 23, 2025
f661a9d
more number changing
Gillgamesh Oct 23, 2025
ff3c8b0
updated dycon version to get rid of parlay scheduler depdencny
Gillgamesh Oct 23, 2025
1707148
dockerfile
Gillgamesh Oct 23, 2025
0c6d3ce
replaced folly concurrent hashmap with copy of parlay_hash
Gillgamesh Oct 24, 2025
bf432b1
fixed a bug in a test case
Gillgamesh Oct 24, 2025
aea515a
prefetching?
Gillgamesh Oct 25, 2025
97712c9
more complicated agg recompute
Gillgamesh Oct 25, 2025
33d24b7
I forgot what other things i changed
Gillgamesh Oct 29, 2025
fa78335
removed uniqueness checking from cf removal
Gillgamesh Oct 30, 2025
322a33b
stuff
Gillgamesh Oct 31, 2025
fb74f64
initialze
Gillgamesh Oct 31, 2025
b15777b
bunch of methods for counting space usage
Gillgamesh Oct 31, 2025
d2fa937
explicit memory tracking?
Gillgamesh Nov 3, 2025
5df711f
sparse sep tracking
Gillgamesh Nov 3, 2025
8d9224f
some dev work
Gillgamesh Nov 5, 2025
be2fde8
more semisort style logic
Gillgamesh Nov 6, 2025
c638cca
bunch of refactoring for hybrid driver
Gillgamesh Nov 10, 2025
7b3055f
small changes to how tiers work for memory test
Gillgamesh Nov 10, 2025
e173cce
bruh
Gillgamesh Nov 10, 2025
d5a40ff
stuff
Gillgamesh Nov 13, 2025
9ab81a2
dump sequential ufo tree code
quintendeman Dec 18, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
103 changes: 90 additions & 13 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,13 @@ cmake_minimum_required(VERSION 3.15)
project(DynamicQueriesCC)
include (FetchContent)

set(Boost_USE_STATIC_LIBS ON)
find_package(Boost REQUIRED COMPONENTS regex context)
# Force IPO is enabled
cmake_policy(SET CMP0069 NEW)
set(CMAKE_POLICY_DEFAULT_CMP0069 NEW)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS ON)
#set(INTERPROCEDURAL_OPTIMIZATION TRUE)
Expand All @@ -20,16 +22,23 @@ if(NOT CMAKE_BUILD_TYPE)
endif()
message(STATUS "DynamicQueries Build Type: ${CMAKE_BUILD_TYPE}")

# controversial choice: return-type warnings should be promoted to errors
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
message("Adding GNU compiler flags")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -W -Wall")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -W -Wall -Werror=return-type")
elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
message("Adding MSVC compiler flags")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Wall")
else()
message("${CMAKE_CXX_COMPILER_ID} not recognized, no flags added")
endif()


# add_compile_options(-fsanitize=address)
# add_link_options(-fsanitize=address)
# add_compile_options(-fsanitize=undefined)
# add_link_options(-fsanitize=undefined)

######
# Get MPI for distributed communication
######
Expand All @@ -47,15 +56,32 @@ FetchContent_Declare(
GraphZeppelinVerifyCC

GIT_REPOSITORY https://github.com/GraphStreamingProject/GraphZeppelin
GIT_TAG db06e662aa7563716e49e3f5036e773a97a7dd64 #main
# GIT_TAG 2c633f5814f7edc79632cceb629280f6221b0281 #ksparse_recovery
# GIT_TAG 892b5b71b139100c309c79bb6ab94a5596fc606d
GIT_TAG c31add74bae9d826b07216acca0558747d34efc0
)
add_compile_definitions(GLOG_USE_GLOG_EXPORT)


# NOTE - not sure if this is gonna work
# Install DynamicConnectivity Package
# it doesn't. the

FetchContent_Declare(
dycon
GIT_REPOSITORY https://github.com/GraphStreamingProject/DynamicConnectivity
GIT_TAG 733d99e4a6985ef656df716ffe23719a1f29786b
)


# TODO - THERE should be a better way to do this that doesn't rely on populate and add_subdirectory
FetchContent_Populate(dycon)
add_subdirectory(${dycon_SOURCE_DIR} ${dycon_BINARY_DIR} EXCLUDE_FROM_ALL)

FetchContent_MakeAvailable(GraphZeppelinVerifyCC)

#add_compile_options(-fsanitize=address)
#add_link_options(-fsanitize=address)
#add_compile_options(-fsanitize=undefined)
#add_link_options(-fsanitize=undefined)

find_package(TBB REQUIRED)

add_executable(dynamicCC_tests
test/test_runner.cpp
Expand All @@ -66,13 +92,18 @@ add_executable(dynamicCC_tests

src/skiplist.cpp
src/euler_tour_tree.cpp
src/sketchless_skiplist.cpp
src/sketchless_euler_tour_tree.cpp
src/link_cut_tree.cpp
src/graph_tiers.cpp
src/batch_tiers.cpp
)

target_include_directories(dynamicCC_tests PUBLIC include ${MPI_C_INCLUDE_PATH})
add_dependencies(dynamicCC_tests GraphZeppelinVerifyCC)
target_link_libraries(dynamicCC_tests PRIVATE GraphZeppelinVerifyCC ${MPI_LIBRARIES})
add_dependencies(dynamicCC_tests GraphZeppelinVerifyCC dycon)
target_link_libraries(dynamicCC_tests PRIVATE GraphZeppelinVerifyCC dycon ${MPI_LIBRARIES} TBB::tbb)

target_compile_options(dynamicCC_tests PUBLIC -fopenmp)
target_link_options(dynamicCC_tests PUBLIC -fopenmp)

add_executable(mpi_dynamicCC_tests
test/mpi_test_runner.cpp
Expand All @@ -86,10 +117,56 @@ add_executable(mpi_dynamicCC_tests
src/input_node.cpp
src/tier_node.cpp
)

target_compile_definitions(mpi_dynamicCC_tests PUBLIC SKETCH_BUFFER_SIZE=${SKETCH_BUFFER_SIZE})
target_include_directories(mpi_dynamicCC_tests PUBLIC include ${MPI_C_INCLUDE_PATH})
add_dependencies(mpi_dynamicCC_tests GraphZeppelinVerifyCC)
target_link_libraries(mpi_dynamicCC_tests PRIVATE GraphZeppelinVerifyCC ${MPI_LIBRARIES})
add_dependencies(mpi_dynamicCC_tests GraphZeppelinVerifyCC dycon)
target_link_libraries(mpi_dynamicCC_tests PRIVATE GraphZeppelinVerifyCC dycon ${MPI_LIBRARIES})

target_compile_options(mpi_dynamicCC_tests PUBLIC -fopenmp)
target_link_options(mpi_dynamicCC_tests PUBLIC -fopenmp)


add_executable(hybrid_mpi_dynamicCC_tests
test/hybrid_test_runner.cpp
test/hybrid_tests.cpp

src/skiplist.cpp
src/sketchless_skiplist.cpp
src/euler_tour_tree.cpp
src/sketchless_euler_tour_tree.cpp
src/link_cut_tree.cpp
src/input_node.cpp
src/tier_node.cpp
)
target_compile_definitions(hybrid_mpi_dynamicCC_tests PUBLIC SKETCH_BUFFER_SIZE=${SKETCH_BUFFER_SIZE})
target_include_directories(hybrid_mpi_dynamicCC_tests PUBLIC include ${MPI_C_INCLUDE_PATH})
add_dependencies(hybrid_mpi_dynamicCC_tests GraphZeppelinVerifyCC dycon)
target_link_libraries(hybrid_mpi_dynamicCC_tests PRIVATE GraphZeppelinVerifyCC dycon ${MPI_LIBRARIES})

target_compile_options(hybrid_mpi_dynamicCC_tests PUBLIC -fopenmp)
target_link_options(hybrid_mpi_dynamicCC_tests PUBLIC -fopenmp)

add_executable(hybrid_shmem_dynamicCC_tests
test/hybrid_shmem_test_runner.cpp
test/hybrid_shmem_tests.cpp

src/skiplist.cpp
src/graph_tiers.cpp
src/batch_tiers.cpp
src/sketchless_skiplist.cpp
src/euler_tour_tree.cpp
src/sketchless_euler_tour_tree.cpp
src/link_cut_tree.cpp
# src/input_node.cpp
# src/tier_node.cpp
)
target_compile_definitions(hybrid_shmem_dynamicCC_tests PUBLIC SKETCH_BUFFER_SIZE=${SKETCH_BUFFER_SIZE})
target_include_directories(hybrid_shmem_dynamicCC_tests PUBLIC include ${MPI_C_INCLUDE_PATH})
add_dependencies(hybrid_shmem_dynamicCC_tests GraphZeppelinVerifyCC dycon)
target_link_libraries(hybrid_shmem_dynamicCC_tests PRIVATE GraphZeppelinVerifyCC dycon ${MPI_LIBRARIES} TBB::tbb)

target_compile_options(hybrid_shmem_dynamicCC_tests PUBLIC -fopenmp)
target_link_options(hybrid_shmem_dynamicCC_tests PUBLIC -fopenmp)

#######
# TODO: Is MPI INCLUDE PATH necessary?
Expand Down
119 changes: 119 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
# build
FROM ubuntu:24.04 AS build
ENV DEBIAN_FRONTEND=noninteractive

RUN apt-get update \
&& apt-get install -y --no-install-recommends \
build-essential \
ca-certificates \
cmake \
git \
sudo \
gnupg \
# libboost-context-dev \
# libboost-filesystem-dev \
# libboost-program-options-dev \
# libboost-system-dev \
# libboost-thread-dev \
libboost-all-dev \
libdouble-conversion-dev \
libfast-float-dev \
libevent-dev \
libfmt-dev \
libgflags-dev \
libgoogle-glog-dev \
libjemalloc-dev \
libmimalloc-dev \
libssl-dev \
libunwind-dev \
libzstd-dev \
ninja-build \
openmpi-bin \
libopenmpi-dev \
python3 \
python3-venv \
wget \
libtbb-dev \
&& rm -rf /var/lib/apt/lists/*


WORKDIR /opt/deps

# install the latest version of fast-float

# TODO - checkout a specific tag/release
RUN git clone https://github.com/fastfloat/fast_float.git \
&& cd fast_float \
&& cmake -B build -DFASTFLOAT_TEST=OFF \
&& sudo cmake --build build --target install
# build folly + install dependencies we may have missed
# TODO - would be good to enumerate them
# RUN git clone https://github.com/facebook/folly.git
# WORKDIR /opt/deps/folly
# RUN python3 ./build/fbcode_builder/getdeps.py install-system-deps --recursive
# ENV FOLLY_PREFIX=/opt/deps/folly/_build/opt/facebook
# ENV CMAKE_PREFIX_PATH=${FOLLY_PREFIX}:${CMAKE_PREFIX_PATH}


# build DynamicQueriesCC in Release
WORKDIR /opt/dynamiccc
COPY . .
# remove old build director
RUN rm -rf build
RUN cmake -S . -B build \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_PREFIX_PATH=${FOLLY_PREFIX} \
-DSKETCH_BUFFER_SIZE=5 \
-DPARLAY_TBB=On \

&& cmake --build build --target \
dynamicCC_tests \
mpi_dynamicCC_tests \
hybrid_mpi_dynamicCC_tests \
hybrid_shmem_dynamicCC_tests \
-j "$(nproc)"


# ------------------------------

# runtime
FROM ubuntu:24.04 AS runtime
ENV DEBIAN_FRONTEND=noninteractive

RUN apt-get update \
&& apt-get install -y --no-install-recommends \
ca-certificates \
git \
libboost-context-dev \
libboost-filesystem-dev \
libboost-program-options-dev \
libboost-system-dev \
libboost-thread-dev \
libdouble-conversion-dev \
libevent-dev \
libfmt-dev \
libgflags-dev \
libgoogle-glog-dev \
libjemalloc-dev \
libmimalloc-dev \
libssl-dev \
libunwind-dev \
libzstd-dev \
openmpi-bin \
libopenmpi-dev \
python3 \
wget \
libtbb-dev \
&& rm -rf /var/lib/apt/lists/*

WORKDIR /opt/dynamiccc

# project binaries and libs
COPY --from=build /opt/dynamiccc/build/*tests /opt/dynamiccc/bin/
COPY scripts ./scripts

ENV PATH="/opt/dynamiccc/bin:${PATH}"
ENV LD_LIBRARY_PATH="/opt/dynamiccc/lib:${LD_LIBRARY_PATH}"


ENTRYPOINT ["/bin/bash"]
Loading