diff --git a/Makefile b/Makefile index 9e6343d0c..b0188bb89 100644 --- a/Makefile +++ b/Makefile @@ -654,6 +654,19 @@ bench_shortint: install_rs_check_toolchain --bench shortint-bench \ --features=$(TARGET_ARCH_FEATURE),shortint,internal-keycache,$(AVX512_FEATURE) -p $(TFHE_SPEC) +.PHONY: bench_oprf # Run benchmarks for shortint +bench_oprf: install_rs_check_toolchain + RUSTFLAGS="$(RUSTFLAGS)" \ + cargo $(CARGO_RS_CHECK_TOOLCHAIN) bench \ + --bench oprf-shortint-bench \ + --features=$(TARGET_ARCH_FEATURE),shortint,internal-keycache,$(AVX512_FEATURE) -p tfhe + RUSTFLAGS="$(RUSTFLAGS)" \ + cargo $(CARGO_RS_CHECK_TOOLCHAIN) bench \ + --bench oprf-integer-bench \ + --features=$(TARGET_ARCH_FEATURE),integer,internal-keycache,$(AVX512_FEATURE) -p tfhe + + + .PHONY: bench_shortint_multi_bit # Run benchmarks for shortint using multi-bit parameters bench_shortint_multi_bit: install_rs_check_toolchain RUSTFLAGS="$(RUSTFLAGS)" __TFHE_RS_BENCH_TYPE=MULTI_BIT \ diff --git a/tfhe/Cargo.toml b/tfhe/Cargo.toml index a2b8464d7..c36f6d4e0 100644 --- a/tfhe/Cargo.toml +++ b/tfhe/Cargo.toml @@ -186,6 +186,19 @@ path = "benches/shortint/bench.rs" harness = false required-features = ["shortint", "internal-keycache"] +[[bench]] +name = "oprf-integer-bench" +path = "benches/integer/oprf.rs" +harness = false +required-features = ["integer", "internal-keycache"] + + +[[bench]] +name = "oprf-shortint-bench" +path = "benches/shortint/oprf.rs" +harness = false +required-features = ["shortint", "internal-keycache"] + [[bench]] name = "integer-bench" path = "benches/integer/bench.rs" diff --git a/tfhe/benches/integer/oprf.rs b/tfhe/benches/integer/oprf.rs new file mode 100644 index 000000000..256b2262f --- /dev/null +++ b/tfhe/benches/integer/oprf.rs @@ -0,0 +1,33 @@ +use concrete_csprng::seeders::Seed; +use criterion::{black_box, criterion_group, Criterion}; +use tfhe::integer::keycache::KEY_CACHE; +use tfhe::integer::IntegerKeyKind; +use tfhe::keycache::NamedParam; +use tfhe::shortint::parameters::*; + +fn oprf(c: &mut Criterion) { + let bench_name = "integer_oprf"; + + let mut bench_group = c.benchmark_group(bench_name); + + let param = PARAM_MESSAGE_2_CARRY_2_KS_PBS; + + let (_, sk) = KEY_CACHE.get_from_params(param, IntegerKeyKind::Radix); + + bench_group.bench_function(&format!("64-bits-oprf::{}", param.name()), |b| { + b.iter(|| { + _ = black_box(sk.par_generate_oblivious_pseudo_random_unsigned_integer( + Seed(0), + 64, + 32, + )); + }) + }); +} + +criterion_group!(oprf2, oprf); + +fn main() { + oprf2(); + Criterion::default().configure_from_args().final_summary(); +} diff --git a/tfhe/benches/shortint/oprf.rs b/tfhe/benches/shortint/oprf.rs new file mode 100644 index 000000000..e08d29e6d --- /dev/null +++ b/tfhe/benches/shortint/oprf.rs @@ -0,0 +1,29 @@ +use concrete_csprng::seeders::Seed; +use criterion::{black_box, criterion_group, Criterion}; +use tfhe::keycache::NamedParam; +use tfhe::shortint::keycache::KEY_CACHE; +use tfhe::shortint::parameters::*; + +fn oprf(c: &mut Criterion) { + let bench_name = "shortint-oprf"; + + let mut bench_group = c.benchmark_group(bench_name); + + let param = PARAM_MESSAGE_2_CARRY_2_KS_PBS; + + let keys = KEY_CACHE.get_from_param(param); + let sks = keys.server_key(); + + bench_group.bench_function(&format!("2-bits-oprf::{}", param.name()), |b| { + b.iter(|| { + _ = black_box(sks.generate_oblivious_pseudo_random(Seed(0), 2)); + }) + }); +} + +criterion_group!(oprf2, oprf); + +fn main() { + oprf2(); + Criterion::default().configure_from_args().final_summary(); +}