#include #include #include "dpf/bench_cells.hpp" #include "dpf/party_runner.hpp" namespace { void drive(const char * name, dpf::bench::kind id, int parties) { dpf::app::run_config cfg; cfg.kind = dpf::net::transport::async_memory; cfg.n_lanes = 1; std::vector plans; for (int p = 0; p < parties; ++p) plans.push_back(dpf::bench::plan_for(static_cast(p), id)); ASSERT_GT(plans[0].rounds(), 0u); std::vector values(plans.size()); auto result = dpf::app::run_parties(plans, values, {}, cfg, nullptr, &dpf::bench::run_cell); EXPECT_GT(result.party0_wall_ns, 0u); ASSERT_FALSE(result.wire.empty()); EXPECT_GT(result.wire[0].payload_out, 0u); (void)name; } } // namespace TEST(BenchCells, ProjectionCrossesTheMesh) { drive("arith_proj_m5", dpf::bench::kind::proj5, 2); } TEST(BenchCells, ShuffleCrossesTheRing) { drive("shuffle_n16", dpf::bench::kind::shuf16, 3); } TEST(BenchCells, FluteAndStackCrossTheMesh) { drive("flute_d2", dpf::bench::kind::flute2, 2); drive("yao_if_4_2", dpf::bench::kind::yao_if4, 2); }