Skip to content

Commit 14a920c

Browse files
committed
chore(tests): add support for AP in tests and benches
1 parent dee615d commit 14a920c

File tree

129 files changed

+928
-854
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

129 files changed

+928
-854
lines changed

tests/backward_compatibility/high_level_api.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use super::shortint::load_params;
22
use crate::{load_and_unversionize, TestedModule};
33
use std::path::Path;
44
use tfhe::prelude::{CiphertextList, FheDecrypt, FheEncrypt};
5-
use tfhe::shortint::PBSParameters;
5+
use tfhe::shortint::{AtomicPatternParameters, PBSParameters};
66
#[cfg(feature = "zk-pok")]
77
use tfhe::zk::CompactPkeCrs;
88
use tfhe::{
@@ -22,10 +22,10 @@ use tfhe_backward_compat_data::{
2222
};
2323
use tfhe_versionable::Unversionize;
2424

25-
fn load_hl_params(test_params: &TestParameterSet) -> PBSParameters {
25+
fn load_hl_params(test_params: &TestParameterSet) -> AtomicPatternParameters {
2626
let pbs_params = load_params(test_params);
2727

28-
PBSParameters::PBS(pbs_params)
28+
PBSParameters::PBS(pbs_params).into()
2929
}
3030

3131
/// Test HL ciphertext: loads the ciphertext and compare the decrypted value to the one in the

tfhe/benches/utilities.rs

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ pub mod shortint_utils {
3838
use super::*;
3939
use itertools::iproduct;
4040
use std::vec::IntoIter;
41+
use tfhe::shortint::atomic_pattern::AtomicPatternParameters;
4142
use tfhe::shortint::parameters::compact_public_key_only::CompactPublicKeyEncryptionParameters;
4243
#[cfg(not(feature = "gpu"))]
4344
use tfhe::shortint::parameters::current_params::V1_1_PARAM_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128;
@@ -56,8 +57,10 @@ pub mod shortint_utils {
5657
/// of parameters and a num_block to achieve a certain bit_size ciphertext
5758
/// in radix decomposition
5859
pub struct ParamsAndNumBlocksIter {
59-
params_and_bit_sizes:
60-
itertools::Product<IntoIter<tfhe::shortint::PBSParameters>, IntoIter<usize>>,
60+
params_and_bit_sizes: itertools::Product<
61+
IntoIter<tfhe::shortint::atomic_pattern::AtomicPatternParameters>,
62+
IntoIter<usize>,
63+
>,
6164
}
6265

6366
impl Default for ParamsAndNumBlocksIter {
@@ -90,7 +93,11 @@ pub mod shortint_utils {
9093
}
9194

9295
impl Iterator for ParamsAndNumBlocksIter {
93-
type Item = (tfhe::shortint::PBSParameters, usize, usize);
96+
type Item = (
97+
tfhe::shortint::atomic_pattern::AtomicPatternParameters,
98+
usize,
99+
usize,
100+
);
94101

95102
fn next(&mut self) -> Option<Self::Item> {
96103
let (param, bit_size) = self.params_and_bit_sizes.next()?;
@@ -126,6 +133,31 @@ pub mod shortint_utils {
126133
}
127134
}
128135

136+
impl From<AtomicPatternParameters> for CryptoParametersRecord<u64> {
137+
fn from(params: AtomicPatternParameters) -> Self {
138+
CryptoParametersRecord {
139+
lwe_dimension: Some(params.lwe_dimension()),
140+
glwe_dimension: Some(params.glwe_dimension()),
141+
polynomial_size: Some(params.polynomial_size()),
142+
lwe_noise_distribution: Some(params.lwe_noise_distribution()),
143+
glwe_noise_distribution: Some(params.glwe_noise_distribution()),
144+
pbs_base_log: Some(params.pbs_base_log()),
145+
pbs_level: Some(params.pbs_level()),
146+
ks_base_log: Some(params.ks_base_log()),
147+
ks_level: Some(params.ks_level()),
148+
message_modulus: Some(params.message_modulus().0),
149+
carry_modulus: Some(params.carry_modulus().0),
150+
ciphertext_modulus: Some(
151+
params
152+
.ciphertext_modulus()
153+
.try_to()
154+
.expect("failed to convert ciphertext modulus"),
155+
),
156+
..Default::default()
157+
}
158+
}
159+
}
160+
129161
impl From<ShortintKeySwitchingParameters> for CryptoParametersRecord<u64> {
130162
fn from(params: ShortintKeySwitchingParameters) -> Self {
131163
CryptoParametersRecord {

tfhe/src/high_level_api/keys/client.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ impl ClientKey {
7070
}
7171
}
7272

73-
pub fn computation_parameters(&self) -> crate::shortint::PBSParameters {
73+
pub fn computation_parameters(&self) -> crate::shortint::AtomicPatternParameters {
7474
self.key.block_parameters()
7575
}
7676

tfhe/src/high_level_api/keys/inner.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ impl IntegerClientKey {
174174
}
175175
}
176176

177-
pub(crate) fn block_parameters(&self) -> crate::shortint::parameters::PBSParameters {
177+
pub(crate) fn block_parameters(&self) -> crate::shortint::parameters::AtomicPatternParameters {
178178
self.key.parameters()
179179
}
180180
}

tfhe/src/integer/client_key/crt.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ impl CrtClientKey {
7676
}
7777

7878
/// Returns the parameters used by the client key.
79-
pub fn parameters(&self) -> crate::shortint::PBSParameters {
79+
pub fn parameters(&self) -> crate::shortint::AtomicPatternParameters {
8080
self.key.parameters()
8181
}
8282

tfhe/src/integer/client_key/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -142,8 +142,8 @@ impl ClientKey {
142142
Self { key }
143143
}
144144

145-
pub fn parameters(&self) -> crate::shortint::PBSParameters {
146-
self.key.parameters.pbs_parameters().unwrap()
145+
pub fn parameters(&self) -> crate::shortint::AtomicPatternParameters {
146+
self.key.parameters.ap_parameters().unwrap()
147147
}
148148

149149
#[cfg(test)]

tfhe/src/integer/client_key/radix.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@ use crate::integer::compression_keys::{
1111
CompressedCompressionKey, CompressedDecompressionKey, CompressionPrivateKeys,
1212
};
1313
use crate::integer::BooleanBlock;
14-
use crate::shortint::{Ciphertext as ShortintCiphertext, PBSParameters as ShortintParameters};
14+
use crate::shortint::{
15+
AtomicPatternParameters as ShortintParameters, Ciphertext as ShortintCiphertext,
16+
};
1517
use serde::{Deserialize, Serialize};
1618
use tfhe_versionable::Versionize;
1719

tfhe/src/integer/gpu/server_key/mod.rs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@ use crate::integer::server_key::num_bits_to_represent_unsigned_value;
1212
use crate::integer::ClientKey;
1313
use crate::shortint::ciphertext::{MaxDegree, MaxNoiseLevel};
1414
use crate::shortint::engine::ShortintEngine;
15-
use crate::shortint::{CarryModulus, CiphertextModulus, MessageModulus, PBSOrder};
15+
use crate::shortint::{
16+
AtomicPatternParameters, CarryModulus, CiphertextModulus, MessageModulus, PBSOrder,
17+
};
1618
mod radix;
1719

1820
pub enum CudaBootstrappingKey {
@@ -82,7 +84,10 @@ impl CudaServerKey {
8284
let mut engine = ShortintEngine::new();
8385

8486
// Generate a regular keyset and convert to the GPU
85-
let pbs_params_base = &cks.parameters();
87+
let AtomicPatternParameters::Classical(pbs_params_base) = &cks.parameters() else {
88+
panic!("Only the classical atomic pattern is supported on GPU")
89+
};
90+
8691
let d_bootstrapping_key = match pbs_params_base {
8792
crate::shortint::PBSParameters::PBS(pbs_params) => {
8893
let h_bootstrap_key: LweBootstrapKeyOwned<u64> =

tfhe/src/integer/gpu/server_key/radix/tests_long_run/test_erc20.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ create_gpu_parameterized_test!(no_cmux_erc20 {
1818

1919
fn safe_erc20<P>(param: P)
2020
where
21-
P: Into<PBSParameters>,
21+
P: Into<AtomicPatternParameters>,
2222
{
2323
let overflowing_add_executor =
2424
GpuMultiDeviceFunctionExecutor::new(&CudaServerKey::unsigned_overflowing_add);
@@ -37,7 +37,7 @@ where
3737

3838
fn whitepaper_erc20<P>(param: P)
3939
where
40-
P: Into<PBSParameters>,
40+
P: Into<AtomicPatternParameters>,
4141
{
4242
let ge_executor = GpuMultiDeviceFunctionExecutor::new(&CudaServerKey::ge);
4343
let add_executor = GpuMultiDeviceFunctionExecutor::new(&CudaServerKey::add);
@@ -54,7 +54,7 @@ where
5454

5555
fn no_cmux_erc20<P>(param: P)
5656
where
57-
P: Into<PBSParameters>,
57+
P: Into<AtomicPatternParameters>,
5858
{
5959
let ge_executor = GpuMultiDeviceFunctionExecutor::new(&CudaServerKey::ge);
6060
let mul_executor = GpuMultiDeviceFunctionExecutor::new(&CudaServerKey::mul);

tfhe/src/integer/gpu/server_key/radix/tests_long_run/test_random_op_sequence.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ create_gpu_parameterized_test!(random_op_sequence {
1414
});
1515
fn random_op_sequence<P>(param: P)
1616
where
17-
P: Into<PBSParameters> + Clone,
17+
P: Into<AtomicPatternParameters> + Clone,
1818
{
1919
// Binary Ops Executors
2020
let add_executor = GpuMultiDeviceFunctionExecutor::new(&CudaServerKey::add);

0 commit comments

Comments
 (0)