async def test_get_cube(): n, t = 4, 1 num_cubes = 2 pp_elements = PreProcessedElements() pp_elements.generate_cubes(1000, n, t) async def _prog(ctx): for _ in range(num_cubes): a1_sh, a2_sh, a3_sh = ctx.preproc.get_cubes(ctx) a1, a2, a3 = await a1_sh.open(), await a2_sh.open(), await a3_sh.open() assert a1 * a1 == a2 assert a1 * a2 == a3 program_runner = TaskProgramRunner(n, t) program_runner.add(_prog) await program_runner.join()
def _preprocess(n, t, k, to_generate): from honeybadgermpc.preprocessing import PreProcessedElements pp_elements = PreProcessedElements() for kind in to_generate: if kind == "triples": pp_elements.generate_triples(k, n, t) elif kind == "cubes": pp_elements.generate_cubes(k, n, t) elif kind == "zeros": pp_elements.generate_zeros(k, n, t) elif kind == "rands": pp_elements.generate_rands(k, n, t) elif kind == "bits": pp_elements.generate_bits(k, n, t) elif kind == "one_minus_one": pp_elements.generate_one_minus_ones(k, n, t) elif kind == "double_shares": pp_elements.generate_double_shares(k, n, t) elif kind == "share_bits": pp_elements.generate_share_bits(k, n, t) else: raise ValueError(f"{kind} must be manually preprocessed")