Skip to content

Commit

Permalink
chore: update backward compat version
Browse files Browse the repository at this point in the history
  • Loading branch information
mayeul-zama committed Feb 6, 2025
1 parent a9c310c commit 19d28f5
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 20 deletions.
2 changes: 1 addition & 1 deletion tests/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ publish = false
[dev-dependencies]
tfhe = { path = "../tfhe" }
tfhe-versionable = { path = "../utils/tfhe-versionable" }
tfhe-backward-compat-data = { git = "https://github.com/zama-ai/tfhe-backward-compat-data.git", branch = "v0.5", default-features = false, features = [
tfhe-backward-compat-data = { git = "https://github.com/zama-ai/tfhe-backward-compat-data.git", branch = "v0.6", default-features = false, features = [
"load",
] }
ron = "0.8"
Expand Down
73 changes: 54 additions & 19 deletions tests/backward_compatibility/shortint.rs
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
use std::path::Path;

use tfhe::core_crypto::prelude::TUniform;
use tfhe::core_crypto::prelude::{
LweCiphertextCount, NoiseEstimationMeasureBound, RSigmaFactor, TUniform,
};
use tfhe::shortint::parameters::ModulusSwitchNoiseReductionParams;
use tfhe_backward_compat_data::load::{
load_versioned_auxiliary, DataFormat, TestFailure, TestResult, TestSuccess,
};
use tfhe_backward_compat_data::{
ShortintCiphertextTest, ShortintClientKeyTest, TestDistribution, TestMetadata,
TestParameterSet, TestType, Testcase,
TestModulusSwitchNoiseReductionParams, TestParameterSet, TestType, Testcase,
};

use tfhe::shortint::parameters::{
Expand All @@ -24,29 +26,62 @@ use crate::{load_and_unversionize, TestedModule};
/// Converts test parameters metadata that are independent of any tfhe-rs version and use only
/// built-in types into parameters suitable for the currently tested version.
pub fn load_params(test_params: &TestParameterSet) -> ClassicPBSParameters {
let TestParameterSet {
lwe_dimension,
glwe_dimension,
polynomial_size,
lwe_noise_distribution,
glwe_noise_distribution,
pbs_base_log,
pbs_level,
ks_base_log,
ks_level,
message_modulus,
ciphertext_modulus,
carry_modulus,
max_noise_level,
log2_p_fail,
encryption_key_choice,
modulus_switch_noise_reduction_params,
} = test_params;

let modulus_switch_noise_reduction_params = modulus_switch_noise_reduction_params.as_ref().map(
|TestModulusSwitchNoiseReductionParams {
modulus_switch_zeros_count,
ms_bound,
ms_r_sigma_factor,
}| {
ModulusSwitchNoiseReductionParams {
modulus_switch_zeros_count: LweCiphertextCount(*modulus_switch_zeros_count),
ms_bound: NoiseEstimationMeasureBound(*ms_bound),
ms_r_sigma_factor: RSigmaFactor(*ms_r_sigma_factor),
}
},
);

ClassicPBSParameters {
lwe_dimension: LweDimension(test_params.lwe_dimension),
glwe_dimension: GlweDimension(test_params.glwe_dimension),
polynomial_size: PolynomialSize(test_params.polynomial_size),
lwe_noise_distribution: convert_distribution(&test_params.lwe_noise_distribution),
glwe_noise_distribution: convert_distribution(&test_params.glwe_noise_distribution),
pbs_base_log: DecompositionBaseLog(test_params.pbs_base_log),
pbs_level: DecompositionLevelCount(test_params.pbs_level),
ks_base_log: DecompositionBaseLog(test_params.ks_base_log),
ks_level: DecompositionLevelCount(test_params.ks_level),
message_modulus: MessageModulus(test_params.message_modulus as u64),
carry_modulus: CarryModulus(test_params.carry_modulus as u64),
max_noise_level: MaxNoiseLevel::new(test_params.max_noise_level as u64),
log2_p_fail: test_params.log2_p_fail,
ciphertext_modulus: CiphertextModulus::try_new(test_params.ciphertext_modulus).unwrap(),
lwe_dimension: LweDimension(*lwe_dimension),
glwe_dimension: GlweDimension(*glwe_dimension),
polynomial_size: PolynomialSize(*polynomial_size),
lwe_noise_distribution: convert_distribution(lwe_noise_distribution),
glwe_noise_distribution: convert_distribution(glwe_noise_distribution),
pbs_base_log: DecompositionBaseLog(*pbs_base_log),
pbs_level: DecompositionLevelCount(*pbs_level),
ks_base_log: DecompositionBaseLog(*ks_base_log),
ks_level: DecompositionLevelCount(*ks_level),
message_modulus: MessageModulus(*message_modulus as u64),
carry_modulus: CarryModulus(*carry_modulus as u64),
max_noise_level: MaxNoiseLevel::new(*max_noise_level as u64),
log2_p_fail: *log2_p_fail,
ciphertext_modulus: CiphertextModulus::try_new(*ciphertext_modulus).unwrap(),
encryption_key_choice: {
match &*test_params.encryption_key_choice {
match encryption_key_choice.as_ref() {
"big" => EncryptionKeyChoice::Big,
"small" => EncryptionKeyChoice::Small,
_ => panic!("Invalid encryption key choice"),
}
},
modulus_switch_noise_reduction_params: None,
modulus_switch_noise_reduction_params,
}
}

Expand Down

0 comments on commit 19d28f5

Please sign in to comment.