libdpf/test/tests/bench_cell_test.cpp

46 lines
1.2 KiB
C++
Raw Normal View History

#include <gtest/gtest.h>
#include <vector>
#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<dpf::protocol::plan> plans;
for (int p = 0; p < parties; ++p)
plans.push_back(dpf::bench::plan_for(static_cast<std::size_t>(p), id));
ASSERT_GT(plans[0].rounds(), 0u);
std::vector<dpf::app::party_values> 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);
}