diff options
Diffstat (limited to 'benchmarks')
22 files changed, 113 insertions, 226 deletions
diff --git a/benchmarks/include/file_util.h b/benchmarks/include/file_util.h index 41eb18c..1a40a78 100644 --- a/benchmarks/include/file_util.h +++ b/benchmarks/include/file_util.h @@ -269,7 +269,7 @@ static std::vector<R> read_binary_vector_file(std::string &fname, size_t n) { return records; } -static std::vector<std::unique_ptr<char[]>>read_string_file(std::string fname, size_t n=10000000) { +[[maybe_unused]] static std::vector<std::unique_ptr<char[]>>read_string_file(std::string fname, size_t n=10000000) { std::fstream file; file.open(fname, std::ios::in); diff --git a/benchmarks/include/standard_benchmarks.h b/benchmarks/include/standard_benchmarks.h index b805c08..797b0c5 100644 --- a/benchmarks/include/standard_benchmarks.h +++ b/benchmarks/include/standard_benchmarks.h @@ -18,25 +18,15 @@ #include "psu-util/progress.h" #include "benchmark_types.h" #include "psu-util/bentley-saxe.h" +#include "shard/ISAMTree.h" static size_t g_deleted_records = 0; -static double delete_proportion = 0.05; +static double delete_proportion = 0.5; static volatile size_t total = 0; -template<typename DE, typename QP, typename R> -static void run_queries(DE *extension, DE *ghost, std::vector<QP> &queries) { - for (size_t i=0; i<queries.size(); i++) { - std::vector<R> res = extension->query(&queries[i]); - std::vector<R> negres = ghost->query(&queries[i]); - auto result = res[0].first - negres[0].first; - total = result; - } -} - - -template<typename DE, typename QP, bool BSM=false> -static void run_queries(DE *extension, std::vector<QP> &queries) { +template<typename DE, typename Q, bool BSM=false> +static void run_queries(DE *extension, std::vector<typename Q::Parameters> &queries) { for (size_t i=0; i<queries.size(); i++) { if constexpr (std::is_same_v<MTree, DE>) { std::vector<Word2VecRec> result; @@ -72,7 +62,8 @@ static void run_queries(DE *extension, std::vector<QP> &queries) { ++ptr; } } else { - auto res = extension->query(&queries[i]); + auto q = queries[i]; + auto res = extension->query(std::move(q)); if constexpr (!BSM) { auto result = res.get(); #ifdef BENCH_PRINT_RESULTS @@ -100,8 +91,8 @@ static void run_queries(DE *extension, std::vector<QP> &queries) { } } -template <typename R> -static void run_btree_queries(BenchBTree *btree, std::vector<de::irs::Parms<R>> &queries) { +template <typename R, typename Q> +static void run_btree_queries(BenchBTree *btree, std::vector<typename Q::Parameters> &queries) { std::vector<int64_t> sample_set; sample_set.reserve(queries[0].sample_size); @@ -111,18 +102,16 @@ static void run_btree_queries(BenchBTree *btree, std::vector<de::irs::Parms<R>> } -template<typename S, typename QP, typename Q> -static void run_static_queries(S *shard, std::vector<QP> &queries) { +template<typename S, typename Q> +static void run_static_queries(S *shard, std::vector<typename Q::Parameters> &queries) { for (size_t i=0; i<queries.size(); i++) { auto q = &queries[i]; - auto state = Q::get_query_state(shard, q); - - std::vector<void*> shards = {shard}; - std::vector<void*> states = {state}; + std::vector<S *> shards = {shard}; + std::vector<typename Q::LocalQuery*> local_queries = {Q::local_preproc(shard, q)}; - Q::process_query_states(q, states, nullptr); - auto res = Q::query(shard, state, q); + Q::distribute_query(q, local_queries, nullptr); + auto res = Q::local_query(shard, local_queries[0]); #ifdef BENCH_PRINT_RESULTS fprintf(stdout, "\n\n"); @@ -136,55 +125,12 @@ static void run_static_queries(S *shard, std::vector<QP> &queries) { } } - -/* - * Insert records into a standard Bentley-Saxe extension. Deletes are not - * supported. - */ -template<typename DS, typename R, bool MDSP=false> -static void insert_records(psudb::bsm::BentleySaxe<R, DS, MDSP> *extension, - size_t start, size_t stop, std::vector<R> &records) { - - psudb::progress_update(0, "Insert Progress"); - for (size_t i=start; i<stop; i++) { - extension->insert(records[i]); - } - - psudb::progress_update(1, "Insert Progress"); -} - - -template<typename DS, typename R, bool MDSP=false> -static void insert_records(psudb::bsm::BentleySaxe<R, DS, MDSP> *extension, - psudb::bsm::BentleySaxe<R, DS, MDSP> *ghost, - size_t start, size_t stop, std::vector<R> &records, - std::vector<size_t> &to_delete, size_t &delete_idx, - gsl_rng *rng) { - - psudb::progress_update(0, "Insert Progress"); - size_t reccnt = 0; - for (size_t i=start; i<stop; i++) { - - extension->insert(records[i]); - - if (gsl_rng_uniform(rng) <= delete_proportion && to_delete[delete_idx] <= i) { - ghost->insert(records[to_delete[delete_idx]]); - delete_idx++; - g_deleted_records++; - } - - } - -} - - template<typename DE, typename R> static void insert_records(DE *structure, size_t start, size_t stop, std::vector<R> &records, std::vector<size_t> &to_delete, size_t &delete_idx, bool delete_records, gsl_rng *rng) { psudb::progress_update(0, "Insert Progress"); - size_t reccnt = 0; for (size_t i=start; i<stop; i++) { if constexpr (std::is_same_v<BenchBTree, DE>) { @@ -302,8 +248,8 @@ static bool insert_tput_bench(DE &de_index, std::fstream &file, size_t insert_cn return continue_benchmark; } -template <typename DE, de::RecordInterface R, typename QP, bool PROGRESS=true> -static bool query_latency_bench(DE &de_index, std::vector<QP> queries, size_t trial_cnt=1) { +template <typename DE, typename Q, bool PROGRESS=true> +static bool query_latency_bench(DE &de_index, std::vector<typename Q::Parameters> queries, size_t trial_cnt=1) { char progbuf[25]; if constexpr (PROGRESS) { sprintf(progbuf, "querying:"); @@ -339,8 +285,8 @@ static bool query_latency_bench(DE &de_index, std::vector<QP> queries, size_t tr } -template <typename Shard, de::RecordInterface R, typename QP, de::QueryInterface<R, Shard> Q, bool PROGRESS=true> -static bool static_latency_bench(Shard *shard, std::vector<QP> queries, size_t trial_cnt=100) { +template <typename Shard, typename Q, bool PROGRESS=true> +static bool static_latency_bench(Shard *shard, std::vector<typename Q::Parameters> queries, size_t trial_cnt=100) { char progbuf[25]; if constexpr (PROGRESS) { sprintf(progbuf, "querying:"); @@ -354,15 +300,15 @@ static bool static_latency_bench(Shard *shard, std::vector<QP> queries, size_t t psudb::progress_update((double) (i) / (double) trial_cnt, progbuf); } - std::vector<void *> states(1); + std::vector<typename Q::LocalQuery*> local_queries(1); auto start = std::chrono::high_resolution_clock::now(); for (size_t j=0; j<queries.size(); j++) { - states[0] = Q::get_query_state(shard, &queries[j]); - Q::process_query_states(&queries[j], states, nullptr); - auto res = Q::query(shard, states[0], &queries[j]); + local_queries[0] = Q::local_preproc(shard, &queries[j]); + Q::distribute_query(&queries[j], local_queries, nullptr); + auto res = Q::local_query(shard, local_queries[0]); total_results += res.size(); - Q::delete_query_state(states[0]); + delete local_queries[0]; } auto stop = std::chrono::high_resolution_clock::now(); diff --git a/benchmarks/vldb/alex_bench.cpp b/benchmarks/vldb/alex_bench.cpp index ba687f3..636f576 100644 --- a/benchmarks/vldb/alex_bench.cpp +++ b/benchmarks/vldb/alex_bench.cpp @@ -33,7 +33,6 @@ static void insert_records(Alex *structure, size_t start, size_t stop, size_t &delete_idx, bool delete_records, gsl_rng *rng) { psudb::progress_update(0, "Insert Progress"); - size_t reccnt = 0; for (size_t i=start; i<stop; i++) { structure->insert(records[i].key, records[i].value); diff --git a/benchmarks/vldb/btree_bench.cpp b/benchmarks/vldb/btree_bench.cpp index fa72831..dc5142a 100644 --- a/benchmarks/vldb/btree_bench.cpp +++ b/benchmarks/vldb/btree_bench.cpp @@ -19,8 +19,8 @@ typedef btree_record<int64_t, int64_t> Rec; typedef de::ISAMTree<Rec> Shard; -typedef de::irs::Query<Rec, Shard> Q; -typedef de::irs::Parms<Rec> QP; +typedef de::irs::Query<Shard> Q; +typedef Q::Parameters QP; void usage(char *progname) { fprintf(stderr, "%s reccnt datafile queryfile\n", progname); @@ -71,7 +71,7 @@ int main(int argc, char **argv) { size_t insert_throughput = (size_t) ((double) (n - warmup) / (double) insert_latency * 1e9); TIMER_START(); - run_btree_queries<Rec>(&btree, queries); + run_btree_queries<Rec, Q>(&btree, queries); TIMER_STOP(); auto query_latency = TIMER_RESULT() / queries.size(); diff --git a/benchmarks/vldb/btree_thread_scaling_bench.cpp b/benchmarks/vldb/btree_thread_scaling_bench.cpp index 557e966..d33a1f8 100644 --- a/benchmarks/vldb/btree_thread_scaling_bench.cpp +++ b/benchmarks/vldb/btree_thread_scaling_bench.cpp @@ -7,6 +7,7 @@ #include <thread> #include "query/irs.h" +#include "shard/ISAMTree.h" #include "benchmark_types.h" #include "file_util.h" #include <mutex> @@ -17,7 +18,10 @@ typedef btree_record<int64_t, int64_t> Rec; -typedef de::irs::Parms<Rec> QP; + +typedef de::ISAMTree<Rec> Shard; +typedef de::irs::Query<Shard> Q; +typedef Q::Parameters QP; std::atomic<bool> inserts_done = false; @@ -47,7 +51,6 @@ void query_thread(BenchBTree *tree, std::vector<QP> *queries) { } void insert_thread(BenchBTree *tree, size_t start, std::vector<Rec> *records) { - size_t reccnt = 0; for (size_t i=start; i<records->size(); i++) { btree_record<int64_t, int64_t> r; r.key = (*records)[i].key; diff --git a/benchmarks/vldb/dynamic_pgm_bench.cpp b/benchmarks/vldb/dynamic_pgm_bench.cpp index 15b130f..9206e40 100644 --- a/benchmarks/vldb/dynamic_pgm_bench.cpp +++ b/benchmarks/vldb/dynamic_pgm_bench.cpp @@ -14,9 +14,11 @@ #include "psu-util/timer.h" - typedef de::Record<uint64_t, uint64_t> Rec; -typedef de::rc::Parms<Rec> QP; + +typedef de::ISAMTree<Rec> Shard; +typedef de::rc::Query<Shard> Q; +typedef Q::Parameters QP; void usage(char *progname) { fprintf(stderr, "%s reccnt datafile queryfile\n", progname); @@ -62,7 +64,7 @@ int main(int argc, char **argv) { size_t insert_throughput = (size_t) ((double) (n - warmup) / (double) insert_latency * 1e9); TIMER_START(); - run_queries<PGM, QP>(&pgm, queries); + run_queries<PGM, Q>(&pgm, queries); TIMER_STOP(); auto query_latency = TIMER_RESULT() / queries.size(); diff --git a/benchmarks/vldb/fst_bench.cpp b/benchmarks/vldb/fst_bench.cpp index 276a922..e4b5bf6 100644 --- a/benchmarks/vldb/fst_bench.cpp +++ b/benchmarks/vldb/fst_bench.cpp @@ -21,9 +21,9 @@ typedef de::Record<const char *, uint64_t> Rec; typedef de::FSTrie<Rec> Shard; -typedef de::pl::Query<Rec, Shard> Q; -typedef de::DynamicExtension<Rec, Shard, Q, de::LayoutPolicy::TEIRING, de::DeletePolicy::TOMBSTONE, de::SerialScheduler> Ext; -typedef de::pl::Parms<Rec> QP; +typedef de::pl::Query<Shard> Q; +typedef de::DynamicExtension<Shard, Q, de::LayoutPolicy::TEIRING, de::DeletePolicy::TOMBSTONE, de::SerialScheduler> Ext; +typedef Q::Parameters QP; void usage(char *progname) { fprintf(stderr, "%s reccnt datafile\n", progname); @@ -75,7 +75,7 @@ int main(int argc, char **argv) { size_t insert_throughput = (size_t) ((double) (n - warmup) / (double) insert_latency * 1e9); TIMER_START(); - run_queries<Ext, QP>(extension, queries); + run_queries<Ext, Q>(extension, queries); TIMER_STOP(); auto query_latency = TIMER_RESULT() / queries.size(); @@ -83,7 +83,7 @@ int main(int argc, char **argv) { auto shard = extension->create_static_structure(); TIMER_START(); - run_static_queries<Shard, QP, Q>(shard, queries); + run_static_queries<Shard, Q>(shard, queries); TIMER_STOP(); auto static_latency = TIMER_RESULT() / queries.size(); diff --git a/benchmarks/vldb/fst_bsm_bench.cpp b/benchmarks/vldb/fst_bsm_bench.cpp index 15a441a..b0be115 100644 --- a/benchmarks/vldb/fst_bsm_bench.cpp +++ b/benchmarks/vldb/fst_bsm_bench.cpp @@ -21,9 +21,9 @@ typedef de::Record<const char *, uint64_t> Rec; typedef de::FSTrie<Rec> Shard; -typedef de::pl::Query<Rec, Shard> Q; -typedef de::DynamicExtension<Rec, Shard, Q, de::LayoutPolicy::BSM, de::DeletePolicy::TOMBSTONE, de::SerialScheduler> Ext; -typedef de::pl::Parms<Rec> QP; +typedef de::pl::Query<Shard> Q; +typedef de::DynamicExtension<Shard, Q, de::LayoutPolicy::BSM, de::DeletePolicy::TOMBSTONE, de::SerialScheduler> Ext; +typedef Q::Parameters QP; void usage(char *progname) { fprintf(stderr, "%s reccnt datafile\n", progname); @@ -75,7 +75,7 @@ int main(int argc, char **argv) { size_t insert_throughput = (size_t) ((double) (n - warmup) / (double) insert_latency * 1e9); TIMER_START(); - run_queries<Ext, QP>(extension, queries); + run_queries<Ext, Q>(extension, queries); TIMER_STOP(); auto query_latency = TIMER_RESULT() / queries.size(); @@ -83,7 +83,7 @@ int main(int argc, char **argv) { auto shard = extension->create_static_structure(); TIMER_START(); - run_static_queries<Shard, QP, Q>(shard, queries); + run_static_queries<Shard, Q>(shard, queries); TIMER_STOP(); auto static_latency = TIMER_RESULT() / queries.size(); diff --git a/benchmarks/vldb/irs_bench.cpp b/benchmarks/vldb/irs_bench.cpp index e062e80..a772326 100644 --- a/benchmarks/vldb/irs_bench.cpp +++ b/benchmarks/vldb/irs_bench.cpp @@ -18,9 +18,9 @@ typedef de::Record<uint64_t, uint64_t> Rec; typedef de::ISAMTree<Rec> Shard; -typedef de::irs::Query<Rec, Shard> Q; -typedef de::DynamicExtension<Rec, Shard, Q, de::LayoutPolicy::TEIRING, de::DeletePolicy::TAGGING, de::SerialScheduler> Ext; -typedef de::irs::Parms<Rec> QP; +typedef de::irs::Query<Shard> Q; +typedef de::DynamicExtension<Shard, Q, de::LayoutPolicy::TEIRING, de::DeletePolicy::TAGGING, de::SerialScheduler> Ext; +typedef Q::Parameters QP; void usage(char *progname) { fprintf(stderr, "%s reccnt datafile queryfile\n", progname); @@ -72,7 +72,7 @@ int main(int argc, char **argv) { size_t insert_throughput = (size_t) ((double) (n - warmup) / (double) insert_latency * 1e9); TIMER_START(); - run_queries<Ext, QP>(extension, queries); + run_queries<Ext, Q>(extension, queries); TIMER_STOP(); auto query_latency = TIMER_RESULT() / queries.size(); @@ -80,7 +80,7 @@ int main(int argc, char **argv) { auto shard = extension->create_static_structure(); TIMER_START(); - run_static_queries<Shard, QP, Q>(shard, queries); + run_static_queries<Shard, Q>(shard, queries); TIMER_STOP(); auto static_latency = TIMER_RESULT() / queries.size(); diff --git a/benchmarks/vldb/mtree_bench.cpp b/benchmarks/vldb/mtree_bench.cpp index cc2f41f..ed107b5 100644 --- a/benchmarks/vldb/mtree_bench.cpp +++ b/benchmarks/vldb/mtree_bench.cpp @@ -5,6 +5,7 @@ #define ENABLE_TIMER #include "query/knn.h" +#include "shard/VPTree.h" #include "file_util.h" #include "standard_benchmarks.h" @@ -14,7 +15,9 @@ typedef Word2VecRec Rec; -typedef de::knn::Parms<Rec> QP; +typedef de::VPTree<Rec, 100, true> Shard; +typedef de::knn::Query<Shard> Q; +typedef Q::Parameters QP; void usage(char *progname) { fprintf(stderr, "%s reccnt datafile queryfile\n", progname); @@ -66,7 +69,7 @@ int main(int argc, char **argv) { fprintf(stderr, "[I] Running Query Benchmark\n"); TIMER_START(); - run_queries<MTree, QP>(mtree, queries); + run_queries<MTree, Q>(mtree, queries); TIMER_STOP(); auto query_latency = TIMER_RESULT() / queries.size(); diff --git a/benchmarks/vldb/mtree_bench_alt.cpp b/benchmarks/vldb/mtree_bench_alt.cpp index 50c6117..c5ab283 100644 --- a/benchmarks/vldb/mtree_bench_alt.cpp +++ b/benchmarks/vldb/mtree_bench_alt.cpp @@ -5,6 +5,7 @@ #define ENABLE_TIMER #include "query/knn.h" +#include "shard/VPTree.h" #include "file_util.h" #include "standard_benchmarks.h" @@ -14,7 +15,9 @@ typedef ANNRec Rec; -typedef de::knn::Parms<Rec> QP; +typedef de::VPTree<Rec, 100, true> Shard; +typedef de::knn::Query<Shard> Q; +typedef Q::Parameters QP; void usage(char *progname) { fprintf(stderr, "%s reccnt datafile queryfile\n", progname); @@ -66,7 +69,7 @@ int main(int argc, char **argv) { fprintf(stderr, "[I] Running Query Benchmark\n"); TIMER_START(); - run_queries<MTree_alt, QP>(mtree, queries); + run_queries<MTree_alt, Q>(mtree, queries); TIMER_STOP(); auto query_latency = TIMER_RESULT() / queries.size(); diff --git a/benchmarks/vldb/pgm_bench.cpp b/benchmarks/vldb/pgm_bench.cpp index cec95df..3b4340b 100644 --- a/benchmarks/vldb/pgm_bench.cpp +++ b/benchmarks/vldb/pgm_bench.cpp @@ -20,9 +20,9 @@ typedef de::Record<uint64_t, uint64_t> Rec; typedef de::PGM<Rec> Shard; -typedef de::rc::Query<Rec, Shard> Q; -typedef de::DynamicExtension<Rec, Shard, Q, de::LayoutPolicy::TEIRING, de::DeletePolicy::TOMBSTONE, de::SerialScheduler> Ext; -typedef de::rc::Parms<Rec> QP; +typedef de::rc::Query<Shard> Q; +typedef de::DynamicExtension<Shard, Q, de::LayoutPolicy::TEIRING, de::DeletePolicy::TOMBSTONE, de::SerialScheduler> Ext; +typedef Q::Parameters QP; void usage(char *progname) { fprintf(stderr, "%s reccnt datafile queryfile\n", progname); @@ -69,7 +69,7 @@ int main(int argc, char **argv) { size_t insert_throughput = (size_t) ((double) (n - warmup) / (double) insert_latency * 1e9); TIMER_START(); - run_queries<Ext, QP>(extension, queries); + run_queries<Ext, Q>(extension, queries); TIMER_STOP(); auto query_latency = TIMER_RESULT() / queries.size(); @@ -77,7 +77,7 @@ int main(int argc, char **argv) { auto shard = extension->create_static_structure(); TIMER_START(); - run_static_queries<Shard, QP, Q>(shard, queries); + run_static_queries<Shard, Q>(shard, queries); TIMER_STOP(); auto static_latency = TIMER_RESULT() / queries.size(); diff --git a/benchmarks/vldb/thread_scaling_bench.cpp b/benchmarks/vldb/thread_scaling_bench.cpp index b679e92..3b9311b 100644 --- a/benchmarks/vldb/thread_scaling_bench.cpp +++ b/benchmarks/vldb/thread_scaling_bench.cpp @@ -20,9 +20,9 @@ typedef de::Record<int64_t, int64_t> Rec; typedef de::ISAMTree<Rec> ISAM; -typedef de::irs::Query<Rec, ISAM> Q; -typedef de::DynamicExtension<Rec, ISAM, Q> Ext; -typedef de::irs::Parms<Rec> QP; +typedef de::irs::Query<ISAM> Q; +typedef de::DynamicExtension<ISAM, Q> Ext; +typedef Q::Parameters QP; std::atomic<bool> inserts_done = false; @@ -39,7 +39,7 @@ void query_thread(Ext *extension, std::vector<QP> *queries) { q.rng = rng; q.sample_size = 1000; - auto res = extension->query(&q); + auto res = extension->query(std::move(q)); auto r = res.get(); total += r.size(); nanosleep(&delay, nullptr); diff --git a/benchmarks/vldb/ts_bench.cpp b/benchmarks/vldb/ts_bench.cpp index 81a430a..1bc75b6 100644 --- a/benchmarks/vldb/ts_bench.cpp +++ b/benchmarks/vldb/ts_bench.cpp @@ -21,9 +21,9 @@ typedef de::Record<uint64_t, uint64_t> Rec; typedef de::TrieSpline<Rec> Shard; -typedef de::rc::Query<Rec, Shard> Q; -typedef de::DynamicExtension<Rec, Shard, Q, de::LayoutPolicy::TEIRING, de::DeletePolicy::TOMBSTONE, de::SerialScheduler> Ext; -typedef de::rc::Parms<Rec> QP; +typedef de::rc::Query<Shard> Q; +typedef de::DynamicExtension<Shard, Q, de::LayoutPolicy::TEIRING, de::DeletePolicy::TOMBSTONE, de::SerialScheduler> Ext; +typedef Q::Parameters QP; void usage(char *progname) { fprintf(stderr, "%s reccnt datafile queryfile\n", progname); @@ -70,7 +70,7 @@ int main(int argc, char **argv) { size_t insert_throughput = (size_t) ((double) (n - warmup) / (double) insert_latency * 1e9); TIMER_START(); - run_queries<Ext, QP>(extension, queries); + run_queries<Ext, Q>(extension, queries); TIMER_STOP(); auto query_latency = TIMER_RESULT() / queries.size(); @@ -78,7 +78,7 @@ int main(int argc, char **argv) { auto shard = extension->create_static_structure(); TIMER_START(); - run_static_queries<Shard, QP, Q>(shard, queries); + run_static_queries<Shard, Q>(shard, queries); TIMER_STOP(); auto static_latency = TIMER_RESULT() / queries.size(); diff --git a/benchmarks/vldb/ts_bsm_bench.cpp b/benchmarks/vldb/ts_bsm_bench.cpp index 4511350..5bcfb5d 100644 --- a/benchmarks/vldb/ts_bsm_bench.cpp +++ b/benchmarks/vldb/ts_bsm_bench.cpp @@ -21,9 +21,9 @@ typedef de::Record<uint64_t, uint64_t> Rec; typedef de::TrieSpline<Rec> Shard; -typedef de::rc::Query<Rec, Shard> Q; -typedef de::DynamicExtension<Rec, Shard, Q, de::LayoutPolicy::BSM, de::DeletePolicy::TOMBSTONE, de::SerialScheduler> Ext; -typedef de::rc::Parms<Rec> QP; +typedef de::rc::Query<Shard> Q; +typedef de::DynamicExtension<Shard, Q, de::LayoutPolicy::BSM, de::DeletePolicy::TOMBSTONE, de::SerialScheduler> Ext; +typedef Q::Parameters QP; void usage(char *progname) { fprintf(stderr, "%s reccnt datafile queryfile\n", progname); @@ -70,7 +70,7 @@ int main(int argc, char **argv) { size_t insert_throughput = (size_t) ((double) (n - warmup) / (double) insert_latency * 1e9); TIMER_START(); - run_queries<Ext, QP>(extension, queries); + run_queries<Ext, Q>(extension, queries); TIMER_STOP(); auto query_latency = TIMER_RESULT() / queries.size(); @@ -78,7 +78,7 @@ int main(int argc, char **argv) { auto shard = extension->create_static_structure(); TIMER_START(); - run_static_queries<Shard, QP, Q>(shard, queries); + run_static_queries<Shard, Q>(shard, queries); TIMER_STOP(); auto static_latency = TIMER_RESULT() / queries.size(); diff --git a/benchmarks/vldb/ts_mdsp_bench.cpp b/benchmarks/vldb/ts_mdsp_bench.cpp deleted file mode 100644 index cc0cd99..0000000 --- a/benchmarks/vldb/ts_mdsp_bench.cpp +++ /dev/null @@ -1,70 +0,0 @@ -/* - * - */ - -#define ENABLE_TIMER - -#include <thread> - -#include "triespline_bsm.h" -#include "psu-util/bentley-saxe.h" -#include "framework/interface/Record.h" -#include "file_util.h" -#include "query/rangecount.h" -#include "psu-util/timer.h" -#include "standard_benchmarks.h" - -typedef std::pair<uint64_t, uint64_t> Rec; -typedef de::Record<uint64_t, uint64_t> FRec; - -typedef BSMTrieSpline<uint64_t, uint64_t> Shard; -typedef de::rc::Parms<FRec> QP; -typedef psudb::bsm::BentleySaxe<Rec, Shard, true> Ext; - -void usage(char *progname) { - fprintf(stderr, "%s reccnt datafile queryfile\n", progname); -} - -int main(int argc, char **argv) { - - if (argc < 4) { - usage(argv[0]); - exit(EXIT_FAILURE); - } - - size_t n = atol(argv[1]); - std::string d_fname = std::string(argv[2]); - std::string q_fname = std::string(argv[3]); - - auto extension = new psudb::bsm::BentleySaxe<Rec, Shard, true>(); - gsl_rng *rng = gsl_rng_alloc(gsl_rng_mt19937); - - auto data = read_sosd_file_pair<uint64_t, uint64_t>(d_fname, n); - auto queries = read_range_queries<QP>(q_fname, .0001); - - /* warmup structure w/ 10% of records */ - size_t warmup = .1 * n; - insert_records<Shard, Rec, true>(extension, 0, warmup, data); - - TIMER_INIT(); - - TIMER_START(); - insert_records<Shard, Rec, true>(extension, warmup, data.size(), data); - TIMER_STOP(); - - auto insert_latency = TIMER_RESULT(); - size_t insert_throughput = (size_t) ((double) (n - warmup) / (double) insert_latency * 1e9); - - TIMER_START(); - run_queries<Ext, QP, true>(extension, queries); - TIMER_STOP(); - - auto query_latency = TIMER_RESULT() / queries.size(); - - fprintf(stdout, "%ld\t%ld\n", insert_throughput, query_latency); - - gsl_rng_free(rng); - delete extension; - fflush(stderr); -} - diff --git a/benchmarks/vldb/ts_parmsweep.cpp b/benchmarks/vldb/ts_parmsweep.cpp index 2c9412a..a9203ab 100644 --- a/benchmarks/vldb/ts_parmsweep.cpp +++ b/benchmarks/vldb/ts_parmsweep.cpp @@ -18,10 +18,10 @@ typedef de::Record<uint64_t, uint64_t> Rec; typedef de::TrieSpline<Rec> Shard; -typedef de::rc::Query<Rec, Shard, true> Q; -typedef de::DynamicExtension<Rec, Shard, Q, de::LayoutPolicy::TEIRING, de::DeletePolicy::TOMBSTONE, de::SerialScheduler> Ext; -typedef de::DynamicExtension<Rec, Shard, Q, de::LayoutPolicy::LEVELING, de::DeletePolicy::TOMBSTONE, de::SerialScheduler> Ext2; -typedef de::rc::Parms<Rec> QP; +typedef de::rc::Query<Shard, true> Q; +typedef de::DynamicExtension<Shard, Q, de::LayoutPolicy::TEIRING, de::DeletePolicy::TOMBSTONE, de::SerialScheduler> Ext; +typedef de::DynamicExtension<Shard, Q, de::LayoutPolicy::LEVELING, de::DeletePolicy::TOMBSTONE, de::SerialScheduler> Ext2; +typedef Q::Parameters QP; void usage(char *progname) { fprintf(stderr, "%s reccnt datafile queryfile\n", progname); @@ -74,7 +74,7 @@ int main(int argc, char **argv) { size_t insert_throughput = (size_t) ((double) (n - warmup) / (double) insert_latency * 1e9); TIMER_START(); - run_queries<Ext, QP>(extension, queries); + run_queries<Ext, Q>(extension, queries); TIMER_STOP(); auto query_latency = TIMER_RESULT() / queries.size(); @@ -106,7 +106,7 @@ int main(int argc, char **argv) { size_t insert_throughput = (size_t) ((double) (n - warmup) / (double) insert_latency * 1e9); TIMER_START(); - run_queries<Ext2, QP>(extension, queries); + run_queries<Ext2, Q>(extension, queries); TIMER_STOP(); auto query_latency = TIMER_RESULT() / queries.size(); diff --git a/benchmarks/vldb/vptree_bench.cpp b/benchmarks/vldb/vptree_bench.cpp index 0b98a52..417e3af 100644 --- a/benchmarks/vldb/vptree_bench.cpp +++ b/benchmarks/vldb/vptree_bench.cpp @@ -19,9 +19,9 @@ typedef Word2VecRec Rec; typedef de::VPTree<Rec, 100, true> Shard; -typedef de::knn::Query<Rec, Shard> Q; -typedef de::DynamicExtension<Rec, Shard, Q, de::LayoutPolicy::TEIRING, de::DeletePolicy::TAGGING, de::SerialScheduler> Ext; -typedef de::knn::Parms<Rec> QP; +typedef de::knn::Query<Shard> Q; +typedef de::DynamicExtension<Shard, Q, de::LayoutPolicy::TEIRING, de::DeletePolicy::TAGGING, de::SerialScheduler> Ext; +typedef Q::Parameters QP; void usage(char *progname) { fprintf(stderr, "%s reccnt datafile queryfile\n", progname); @@ -75,7 +75,7 @@ int main(int argc, char **argv) { fprintf(stderr, "[I] Running Query Benchmark\n"); TIMER_START(); - run_queries<Ext, QP>(extension, queries); + run_queries<Ext, Q>(extension, queries); TIMER_STOP(); auto query_latency = TIMER_RESULT() / queries.size(); @@ -84,7 +84,7 @@ int main(int argc, char **argv) { fprintf(stderr, "Running Static query tests\n\n"); TIMER_START(); - run_static_queries<Shard, QP, Q>(shard, queries); + run_static_queries<Shard, Q>(shard, queries); TIMER_STOP(); auto static_latency = TIMER_RESULT() / queries.size(); diff --git a/benchmarks/vldb/vptree_bench_alt.cpp b/benchmarks/vldb/vptree_bench_alt.cpp index b09ee7d..5279f68 100644 --- a/benchmarks/vldb/vptree_bench_alt.cpp +++ b/benchmarks/vldb/vptree_bench_alt.cpp @@ -19,9 +19,9 @@ typedef ANNRec Rec; typedef de::VPTree<Rec, 100, true> Shard; -typedef de::knn::Query<Rec, Shard> Q; -typedef de::DynamicExtension<Rec, Shard, Q, de::LayoutPolicy::TEIRING, de::DeletePolicy::TAGGING, de::SerialScheduler> Ext; -typedef de::knn::Parms<Rec> QP; +typedef de::knn::Query<Shard> Q; +typedef de::DynamicExtension<Shard, Q, de::LayoutPolicy::TEIRING, de::DeletePolicy::TAGGING, de::SerialScheduler> Ext; +typedef Q::Parameters QP; void usage(char *progname) { fprintf(stderr, "%s reccnt datafile queryfile\n", progname); @@ -75,7 +75,7 @@ int main(int argc, char **argv) { fprintf(stderr, "[I] Running Query Benchmark\n"); TIMER_START(); - run_queries<Ext, QP>(extension, queries); + run_queries<Ext, Q>(extension, queries); TIMER_STOP(); auto query_latency = TIMER_RESULT() / queries.size(); @@ -84,7 +84,7 @@ int main(int argc, char **argv) { fprintf(stderr, "Running Static query tests\n\n"); TIMER_START(); - run_static_queries<Shard, QP, Q>(shard, queries); + run_static_queries<Shard, Q>(shard, queries); TIMER_STOP(); auto static_latency = TIMER_RESULT() / queries.size(); diff --git a/benchmarks/vldb/vptree_bsm_bench.cpp b/benchmarks/vldb/vptree_bsm_bench.cpp index 4a7fcb6..d0d963c 100644 --- a/benchmarks/vldb/vptree_bsm_bench.cpp +++ b/benchmarks/vldb/vptree_bsm_bench.cpp @@ -18,10 +18,11 @@ typedef Word2VecRec Rec; + typedef de::VPTree<Rec, 100, true> Shard; -typedef de::knn::Query<Rec, Shard> Q; -typedef de::DynamicExtension<Rec, Shard, Q, de::LayoutPolicy::BSM, de::DeletePolicy::TAGGING, de::SerialScheduler> Ext; -typedef de::knn::Parms<Rec> QP; +typedef de::knn::Query<Shard> Q; +typedef de::DynamicExtension<Shard, Q, de::LayoutPolicy::BSM, de::DeletePolicy::TAGGING, de::SerialScheduler> Ext; +typedef Q::Parameters QP; void usage(char *progname) { fprintf(stderr, "%s reccnt datafile queryfile\n", progname); @@ -75,7 +76,7 @@ int main(int argc, char **argv) { fprintf(stderr, "[I] Running Query Benchmark\n"); TIMER_START(); - run_queries<Ext, QP>(extension, queries); + run_queries<Ext, Q>(extension, queries); TIMER_STOP(); auto query_latency = TIMER_RESULT() / queries.size(); @@ -84,7 +85,7 @@ int main(int argc, char **argv) { fprintf(stderr, "Running Static query tests\n\n"); TIMER_START(); - run_static_queries<Shard, QP, Q>(shard, queries); + run_static_queries<Shard,Q>(shard, queries); TIMER_STOP(); auto static_latency = TIMER_RESULT() / queries.size(); diff --git a/benchmarks/vldb/vptree_bsm_bench_alt.cpp b/benchmarks/vldb/vptree_bsm_bench_alt.cpp index 63baf8b..b4956a2 100644 --- a/benchmarks/vldb/vptree_bsm_bench_alt.cpp +++ b/benchmarks/vldb/vptree_bsm_bench_alt.cpp @@ -19,9 +19,9 @@ typedef ANNRec Rec; typedef de::VPTree<Rec, 100, true> Shard; -typedef de::knn::Query<Rec, Shard> Q; -typedef de::DynamicExtension<Rec, Shard, Q, de::LayoutPolicy::BSM, de::DeletePolicy::TAGGING, de::SerialScheduler> Ext; -typedef de::knn::Parms<Rec> QP; +typedef de::knn::Query<Shard> Q; +typedef de::DynamicExtension<Shard, Q, de::LayoutPolicy::BSM, de::DeletePolicy::TAGGING, de::SerialScheduler> Ext; +typedef Q::Parameters QP; void usage(char *progname) { fprintf(stderr, "%s reccnt datafile queryfile\n", progname); @@ -75,7 +75,7 @@ int main(int argc, char **argv) { fprintf(stderr, "[I] Running Query Benchmark\n"); TIMER_START(); - run_queries<Ext, QP>(extension, queries); + run_queries<Ext, Q>(extension, queries); TIMER_STOP(); auto query_latency = TIMER_RESULT() / queries.size(); diff --git a/benchmarks/vldb/vptree_parmsweep.cpp b/benchmarks/vldb/vptree_parmsweep.cpp index 2cbd521..5e496d4 100644 --- a/benchmarks/vldb/vptree_parmsweep.cpp +++ b/benchmarks/vldb/vptree_parmsweep.cpp @@ -19,10 +19,10 @@ typedef Word2VecRec Rec; typedef de::VPTree<Rec, 100, true> Shard; -typedef de::knn::Query<Rec, Shard> Q; -typedef de::DynamicExtension<Rec, Shard, Q, de::LayoutPolicy::TEIRING, de::DeletePolicy::TAGGING, de::SerialScheduler> Ext; -typedef de::DynamicExtension<Rec, Shard, Q, de::LayoutPolicy::LEVELING, de::DeletePolicy::TAGGING, de::SerialScheduler> Ext2; -typedef de::knn::Parms<Rec> QP; +typedef de::knn::Query<Shard> Q; +typedef de::DynamicExtension<Shard, Q, de::LayoutPolicy::TEIRING, de::DeletePolicy::TAGGING, de::SerialScheduler> Ext; +typedef de::DynamicExtension<Shard, Q, de::LayoutPolicy::LEVELING, de::DeletePolicy::TAGGING, de::SerialScheduler> Ext2; +typedef Q::Parameters QP; void usage(char *progname) { fprintf(stderr, "%s reccnt datafile queryfile\n", progname); @@ -78,7 +78,7 @@ int main(int argc, char **argv) { size_t insert_throughput = (size_t) ((double) (n - warmup) / (double) insert_latency * 1e9); TIMER_START(); - run_queries<Ext, QP>(extension, queries); + run_queries<Ext, Q>(extension, queries); TIMER_STOP(); auto query_latency = TIMER_RESULT() / queries.size(); @@ -111,7 +111,7 @@ int main(int argc, char **argv) { size_t insert_throughput = (size_t) ((double) (n - warmup) / (double) insert_latency * 1e9); TIMER_START(); - run_queries<Ext2, QP>(extension, queries); + run_queries<Ext2, Q>(extension, queries); TIMER_STOP(); auto query_latency = TIMER_RESULT() / queries.size(); |