Skip to content

Commit aa6100a

Browse files
committed
bench(flas): benchmark graph construction and search with and w/o FLAS
1 parent 2d74d79 commit aa6100a

4 files changed

Lines changed: 482 additions & 2 deletions

File tree

cpp/bench/CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,7 @@ target_link_libraries(bench_dynamic_data PUBLIC DEG_LIB compile-options fmt::fmt
1515
add_executable(bench_edge_optimization ${PROJECT_SOURCE_DIR}/src/bench_edge_optimization.cpp)
1616
target_include_directories(bench_edge_optimization PRIVATE ${PROJECT_SOURCE_DIR}/include)
1717
target_link_libraries(bench_edge_optimization PUBLIC DEG_LIB compile-options fmt::fmt)
18+
19+
add_executable(bench_flas_presort ${PROJECT_SOURCE_DIR}/src/bench_flas_presort.cpp)
20+
target_include_directories(bench_flas_presort PRIVATE ${PROJECT_SOURCE_DIR}/include)
21+
target_link_libraries(bench_flas_presort PUBLIC DEG_LIB compile-options fmt::fmt)

cpp/bench/include/build.h

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,8 @@ inline void create_graph(
6060
const bool use_rng = true,
6161
const uint32_t scale = 1,
6262
const bool use_path_verification = false,
63-
const deglib::cpu::InstructionSet instruction = deglib::cpu::InstructionSet::Auto
63+
const deglib::cpu::InstructionSet instruction = deglib::cpu::InstructionSet::Auto,
64+
const std::vector<uint32_t>& insertion_order = {}
6465
) {
6566
auto rnd = std::mt19937(7);
6667
const uint32_t improve_tries = 0;
@@ -109,7 +110,17 @@ inline void create_graph(
109110
}
110111
} else {
111112
base_size /= (data_stream_type == DataStreamType::AddHalf) ? 2 : 1;
112-
for (uint32_t i = 0; i < base_size; i++) addEntry(i);
113+
if (insertion_order.empty()) {
114+
for (uint32_t i = 0; i < base_size; i++) addEntry(i);
115+
} else {
116+
if (insertion_order.size() != base_size) {
117+
std::fprintf(stderr, "insertion order size %zu does not match base size %u \n", insertion_order.size(), base_size);
118+
std::perror("");
119+
std::abort();
120+
}
121+
log("Adding entries in custom insertion order\n");
122+
for (const auto idx : insertion_order) addEntry(idx);
123+
}
113124

114125
if (data_stream_type == DataStreamType::AddAllRemoveHalf)
115126
for (uint32_t i = base_size / 2; i < base_size; i++) builder.removeEntry(i);

0 commit comments

Comments
 (0)