feat(gpu): add 1_1 classical pbs params for specialized version

This commit is contained in:
Guillermo Oyarzun
2025-10-27 17:52:07 +01:00
committed by Agnès Leroy
parent 9d31e994aa
commit 0f0438c8cf
5 changed files with 46 additions and 2 deletions

View File

@@ -8,9 +8,14 @@ pub mod shortint_params_aliases {
MultiBitPBSParameters, NoiseSquashingCompressionParameters, NoiseSquashingParameters,
ShortintKeySwitchingParameters,
};
// KS PBS Gaussian
#[cfg(not(feature = "gpu"))]
pub const BENCH_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
V1_5_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128;
#[cfg(feature = "gpu")]
pub const BENCH_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
V1_5_PARAM_GPU_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128;
pub const BENCH_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
V1_5_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128;
pub const BENCH_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
@@ -38,7 +43,7 @@ pub mod shortint_params_aliases {
pub const BENCH_PARAM_MESSAGE_2_CARRY_2_KS_PBS: ClassicPBSParameters =
V1_5_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128;
pub const BENCH_ALL_CLASSIC_PBS_PARAMETERS: [(&ClassicPBSParameters, &str); 140] =
pub const BENCH_ALL_CLASSIC_PBS_PARAMETERS: [(&ClassicPBSParameters, &str); 141] =
VEC_ALL_CLASSIC_PBS_PARAMETERS;
// MultiBit

View File

@@ -48,6 +48,8 @@ named_params_impl!( ShortintParameterSet =>
V1_5_PARAM_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M128,
V1_5_PARAM_MESSAGE_7_CARRY_1_KS_PBS_GAUSSIAN_2M128,
V1_5_PARAM_MESSAGE_8_CARRY_0_KS_PBS_GAUSSIAN_2M128,
//For the specialized classical pbs on GPU
V1_5_PARAM_GPU_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128,
// Small
V1_5_PARAM_MESSAGE_1_CARRY_1_PBS_KS_GAUSSIAN_2M128,
V1_5_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M128,

View File

@@ -0,0 +1,31 @@
use crate::shortint::parameters::{
CarryModulus, CiphertextModulus, ClassicPBSParameters, DecompositionBaseLog,
DecompositionLevelCount, DynamicDistribution, EncryptionKeyChoice, GlweDimension, LweDimension,
MaxNoiseLevel, MessageModulus, PolynomialSize,
};
use crate::shortint::prelude::{ModulusSwitchType, StandardDev};
/// p-fail = 2^-131.084, algorithmic cost ~ 90.5, 2-norm = 3
pub const V1_5_PARAM_GPU_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(737),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(2048),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
1.894717698310226e-05,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.845267479601874e-15,
)),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(4),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(2),
max_noise_level: MaxNoiseLevel::new(3),
log2_p_fail: -128.186,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction,
};

View File

@@ -1,2 +1,3 @@
pub mod ks_pbs;
pub mod ks_pbs_gpu;
pub mod pbs_ks;

View File

@@ -15,6 +15,7 @@ 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::*;
pub use classic::compact_pk::gaussian::p_fail_2_minus_64::pbs_ks::*;
pub use classic::gaussian::p_fail_2_minus_128::ks_pbs::*;
pub use classic::gaussian::p_fail_2_minus_128::ks_pbs_gpu::*;
pub use classic::gaussian::p_fail_2_minus_128::pbs_ks::*;
pub use classic::gaussian::p_fail_2_minus_40::ks_pbs::*;
pub use classic::gaussian::p_fail_2_minus_64::ks_pbs::*;
@@ -49,7 +50,7 @@ use crate::shortint::parameters::{
};
/// All [`ClassicPBSParameters`] in this module.
pub const VEC_ALL_CLASSIC_PBS_PARAMETERS: [(&ClassicPBSParameters, &str); 140] = [
pub const VEC_ALL_CLASSIC_PBS_PARAMETERS: [(&ClassicPBSParameters, &str); 141] = [
(
&V1_5_PARAM_MESSAGE_1_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64,
"V1_5_PARAM_MESSAGE_1_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64",
@@ -610,6 +611,10 @@ pub const VEC_ALL_CLASSIC_PBS_PARAMETERS: [(&ClassicPBSParameters, &str); 140] =
&V1_5_PARAM_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M128,
"V1_5_PARAM_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M128",
),
(
&V1_5_PARAM_GPU_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128,
"V1_5_PARAM_GPU_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128",
),
];
/// All [`MultiBitPBSParameters`] in this module.