Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
837fb9f
Add DumpyOS algorithm (adapted from FADASNode reference implementation)
ignaciomontoropineiro Jun 25, 2026
143fc99
dumpy tests
ignaciomontoropineiro Jun 25, 2026
413e09d
Fix exact search, implement pybinds and tests + updated readme
ignaciomontoropineiro Jun 26, 2026
dc87020
Add dumpy benchmark source and README
ignaciomontoropineiro Jun 26, 2026
8a6244d
Final dumpy (with passed tests)
ignaciomontoropineiro Jun 26, 2026
cc59c1f
DTW support for DumpyOS
ignaciomontoropineiro Jun 26, 2026
63d3ecf
fix DTW bug
ignaciomontoropineiro Jun 26, 2026
6a1bdec
revert dtw leaf distance to compute_dist (same as rest of daisy)
ignaciomontoropineiro Jun 26, 2026
59a4b0a
add demo for dumpy dtw
ignaciomontoropineiro Jun 30, 2026
dbc4206
Add Fresh algo + tests and demo
ignaciomontoropineiro Jul 1, 2026
8d8ceb8
fix bug in fresh
ignaciomontoropineiro Jul 1, 2026
1e6ad6f
fix fresh: set is_leaf=1 on node init, revert isax changes
ignaciomontoropineiro Jul 1, 2026
7021581
fix fresh search: fix lf struct layout, build first_node list after i…
ignaciomontoropineiro Jul 1, 2026
13508e4
fix fresh bug
ignaciomontoropineiro Jul 1, 2026
c88ea50
Fix persisting bug: include minidist=0 leaf nodes in FRESH search sor…
ignaciomontoropineiro Jul 1, 2026
97af2a6
Fix fresh sorted-array traversal order and remove duplication
ignaciomontoropineiro Jul 1, 2026
2e5c269
Fix fresh sorted-array traversal order and remove duplication
ignaciomontoropineiro Jul 1, 2026
4c950b8
Add fresh bm, python demo, and readme
ignaciomontoropineiro Jul 2, 2026
b159bb8
disable DumpyOS DTW tests
ignaciomontoropineiro Jul 2, 2026
a058c14
Add range queries
ignaciomontoropineiro Jul 7, 2026
d3efe95
Add C++ GoogleTest range search tests for Messi, Fresh, DumpyOS, LbBr…
ignaciomontoropineiro Jul 7, 2026
04cb35b
Add range search tests and demos for all algorithms
ignaciomontoropineiro Jul 7, 2026
cb55cbf
Add range search benchmarks for all algorithms
ignaciomontoropineiro Jul 7, 2026
20a2acf
Add Fresh DTW top-k tests and demos
ignaciomontoropineiro Jul 9, 2026
4b1a188
Fix Fresh DTW: iSAX L2 lower bound cannot prune against DTW BSF
ignaciomontoropineiro Jul 9, 2026
40a48f9
Fresh DTW: auto-detect warping window from dim to match ground truth …
ignaciomontoropineiro Jul 9, 2026
625f400
Fresh DTW: fix warping window auto-detection for default constructor
ignaciomontoropineiro Jul 9, 2026
2c83d2b
Fresh DTW: auto-detect warping window; fix runSST tolerance forwarding
ignaciomontoropineiro Jul 9, 2026
bdbc3f5
Fresh DTW: regenerate GT to sum_squared convention matching C++ output
ignaciomontoropineiro Jul 9, 2026
e6b8bcf
Fresh DTW: raise tolerance to 20% for random-data near-ties
ignaciomontoropineiro Jul 9, 2026
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
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,8 @@ The following table summarizes the key features of each algorithm:
| **[Odyssey](https://helios2.mi.parisdescartes.fr/~themisp/odyssey/)** | Distributed and parallel in-memory similarity search |
| **[SOFA](https://helios2.mi.parisdescartes.fr/~themisp/publications/icde25-sofa.pdf)** | In-memory similarity search using Symbolic Fourier Approximation (SFA) |
| **[Hercules](https://helios2.mi.parisdescartes.fr/~themisp/publications/pvldb22-hercules.pdf)** | In-memory hierarchical similarity search using EAPCA and SAX-based pruning |
| **[DumpyOS](https://helios2.mi.parisdescartes.fr/~themisp/publications/vldbj24-dumpyos.pdf)** | In-memory scalable data series similarity search using an adaptive multi-ary iSAX index |
| **[FreSH](http://publications.ics.forth.gr/tech-reports/2023/2023.TR489_FreSh_A_LockFree_Data_Series_Index.pdf)** | In-memory lock-free parallel similarity search using an iSAX index (SRDS 2023) |



Expand Down
250 changes: 250 additions & 0 deletions benchmark/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -261,6 +261,27 @@ target_include_directories(bm_Sofa_L2Square
)
endif()

# ////// DUMPYOS //////
add_executable(bm_DumpyOS_L2Square
bm_DumpyOS_L2Square.cpp
bm_utils.cpp
../commons/paramSetup.cpp
../commons/test_bm_utils.cpp
../commons/dataloaders.cpp
)
target_link_libraries(bm_DumpyOS_L2Square
PRIVATE
benchmark::benchmark
benchmark::benchmark_main
dino_lib
GTest::gtest
)
target_include_directories(bm_DumpyOS_L2Square
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/../lib
${CMAKE_CURRENT_SOURCE_DIR}/../commons
)

# ////// HERCULES //////
add_executable(bm_Hercules_L2Square
bm_Hercules_L2Square.cpp
Expand All @@ -282,6 +303,27 @@ target_include_directories(bm_Hercules_L2Square
${CMAKE_CURRENT_SOURCE_DIR}/../commons
)

# ////// FRESH //////
add_executable(bm_Fresh_L2Square
bm_Fresh_L2Square.cpp
bm_utils.cpp
../commons/paramSetup.cpp
../commons/test_bm_utils.cpp
../commons/dataloaders.cpp
)
target_link_libraries(bm_Fresh_L2Square
PRIVATE
benchmark::benchmark
benchmark::benchmark_main
dino_lib
GTest::gtest
)
target_include_directories(bm_Fresh_L2Square
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/../lib
${CMAKE_CURRENT_SOURCE_DIR}/../commons
)

# ////// ODYSSEY (conditional on MPI) //////
if(BUILD_ODYSSEY_AVAILABLE)
if(DEBUG_MSG)
Expand Down Expand Up @@ -338,6 +380,214 @@ if(BUILD_SING_AVAILABLE)
)
endif()

# ////// BRUTEFORCE RANGE //////
add_executable(bm_bruteforce_Range
bm_bruteforce_Range.cpp
bm_utils.cpp
../commons/paramSetup.cpp
../commons/test_bm_utils.cpp
../commons/dataloaders.cpp
)
target_link_libraries(bm_bruteforce_Range
PRIVATE
benchmark::benchmark
benchmark::benchmark_main
dino_lib
)
target_include_directories(bm_bruteforce_Range
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/../lib
${CMAKE_CURRENT_SOURCE_DIR}/../commons
)

# ////// LBBRUTEFORCE RANGE //////
add_executable(bm_LbBruteforce_Range
bm_LbBruteforce_Range.cpp
bm_utils.cpp
../commons/paramSetup.cpp
../commons/test_bm_utils.cpp
../commons/dataloaders.cpp
)
target_link_libraries(bm_LbBruteforce_Range
PRIVATE
benchmark::benchmark
benchmark::benchmark_main
dino_lib
)
target_include_directories(bm_LbBruteforce_Range
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/../lib
${CMAKE_CURRENT_SOURCE_DIR}/../commons
)

# ////// MESSI RANGE //////
add_executable(bm_Messi_Range
bm_Messi_Range.cpp
bm_utils.cpp
../commons/paramSetup.cpp
../commons/test_bm_utils.cpp
../commons/dataloaders.cpp
)
target_link_libraries(bm_Messi_Range
PRIVATE
benchmark::benchmark
benchmark::benchmark_main
dino_lib
)
target_include_directories(bm_Messi_Range
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/../lib
${CMAKE_CURRENT_SOURCE_DIR}/../commons
)

# ////// FRESH RANGE //////
add_executable(bm_Fresh_Range
bm_Fresh_Range.cpp
bm_utils.cpp
../commons/paramSetup.cpp
../commons/test_bm_utils.cpp
../commons/dataloaders.cpp
)
target_link_libraries(bm_Fresh_Range
PRIVATE
benchmark::benchmark
benchmark::benchmark_main
dino_lib
)
target_include_directories(bm_Fresh_Range
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/../lib
${CMAKE_CURRENT_SOURCE_DIR}/../commons
)

# ////// DUMPYOS RANGE //////
add_executable(bm_DumpyOS_Range
bm_DumpyOS_Range.cpp
bm_utils.cpp
../commons/paramSetup.cpp
../commons/test_bm_utils.cpp
../commons/dataloaders.cpp
)
target_link_libraries(bm_DumpyOS_Range
PRIVATE
benchmark::benchmark
benchmark::benchmark_main
dino_lib
)
target_include_directories(bm_DumpyOS_Range
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/../lib
${CMAKE_CURRENT_SOURCE_DIR}/../commons
)

# ////// HERCULES RANGE //////
add_executable(bm_Hercules_Range
bm_Hercules_Range.cpp
bm_utils.cpp
../commons/paramSetup.cpp
../commons/test_bm_utils.cpp
../commons/dataloaders.cpp
)
target_link_libraries(bm_Hercules_Range
PRIVATE
benchmark::benchmark
benchmark::benchmark_main
dino_lib
)
target_include_directories(bm_Hercules_Range
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/../lib
${CMAKE_CURRENT_SOURCE_DIR}/../commons
)

# ////// PARIS RANGE //////
add_executable(bm_ParIS_Range
bm_ParIS_Range.cpp
bm_utils.cpp
../commons/paramSetup.cpp
../commons/test_bm_utils.cpp
../commons/dataloaders.cpp
)
target_link_libraries(bm_ParIS_Range
PRIVATE
benchmark::benchmark
benchmark::benchmark_main
dino_lib
)
target_include_directories(bm_ParIS_Range
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/../lib
${CMAKE_CURRENT_SOURCE_DIR}/../commons
)

# ////// SOFA RANGE (conditional on FFTW3) //////
if(BUILD_SOFA_AVAILABLE)
add_executable(bm_Sofa_Range
bm_Sofa_Range.cpp
bm_utils.cpp
../commons/paramSetup.cpp
../commons/test_bm_utils.cpp
../commons/dataloaders.cpp
)
target_link_libraries(bm_Sofa_Range
PRIVATE
benchmark::benchmark
benchmark::benchmark_main
dino_lib
)
target_include_directories(bm_Sofa_Range
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/../lib
${CMAKE_CURRENT_SOURCE_DIR}/../commons
)
endif()

# ////// ODYSSEY RANGE (conditional on MPI) //////
if(BUILD_ODYSSEY_AVAILABLE)
add_executable(bm_Odyssey_Range
bm_Odyssey_Range.cpp
bm_utils.cpp
../commons/paramSetup.cpp
../commons/test_bm_utils.cpp
../commons/dataloaders.cpp
)
target_compile_definitions(bm_Odyssey_Range PRIVATE ODYSSEY_MPI=1)
target_link_libraries(bm_Odyssey_Range
PRIVATE
benchmark::benchmark
benchmark::benchmark_main
dino_lib
MPI::MPI_CXX
)
target_include_directories(bm_Odyssey_Range
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/../lib
${CMAKE_CURRENT_SOURCE_DIR}/../commons
)
endif()

# ////// SING RANGE (conditional on CUDA) //////
if(BUILD_SING_AVAILABLE)
add_executable(bm_Sing_Range
bm_Sing_Range.cpp
bm_utils.cpp
../commons/paramSetup.cpp
../commons/test_bm_utils.cpp
../commons/dataloaders.cpp
)
target_link_libraries(bm_Sing_Range
PRIVATE
benchmark::benchmark
benchmark::benchmark_main
dino_lib
)
target_include_directories(bm_Sing_Range
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/../lib
${CMAKE_CURRENT_SOURCE_DIR}/../commons
)
endif()

if(DEBUG_MSG)
message(STATUS "--- Benchmark Configuration Complete ---")
endif()
Loading
Loading