From f57aa6aee34c5eccd296fbe6b655075c682e97ca Mon Sep 17 00:00:00 2001 From: Douglas Rumbaugh Date: Mon, 23 Dec 2024 11:59:52 -0500 Subject: Began migrating benchmarks over to new interface --- CMakeLists.txt | 38 ++++++++++++++++---------------- benchmarks/include/standard_benchmarks.h | 22 ++++++++++++++++-- benchmarks/vldb/fst_bench.cpp | 5 +++-- benchmarks/vldb/fst_bsm_bench.cpp | 5 +++-- benchmarks/vldb/irs_bench.cpp | 5 +++-- benchmarks/vldb/pgm_bench.cpp | 5 +++-- benchmarks/vldb/thread_scaling_bench.cpp | 9 ++++---- benchmarks/vldb/ts_bench.cpp | 5 +++-- benchmarks/vldb/ts_bsm_bench.cpp | 6 +++-- benchmarks/vldb/ts_parmsweep.cpp | 4 ++-- benchmarks/vldb/vptree_bench.cpp | 5 +++-- benchmarks/vldb/vptree_bench_alt.cpp | 6 +++-- benchmarks/vldb/vptree_bsm_bench.cpp | 5 +++-- benchmarks/vldb/vptree_bsm_bench_alt.cpp | 5 +++-- benchmarks/vldb/vptree_parmsweep.cpp | 4 ++-- include/shard/FSTrie.h | 4 ++-- 16 files changed, 82 insertions(+), 51 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e35ae19..b947860 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.22) -set(CMAKE_C_COMPILER gcc) -set(CMAKE_CXX_COMPILER g++) +set(CMAKE_C_COMPILER clang) +set(CMAKE_CXX_COMPILER clang++) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED True) @@ -12,7 +12,7 @@ project("Practical Dynamic Extension" VERSION 0.1.0) set(debug true) set(tests True) set(bench false) -set(vldb_bench false) +set(vldb_bench true) # ALEX doesn't build under C++20 set(build_alex false) @@ -22,7 +22,7 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/bin") set(CMAKE_CXX_FLAGS=-latomic -mcx16) -add_compile_options(-Iinclude -Iexternal/PLEX/include -Iexternal -mcx16 -march=native -Werror) # -fconcepts-diagnostics-depth=3) +add_compile_options(-Iinclude -Iexternal/PLEX/include -Iexternal -mcx16 -march=native -Werror -Wno-attributes) # -fconcepts-diagnostics-depth=3) find_package(OpenMP REQUIRED) add_compile_options(${OpenMP_CXX_FLAGS}) @@ -177,11 +177,11 @@ if (vldb_bench) target_compile_options(vptree_bench_alt PUBLIC) - add_executable(vptree_parmsweep ${CMAKE_CURRENT_SOURCE_DIR}/benchmarks/vldb/vptree_parmsweep.cpp) - target_link_libraries(vptree_parmsweep PUBLIC gsl pthread atomic) - target_include_directories(vptree_parmsweep PRIVATE include external external/m-tree/cpp external/PGM-index/include external/PLEX/include benchmarks/include external/psudb-common/cpp/include) - target_link_options(vptree_parmsweep PUBLIC -mcx16) - target_compile_options(vptree_parmsweep PUBLIC) + # add_executable(vptree_parmsweep ${CMAKE_CURRENT_SOURCE_DIR}/benchmarks/vldb/vptree_parmsweep.cpp) + # target_link_libraries(vptree_parmsweep PUBLIC gsl pthread atomic) + # target_include_directories(vptree_parmsweep PRIVATE include external external/m-tree/cpp external/PGM-index/include external/PLEX/include benchmarks/include external/psudb-common/cpp/include) + # target_link_options(vptree_parmsweep PUBLIC -mcx16) + # target_compile_options(vptree_parmsweep PUBLIC) add_executable(vptree_bsm_bench ${CMAKE_CURRENT_SOURCE_DIR}/benchmarks/vldb/vptree_bsm_bench.cpp) target_link_libraries(vptree_bsm_bench PUBLIC gsl pthread atomic) @@ -213,11 +213,11 @@ if (vldb_bench) target_link_options(ts_bench PUBLIC -mcx16) target_compile_options(ts_bench PUBLIC) - add_executable(ts_parmsweep ${CMAKE_CURRENT_SOURCE_DIR}/benchmarks/vldb/ts_parmsweep.cpp) - target_link_libraries(ts_parmsweep PUBLIC gsl pthread atomic) - target_include_directories(ts_parmsweep PRIVATE include external external/m-tree/cpp external/PGM-index/include external/PLEX/include benchmarks/include external/psudb-common/cpp/include) - target_link_options(ts_parmsweep PUBLIC -mcx16) - target_compile_options(ts_parmsweep PUBLIC) + # add_executable(ts_parmsweep ${CMAKE_CURRENT_SOURCE_DIR}/benchmarks/vldb/ts_parmsweep.cpp) + # target_link_libraries(ts_parmsweep PUBLIC gsl pthread atomic) + # target_include_directories(ts_parmsweep PRIVATE include external external/m-tree/cpp external/PGM-index/include external/PLEX/include benchmarks/include external/psudb-common/cpp/include) + # target_link_options(ts_parmsweep PUBLIC -mcx16) + # target_compile_options(ts_parmsweep PUBLIC) add_executable(ts_bsm_bench ${CMAKE_CURRENT_SOURCE_DIR}/benchmarks/vldb/ts_bsm_bench.cpp) target_link_libraries(ts_bsm_bench PUBLIC gsl pthread atomic) @@ -269,11 +269,11 @@ if (vldb_bench) target_link_options(mtree_bench PUBLIC -mcx16) target_compile_options(mtree_bench PUBLIC) - add_executable(thread_scaling_bench ${CMAKE_CURRENT_SOURCE_DIR}/benchmarks/vldb/thread_scaling_bench.cpp) - target_link_libraries(thread_scaling_bench PUBLIC gsl pthread atomic) - target_include_directories(thread_scaling_bench PRIVATE include external external/m-tree/cpp external/PGM-index/include external/PLEX/include benchmarks/include external/psudb-common/cpp/include) - target_link_options(thread_scaling_bench PUBLIC -mcx16) - target_compile_options(thread_scaling_bench PUBLIC) + # add_executable(thread_scaling_bench ${CMAKE_CURRENT_SOURCE_DIR}/benchmarks/vldb/thread_scaling_bench.cpp) + # target_link_libraries(thread_scaling_bench PUBLIC gsl pthread atomic) + # target_include_directories(thread_scaling_bench PRIVATE include external external/m-tree/cpp external/PGM-index/include external/PLEX/include benchmarks/include external/psudb-common/cpp/include) + # target_link_options(thread_scaling_bench PUBLIC -mcx16) + # target_compile_options(thread_scaling_bench PUBLIC) add_executable(btree_thread_scaling_bench ${CMAKE_CURRENT_SOURCE_DIR}/benchmarks/vldb/btree_thread_scaling_bench.cpp) diff --git a/benchmarks/include/standard_benchmarks.h b/benchmarks/include/standard_benchmarks.h index d3408c1..dfa6513 100644 --- a/benchmarks/include/standard_benchmarks.h +++ b/benchmarks/include/standard_benchmarks.h @@ -19,11 +19,29 @@ #include "benchmark_types.h" #include "psu-util/bentley-saxe.h" #include "shard/ISAMTree.h" +#include "framework/reconstruction/LevelingPolicy.h" +#include "framework/reconstruction/TieringPolicy.h" +#include "framework/reconstruction/BSMPolicy.h" +constexpr double delete_proportion = 0.05; static size_t g_deleted_records = 0; -static double delete_proportion = 0.5; +static size_t total = 0; + +template Q> +de::ReconstructionPolicy *get_policy(size_t scale_factor, size_t buffer_size, int policy=0) { + + de::ReconstructionPolicy *recon = nullptr; + + if (policy == 0) { + recon = new de::TieringPolicy(scale_factor, buffer_size); + } else if (policy == 1) { + recon = new de::LevelingPolicy(scale_factor, buffer_size); + } else if (policy == 2) { + recon = new de::BSMPolicy(buffer_size); + } -static volatile size_t total = 0; + return recon; +} template static void run_queries(DE *extension, std::vector &queries) { diff --git a/benchmarks/vldb/fst_bench.cpp b/benchmarks/vldb/fst_bench.cpp index fb5ed59..9e3a62e 100644 --- a/benchmarks/vldb/fst_bench.cpp +++ b/benchmarks/vldb/fst_bench.cpp @@ -20,7 +20,7 @@ typedef de::Record Rec; typedef de::FSTrie Shard; typedef de::pl::Query Q; -typedef de::DynamicExtension Ext; +typedef de::DynamicExtension Ext; typedef Q::Parameters QP; void usage(char *progname) { @@ -37,7 +37,8 @@ int main(int argc, char **argv) { size_t n = atol(argv[1]); std::string d_fname = std::string(argv[2]); - auto extension = new Ext(12000, 12001, 8, 0, 64); + auto policy = get_policy(8, 12000); + auto extension = new Ext(policy, 12000); gsl_rng * rng = gsl_rng_alloc(gsl_rng_mt19937); auto strings = read_string_file(d_fname, n); diff --git a/benchmarks/vldb/fst_bsm_bench.cpp b/benchmarks/vldb/fst_bsm_bench.cpp index c1e6d17..47b3ed9 100644 --- a/benchmarks/vldb/fst_bsm_bench.cpp +++ b/benchmarks/vldb/fst_bsm_bench.cpp @@ -20,7 +20,7 @@ typedef de::Record Rec; typedef de::FSTrie Shard; typedef de::pl::Query Q; -typedef de::DynamicExtension Ext; +typedef de::DynamicExtension Ext; typedef Q::Parameters QP; void usage(char *progname) { @@ -37,7 +37,8 @@ int main(int argc, char **argv) { size_t n = atol(argv[1]); std::string d_fname = std::string(argv[2]); - auto extension = new Ext(1, 12001, 2, 0, 64); + auto policy = get_policy(2, 1, 3); + auto extension = new Ext(policy, 1); gsl_rng * rng = gsl_rng_alloc(gsl_rng_mt19937); auto strings = read_string_file(d_fname, n); diff --git a/benchmarks/vldb/irs_bench.cpp b/benchmarks/vldb/irs_bench.cpp index a772326..7cbccd1 100644 --- a/benchmarks/vldb/irs_bench.cpp +++ b/benchmarks/vldb/irs_bench.cpp @@ -19,7 +19,7 @@ typedef de::Record Rec; typedef de::ISAMTree Shard; typedef de::irs::Query Q; -typedef de::DynamicExtension Ext; +typedef de::DynamicExtension Ext; typedef Q::Parameters QP; void usage(char *progname) { @@ -37,7 +37,8 @@ int main(int argc, char **argv) { std::string d_fname = std::string(argv[2]); std::string q_fname = std::string(argv[3]); - auto extension = new Ext(12000, 12001, 8, 0, 64); + auto policy = get_policy(12000, 8); + auto extension = new Ext(policy, 12000); gsl_rng * rng = gsl_rng_alloc(gsl_rng_mt19937); auto data = read_sosd_file(d_fname, n); diff --git a/benchmarks/vldb/pgm_bench.cpp b/benchmarks/vldb/pgm_bench.cpp index 3b4340b..b5f9206 100644 --- a/benchmarks/vldb/pgm_bench.cpp +++ b/benchmarks/vldb/pgm_bench.cpp @@ -21,7 +21,7 @@ typedef de::Record Rec; typedef de::PGM Shard; typedef de::rc::Query Q; -typedef de::DynamicExtension Ext; +typedef de::DynamicExtension Ext; typedef Q::Parameters QP; void usage(char *progname) { @@ -39,7 +39,8 @@ int main(int argc, char **argv) { std::string d_fname = std::string(argv[2]); std::string q_fname = std::string(argv[3]); - auto extension = new Ext(12000, 12001, 8, 0, 64); + auto policy = get_policy(12000, 8); + auto extension = new Ext(policy, 12000); gsl_rng * rng = gsl_rng_alloc(gsl_rng_mt19937); auto data = read_sosd_file(d_fname, n); diff --git a/benchmarks/vldb/thread_scaling_bench.cpp b/benchmarks/vldb/thread_scaling_bench.cpp index 3b9311b..315ad41 100644 --- a/benchmarks/vldb/thread_scaling_bench.cpp +++ b/benchmarks/vldb/thread_scaling_bench.cpp @@ -19,9 +19,9 @@ typedef de::Record Rec; -typedef de::ISAMTree ISAM; -typedef de::irs::Query Q; -typedef de::DynamicExtension Ext; +typedef de::ISAMTree Shard; +typedef de::irs::Query Q; +typedef de::DynamicExtension Ext; typedef Q::Parameters QP; std::atomic inserts_done = false; @@ -73,7 +73,8 @@ int main(int argc, char **argv) { std::string d_fname = std::string(argv[4]); std::string q_fname = std::string(argv[5]); - auto extension = new Ext(1000, 12000, 8, 0, 64); + auto policy = get_policy(12000, 8); + auto extension = new Ext(policy, 1000, 12000, 8, 0, 64); gsl_rng * rng = gsl_rng_alloc(gsl_rng_mt19937); auto data = read_sosd_file(d_fname, n); diff --git a/benchmarks/vldb/ts_bench.cpp b/benchmarks/vldb/ts_bench.cpp index 1bc75b6..61d813c 100644 --- a/benchmarks/vldb/ts_bench.cpp +++ b/benchmarks/vldb/ts_bench.cpp @@ -22,7 +22,7 @@ typedef de::Record Rec; typedef de::TrieSpline Shard; typedef de::rc::Query Q; -typedef de::DynamicExtension Ext; +typedef de::DynamicExtension Ext; typedef Q::Parameters QP; void usage(char *progname) { @@ -40,7 +40,8 @@ int main(int argc, char **argv) { std::string d_fname = std::string(argv[2]); std::string q_fname = std::string(argv[3]); - auto extension = new Ext(8000, 12001, 8, 0, 64); + auto policy = get_policy(8000, 8); + auto extension = new Ext(policy, 8000); gsl_rng * rng = gsl_rng_alloc(gsl_rng_mt19937); auto data = read_sosd_file(d_fname, n); diff --git a/benchmarks/vldb/ts_bsm_bench.cpp b/benchmarks/vldb/ts_bsm_bench.cpp index 5bcfb5d..f5ad931 100644 --- a/benchmarks/vldb/ts_bsm_bench.cpp +++ b/benchmarks/vldb/ts_bsm_bench.cpp @@ -22,7 +22,7 @@ typedef de::Record Rec; typedef de::TrieSpline Shard; typedef de::rc::Query Q; -typedef de::DynamicExtension Ext; +typedef de::DynamicExtension Ext; typedef Q::Parameters QP; void usage(char *progname) { @@ -40,7 +40,9 @@ int main(int argc, char **argv) { std::string d_fname = std::string(argv[2]); std::string q_fname = std::string(argv[3]); - auto extension = new Ext(1, 12001, 2, 0, 64); + auto policy = get_policy(1, 2, 3); + auto extension = new Ext(policy, 1); + gsl_rng * rng = gsl_rng_alloc(gsl_rng_mt19937); auto data = read_sosd_file(d_fname, n); diff --git a/benchmarks/vldb/ts_parmsweep.cpp b/benchmarks/vldb/ts_parmsweep.cpp index 0141c53..10a9f14 100644 --- a/benchmarks/vldb/ts_parmsweep.cpp +++ b/benchmarks/vldb/ts_parmsweep.cpp @@ -19,8 +19,8 @@ typedef de::Record Rec; typedef de::TrieSpline Shard; typedef de::rc::Query Q; -typedef de::DynamicExtension Ext; -typedef de::DynamicExtension Ext2; +typedef de::DynamicExtension Ext; +typedef de::DynamicExtension Ext2; typedef Q::Parameters QP; void usage(char *progname) { diff --git a/benchmarks/vldb/vptree_bench.cpp b/benchmarks/vldb/vptree_bench.cpp index 417e3af..b75b5c2 100644 --- a/benchmarks/vldb/vptree_bench.cpp +++ b/benchmarks/vldb/vptree_bench.cpp @@ -20,7 +20,7 @@ typedef Word2VecRec Rec; typedef de::VPTree Shard; typedef de::knn::Query Q; -typedef de::DynamicExtension Ext; +typedef de::DynamicExtension Ext; typedef Q::Parameters QP; void usage(char *progname) { @@ -38,7 +38,8 @@ int main(int argc, char **argv) { std::string d_fname = std::string(argv[2]); std::string q_fname = std::string(argv[3]); - auto extension = new Ext(1400, 1400, 8, 0, 64); + auto policy = get_policy(1400, 8); + auto extension = new Ext(policy, 1400); gsl_rng * rng = gsl_rng_alloc(gsl_rng_mt19937); fprintf(stderr, "[I] Reading data file...\n"); diff --git a/benchmarks/vldb/vptree_bench_alt.cpp b/benchmarks/vldb/vptree_bench_alt.cpp index 5279f68..05c9720 100644 --- a/benchmarks/vldb/vptree_bench_alt.cpp +++ b/benchmarks/vldb/vptree_bench_alt.cpp @@ -20,7 +20,7 @@ typedef ANNRec Rec; typedef de::VPTree Shard; typedef de::knn::Query Q; -typedef de::DynamicExtension Ext; +typedef de::DynamicExtension Ext; typedef Q::Parameters QP; void usage(char *progname) { @@ -38,7 +38,9 @@ int main(int argc, char **argv) { std::string d_fname = std::string(argv[2]); std::string q_fname = std::string(argv[3]); - auto extension = new Ext(1400, 1400, 8, 0, 64); + auto policy = get_policy(1400, 8); + auto extension = new Ext(policy, 1400); + gsl_rng * rng = gsl_rng_alloc(gsl_rng_mt19937); fprintf(stderr, "[I] Reading data file...\n"); diff --git a/benchmarks/vldb/vptree_bsm_bench.cpp b/benchmarks/vldb/vptree_bsm_bench.cpp index d0d963c..d366c46 100644 --- a/benchmarks/vldb/vptree_bsm_bench.cpp +++ b/benchmarks/vldb/vptree_bsm_bench.cpp @@ -21,7 +21,7 @@ typedef Word2VecRec Rec; typedef de::VPTree Shard; typedef de::knn::Query Q; -typedef de::DynamicExtension Ext; +typedef de::DynamicExtension Ext; typedef Q::Parameters QP; void usage(char *progname) { @@ -39,7 +39,8 @@ int main(int argc, char **argv) { std::string d_fname = std::string(argv[2]); std::string q_fname = std::string(argv[3]); - auto extension = new Ext(1, 1400, 2, 0, 64); + auto policy = get_policy(1, 2, 3); + auto extension = new Ext(policy, 1, 0, 64); gsl_rng * rng = gsl_rng_alloc(gsl_rng_mt19937); fprintf(stderr, "[I] Reading data file...\n"); diff --git a/benchmarks/vldb/vptree_bsm_bench_alt.cpp b/benchmarks/vldb/vptree_bsm_bench_alt.cpp index b4956a2..cf79447 100644 --- a/benchmarks/vldb/vptree_bsm_bench_alt.cpp +++ b/benchmarks/vldb/vptree_bsm_bench_alt.cpp @@ -20,7 +20,7 @@ typedef ANNRec Rec; typedef de::VPTree Shard; typedef de::knn::Query Q; -typedef de::DynamicExtension Ext; +typedef de::DynamicExtension Ext; typedef Q::Parameters QP; void usage(char *progname) { @@ -38,7 +38,8 @@ int main(int argc, char **argv) { std::string d_fname = std::string(argv[2]); std::string q_fname = std::string(argv[3]); - auto extension = new Ext(1, 1400, 2, 0, 64); + auto policy = get_policy(1, 2, 3); + auto extension = new Ext(policy, 1); gsl_rng * rng = gsl_rng_alloc(gsl_rng_mt19937); fprintf(stderr, "[I] Reading data file...\n"); diff --git a/benchmarks/vldb/vptree_parmsweep.cpp b/benchmarks/vldb/vptree_parmsweep.cpp index 5e496d4..9072463 100644 --- a/benchmarks/vldb/vptree_parmsweep.cpp +++ b/benchmarks/vldb/vptree_parmsweep.cpp @@ -20,8 +20,8 @@ typedef Word2VecRec Rec; typedef de::VPTree Shard; typedef de::knn::Query Q; -typedef de::DynamicExtension Ext; -typedef de::DynamicExtension Ext2; +typedef de::DynamicExtension Ext; +typedef de::DynamicExtension Ext2; typedef Q::Parameters QP; void usage(char *progname) { diff --git a/include/shard/FSTrie.h b/include/shard/FSTrie.h index d720aad..59ff116 100644 --- a/include/shard/FSTrie.h +++ b/include/shard/FSTrie.h @@ -63,7 +63,7 @@ public: std::sort(base, stop, std::less>()); for (size_t i=0; iis_deleted() && cursor.ptr->rec.key != "") { + if (!cursor.ptr->is_deleted() && cursor.ptr->rec.key[0] != '\0') { m_data[m_reccnt] = *cursor.ptr; keys.push_back(std::string(m_data[m_reccnt].rec.key)); -- cgit v1.2.3