mirror of
https://github.com/zama-ai/tfhe-rs.git
synced 2026-01-09 14:47:56 -05:00
chore: update parameters with mean reduction technique
- parameters checked visually with 1.1 for those who differ, all seems ok
This commit is contained in:
@@ -1,11 +1,9 @@
|
||||
use crate::shortint::parameters::{
|
||||
current_params, ClassicPBSParameters, CompactPublicKeyEncryptionParameters,
|
||||
CompressionParameters, MultiBitPBSParameters, NoiseSquashingParameters,
|
||||
ShortintKeySwitchingParameters,
|
||||
CompressionParameters, MultiBitPBSParameters, NoiseSquashingCompressionParameters,
|
||||
NoiseSquashingParameters, ShortintKeySwitchingParameters,
|
||||
};
|
||||
|
||||
use crate::shortint::parameters::current_params::key_switching::p_fail_2_minus_128::ks_pbs_gpu::V1_4_PARAM_MULTI_BIT_GROUP_4_KEYSWITCH_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128;
|
||||
use crate::shortint::parameters::v1_4::V1_4_NOISE_SQUASHING_PARAM_GPU_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128;
|
||||
use current_params::classic::gaussian::p_fail_2_minus_128::ks_pbs::{
|
||||
V1_4_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128,
|
||||
V1_4_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128,
|
||||
@@ -18,6 +16,7 @@ use current_params::key_switching::p_fail_2_minus_128::ks_pbs::{
|
||||
V1_4_PARAM_KEYSWITCH_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128,
|
||||
V1_4_PARAM_KEYSWITCH_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128,
|
||||
};
|
||||
use current_params::key_switching::p_fail_2_minus_128::ks_pbs_gpu::V1_4_PARAM_MULTI_BIT_GROUP_4_KEYSWITCH_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128;
|
||||
use current_params::list_compression::p_fail_2_minus_128::{
|
||||
V1_4_COMP_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128,
|
||||
V1_4_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128,
|
||||
@@ -47,13 +46,12 @@ use current_params::multi_bit::tuniform::p_fail_2_minus_64::ks_pbs_gpu::{
|
||||
V1_4_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64,
|
||||
V1_4_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64,
|
||||
};
|
||||
use current_params::noise_squashing::p_fail_2_minus_128::V1_4_NOISE_SQUASHING_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128;
|
||||
|
||||
use super::current_params::{
|
||||
use current_params::noise_squashing::p_fail_2_minus_128::{
|
||||
V1_4_NOISE_SQUASHING_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128,
|
||||
V1_4_NOISE_SQUASHING_PARAM_GPU_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128,
|
||||
V1_4_NOISE_SQUASHING_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128,
|
||||
V1_4_NOISE_SQUASHING_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128,
|
||||
};
|
||||
use super::NoiseSquashingCompressionParameters;
|
||||
|
||||
// Aliases
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,13 +1,105 @@
|
||||
use crate::shortint::parameters::ClassicPBSParameters;
|
||||
/// p-fail = 2^-139.952, algorithmic cost ~ 78, 2-norm = 3
|
||||
/// Average number of encryptions of 0s ~ 16, peak noise ~ Variance(0.0000207432665142053)
|
||||
pub const V1_4_PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_PBS_KS_GAUSSIAN_2M128: ClassicPBSParameters = crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_PBS_KS_GAUSSIAN_2M128;
|
||||
/// p-fail = 2^-129.632, algorithmic cost ~ 130, 2-norm = 5
|
||||
/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(0.00000140242017242477)
|
||||
pub const V1_4_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M128: ClassicPBSParameters = crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M128;
|
||||
/// p-fail = 2^-276.943, algorithmic cost ~ 3355, 2-norm = 9
|
||||
/// Average number of encryptions of 0s ~ 16, peak noise ~ Variance(4.04169957228641E-8)
|
||||
pub const V1_4_PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_PBS_KS_GAUSSIAN_2M128: ClassicPBSParameters = crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_PBS_KS_GAUSSIAN_2M128;
|
||||
/// p-fail = 2^-273.01, algorithmic cost ~ 20401, 2-norm = 17
|
||||
/// Average number of encryptions of 0s ~ 16, peak noise ~ Variance(2.56297356349261E-9)
|
||||
pub const V1_4_PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_PBS_KS_GAUSSIAN_2M128: ClassicPBSParameters = crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_PBS_KS_GAUSSIAN_2M128;
|
||||
use crate::shortint::parameters::{
|
||||
CarryModulus, CiphertextModulus, ClassicPBSParameters, DecompositionBaseLog,
|
||||
DecompositionLevelCount, DynamicDistribution, EncryptionKeyChoice, GlweDimension, LweDimension,
|
||||
MaxNoiseLevel, MessageModulus, ModulusSwitchType, PolynomialSize, StandardDev,
|
||||
};
|
||||
|
||||
/// p-fail = 2^-140.214, algorithmic cost ~ 78, 2-norm = 3
|
||||
pub const V1_4_PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_PBS_KS_GAUSSIAN_2M128: ClassicPBSParameters =
|
||||
ClassicPBSParameters {
|
||||
lwe_dimension: LweDimension(1024),
|
||||
glwe_dimension: GlweDimension(4),
|
||||
polynomial_size: PolynomialSize(512),
|
||||
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
|
||||
1.339775301998614e-07,
|
||||
)),
|
||||
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
|
||||
2.845267479601915e-15,
|
||||
)),
|
||||
pbs_base_log: DecompositionBaseLog(23),
|
||||
pbs_level: DecompositionLevelCount(1),
|
||||
ks_base_log: DecompositionBaseLog(6),
|
||||
ks_level: DecompositionLevelCount(3),
|
||||
message_modulus: MessageModulus(2),
|
||||
carry_modulus: CarryModulus(2),
|
||||
max_noise_level: MaxNoiseLevel::new(3),
|
||||
log2_p_fail: -140.214,
|
||||
ciphertext_modulus: CiphertextModulus::new_native(),
|
||||
encryption_key_choice: EncryptionKeyChoice::Small,
|
||||
modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction,
|
||||
};
|
||||
|
||||
/// p-fail = 2^-129.856, algorithmic cost ~ 130, 2-norm = 5
|
||||
pub const V1_4_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M128: ClassicPBSParameters =
|
||||
ClassicPBSParameters {
|
||||
lwe_dimension: LweDimension(1024),
|
||||
glwe_dimension: GlweDimension(1),
|
||||
polynomial_size: PolynomialSize(2048),
|
||||
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
|
||||
1.339775301998614e-07,
|
||||
)),
|
||||
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
|
||||
2.845267479601915e-15,
|
||||
)),
|
||||
pbs_base_log: DecompositionBaseLog(23),
|
||||
pbs_level: DecompositionLevelCount(1),
|
||||
ks_base_log: DecompositionBaseLog(4),
|
||||
ks_level: DecompositionLevelCount(5),
|
||||
message_modulus: MessageModulus(4),
|
||||
carry_modulus: CarryModulus(4),
|
||||
max_noise_level: MaxNoiseLevel::new(5),
|
||||
log2_p_fail: -129.856,
|
||||
ciphertext_modulus: CiphertextModulus::new_native(),
|
||||
encryption_key_choice: EncryptionKeyChoice::Small,
|
||||
modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction,
|
||||
};
|
||||
|
||||
/// p-fail = 2^-277.205, algorithmic cost ~ 3355, 2-norm = 9
|
||||
pub const V1_4_PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_PBS_KS_GAUSSIAN_2M128: ClassicPBSParameters =
|
||||
ClassicPBSParameters {
|
||||
lwe_dimension: LweDimension(2048),
|
||||
glwe_dimension: GlweDimension(1),
|
||||
polynomial_size: PolynomialSize(16384),
|
||||
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
|
||||
2.845267479601915e-15,
|
||||
)),
|
||||
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
|
||||
2.168404344971009e-19,
|
||||
)),
|
||||
pbs_base_log: DecompositionBaseLog(15),
|
||||
pbs_level: DecompositionLevelCount(2),
|
||||
ks_base_log: DecompositionBaseLog(24),
|
||||
ks_level: DecompositionLevelCount(1),
|
||||
message_modulus: MessageModulus(8),
|
||||
carry_modulus: CarryModulus(8),
|
||||
max_noise_level: MaxNoiseLevel::new(9),
|
||||
log2_p_fail: -277.205,
|
||||
ciphertext_modulus: CiphertextModulus::new_native(),
|
||||
encryption_key_choice: EncryptionKeyChoice::Small,
|
||||
modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction,
|
||||
};
|
||||
|
||||
/// p-fail = 2^-273.265, algorithmic cost ~ 20401, 2-norm = 17
|
||||
pub const V1_4_PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_PBS_KS_GAUSSIAN_2M128: ClassicPBSParameters =
|
||||
ClassicPBSParameters {
|
||||
lwe_dimension: LweDimension(2048),
|
||||
glwe_dimension: GlweDimension(1),
|
||||
polynomial_size: PolynomialSize(65536),
|
||||
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
|
||||
2.845267479601915e-15,
|
||||
)),
|
||||
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
|
||||
2.168404344971009e-19,
|
||||
)),
|
||||
pbs_base_log: DecompositionBaseLog(11),
|
||||
pbs_level: DecompositionLevelCount(3),
|
||||
ks_base_log: DecompositionBaseLog(16),
|
||||
ks_level: DecompositionLevelCount(2),
|
||||
message_modulus: MessageModulus(16),
|
||||
carry_modulus: CarryModulus(16),
|
||||
max_noise_level: MaxNoiseLevel::new(17),
|
||||
log2_p_fail: -273.265,
|
||||
ciphertext_modulus: CiphertextModulus::new_native(),
|
||||
encryption_key_choice: EncryptionKeyChoice::Small,
|
||||
modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction,
|
||||
};
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,17 +1,105 @@
|
||||
use crate::shortint::parameters::ClassicPBSParameters;
|
||||
/// p-fail = 2^-128.181, algorithmic cost ~ 70, 2-norm = 3
|
||||
/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(0.0000226994502138943)
|
||||
use crate::shortint::parameters::{
|
||||
CarryModulus, CiphertextModulus, ClassicPBSParameters, DecompositionBaseLog,
|
||||
DecompositionLevelCount, DynamicDistribution, EncryptionKeyChoice, GlweDimension, LweDimension,
|
||||
MaxNoiseLevel, MessageModulus, ModulusSwitchType, PolynomialSize, StandardDev,
|
||||
};
|
||||
|
||||
/// p-fail = 2^-128.4, algorithmic cost ~ 70, 2-norm = 3
|
||||
pub const V1_4_PARAM_MESSAGE_1_CARRY_1_PBS_KS_GAUSSIAN_2M128: ClassicPBSParameters =
|
||||
crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_1_CARRY_1_PBS_KS_GAUSSIAN_2M128;
|
||||
/// p-fail = 2^-128.163, algorithmic cost ~ 128, 2-norm = 5
|
||||
/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(0.00000141892645707080)
|
||||
ClassicPBSParameters {
|
||||
lwe_dimension: LweDimension(914),
|
||||
glwe_dimension: GlweDimension(4),
|
||||
polynomial_size: PolynomialSize(512),
|
||||
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
|
||||
8.938614855855138e-07,
|
||||
)),
|
||||
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
|
||||
2.845267479601915e-15,
|
||||
)),
|
||||
pbs_base_log: DecompositionBaseLog(23),
|
||||
pbs_level: DecompositionLevelCount(1),
|
||||
ks_base_log: DecompositionBaseLog(5),
|
||||
ks_level: DecompositionLevelCount(3),
|
||||
message_modulus: MessageModulus(2),
|
||||
carry_modulus: CarryModulus(2),
|
||||
max_noise_level: MaxNoiseLevel::new(3),
|
||||
log2_p_fail: -128.4,
|
||||
ciphertext_modulus: CiphertextModulus::new_native(),
|
||||
encryption_key_choice: EncryptionKeyChoice::Small,
|
||||
modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction,
|
||||
};
|
||||
|
||||
/// p-fail = 2^-128.05, algorithmic cost ~ 128, 2-norm = 5
|
||||
pub const V1_4_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M128: ClassicPBSParameters =
|
||||
crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M128;
|
||||
/// p-fail = 2^-128.674, algorithmic cost ~ 2030, 2-norm = 9
|
||||
/// Average number of encryptions of 0s ~ 34, peak noise ~ Variance(8.83211431719384E-8)
|
||||
ClassicPBSParameters {
|
||||
lwe_dimension: LweDimension(978),
|
||||
glwe_dimension: GlweDimension(1),
|
||||
polynomial_size: PolynomialSize(2048),
|
||||
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
|
||||
2.962875621642539e-07,
|
||||
)),
|
||||
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
|
||||
2.845267479601915e-15,
|
||||
)),
|
||||
pbs_base_log: DecompositionBaseLog(23),
|
||||
pbs_level: DecompositionLevelCount(1),
|
||||
ks_base_log: DecompositionBaseLog(3),
|
||||
ks_level: DecompositionLevelCount(6),
|
||||
message_modulus: MessageModulus(4),
|
||||
carry_modulus: CarryModulus(4),
|
||||
max_noise_level: MaxNoiseLevel::new(5),
|
||||
log2_p_fail: -128.05,
|
||||
ciphertext_modulus: CiphertextModulus::new_native(),
|
||||
encryption_key_choice: EncryptionKeyChoice::Small,
|
||||
modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction,
|
||||
};
|
||||
|
||||
/// p-fail = 2^-128.729, algorithmic cost ~ 2030, 2-norm = 9
|
||||
pub const V1_4_PARAM_MESSAGE_3_CARRY_3_PBS_KS_GAUSSIAN_2M128: ClassicPBSParameters =
|
||||
crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_3_CARRY_3_PBS_KS_GAUSSIAN_2M128;
|
||||
/// p-fail = 2^-129.799, algorithmic cost ~ 13785, 2-norm = 17
|
||||
/// Average number of encryptions of 0s ~ 34, peak noise ~ Variance(5.47094548750703E-9)
|
||||
ClassicPBSParameters {
|
||||
lwe_dimension: LweDimension(1106),
|
||||
glwe_dimension: GlweDimension(1),
|
||||
polynomial_size: PolynomialSize(16384),
|
||||
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
|
||||
3.255365915886752e-08,
|
||||
)),
|
||||
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
|
||||
2.168404344971009e-19,
|
||||
)),
|
||||
pbs_base_log: DecompositionBaseLog(15),
|
||||
pbs_level: DecompositionLevelCount(2),
|
||||
ks_base_log: DecompositionBaseLog(3),
|
||||
ks_level: DecompositionLevelCount(7),
|
||||
message_modulus: MessageModulus(8),
|
||||
carry_modulus: CarryModulus(8),
|
||||
max_noise_level: MaxNoiseLevel::new(9),
|
||||
log2_p_fail: -128.729,
|
||||
ciphertext_modulus: CiphertextModulus::new_native(),
|
||||
encryption_key_choice: EncryptionKeyChoice::Small,
|
||||
modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction,
|
||||
};
|
||||
|
||||
/// p-fail = 2^-129.855, algorithmic cost ~ 13785, 2-norm = 17
|
||||
pub const V1_4_PARAM_MESSAGE_4_CARRY_4_PBS_KS_GAUSSIAN_2M128: ClassicPBSParameters =
|
||||
crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_4_CARRY_4_PBS_KS_GAUSSIAN_2M128;
|
||||
ClassicPBSParameters {
|
||||
lwe_dimension: LweDimension(1267),
|
||||
glwe_dimension: GlweDimension(1),
|
||||
polynomial_size: PolynomialSize(65536),
|
||||
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
|
||||
2.0240196581361536e-09,
|
||||
)),
|
||||
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
|
||||
2.168404344971009e-19,
|
||||
)),
|
||||
pbs_base_log: DecompositionBaseLog(11),
|
||||
pbs_level: DecompositionLevelCount(3),
|
||||
ks_base_log: DecompositionBaseLog(3),
|
||||
ks_level: DecompositionLevelCount(9),
|
||||
message_modulus: MessageModulus(16),
|
||||
carry_modulus: CarryModulus(16),
|
||||
max_noise_level: MaxNoiseLevel::new(17),
|
||||
log2_p_fail: -129.855,
|
||||
ciphertext_modulus: CiphertextModulus::new_native(),
|
||||
encryption_key_choice: EncryptionKeyChoice::Small,
|
||||
modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction,
|
||||
};
|
||||
|
||||
@@ -1,17 +1,89 @@
|
||||
use crate::shortint::parameters::ClassicPBSParameters;
|
||||
/// p-fail = 2^-144.044, algorithmic cost ~ 67, 2-norm = 3
|
||||
/// Average number of encryptions of 0s ~ 15, peak noise ~ Variance(0.0000201396668936698)
|
||||
use crate::shortint::parameters::{
|
||||
CarryModulus, CiphertextModulus, ClassicPBSParameters, DecompositionBaseLog,
|
||||
DecompositionLevelCount, DynamicDistribution, EncryptionKeyChoice, GlweDimension, LweDimension,
|
||||
MaxNoiseLevel, MessageModulus, ModulusSwitchType, PolynomialSize,
|
||||
};
|
||||
|
||||
/// p-fail = 2^-144.322, algorithmic cost ~ 67, 2-norm = 3
|
||||
pub const V1_4_PARAM_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M128: ClassicPBSParameters =
|
||||
crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M128;
|
||||
/// p-fail = 2^-129.358, algorithmic cost ~ 113, 2-norm = 5
|
||||
/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(0.00000140546154228955)
|
||||
ClassicPBSParameters {
|
||||
lwe_dimension: LweDimension(879),
|
||||
glwe_dimension: GlweDimension(4),
|
||||
polynomial_size: PolynomialSize(512),
|
||||
lwe_noise_distribution: DynamicDistribution::new_t_uniform(46),
|
||||
glwe_noise_distribution: DynamicDistribution::new_t_uniform(17),
|
||||
pbs_base_log: DecompositionBaseLog(23),
|
||||
pbs_level: DecompositionLevelCount(1),
|
||||
ks_base_log: DecompositionBaseLog(5),
|
||||
ks_level: DecompositionLevelCount(3),
|
||||
message_modulus: MessageModulus(2),
|
||||
carry_modulus: CarryModulus(2),
|
||||
max_noise_level: MaxNoiseLevel::new(3),
|
||||
log2_p_fail: -144.322,
|
||||
ciphertext_modulus: CiphertextModulus::new_native(),
|
||||
encryption_key_choice: EncryptionKeyChoice::Big,
|
||||
modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction,
|
||||
};
|
||||
|
||||
/// p-fail = 2^-129.581, algorithmic cost ~ 113, 2-norm = 5
|
||||
pub const V1_4_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128: ClassicPBSParameters =
|
||||
crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128;
|
||||
/// p-fail = 2^-128.771, algorithmic cost ~ 900, 2-norm = 9
|
||||
/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(8.82526029096167E-8)
|
||||
ClassicPBSParameters {
|
||||
lwe_dimension: LweDimension(918),
|
||||
glwe_dimension: GlweDimension(1),
|
||||
polynomial_size: PolynomialSize(2048),
|
||||
lwe_noise_distribution: DynamicDistribution::new_t_uniform(45),
|
||||
glwe_noise_distribution: DynamicDistribution::new_t_uniform(17),
|
||||
pbs_base_log: DecompositionBaseLog(23),
|
||||
pbs_level: DecompositionLevelCount(1),
|
||||
ks_base_log: DecompositionBaseLog(4),
|
||||
ks_level: DecompositionLevelCount(4),
|
||||
message_modulus: MessageModulus(4),
|
||||
carry_modulus: CarryModulus(4),
|
||||
max_noise_level: MaxNoiseLevel::new(5),
|
||||
log2_p_fail: -129.581,
|
||||
ciphertext_modulus: CiphertextModulus::new_native(),
|
||||
encryption_key_choice: EncryptionKeyChoice::Big,
|
||||
modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction,
|
||||
};
|
||||
|
||||
/// p-fail = 2^-128.992, algorithmic cost ~ 900, 2-norm = 9
|
||||
pub const V1_4_PARAM_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M128: ClassicPBSParameters =
|
||||
crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M128;
|
||||
/// p-fail = 2^-141.493, algorithmic cost ~ 11860, 2-norm = 17
|
||||
/// Average number of encryptions of 0s ~ 31, peak noise ~ Variance(5.00776611824111E-9)
|
||||
ClassicPBSParameters {
|
||||
lwe_dimension: LweDimension(1077),
|
||||
glwe_dimension: GlweDimension(1),
|
||||
polynomial_size: PolynomialSize(8192),
|
||||
lwe_noise_distribution: DynamicDistribution::new_t_uniform(41),
|
||||
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
|
||||
pbs_base_log: DecompositionBaseLog(15),
|
||||
pbs_level: DecompositionLevelCount(2),
|
||||
ks_base_log: DecompositionBaseLog(4),
|
||||
ks_level: DecompositionLevelCount(5),
|
||||
message_modulus: MessageModulus(8),
|
||||
carry_modulus: CarryModulus(8),
|
||||
max_noise_level: MaxNoiseLevel::new(9),
|
||||
log2_p_fail: -128.992,
|
||||
ciphertext_modulus: CiphertextModulus::new_native(),
|
||||
encryption_key_choice: EncryptionKeyChoice::Big,
|
||||
modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction,
|
||||
};
|
||||
|
||||
/// p-fail = 2^-141.559, algorithmic cost ~ 11860, 2-norm = 17
|
||||
pub const V1_4_PARAM_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M128: ClassicPBSParameters =
|
||||
crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M128;
|
||||
ClassicPBSParameters {
|
||||
lwe_dimension: LweDimension(1117),
|
||||
glwe_dimension: GlweDimension(1),
|
||||
polynomial_size: PolynomialSize(65536),
|
||||
lwe_noise_distribution: DynamicDistribution::new_t_uniform(40),
|
||||
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
|
||||
pbs_base_log: DecompositionBaseLog(11),
|
||||
pbs_level: DecompositionLevelCount(3),
|
||||
ks_base_log: DecompositionBaseLog(3),
|
||||
ks_level: DecompositionLevelCount(7),
|
||||
message_modulus: MessageModulus(16),
|
||||
carry_modulus: CarryModulus(16),
|
||||
max_noise_level: MaxNoiseLevel::new(17),
|
||||
log2_p_fail: -141.559,
|
||||
ciphertext_modulus: CiphertextModulus::new_native(),
|
||||
encryption_key_choice: EncryptionKeyChoice::Big,
|
||||
modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction,
|
||||
};
|
||||
|
||||
@@ -1,4 +1,8 @@
|
||||
use crate::shortint::parameters::CompactPublicKeyEncryptionParameters;
|
||||
use crate::shortint::parameters::{
|
||||
CarryModulus, CiphertextModulus, CompactCiphertextListExpansionKind,
|
||||
CompactPublicKeyEncryptionParameters, DynamicDistribution, LweDimension, MessageModulus,
|
||||
SupportedCompactPkeZkScheme,
|
||||
};
|
||||
|
||||
/// This parameter set should be used when doing zk proof of public key encryption
|
||||
pub const V1_4_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128:
|
||||
@@ -13,10 +17,50 @@ pub const V1_4_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1:
|
||||
CompactPublicKeyEncryptionParameters =
|
||||
V1_4_PARAM_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1;
|
||||
|
||||
pub const V1_4_PARAM_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV2: CompactPublicKeyEncryptionParameters = crate::shortint::parameters::v1_3::V1_3_PARAM_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV2;
|
||||
pub const V1_4_PARAM_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV2:
|
||||
CompactPublicKeyEncryptionParameters = CompactPublicKeyEncryptionParameters {
|
||||
encryption_lwe_dimension: LweDimension(2048),
|
||||
encryption_noise_distribution: DynamicDistribution::new_t_uniform(17),
|
||||
message_modulus: MessageModulus(4),
|
||||
carry_modulus: CarryModulus(4),
|
||||
ciphertext_modulus: CiphertextModulus::new_native(),
|
||||
expansion_kind: CompactCiphertextListExpansionKind::RequiresCasting,
|
||||
zk_scheme: SupportedCompactPkeZkScheme::V2,
|
||||
}
|
||||
.validate();
|
||||
|
||||
pub const V1_4_PARAM_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV2: CompactPublicKeyEncryptionParameters = crate::shortint::parameters::v1_3::V1_3_PARAM_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV2;
|
||||
pub const V1_4_PARAM_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV2:
|
||||
CompactPublicKeyEncryptionParameters = CompactPublicKeyEncryptionParameters {
|
||||
encryption_lwe_dimension: LweDimension(2048),
|
||||
encryption_noise_distribution: DynamicDistribution::new_t_uniform(17),
|
||||
message_modulus: MessageModulus(4),
|
||||
carry_modulus: CarryModulus(4),
|
||||
ciphertext_modulus: CiphertextModulus::new_native(),
|
||||
expansion_kind: CompactCiphertextListExpansionKind::RequiresCasting,
|
||||
zk_scheme: SupportedCompactPkeZkScheme::V2,
|
||||
}
|
||||
.validate();
|
||||
|
||||
pub const V1_4_PARAM_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1: CompactPublicKeyEncryptionParameters = crate::shortint::parameters::v1_3::V1_3_PARAM_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1;
|
||||
pub const V1_4_PARAM_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1:
|
||||
CompactPublicKeyEncryptionParameters = CompactPublicKeyEncryptionParameters {
|
||||
encryption_lwe_dimension: LweDimension(1024),
|
||||
encryption_noise_distribution: DynamicDistribution::new_t_uniform(43),
|
||||
message_modulus: MessageModulus(4),
|
||||
carry_modulus: CarryModulus(4),
|
||||
ciphertext_modulus: CiphertextModulus::new_native(),
|
||||
expansion_kind: CompactCiphertextListExpansionKind::RequiresCasting,
|
||||
zk_scheme: SupportedCompactPkeZkScheme::V1,
|
||||
}
|
||||
.validate();
|
||||
|
||||
pub const V1_4_PARAM_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1: CompactPublicKeyEncryptionParameters = crate::shortint::parameters::v1_3::V1_3_PARAM_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1;
|
||||
pub const V1_4_PARAM_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1:
|
||||
CompactPublicKeyEncryptionParameters = CompactPublicKeyEncryptionParameters {
|
||||
encryption_lwe_dimension: LweDimension(2048),
|
||||
encryption_noise_distribution: DynamicDistribution::new_t_uniform(17),
|
||||
message_modulus: MessageModulus(4),
|
||||
carry_modulus: CarryModulus(4),
|
||||
ciphertext_modulus: CiphertextModulus::new_native(),
|
||||
expansion_kind: CompactCiphertextListExpansionKind::RequiresCasting,
|
||||
zk_scheme: SupportedCompactPkeZkScheme::V1,
|
||||
}
|
||||
.validate();
|
||||
|
||||
@@ -1,13 +1,75 @@
|
||||
use crate::shortint::parameters::KeySwitch32PBSParameters;
|
||||
use crate::core_crypto::prelude::DynamicDistribution;
|
||||
use crate::shortint::parameters::{
|
||||
CiphertextModulus32, KeySwitch32PBSParameters, ModulusSwitchType, StandardDev,
|
||||
};
|
||||
use crate::shortint::prelude::{
|
||||
DecompositionBaseLog, DecompositionLevelCount, GlweDimension, LweDimension, PolynomialSize,
|
||||
};
|
||||
use crate::shortint::{CarryModulus, CiphertextModulus, MaxNoiseLevel, MessageModulus};
|
||||
|
||||
// Gaussian parameters set with pfail 2^-64
|
||||
pub const V1_4_HPU_PARAM_MESSAGE_2_CARRY_2_KS32_PBS_GAUSSIAN_2M64: KeySwitch32PBSParameters =
|
||||
crate::shortint::parameters::v1_3::V1_3_HPU_PARAM_MESSAGE_2_CARRY_2_KS32_PBS_GAUSSIAN_2M64;
|
||||
KeySwitch32PBSParameters {
|
||||
lwe_dimension: LweDimension(804),
|
||||
glwe_dimension: GlweDimension(1),
|
||||
polynomial_size: PolynomialSize(2048),
|
||||
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
|
||||
5.963599673924788e-6,
|
||||
)),
|
||||
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
|
||||
2.8452674713391114e-15,
|
||||
)),
|
||||
pbs_base_log: DecompositionBaseLog(23),
|
||||
pbs_level: DecompositionLevelCount(1),
|
||||
ks_base_log: DecompositionBaseLog(2),
|
||||
ks_level: DecompositionLevelCount(8),
|
||||
message_modulus: MessageModulus(4),
|
||||
carry_modulus: CarryModulus(4),
|
||||
max_noise_level: MaxNoiseLevel::new(5),
|
||||
log2_p_fail: -64.0,
|
||||
post_keyswitch_ciphertext_modulus: CiphertextModulus32::new(1 << 21),
|
||||
ciphertext_modulus: CiphertextModulus::new_native(),
|
||||
modulus_switch_noise_reduction_params: ModulusSwitchType::Standard,
|
||||
};
|
||||
|
||||
// TUniform parameters set with pfail 2^-64
|
||||
pub const V1_4_HPU_PARAM_MESSAGE_2_CARRY_2_KS32_PBS_TUNIFORM_2M64: KeySwitch32PBSParameters =
|
||||
crate::shortint::parameters::v1_3::V1_3_HPU_PARAM_MESSAGE_2_CARRY_2_KS32_PBS_TUNIFORM_2M64;
|
||||
KeySwitch32PBSParameters {
|
||||
lwe_dimension: LweDimension(839),
|
||||
glwe_dimension: GlweDimension(1),
|
||||
polynomial_size: PolynomialSize(2048),
|
||||
lwe_noise_distribution: DynamicDistribution::new_t_uniform(4),
|
||||
glwe_noise_distribution: DynamicDistribution::new_t_uniform(17),
|
||||
pbs_base_log: DecompositionBaseLog(23),
|
||||
pbs_level: DecompositionLevelCount(1),
|
||||
ks_base_log: DecompositionBaseLog(2),
|
||||
ks_level: DecompositionLevelCount(7),
|
||||
message_modulus: MessageModulus(4),
|
||||
carry_modulus: CarryModulus(4),
|
||||
max_noise_level: MaxNoiseLevel::new(5),
|
||||
log2_p_fail: -64.0,
|
||||
post_keyswitch_ciphertext_modulus: CiphertextModulus32::new(1 << 21),
|
||||
ciphertext_modulus: CiphertextModulus::new_native(),
|
||||
modulus_switch_noise_reduction_params: ModulusSwitchType::Standard,
|
||||
};
|
||||
|
||||
// TUniform parameters set with pfail 2^-128
|
||||
pub const V1_4_HPU_PARAM_MESSAGE_2_CARRY_2_KS32_PBS_TUNIFORM_2M128: KeySwitch32PBSParameters =
|
||||
crate::shortint::parameters::v1_3::V1_3_HPU_PARAM_MESSAGE_2_CARRY_2_KS32_PBS_TUNIFORM_2M128;
|
||||
KeySwitch32PBSParameters {
|
||||
lwe_dimension: LweDimension(879),
|
||||
glwe_dimension: GlweDimension(1),
|
||||
polynomial_size: PolynomialSize(2048),
|
||||
lwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
|
||||
glwe_noise_distribution: DynamicDistribution::new_t_uniform(17),
|
||||
pbs_base_log: DecompositionBaseLog(23),
|
||||
pbs_level: DecompositionLevelCount(1),
|
||||
ks_base_log: DecompositionBaseLog(2),
|
||||
ks_level: DecompositionLevelCount(8),
|
||||
message_modulus: MessageModulus(4),
|
||||
carry_modulus: CarryModulus(4),
|
||||
max_noise_level: MaxNoiseLevel::new(5),
|
||||
log2_p_fail: -128.0,
|
||||
post_keyswitch_ciphertext_modulus: CiphertextModulus32::new(1 << 21),
|
||||
ciphertext_modulus: CiphertextModulus::new_native(),
|
||||
modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction,
|
||||
};
|
||||
|
||||
@@ -33,16 +33,35 @@ pub const V1_4_PARAM_KEYSWITCH_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M
|
||||
|
||||
/// Parameters to keyswitch from input PKE 2_2 TUniform parameters to 2_2 KS_PBS compute parameters
|
||||
/// arriving under the big key, requires a KS + PBS to get to the big key
|
||||
pub const V1_4_PARAM_KEYSWITCH_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128: ShortintKeySwitchingParameters = crate::shortint::parameters::v1_3::V1_3_PARAM_KEYSWITCH_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128;
|
||||
pub const V1_4_PARAM_KEYSWITCH_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128:
|
||||
ShortintKeySwitchingParameters =
|
||||
V1_4_PARAM_KEYSWITCH_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV2;
|
||||
|
||||
pub const V1_4_PARAM_KEYSWITCH_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV2: ShortintKeySwitchingParameters = crate::shortint::parameters::v1_3::V1_3_PARAM_KEYSWITCH_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV2;
|
||||
pub const V1_4_PARAM_KEYSWITCH_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV2:
|
||||
ShortintKeySwitchingParameters = ShortintKeySwitchingParameters {
|
||||
ks_level: DecompositionLevelCount(1),
|
||||
ks_base_log: DecompositionBaseLog(24),
|
||||
destination_key: EncryptionKeyChoice::Big,
|
||||
};
|
||||
|
||||
pub const V1_4_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1: ShortintKeySwitchingParameters = crate::shortint::parameters::v1_3::V1_3_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1;
|
||||
pub const V1_4_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1:
|
||||
ShortintKeySwitchingParameters =
|
||||
V1_4_PARAM_KEYSWITCH_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1;
|
||||
|
||||
/// Parameters to keyswitch from input PKE 2_2 TUniform parameters to 2_2 KS_PBS compute parameters
|
||||
/// arriving under the small key, requires a PBS to get to the big key
|
||||
pub const V1_4_PARAM_KEYSWITCH_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1: ShortintKeySwitchingParameters = crate::shortint::parameters::v1_3::V1_3_PARAM_KEYSWITCH_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1;
|
||||
pub const V1_4_PARAM_KEYSWITCH_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1:
|
||||
ShortintKeySwitchingParameters = ShortintKeySwitchingParameters {
|
||||
ks_level: DecompositionLevelCount(4),
|
||||
ks_base_log: DecompositionBaseLog(4),
|
||||
destination_key: EncryptionKeyChoice::Small,
|
||||
};
|
||||
|
||||
/// Parameters to keyswitch from input PKE 2_2 TUniform parameters to 2_2 KS_PBS compute parameters
|
||||
/// arriving under the big key, requires a KS + PBS to get to the big key
|
||||
pub const V1_4_PARAM_KEYSWITCH_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1: ShortintKeySwitchingParameters = crate::shortint::parameters::v1_3::V1_3_PARAM_KEYSWITCH_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1;
|
||||
pub const V1_4_PARAM_KEYSWITCH_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1:
|
||||
ShortintKeySwitchingParameters = ShortintKeySwitchingParameters {
|
||||
ks_level: DecompositionLevelCount(1),
|
||||
ks_base_log: DecompositionBaseLog(24),
|
||||
destination_key: EncryptionKeyChoice::Big,
|
||||
};
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
use crate::shortint::parameters::{
|
||||
CarryModulus, CiphertextModulus, CiphertextModulus32, DecompositionBaseLog,
|
||||
DecompositionLevelCount, DynamicDistribution, GlweDimension, KeySwitch32PBSParameters,
|
||||
LweDimension, MaxNoiseLevel, MessageModulus, ModulusSwitchType, PolynomialSize,
|
||||
};
|
||||
|
||||
/// p-fail = 2^-129.581, algorithmic cost ~ 113, 2-norm = 5
|
||||
pub const V1_4_PARAM_MESSAGE_2_CARRY_2_KS32_PBS_TUNIFORM_2M128: KeySwitch32PBSParameters =
|
||||
KeySwitch32PBSParameters {
|
||||
lwe_dimension: LweDimension(918),
|
||||
glwe_dimension: GlweDimension(1),
|
||||
polynomial_size: PolynomialSize(2048),
|
||||
lwe_noise_distribution: DynamicDistribution::new_t_uniform(13),
|
||||
glwe_noise_distribution: DynamicDistribution::new_t_uniform(17),
|
||||
pbs_base_log: DecompositionBaseLog(23),
|
||||
pbs_level: DecompositionLevelCount(1),
|
||||
ks_base_log: DecompositionBaseLog(4),
|
||||
ks_level: DecompositionLevelCount(4),
|
||||
message_modulus: MessageModulus(4),
|
||||
carry_modulus: CarryModulus(4),
|
||||
max_noise_level: MaxNoiseLevel::new(5),
|
||||
log2_p_fail: -129.581,
|
||||
post_keyswitch_ciphertext_modulus: CiphertextModulus32::new_native(),
|
||||
ciphertext_modulus: CiphertextModulus::new_native(),
|
||||
modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction,
|
||||
};
|
||||
@@ -1,6 +0,0 @@
|
||||
use crate::shortint::parameters::KeySwitch32PBSParameters;
|
||||
|
||||
// p-fail = 2^-129.358, algorithmic cost ~ 113, 2-norm = 5
|
||||
// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(0.00000140546154228955)
|
||||
pub const V1_4_PARAM_MESSAGE_2_CARRY_2_KS32_PBS_TUNIFORM_2M128: KeySwitch32PBSParameters =
|
||||
crate::shortint::parameters::v1_3::V1_3_PARAM_MESSAGE_2_CARRY_2_KS32_PBS_TUNIFORM_2M128;
|
||||
@@ -1,15 +1,64 @@
|
||||
use crate::shortint::parameters::CompressionParameters;
|
||||
use crate::shortint::parameters::{
|
||||
CiphertextModulusLog, CompressionParameters, DecompositionBaseLog, DecompositionLevelCount,
|
||||
DynamicDistribution, GlweDimension, LweCiphertextCount, PolynomialSize, StandardDev,
|
||||
};
|
||||
|
||||
/// p-fail = 2^-129.053, algorithmic cost ~ 41458
|
||||
/// p-fail = 2^-129.275, algorithmic cost ~ 41458
|
||||
pub const V1_4_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128: CompressionParameters =
|
||||
crate::shortint::parameters::v1_3::V1_3_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128;
|
||||
CompressionParameters {
|
||||
br_level: DecompositionLevelCount(1),
|
||||
br_base_log: DecompositionBaseLog(23),
|
||||
packing_ks_level: DecompositionLevelCount(3),
|
||||
packing_ks_base_log: DecompositionBaseLog(4),
|
||||
packing_ks_polynomial_size: PolynomialSize(256),
|
||||
packing_ks_glwe_dimension: GlweDimension(4),
|
||||
lwe_per_glwe: LweCiphertextCount(256),
|
||||
storage_log_modulus: CiphertextModulusLog(12),
|
||||
packing_ks_key_noise_distribution: DynamicDistribution::new_t_uniform(43),
|
||||
};
|
||||
|
||||
/// p-fail = 2^-129.053, algorithmic cost ~ 41458
|
||||
pub const V1_4_COMP_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128: CompressionParameters = crate::shortint::parameters::v1_3::V1_3_COMP_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128;
|
||||
/// p-fail = 2^-129.275, algorithmic cost ~ 41458
|
||||
pub const V1_4_COMP_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128:
|
||||
CompressionParameters = CompressionParameters {
|
||||
br_level: DecompositionLevelCount(1),
|
||||
br_base_log: DecompositionBaseLog(23),
|
||||
packing_ks_level: DecompositionLevelCount(3),
|
||||
packing_ks_base_log: DecompositionBaseLog(4),
|
||||
packing_ks_polynomial_size: PolynomialSize(256),
|
||||
packing_ks_glwe_dimension: GlweDimension(4),
|
||||
lwe_per_glwe: LweCiphertextCount(256),
|
||||
storage_log_modulus: CiphertextModulusLog(12),
|
||||
packing_ks_key_noise_distribution: DynamicDistribution::new_t_uniform(43),
|
||||
};
|
||||
|
||||
/// p-fail = 2^-128.0, algorithmic cost ~ 42199
|
||||
/// p-fail = 2^-128.218, algorithmic cost ~ 42199
|
||||
pub const V1_4_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128: CompressionParameters =
|
||||
crate::shortint::parameters::v1_3::V1_3_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128;
|
||||
CompressionParameters {
|
||||
br_level: DecompositionLevelCount(1),
|
||||
br_base_log: DecompositionBaseLog(23),
|
||||
packing_ks_level: DecompositionLevelCount(2),
|
||||
packing_ks_base_log: DecompositionBaseLog(6),
|
||||
packing_ks_polynomial_size: PolynomialSize(256),
|
||||
packing_ks_glwe_dimension: GlweDimension(4),
|
||||
lwe_per_glwe: LweCiphertextCount(256),
|
||||
storage_log_modulus: CiphertextModulusLog(12),
|
||||
packing_ks_key_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(
|
||||
StandardDev(1.339775301998614e-07),
|
||||
),
|
||||
};
|
||||
|
||||
/// p-fail = 2^-128.0, algorithmic cost ~ 42199
|
||||
pub const V1_4_COMP_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128: CompressionParameters = crate::shortint::parameters::v1_3::V1_3_COMP_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128;
|
||||
/// p-fail = 2^-128.218, algorithmic cost ~ 42199
|
||||
pub const V1_4_COMP_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128:
|
||||
CompressionParameters = CompressionParameters {
|
||||
br_level: DecompositionLevelCount(1),
|
||||
br_base_log: DecompositionBaseLog(23),
|
||||
packing_ks_level: DecompositionLevelCount(2),
|
||||
packing_ks_base_log: DecompositionBaseLog(6),
|
||||
packing_ks_polynomial_size: PolynomialSize(256),
|
||||
packing_ks_glwe_dimension: GlweDimension(4),
|
||||
lwe_per_glwe: LweCiphertextCount(256),
|
||||
storage_log_modulus: CiphertextModulusLog(12),
|
||||
packing_ks_key_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
|
||||
1.339775301998614e-07,
|
||||
)),
|
||||
};
|
||||
|
||||
@@ -1,15 +1,64 @@
|
||||
use crate::shortint::parameters::CompressionParameters;
|
||||
use crate::shortint::parameters::{
|
||||
CiphertextModulusLog, CompressionParameters, DecompositionBaseLog, DecompositionLevelCount,
|
||||
DynamicDistribution, GlweDimension, LweCiphertextCount, PolynomialSize, StandardDev,
|
||||
};
|
||||
|
||||
/// p-fail = 2^-72.052, algorithmic cost ~ 42700
|
||||
pub const V1_4_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64: CompressionParameters =
|
||||
crate::shortint::parameters::v1_3::V1_3_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64;
|
||||
CompressionParameters {
|
||||
br_level: DecompositionLevelCount(1),
|
||||
br_base_log: DecompositionBaseLog(23),
|
||||
packing_ks_level: DecompositionLevelCount(2),
|
||||
packing_ks_base_log: DecompositionBaseLog(6),
|
||||
packing_ks_polynomial_size: PolynomialSize(256),
|
||||
packing_ks_glwe_dimension: GlweDimension(4),
|
||||
lwe_per_glwe: LweCiphertextCount(256),
|
||||
storage_log_modulus: CiphertextModulusLog(12),
|
||||
packing_ks_key_noise_distribution: DynamicDistribution::new_t_uniform(43),
|
||||
};
|
||||
|
||||
/// p-fail = 2^-72.052, algorithmic cost ~ 42700
|
||||
pub const V1_4_COMP_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64: CompressionParameters = crate::shortint::parameters::v1_3::V1_3_COMP_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64;
|
||||
pub const V1_4_COMP_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64:
|
||||
CompressionParameters = CompressionParameters {
|
||||
br_level: DecompositionLevelCount(1),
|
||||
br_base_log: DecompositionBaseLog(23),
|
||||
packing_ks_level: DecompositionLevelCount(2),
|
||||
packing_ks_base_log: DecompositionBaseLog(6),
|
||||
packing_ks_polynomial_size: PolynomialSize(256),
|
||||
packing_ks_glwe_dimension: GlweDimension(4),
|
||||
lwe_per_glwe: LweCiphertextCount(256),
|
||||
storage_log_modulus: CiphertextModulusLog(12),
|
||||
packing_ks_key_noise_distribution: DynamicDistribution::new_t_uniform(43),
|
||||
};
|
||||
|
||||
/// p-fail = 2^-64.174, algorithmic cost ~ 58234
|
||||
pub const V1_4_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64: CompressionParameters =
|
||||
crate::shortint::parameters::v1_3::V1_3_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64;
|
||||
CompressionParameters {
|
||||
br_level: DecompositionLevelCount(2),
|
||||
br_base_log: DecompositionBaseLog(15),
|
||||
packing_ks_level: DecompositionLevelCount(2),
|
||||
packing_ks_base_log: DecompositionBaseLog(6),
|
||||
packing_ks_polynomial_size: PolynomialSize(256),
|
||||
packing_ks_glwe_dimension: GlweDimension(4),
|
||||
lwe_per_glwe: LweCiphertextCount(256),
|
||||
storage_log_modulus: CiphertextModulusLog(12),
|
||||
packing_ks_key_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(
|
||||
StandardDev(1.339775301998614e-07),
|
||||
),
|
||||
};
|
||||
|
||||
/// p-fail = 2^-64.174, algorithmic cost ~ 58234
|
||||
pub const V1_4_COMP_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64: CompressionParameters = crate::shortint::parameters::v1_3::V1_3_COMP_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64;
|
||||
pub const V1_4_COMP_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64:
|
||||
CompressionParameters = CompressionParameters {
|
||||
br_level: DecompositionLevelCount(1),
|
||||
br_base_log: DecompositionBaseLog(23),
|
||||
packing_ks_level: DecompositionLevelCount(2),
|
||||
packing_ks_base_log: DecompositionBaseLog(6),
|
||||
packing_ks_polynomial_size: PolynomialSize(256),
|
||||
packing_ks_glwe_dimension: GlweDimension(4),
|
||||
lwe_per_glwe: LweCiphertextCount(256),
|
||||
storage_log_modulus: CiphertextModulusLog(12),
|
||||
packing_ks_key_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
|
||||
1.339775301998614e-07,
|
||||
)),
|
||||
};
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
//! FHE Parameters as they were defined in TFHE-rs 1.3.
|
||||
//! FHE Parameters as they were defined in TFHE-rs 1.4.
|
||||
//!
|
||||
//! These parameters may be used for backward compatibility.
|
||||
|
||||
@@ -10,7 +10,6 @@ pub mod list_compression;
|
||||
pub mod meta;
|
||||
pub mod multi_bit;
|
||||
pub mod noise_squashing;
|
||||
|
||||
pub use classic::compact_pk::gaussian::p_fail_2_minus_128::ks_pbs::*;
|
||||
pub use classic::compact_pk::gaussian::p_fail_2_minus_128::pbs_ks::*;
|
||||
pub use classic::compact_pk::gaussian::p_fail_2_minus_64::ks_pbs::*;
|
||||
@@ -43,9 +42,6 @@ pub use multi_bit::tuniform::p_fail_2_minus_64::ks_pbs::*;
|
||||
pub use multi_bit::tuniform::p_fail_2_minus_64::ks_pbs_gpu::*;
|
||||
pub use noise_squashing::p_fail_2_minus_128::*;
|
||||
|
||||
#[cfg(feature = "hpu")]
|
||||
pub use hpu::*;
|
||||
|
||||
use crate::shortint::parameters::{
|
||||
ClassicPBSParameters, CompactPublicKeyEncryptionParameters, CompressionParameters,
|
||||
KeySwitch32PBSParameters, MetaParameters, MultiBitPBSParameters,
|
||||
@@ -1580,6 +1576,12 @@ pub const VEC_ALL_MULTI_BIT_PBS_PARAMETERS: [(&MultiBitPBSParameters, &str); 240
|
||||
),
|
||||
];
|
||||
|
||||
/// All [`KeySwitch32PBSParameters`] in this module.
|
||||
pub const VEC_ALL_KEY_SWITCH32_PBS_PARAMETERS: [(&KeySwitch32PBSParameters, &str); 1] = [(
|
||||
&V1_4_PARAM_MESSAGE_2_CARRY_2_KS32_PBS_TUNIFORM_2M128,
|
||||
"V1_4_PARAM_MESSAGE_2_CARRY_2_KS32_PBS_TUNIFORM_2M128",
|
||||
)];
|
||||
|
||||
/// All [`CompressionParameters`] in this module.
|
||||
pub const VEC_ALL_COMPRESSION_PARAMETERS: [(&CompressionParameters, &str); 8] = [
|
||||
(
|
||||
@@ -1725,6 +1727,8 @@ pub const VEC_ALL_KS32_PARAMETERS: [(&KeySwitch32PBSParameters, &str); 1] = [(
|
||||
|
||||
#[cfg(feature = "hpu")]
|
||||
pub mod hpu;
|
||||
#[cfg(feature = "hpu")]
|
||||
pub use hpu::*;
|
||||
|
||||
#[cfg(feature = "hpu")]
|
||||
pub const VEC_ALL_HPU_PARAMETERS: [(&KeySwitch32PBSParameters, &str); 3] = [
|
||||
|
||||
@@ -1,13 +1,35 @@
|
||||
use crate::shortint::parameters::noise_squashing::NoiseSquashingClassicParameters;
|
||||
use crate::shortint::parameters::{
|
||||
CarryModulus, CoreCiphertextModulus, DecompositionBaseLog, DecompositionLevelCount,
|
||||
DynamicDistribution, GlweDimension, MessageModulus, ModulusSwitchType,
|
||||
DynamicDistribution, GlweDimension, LweCiphertextCount, MessageModulus, ModulusSwitchType,
|
||||
NoiseSquashingCompressionParameters, NoiseSquashingParameters, PolynomialSize,
|
||||
};
|
||||
|
||||
pub const V1_4_NOISE_SQUASHING_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128: NoiseSquashingParameters = crate::shortint::parameters::v1_3::V1_3_NOISE_SQUASHING_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128;
|
||||
pub const V1_4_NOISE_SQUASHING_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128:
|
||||
NoiseSquashingParameters = NoiseSquashingParameters::Classic(NoiseSquashingClassicParameters {
|
||||
glwe_dimension: GlweDimension(2),
|
||||
polynomial_size: PolynomialSize(2048),
|
||||
glwe_noise_distribution: DynamicDistribution::new_t_uniform(30),
|
||||
decomp_base_log: DecompositionBaseLog(24),
|
||||
decomp_level_count: DecompositionLevelCount(3),
|
||||
modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction,
|
||||
message_modulus: MessageModulus(4),
|
||||
carry_modulus: CarryModulus(4),
|
||||
ciphertext_modulus: CoreCiphertextModulus::<u128>::new_native(),
|
||||
});
|
||||
|
||||
pub const V1_4_NOISE_SQUASHING_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128: NoiseSquashingCompressionParameters = crate::shortint::parameters::v1_3::V1_3_NOISE_SQUASHING_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128;
|
||||
pub const V1_4_NOISE_SQUASHING_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128:
|
||||
NoiseSquashingCompressionParameters = NoiseSquashingCompressionParameters {
|
||||
packing_ks_level: DecompositionLevelCount(1),
|
||||
packing_ks_base_log: DecompositionBaseLog(61),
|
||||
packing_ks_polynomial_size: PolynomialSize(1024),
|
||||
packing_ks_glwe_dimension: GlweDimension(6),
|
||||
lwe_per_glwe: LweCiphertextCount(128),
|
||||
packing_ks_key_noise_distribution: DynamicDistribution::new_t_uniform(3),
|
||||
ciphertext_modulus: CoreCiphertextModulus::<u128>::new_native(),
|
||||
message_modulus: MessageModulus(4),
|
||||
carry_modulus: CarryModulus(4),
|
||||
};
|
||||
|
||||
pub const V1_4_NOISE_SQUASHING_PARAM_GPU_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128:
|
||||
NoiseSquashingParameters = NoiseSquashingParameters::Classic(NoiseSquashingClassicParameters {
|
||||
|
||||
@@ -7,7 +7,7 @@ pub use super::ciphertext::{Ciphertext, CompressedCiphertext, PBSOrder};
|
||||
pub use super::client_key::ClientKey;
|
||||
pub use super::gen_keys;
|
||||
pub use super::key_switching_key::KeySwitchingKey;
|
||||
pub use super::parameters::current_params::V1_4_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS_GAUSSIAN_2M128;
|
||||
pub use super::parameters::current_params::key_switching::p_fail_2_minus_128::ks_pbs::V1_4_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS_GAUSSIAN_2M128;
|
||||
pub use super::parameters::{
|
||||
CarryModulus, CiphertextModulus, ClassicPBSParameters, DecompositionBaseLog,
|
||||
DecompositionLevelCount, EncryptionKeyChoice, GlweDimension, LweDimension, MaxNoiseLevel,
|
||||
|
||||
Reference in New Issue
Block a user