Ship the TLS mesh, composer, Beaver/Yao/leaf MPC, prep/online paths, apps, and docs so the tree is pushable before elevating share_expr, security_mode, and prep resume. Co-authored-by: Cursor <cursoragent@cursor.com>
45 lines
1.2 KiB
C++
45 lines
1.2 KiB
C++
#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);
|
|
}
|