diff --git a/slides/experiment_results.pdf b/slides/experiment_results.pdf index 5b12eea..64bf59e 100644 Binary files a/slides/experiment_results.pdf and b/slides/experiment_results.pdf differ diff --git a/src/experiment/bench_commons.h b/src/experiment/bench_commons.h index 23aea8f..ff0e692 100644 --- a/src/experiment/bench_commons.h +++ b/src/experiment/bench_commons.h @@ -21,11 +21,23 @@ namespace bench { }; template - BenchmarkResult run_benchmark(const string &algo_name, const string &graph_path, int num_runs) { + BenchmarkResult run_benchmark(const string &algo_name, const string &graph_path, int warm_up_runs, int num_runs) { BenchmarkResult result; result.algorithm_name = algo_name; result.graph_name = filesystem::path(graph_path).filename().string(); + cout << "Warm up before exec " << algo_name << " on " << result.graph_name << "..." << endl; + + for (int i = 0; i < warm_up_runs; ++i) { + const unique_ptr algorithm(create_algorithm()); + + cout << " Run " << (i + 1) << "/" << warm_up_runs << "..." << flush; + + algorithm->load_graph(graph_path); + auto time = algorithm->compute(); + cout << " " << fixed << setprecision(2) << time.count() << " ms" << endl; + } + cout << "Running " << algo_name << " on " << result.graph_name << "..." << endl; result.execution_times.reserve(num_runs); diff --git a/src/experiment/bfs_benchmark.cpp b/src/experiment/bfs_benchmark.cpp index 3be47ed..cfadd0a 100644 --- a/src/experiment/bfs_benchmark.cpp +++ b/src/experiment/bfs_benchmark.cpp @@ -23,14 +23,13 @@ int main() { print_spla_accelerator_info(); // List of algorithms to benchmark - vector>> algorithms{}; + vector>> algorithms{}; - algorithms.emplace_back("BfsLagraph", [](const string &graph_path, int num_runs) { - return run_benchmark("BfsLagraph", graph_path, - num_runs); + algorithms.emplace_back("BfsLagraph", [](const string &graph_path, int warm_up, int measure) { + return run_benchmark("BfsLagraph", graph_path, warm_up, measure); }); - algorithms.emplace_back("BfsSpla", [](const string &graph_path, int num_runs) { - return run_benchmark("BfsSpla", graph_path, num_runs); + algorithms.emplace_back("BfsSpla", [](const string &graph_path, int warm_up, int measure) { + return run_benchmark("BfsSpla", graph_path, warm_up, measure); }); vector graph_files; @@ -51,13 +50,14 @@ int main() { cout << " - " << filesystem::path(file).filename().string() << endl; } - const int NUM_RUNS = 20; + const int WARM_UP_RUNS = 3; + const int MEASURE_RUNS = 20; vector all_results; for (const auto &graph_file: graph_files) { for (const auto &[algo_name, benchmark_func]: algorithms) { try { - BenchmarkResult result = benchmark_func(graph_file, NUM_RUNS); + BenchmarkResult result = benchmark_func(graph_file, WARM_UP_RUNS, MEASURE_RUNS); all_results.push_back(result); } catch (const exception &e) { cerr << "Error running " << algo_name << " on " << filesystem::path(graph_file).filename().string() diff --git a/src/experiment/mst_benchmark.cpp b/src/experiment/mst_benchmark.cpp index 6859f35..d191768 100644 --- a/src/experiment/mst_benchmark.cpp +++ b/src/experiment/mst_benchmark.cpp @@ -42,14 +42,13 @@ int main() { // List of algorithms to benchmark vector>> algorithms = {{"PrimSpla", [](const string &graph_path, int num_runs) { - return run_benchmark("PrimSpla", graph_path, - num_runs); + return run_benchmark("PrimSpla", graph_path, 0, num_runs); }}}; algorithms.emplace_back("BoruvkaSpla", [](const string &graph_path, int num_runs) { - return run_benchmark("BoruvkaSpla", graph_path, num_runs); + return run_benchmark("BoruvkaSpla", graph_path, 0, num_runs); }); algorithms.emplace_back("BoruvkaLagraph", [](const string &graph_path, int num_runs) { - return run_benchmark("BoruvkaLagraph", graph_path, num_runs); + return run_benchmark("BoruvkaLagraph", graph_path, 0, num_runs); }); #if USE_GUNROCK