renamed vmp API closer to spqlios

This commit is contained in:
Pro7ech
2025-08-25 11:58:51 +02:00
parent 1551f7a6f0
commit a1b865709d
38 changed files with 431 additions and 393 deletions

View File

@@ -1,12 +1,12 @@
use poulpy_hal::{ use poulpy_hal::{
api::{TakeSlice, VmpApplyTmpBytes, VmpPrepareTmpBytes}, api::{TakeSlice, VmpApplyDftToDftTmpBytes, VmpPrepareTmpBytes},
layouts::{ layouts::{
Backend, MatZnx, MatZnxToRef, Module, Scratch, VecZnxDft, VecZnxDftToMut, VecZnxDftToRef, VmpPMat, VmpPMatOwned, Backend, MatZnx, MatZnxToRef, Module, Scratch, VecZnxDft, VecZnxDftToMut, VecZnxDftToRef, VmpPMat, VmpPMatOwned,
VmpPMatToMut, VmpPMatToRef, ZnxInfos, ZnxView, ZnxViewMut, VmpPMatToMut, VmpPMatToRef, ZnxInfos, ZnxView, ZnxViewMut,
}, },
oep::{ oep::{
VmpApplyAddImpl, VmpApplyAddTmpBytesImpl, VmpApplyImpl, VmpApplyTmpBytesImpl, VmpPMatAllocBytesImpl, VmpPMatAllocImpl, VmpApplyDftToDftAddImpl, VmpApplyDftToDftAddTmpBytesImpl, VmpApplyDftToDftImpl, VmpApplyDftToDftTmpBytesImpl,
VmpPMatFromBytesImpl, VmpPMatPrepareImpl, VmpPrepareTmpBytesImpl, VmpPMatAllocBytesImpl, VmpPMatAllocImpl, VmpPMatFromBytesImpl, VmpPMatPrepareImpl, VmpPrepareTmpBytesImpl,
}, },
}; };
@@ -109,8 +109,8 @@ unsafe impl VmpPMatPrepareImpl<FFT64> for FFT64 {
} }
} }
unsafe impl VmpApplyTmpBytesImpl<FFT64> for FFT64 { unsafe impl VmpApplyDftToDftTmpBytesImpl<FFT64> for FFT64 {
fn vmp_apply_tmp_bytes_impl( fn vmp_apply_dft_to_dft_tmp_bytes_impl(
module: &Module<FFT64>, module: &Module<FFT64>,
res_size: usize, res_size: usize,
a_size: usize, a_size: usize,
@@ -131,8 +131,8 @@ unsafe impl VmpApplyTmpBytesImpl<FFT64> for FFT64 {
} }
} }
unsafe impl VmpApplyImpl<FFT64> for FFT64 { unsafe impl VmpApplyDftToDftImpl<FFT64> for FFT64 {
fn vmp_apply_impl<R, A, C>(module: &Module<FFT64>, res: &mut R, a: &A, b: &C, scratch: &mut Scratch<FFT64>) fn vmp_apply_dft_to_dft_impl<R, A, C>(module: &Module<FFT64>, res: &mut R, a: &A, b: &C, scratch: &mut Scratch<FFT64>)
where where
R: VecZnxDftToMut<FFT64>, R: VecZnxDftToMut<FFT64>,
A: VecZnxDftToRef<FFT64>, A: VecZnxDftToRef<FFT64>,
@@ -162,7 +162,7 @@ unsafe impl VmpApplyImpl<FFT64> for FFT64 {
); );
} }
let (tmp_bytes, _) = scratch.take_slice(module.vmp_apply_tmp_bytes( let (tmp_bytes, _) = scratch.take_slice(module.vmp_apply_dft_to_dft_tmp_bytes(
res.size(), res.size(),
a.size(), a.size(),
b.rows(), b.rows(),
@@ -186,8 +186,8 @@ unsafe impl VmpApplyImpl<FFT64> for FFT64 {
} }
} }
unsafe impl VmpApplyAddTmpBytesImpl<FFT64> for FFT64 { unsafe impl VmpApplyDftToDftAddTmpBytesImpl<FFT64> for FFT64 {
fn vmp_apply_add_tmp_bytes_impl( fn vmp_apply_dft_to_dft_add_tmp_bytes_impl(
module: &Module<FFT64>, module: &Module<FFT64>,
res_size: usize, res_size: usize,
a_size: usize, a_size: usize,
@@ -208,9 +208,15 @@ unsafe impl VmpApplyAddTmpBytesImpl<FFT64> for FFT64 {
} }
} }
unsafe impl VmpApplyAddImpl<FFT64> for FFT64 { unsafe impl VmpApplyDftToDftAddImpl<FFT64> for FFT64 {
fn vmp_apply_add_impl<R, A, C>(module: &Module<FFT64>, res: &mut R, a: &A, b: &C, scale: usize, scratch: &mut Scratch<FFT64>) fn vmp_apply_dft_to_dft_add_impl<R, A, C>(
where module: &Module<FFT64>,
res: &mut R,
a: &A,
b: &C,
scale: usize,
scratch: &mut Scratch<FFT64>,
) where
R: VecZnxDftToMut<FFT64>, R: VecZnxDftToMut<FFT64>,
A: VecZnxDftToRef<FFT64>, A: VecZnxDftToRef<FFT64>,
C: VmpPMatToRef<FFT64>, C: VmpPMatToRef<FFT64>,
@@ -239,7 +245,7 @@ unsafe impl VmpApplyAddImpl<FFT64> for FFT64 {
); );
} }
let (tmp_bytes, _) = scratch.take_slice(module.vmp_apply_tmp_bytes( let (tmp_bytes, _) = scratch.take_slice(module.vmp_apply_dft_to_dft_tmp_bytes(
res.size(), res.size(),
a.size(), a.size(),
b.rows(), b.rows(),

View File

@@ -1,8 +1,8 @@
use poulpy_hal::{ use poulpy_hal::{
api::{ api::{
DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxAutomorphism, VecZnxAutomorphismInplace, DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxAutomorphism, VecZnxAutomorphismInplace,
VecZnxBigAddSmallInplace, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, VmpApply, VmpApplyAdd, VecZnxBigAddSmallInplace, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, VmpApplyDftToDft,
VmpApplyTmpBytes, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes,
}, },
layouts::{Backend, DataMut, DataRef, Module, Scratch, ZnxZero}, layouts::{Backend, DataMut, DataRef, Module, Scratch, ZnxZero},
}; };
@@ -21,7 +21,7 @@ impl GGLWEAutomorphismKey<Vec<u8>> {
rank: usize, rank: usize,
) -> usize ) -> usize
where where
Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxBigNormalizeTmpBytes, Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes,
{ {
GLWECiphertext::keyswitch_scratch_space(module, basek, k_out, k_in, k_ksk, digits, rank, rank) GLWECiphertext::keyswitch_scratch_space(module, basek, k_out, k_in, k_ksk, digits, rank, rank)
} }
@@ -35,7 +35,7 @@ impl GGLWEAutomorphismKey<Vec<u8>> {
rank: usize, rank: usize,
) -> usize ) -> usize
where where
Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxBigNormalizeTmpBytes, Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes,
{ {
GGLWEAutomorphismKey::automorphism_scratch_space(module, basek, k_out, k_out, k_ksk, digits, rank) GGLWEAutomorphismKey::automorphism_scratch_space(module, basek, k_out, k_out, k_ksk, digits, rank)
} }
@@ -50,10 +50,10 @@ impl<DataSelf: DataMut> GGLWEAutomorphismKey<DataSelf> {
scratch: &mut Scratch<B>, scratch: &mut Scratch<B>,
) where ) where
Module<B>: VecZnxDftAllocBytes Module<B>: VecZnxDftAllocBytes
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VecZnxBigNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ DFT<B> + DFT<B>
+ IDFTConsume<B> + IDFTConsume<B>
+ VecZnxBigAddSmallInplace<B> + VecZnxBigAddSmallInplace<B>
@@ -134,10 +134,10 @@ impl<DataSelf: DataMut> GGLWEAutomorphismKey<DataSelf> {
scratch: &mut Scratch<B>, scratch: &mut Scratch<B>,
) where ) where
Module<B>: VecZnxDftAllocBytes Module<B>: VecZnxDftAllocBytes
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VecZnxBigNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ DFT<B> + DFT<B>
+ IDFTConsume<B> + IDFTConsume<B>
+ VecZnxBigAddSmallInplace<B> + VecZnxBigAddSmallInplace<B>

View File

@@ -2,7 +2,8 @@ use poulpy_hal::{
api::{ api::{
DFT, IDFTConsume, IDFTTmpA, ScratchAvailable, TakeVecZnxBig, TakeVecZnxDft, VecZnxAutomorphismInplace, DFT, IDFTConsume, IDFTTmpA, ScratchAvailable, TakeVecZnxBig, TakeVecZnxDft, VecZnxAutomorphismInplace,
VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxDftAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxDftAddInplace,
VecZnxDftAllocBytes, VecZnxDftCopy, VecZnxNormalizeTmpBytes, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VecZnxDftAllocBytes, VecZnxDftCopy, VecZnxNormalizeTmpBytes, VmpApplyDftToDft, VmpApplyDftToDftAdd,
VmpApplyDftToDftTmpBytes,
}, },
layouts::{Backend, DataMut, DataRef, Module, Scratch}, layouts::{Backend, DataMut, DataRef, Module, Scratch},
}; };
@@ -26,8 +27,11 @@ impl GGSWCiphertext<Vec<u8>> {
rank: usize, rank: usize,
) -> usize ) -> usize
where where
Module<B>: Module<B>: VecZnxDftAllocBytes
VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxBigAllocBytes + VecZnxNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes, + VmpApplyDftToDftTmpBytes
+ VecZnxBigAllocBytes
+ VecZnxNormalizeTmpBytes
+ VecZnxBigNormalizeTmpBytes,
{ {
let out_size: usize = k_out.div_ceil(basek); let out_size: usize = k_out.div_ceil(basek);
let ci_dft: usize = module.vec_znx_dft_alloc_bytes(rank + 1, out_size); let ci_dft: usize = module.vec_znx_dft_alloc_bytes(rank + 1, out_size);
@@ -49,8 +53,11 @@ impl GGSWCiphertext<Vec<u8>> {
rank: usize, rank: usize,
) -> usize ) -> usize
where where
Module<B>: Module<B>: VecZnxDftAllocBytes
VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxBigAllocBytes + VecZnxNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes, + VmpApplyDftToDftTmpBytes
+ VecZnxBigAllocBytes
+ VecZnxNormalizeTmpBytes
+ VecZnxBigNormalizeTmpBytes,
{ {
GGSWCiphertext::automorphism_scratch_space( GGSWCiphertext::automorphism_scratch_space(
module, basek, k_out, k_out, k_ksk, digits_ksk, k_tsk, digits_tsk, rank, module, basek, k_out, k_out, k_ksk, digits_ksk, k_tsk, digits_tsk, rank,
@@ -68,10 +75,10 @@ impl<DataSelf: DataMut> GGSWCiphertext<DataSelf> {
scratch: &mut Scratch<B>, scratch: &mut Scratch<B>,
) where ) where
Module<B>: VecZnxDftAllocBytes Module<B>: VecZnxDftAllocBytes
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VecZnxBigNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ DFT<B> + DFT<B>
+ IDFTConsume<B> + IDFTConsume<B>
+ VecZnxBigAddSmallInplace<B> + VecZnxBigAddSmallInplace<B>
@@ -138,10 +145,10 @@ impl<DataSelf: DataMut> GGSWCiphertext<DataSelf> {
scratch: &mut Scratch<B>, scratch: &mut Scratch<B>,
) where ) where
Module<B>: VecZnxDftAllocBytes Module<B>: VecZnxDftAllocBytes
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VecZnxBigNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ DFT<B> + DFT<B>
+ IDFTConsume<B> + IDFTConsume<B>
+ VecZnxBigAddSmallInplace<B> + VecZnxBigAddSmallInplace<B>
@@ -168,10 +175,10 @@ impl<DataSelf: DataMut> GGSWCiphertext<DataSelf> {
scratch: &mut Scratch<B>, scratch: &mut Scratch<B>,
) where ) where
Module<B>: VecZnxDftAllocBytes Module<B>: VecZnxDftAllocBytes
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VecZnxBigNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ DFT<B> + DFT<B>
+ IDFTConsume<B> + IDFTConsume<B>
+ VecZnxBigAddSmallInplace<B> + VecZnxBigAddSmallInplace<B>

View File

@@ -2,7 +2,7 @@ use poulpy_hal::{
api::{ api::{
DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxAutomorphismInplace, VecZnxBigAddSmallInplace, DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxAutomorphismInplace, VecZnxBigAddSmallInplace,
VecZnxBigAutomorphismInplace, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxBigSubSmallAInplace, VecZnxBigAutomorphismInplace, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxBigSubSmallAInplace,
VecZnxBigSubSmallBInplace, VecZnxDftAllocBytes, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VecZnxBigSubSmallBInplace, VecZnxDftAllocBytes, VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes,
}, },
layouts::{Backend, DataMut, DataRef, Module, Scratch, VecZnxBig}, layouts::{Backend, DataMut, DataRef, Module, Scratch, VecZnxBig},
}; };
@@ -21,7 +21,7 @@ impl GLWECiphertext<Vec<u8>> {
rank: usize, rank: usize,
) -> usize ) -> usize
where where
Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxBigNormalizeTmpBytes, Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes,
{ {
Self::keyswitch_scratch_space(module, basek, k_out, k_in, k_ksk, digits, rank, rank) Self::keyswitch_scratch_space(module, basek, k_out, k_in, k_ksk, digits, rank, rank)
} }
@@ -35,7 +35,7 @@ impl GLWECiphertext<Vec<u8>> {
rank: usize, rank: usize,
) -> usize ) -> usize
where where
Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxBigNormalizeTmpBytes, Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes,
{ {
Self::keyswitch_inplace_scratch_space(module, basek, k_out, k_ksk, digits, rank) Self::keyswitch_inplace_scratch_space(module, basek, k_out, k_ksk, digits, rank)
} }
@@ -50,10 +50,10 @@ impl<DataSelf: DataMut> GLWECiphertext<DataSelf> {
scratch: &mut Scratch<B>, scratch: &mut Scratch<B>,
) where ) where
Module<B>: VecZnxDftAllocBytes Module<B>: VecZnxDftAllocBytes
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VecZnxBigNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ DFT<B> + DFT<B>
+ IDFTConsume<B> + IDFTConsume<B>
+ VecZnxBigAddSmallInplace<B> + VecZnxBigAddSmallInplace<B>
@@ -74,10 +74,10 @@ impl<DataSelf: DataMut> GLWECiphertext<DataSelf> {
scratch: &mut Scratch<B>, scratch: &mut Scratch<B>,
) where ) where
Module<B>: VecZnxDftAllocBytes Module<B>: VecZnxDftAllocBytes
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VecZnxBigNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ DFT<B> + DFT<B>
+ IDFTConsume<B> + IDFTConsume<B>
+ VecZnxBigAddSmallInplace<B> + VecZnxBigAddSmallInplace<B>
@@ -99,10 +99,10 @@ impl<DataSelf: DataMut> GLWECiphertext<DataSelf> {
scratch: &mut Scratch<B>, scratch: &mut Scratch<B>,
) where ) where
Module<B>: VecZnxDftAllocBytes Module<B>: VecZnxDftAllocBytes
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VecZnxBigNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ DFT<B> + DFT<B>
+ IDFTConsume<B> + IDFTConsume<B>
+ VecZnxBigAddSmallInplace<B> + VecZnxBigAddSmallInplace<B>
@@ -130,10 +130,10 @@ impl<DataSelf: DataMut> GLWECiphertext<DataSelf> {
scratch: &mut Scratch<B>, scratch: &mut Scratch<B>,
) where ) where
Module<B>: VecZnxDftAllocBytes Module<B>: VecZnxDftAllocBytes
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VecZnxBigNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ DFT<B> + DFT<B>
+ IDFTConsume<B> + IDFTConsume<B>
+ VecZnxBigAddSmallInplace<B> + VecZnxBigAddSmallInplace<B>
@@ -155,10 +155,10 @@ impl<DataSelf: DataMut> GLWECiphertext<DataSelf> {
scratch: &mut Scratch<B>, scratch: &mut Scratch<B>,
) where ) where
Module<B>: VecZnxDftAllocBytes Module<B>: VecZnxDftAllocBytes
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VecZnxBigNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ DFT<B> + DFT<B>
+ IDFTConsume<B> + IDFTConsume<B>
+ VecZnxBigAddSmallInplace<B> + VecZnxBigAddSmallInplace<B>
@@ -187,10 +187,10 @@ impl<DataSelf: DataMut> GLWECiphertext<DataSelf> {
scratch: &mut Scratch<B>, scratch: &mut Scratch<B>,
) where ) where
Module<B>: VecZnxDftAllocBytes Module<B>: VecZnxDftAllocBytes
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VecZnxBigNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ DFT<B> + DFT<B>
+ IDFTConsume<B> + IDFTConsume<B>
+ VecZnxBigAddSmallInplace<B> + VecZnxBigAddSmallInplace<B>
@@ -213,10 +213,10 @@ impl<DataSelf: DataMut> GLWECiphertext<DataSelf> {
scratch: &mut Scratch<B>, scratch: &mut Scratch<B>,
) where ) where
Module<B>: VecZnxDftAllocBytes Module<B>: VecZnxDftAllocBytes
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VecZnxBigNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ DFT<B> + DFT<B>
+ IDFTConsume<B> + IDFTConsume<B>
+ VecZnxBigAddSmallInplace<B> + VecZnxBigAddSmallInplace<B>
@@ -245,10 +245,10 @@ impl<DataSelf: DataMut> GLWECiphertext<DataSelf> {
scratch: &mut Scratch<B>, scratch: &mut Scratch<B>,
) where ) where
Module<B>: VecZnxDftAllocBytes Module<B>: VecZnxDftAllocBytes
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VecZnxBigNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ DFT<B> + DFT<B>
+ IDFTConsume<B> + IDFTConsume<B>
+ VecZnxBigAddSmallInplace<B> + VecZnxBigAddSmallInplace<B>

View File

@@ -1,7 +1,7 @@
use poulpy_hal::{ use poulpy_hal::{
api::{ api::{
DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxBigAddSmallInplace, VecZnxBigNormalize, DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxBigAddSmallInplace, VecZnxBigNormalize,
VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes,
}, },
layouts::{Backend, DataMut, DataRef, Module, Scratch, ZnxView, ZnxViewMut, ZnxZero}, layouts::{Backend, DataMut, DataRef, Module, Scratch, ZnxView, ZnxViewMut, ZnxZero},
}; };
@@ -21,7 +21,7 @@ impl LWECiphertext<Vec<u8>> {
rank: usize, rank: usize,
) -> usize ) -> usize
where where
Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxBigNormalizeTmpBytes, Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes,
{ {
GLWECiphertext::bytes_of(module.n(), basek, k_lwe, 1) GLWECiphertext::bytes_of(module.n(), basek, k_lwe, 1)
+ GLWECiphertext::keyswitch_scratch_space(module, basek, k_lwe, k_glwe, k_ksk, 1, rank, 1) + GLWECiphertext::keyswitch_scratch_space(module, basek, k_lwe, k_glwe, k_ksk, 1, rank, 1)
@@ -56,10 +56,10 @@ impl<DLwe: DataMut> LWECiphertext<DLwe> {
DGlwe: DataRef, DGlwe: DataRef,
DKs: DataRef, DKs: DataRef,
Module<B>: VecZnxDftAllocBytes Module<B>: VecZnxDftAllocBytes
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VecZnxBigNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ DFT<B> + DFT<B>
+ IDFTConsume<B> + IDFTConsume<B>
+ VecZnxBigAddSmallInplace<B> + VecZnxBigAddSmallInplace<B>

View File

@@ -1,7 +1,7 @@
use poulpy_hal::{ use poulpy_hal::{
api::{ api::{
DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxBigAddSmallInplace, VecZnxBigNormalize, DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxBigAddSmallInplace, VecZnxBigNormalize,
VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes,
}, },
layouts::{Backend, DataMut, DataRef, Module, Scratch, ZnxView, ZnxViewMut, ZnxZero}, layouts::{Backend, DataMut, DataRef, Module, Scratch, ZnxView, ZnxViewMut, ZnxZero},
}; };
@@ -21,7 +21,7 @@ impl GLWECiphertext<Vec<u8>> {
rank: usize, rank: usize,
) -> usize ) -> usize
where where
Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxBigNormalizeTmpBytes, Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes,
{ {
GLWECiphertext::keyswitch_scratch_space(module, basek, k_glwe, k_lwe, k_ksk, 1, 1, rank) GLWECiphertext::keyswitch_scratch_space(module, basek, k_glwe, k_lwe, k_ksk, 1, 1, rank)
+ GLWECiphertext::bytes_of(module.n(), basek, k_lwe, 1) + GLWECiphertext::bytes_of(module.n(), basek, k_lwe, 1)
@@ -39,10 +39,10 @@ impl<D: DataMut> GLWECiphertext<D> {
DLwe: DataRef, DLwe: DataRef,
DKsk: DataRef, DKsk: DataRef,
Module<B>: VecZnxDftAllocBytes Module<B>: VecZnxDftAllocBytes
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VecZnxBigNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ DFT<B> + DFT<B>
+ IDFTConsume<B> + IDFTConsume<B>
+ VecZnxBigAddSmallInplace<B> + VecZnxBigAddSmallInplace<B>

View File

@@ -1,7 +1,7 @@
use poulpy_hal::{ use poulpy_hal::{
api::{ api::{
DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxNormalizeTmpBytes, DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxNormalizeTmpBytes,
VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes,
}, },
layouts::{Backend, DataMut, DataRef, Module, Scratch}, layouts::{Backend, DataMut, DataRef, Module, Scratch},
}; };
@@ -20,7 +20,7 @@ impl GGLWEAutomorphismKey<Vec<u8>> {
rank: usize, rank: usize,
) -> usize ) -> usize
where where
Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxNormalizeTmpBytes, Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxNormalizeTmpBytes,
{ {
GGLWESwitchingKey::external_product_scratch_space(module, basek, k_out, k_in, ggsw_k, digits, rank) GGLWESwitchingKey::external_product_scratch_space(module, basek, k_out, k_in, ggsw_k, digits, rank)
} }
@@ -34,7 +34,7 @@ impl GGLWEAutomorphismKey<Vec<u8>> {
rank: usize, rank: usize,
) -> usize ) -> usize
where where
Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxNormalizeTmpBytes, Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxNormalizeTmpBytes,
{ {
GGLWESwitchingKey::external_product_inplace_scratch_space(module, basek, k_out, ggsw_k, digits, rank) GGLWESwitchingKey::external_product_inplace_scratch_space(module, basek, k_out, ggsw_k, digits, rank)
} }
@@ -49,11 +49,11 @@ impl<DataSelf: DataMut> GGLWEAutomorphismKey<DataSelf> {
scratch: &mut Scratch<B>, scratch: &mut Scratch<B>,
) where ) where
Module<B>: VecZnxDftAllocBytes Module<B>: VecZnxDftAllocBytes
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VecZnxNormalizeTmpBytes + VecZnxNormalizeTmpBytes
+ DFT<B> + DFT<B>
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ IDFTConsume<B> + IDFTConsume<B>
+ VecZnxBigNormalize<B>, + VecZnxBigNormalize<B>,
Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable, Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable,
@@ -68,11 +68,11 @@ impl<DataSelf: DataMut> GGLWEAutomorphismKey<DataSelf> {
scratch: &mut Scratch<B>, scratch: &mut Scratch<B>,
) where ) where
Module<B>: VecZnxDftAllocBytes Module<B>: VecZnxDftAllocBytes
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VecZnxNormalizeTmpBytes + VecZnxNormalizeTmpBytes
+ DFT<B> + DFT<B>
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ IDFTConsume<B> + IDFTConsume<B>
+ VecZnxBigNormalize<B>, + VecZnxBigNormalize<B>,
Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable, Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable,

View File

@@ -1,7 +1,7 @@
use poulpy_hal::{ use poulpy_hal::{
api::{ api::{
DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxNormalizeTmpBytes, DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxNormalizeTmpBytes,
VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes,
}, },
layouts::{Backend, DataMut, DataRef, Module, Scratch, ZnxZero}, layouts::{Backend, DataMut, DataRef, Module, Scratch, ZnxZero},
}; };
@@ -20,7 +20,7 @@ impl GGLWESwitchingKey<Vec<u8>> {
rank: usize, rank: usize,
) -> usize ) -> usize
where where
Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxNormalizeTmpBytes, Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxNormalizeTmpBytes,
{ {
GLWECiphertext::external_product_scratch_space(module, basek, k_out, k_in, k_ggsw, digits, rank) GLWECiphertext::external_product_scratch_space(module, basek, k_out, k_in, k_ggsw, digits, rank)
} }
@@ -34,7 +34,7 @@ impl GGLWESwitchingKey<Vec<u8>> {
rank: usize, rank: usize,
) -> usize ) -> usize
where where
Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxNormalizeTmpBytes, Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxNormalizeTmpBytes,
{ {
GLWECiphertext::external_product_inplace_scratch_space(module, basek, k_out, k_ggsw, digits, rank) GLWECiphertext::external_product_inplace_scratch_space(module, basek, k_out, k_ggsw, digits, rank)
} }
@@ -49,11 +49,11 @@ impl<DataSelf: DataMut> GGLWESwitchingKey<DataSelf> {
scratch: &mut Scratch<B>, scratch: &mut Scratch<B>,
) where ) where
Module<B>: VecZnxDftAllocBytes Module<B>: VecZnxDftAllocBytes
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VecZnxNormalizeTmpBytes + VecZnxNormalizeTmpBytes
+ DFT<B> + DFT<B>
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ IDFTConsume<B> + IDFTConsume<B>
+ VecZnxBigNormalize<B>, + VecZnxBigNormalize<B>,
Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable, Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable,
@@ -104,11 +104,11 @@ impl<DataSelf: DataMut> GGLWESwitchingKey<DataSelf> {
scratch: &mut Scratch<B>, scratch: &mut Scratch<B>,
) where ) where
Module<B>: VecZnxDftAllocBytes Module<B>: VecZnxDftAllocBytes
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VecZnxNormalizeTmpBytes + VecZnxNormalizeTmpBytes
+ DFT<B> + DFT<B>
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ IDFTConsume<B> + IDFTConsume<B>
+ VecZnxBigNormalize<B>, + VecZnxBigNormalize<B>,
Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable, Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable,

View File

@@ -1,7 +1,7 @@
use poulpy_hal::{ use poulpy_hal::{
api::{ api::{
DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxNormalizeTmpBytes, DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxNormalizeTmpBytes,
VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes,
}, },
layouts::{Backend, DataMut, DataRef, Module, Scratch, ZnxZero}, layouts::{Backend, DataMut, DataRef, Module, Scratch, ZnxZero},
}; };
@@ -20,7 +20,7 @@ impl GGSWCiphertext<Vec<u8>> {
rank: usize, rank: usize,
) -> usize ) -> usize
where where
Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxNormalizeTmpBytes, Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxNormalizeTmpBytes,
{ {
GLWECiphertext::external_product_scratch_space(module, basek, k_out, k_in, k_ggsw, digits, rank) GLWECiphertext::external_product_scratch_space(module, basek, k_out, k_in, k_ggsw, digits, rank)
} }
@@ -34,7 +34,7 @@ impl GGSWCiphertext<Vec<u8>> {
rank: usize, rank: usize,
) -> usize ) -> usize
where where
Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxNormalizeTmpBytes, Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxNormalizeTmpBytes,
{ {
GLWECiphertext::external_product_inplace_scratch_space(module, basek, k_out, k_ggsw, digits, rank) GLWECiphertext::external_product_inplace_scratch_space(module, basek, k_out, k_ggsw, digits, rank)
} }
@@ -49,11 +49,11 @@ impl<DataSelf: DataMut> GGSWCiphertext<DataSelf> {
scratch: &mut Scratch<B>, scratch: &mut Scratch<B>,
) where ) where
Module<B>: VecZnxDftAllocBytes Module<B>: VecZnxDftAllocBytes
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VecZnxNormalizeTmpBytes + VecZnxNormalizeTmpBytes
+ DFT<B> + DFT<B>
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ IDFTConsume<B> + IDFTConsume<B>
+ VecZnxBigNormalize<B>, + VecZnxBigNormalize<B>,
Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable, Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable,
@@ -114,11 +114,11 @@ impl<DataSelf: DataMut> GGSWCiphertext<DataSelf> {
scratch: &mut Scratch<B>, scratch: &mut Scratch<B>,
) where ) where
Module<B>: VecZnxDftAllocBytes Module<B>: VecZnxDftAllocBytes
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VecZnxNormalizeTmpBytes + VecZnxNormalizeTmpBytes
+ DFT<B> + DFT<B>
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ IDFTConsume<B> + IDFTConsume<B>
+ VecZnxBigNormalize<B>, + VecZnxBigNormalize<B>,
Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable, Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable,

View File

@@ -1,7 +1,7 @@
use poulpy_hal::{ use poulpy_hal::{
api::{ api::{
DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxNormalizeTmpBytes, DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxNormalizeTmpBytes,
VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes,
}, },
layouts::{Backend, DataMut, DataRef, DataViewMut, Module, Scratch, VecZnxBig}, layouts::{Backend, DataMut, DataRef, DataViewMut, Module, Scratch, VecZnxBig},
}; };
@@ -20,14 +20,14 @@ impl GLWECiphertext<Vec<u8>> {
rank: usize, rank: usize,
) -> usize ) -> usize
where where
Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxNormalizeTmpBytes, Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxNormalizeTmpBytes,
{ {
let in_size: usize = k_in.div_ceil(basek).div_ceil(digits); let in_size: usize = k_in.div_ceil(basek).div_ceil(digits);
let out_size: usize = k_out.div_ceil(basek); let out_size: usize = k_out.div_ceil(basek);
let ggsw_size: usize = k_ggsw.div_ceil(basek); let ggsw_size: usize = k_ggsw.div_ceil(basek);
let res_dft: usize = module.vec_znx_dft_alloc_bytes(rank + 1, ggsw_size); let res_dft: usize = module.vec_znx_dft_alloc_bytes(rank + 1, ggsw_size);
let a_dft: usize = module.vec_znx_dft_alloc_bytes(rank + 1, in_size); let a_dft: usize = module.vec_znx_dft_alloc_bytes(rank + 1, in_size);
let vmp: usize = module.vmp_apply_tmp_bytes( let vmp: usize = module.vmp_apply_dft_to_dft_tmp_bytes(
out_size, out_size,
in_size, in_size,
in_size, // rows in_size, // rows
@@ -48,7 +48,7 @@ impl GLWECiphertext<Vec<u8>> {
rank: usize, rank: usize,
) -> usize ) -> usize
where where
Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxNormalizeTmpBytes, Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxNormalizeTmpBytes,
{ {
Self::external_product_scratch_space(module, basek, k_out, k_out, k_ggsw, digits, rank) Self::external_product_scratch_space(module, basek, k_out, k_out, k_ggsw, digits, rank)
} }
@@ -63,11 +63,11 @@ impl<DataSelf: DataMut> GLWECiphertext<DataSelf> {
scratch: &mut Scratch<B>, scratch: &mut Scratch<B>,
) where ) where
Module<B>: VecZnxDftAllocBytes Module<B>: VecZnxDftAllocBytes
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VecZnxNormalizeTmpBytes + VecZnxNormalizeTmpBytes
+ DFT<B> + DFT<B>
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ IDFTConsume<B> + IDFTConsume<B>
+ VecZnxBigNormalize<B>, + VecZnxBigNormalize<B>,
Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable, Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable,
@@ -125,9 +125,9 @@ impl<DataSelf: DataMut> GLWECiphertext<DataSelf> {
}); });
if di == 0 { if di == 0 {
module.vmp_apply(&mut res_dft, &a_dft, &rhs.data, scratch2); module.vmp_apply_dft_to_dft(&mut res_dft, &a_dft, &rhs.data, scratch2);
} else { } else {
module.vmp_apply_add(&mut res_dft, &a_dft, &rhs.data, di, scratch2); module.vmp_apply_dft_to_dft_add(&mut res_dft, &a_dft, &rhs.data, di, scratch2);
} }
}); });
} }
@@ -146,11 +146,11 @@ impl<DataSelf: DataMut> GLWECiphertext<DataSelf> {
scratch: &mut Scratch<B>, scratch: &mut Scratch<B>,
) where ) where
Module<B>: VecZnxDftAllocBytes Module<B>: VecZnxDftAllocBytes
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VecZnxNormalizeTmpBytes + VecZnxNormalizeTmpBytes
+ DFT<B> + DFT<B>
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ IDFTConsume<B> + IDFTConsume<B>
+ VecZnxBigNormalize<B>, + VecZnxBigNormalize<B>,
Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable, Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable,

View File

@@ -5,7 +5,8 @@ use poulpy_hal::{
DFT, IDFTConsume, ScratchAvailable, TakeVecZnx, TakeVecZnxDft, VecZnxAddInplace, VecZnxAutomorphismInplace, DFT, IDFTConsume, ScratchAvailable, TakeVecZnx, TakeVecZnxDft, VecZnxAddInplace, VecZnxAutomorphismInplace,
VecZnxBigAddSmallInplace, VecZnxBigAutomorphismInplace, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxBigAddSmallInplace, VecZnxBigAutomorphismInplace, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes,
VecZnxBigSubSmallBInplace, VecZnxCopy, VecZnxDftAllocBytes, VecZnxNegateInplace, VecZnxNormalizeInplace, VecZnxRotate, VecZnxBigSubSmallBInplace, VecZnxCopy, VecZnxDftAllocBytes, VecZnxNegateInplace, VecZnxNormalizeInplace, VecZnxRotate,
VecZnxRotateInplace, VecZnxRshInplace, VecZnxSub, VecZnxSubABInplace, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VecZnxRotateInplace, VecZnxRshInplace, VecZnxSub, VecZnxSubABInplace, VmpApplyDftToDft, VmpApplyDftToDftAdd,
VmpApplyDftToDftTmpBytes,
}, },
layouts::{Backend, DataMut, DataRef, Module, Scratch}, layouts::{Backend, DataMut, DataRef, Module, Scratch},
}; };
@@ -95,7 +96,7 @@ impl GLWEPacker {
rank: usize, rank: usize,
) -> usize ) -> usize
where where
Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxBigNormalizeTmpBytes, Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes,
{ {
pack_core_scratch_space(module, basek, ct_k, k_ksk, digits, rank) pack_core_scratch_space(module, basek, ct_k, k_ksk, digits, rank)
} }
@@ -121,10 +122,10 @@ impl GLWEPacker {
scratch: &mut Scratch<B>, scratch: &mut Scratch<B>,
) where ) where
Module<B>: VecZnxDftAllocBytes Module<B>: VecZnxDftAllocBytes
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VecZnxBigNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ DFT<B> + DFT<B>
+ IDFTConsume<B> + IDFTConsume<B>
+ VecZnxBigAddSmallInplace<B> + VecZnxBigAddSmallInplace<B>
@@ -185,7 +186,7 @@ fn pack_core_scratch_space<B: Backend>(
rank: usize, rank: usize,
) -> usize ) -> usize
where where
Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxBigNormalizeTmpBytes, Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes,
{ {
combine_scratch_space(module, basek, ct_k, k_ksk, digits, rank) combine_scratch_space(module, basek, ct_k, k_ksk, digits, rank)
} }
@@ -199,10 +200,10 @@ fn pack_core<D: DataRef, DataAK: DataRef, B: Backend>(
scratch: &mut Scratch<B>, scratch: &mut Scratch<B>,
) where ) where
Module<B>: VecZnxDftAllocBytes Module<B>: VecZnxDftAllocBytes
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VecZnxBigNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ DFT<B> + DFT<B>
+ IDFTConsume<B> + IDFTConsume<B>
+ VecZnxBigAddSmallInplace<B> + VecZnxBigAddSmallInplace<B>
@@ -279,7 +280,7 @@ fn combine_scratch_space<B: Backend>(
rank: usize, rank: usize,
) -> usize ) -> usize
where where
Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxBigNormalizeTmpBytes, Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes,
{ {
GLWECiphertext::bytes_of(module.n(), basek, ct_k, rank) GLWECiphertext::bytes_of(module.n(), basek, ct_k, rank)
+ (GLWECiphertext::rsh_scratch_space(module.n()) + (GLWECiphertext::rsh_scratch_space(module.n())
@@ -296,10 +297,10 @@ fn combine<D: DataRef, DataAK: DataRef, B: Backend>(
scratch: &mut Scratch<B>, scratch: &mut Scratch<B>,
) where ) where
Module<B>: VecZnxDftAllocBytes Module<B>: VecZnxDftAllocBytes
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VecZnxBigNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ DFT<B> + DFT<B>
+ IDFTConsume<B> + IDFTConsume<B>
+ VecZnxBigAddSmallInplace<B> + VecZnxBigAddSmallInplace<B>

View File

@@ -3,8 +3,8 @@ use std::collections::HashMap;
use poulpy_hal::{ use poulpy_hal::{
api::{ api::{
DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxBigAddSmallInplace, VecZnxBigAutomorphismInplace, DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxBigAddSmallInplace, VecZnxBigAutomorphismInplace,
VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxCopy, VecZnxDftAllocBytes, VecZnxRshInplace, VmpApply, VmpApplyAdd, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxCopy, VecZnxDftAllocBytes, VecZnxRshInplace, VmpApplyDftToDft,
VmpApplyTmpBytes, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes,
}, },
layouts::{Backend, DataMut, DataRef, Module, Scratch}, layouts::{Backend, DataMut, DataRef, Module, Scratch},
}; };
@@ -38,7 +38,7 @@ impl GLWECiphertext<Vec<u8>> {
rank: usize, rank: usize,
) -> usize ) -> usize
where where
Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxBigNormalizeTmpBytes, Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes,
{ {
Self::automorphism_inplace_scratch_space(module, basek, out_k.min(in_k), ksk_k, digits, rank) Self::automorphism_inplace_scratch_space(module, basek, out_k.min(in_k), ksk_k, digits, rank)
} }
@@ -52,7 +52,7 @@ impl GLWECiphertext<Vec<u8>> {
rank: usize, rank: usize,
) -> usize ) -> usize
where where
Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxBigNormalizeTmpBytes, Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes,
{ {
Self::automorphism_inplace_scratch_space(module, basek, out_k, ksk_k, digits, rank) Self::automorphism_inplace_scratch_space(module, basek, out_k, ksk_k, digits, rank)
} }
@@ -69,10 +69,10 @@ impl<DataSelf: DataMut> GLWECiphertext<DataSelf> {
scratch: &mut Scratch<B>, scratch: &mut Scratch<B>,
) where ) where
Module<B>: VecZnxDftAllocBytes Module<B>: VecZnxDftAllocBytes
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VecZnxBigNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ DFT<B> + DFT<B>
+ IDFTConsume<B> + IDFTConsume<B>
+ VecZnxBigAddSmallInplace<B> + VecZnxBigAddSmallInplace<B>
@@ -95,10 +95,10 @@ impl<DataSelf: DataMut> GLWECiphertext<DataSelf> {
scratch: &mut Scratch<B>, scratch: &mut Scratch<B>,
) where ) where
Module<B>: VecZnxDftAllocBytes Module<B>: VecZnxDftAllocBytes
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VecZnxBigNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ DFT<B> + DFT<B>
+ IDFTConsume<B> + IDFTConsume<B>
+ VecZnxBigAddSmallInplace<B> + VecZnxBigAddSmallInplace<B>

View File

@@ -1,7 +1,7 @@
use poulpy_hal::{ use poulpy_hal::{
api::{ api::{
DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxBigAddSmallInplace, VecZnxBigNormalize, DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxBigAddSmallInplace, VecZnxBigNormalize,
VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes,
}, },
layouts::{Backend, DataMut, DataRef, Module, Scratch, ZnxZero}, layouts::{Backend, DataMut, DataRef, Module, Scratch, ZnxZero},
}; };
@@ -23,7 +23,7 @@ impl GGLWEAutomorphismKey<Vec<u8>> {
rank: usize, rank: usize,
) -> usize ) -> usize
where where
Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxBigNormalizeTmpBytes, Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes,
{ {
GGLWESwitchingKey::keyswitch_scratch_space(module, basek, k_out, k_in, k_ksk, digits, rank, rank) GGLWESwitchingKey::keyswitch_scratch_space(module, basek, k_out, k_in, k_ksk, digits, rank, rank)
} }
@@ -37,7 +37,7 @@ impl GGLWEAutomorphismKey<Vec<u8>> {
rank: usize, rank: usize,
) -> usize ) -> usize
where where
Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxBigNormalizeTmpBytes, Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes,
{ {
GGLWESwitchingKey::keyswitch_inplace_scratch_space(module, basek, k_out, k_ksk, digits, rank) GGLWESwitchingKey::keyswitch_inplace_scratch_space(module, basek, k_out, k_ksk, digits, rank)
} }
@@ -52,10 +52,10 @@ impl<DataSelf: DataMut> GGLWEAutomorphismKey<DataSelf> {
scratch: &mut Scratch<B>, scratch: &mut Scratch<B>,
) where ) where
Module<B>: VecZnxDftAllocBytes Module<B>: VecZnxDftAllocBytes
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VecZnxBigNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ DFT<B> + DFT<B>
+ IDFTConsume<B> + IDFTConsume<B>
+ VecZnxBigAddSmallInplace<B> + VecZnxBigAddSmallInplace<B>
@@ -72,10 +72,10 @@ impl<DataSelf: DataMut> GGLWEAutomorphismKey<DataSelf> {
scratch: &mut Scratch<B>, scratch: &mut Scratch<B>,
) where ) where
Module<B>: VecZnxDftAllocBytes Module<B>: VecZnxDftAllocBytes
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VecZnxBigNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ DFT<B> + DFT<B>
+ IDFTConsume<B> + IDFTConsume<B>
+ VecZnxBigAddSmallInplace<B> + VecZnxBigAddSmallInplace<B>
@@ -99,7 +99,7 @@ impl GGLWESwitchingKey<Vec<u8>> {
rank_out: usize, rank_out: usize,
) -> usize ) -> usize
where where
Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxBigNormalizeTmpBytes, Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes,
{ {
GLWECiphertext::keyswitch_scratch_space(module, basek, k_out, k_in, k_ksk, digits, rank_in, rank_out) GLWECiphertext::keyswitch_scratch_space(module, basek, k_out, k_in, k_ksk, digits, rank_in, rank_out)
} }
@@ -113,7 +113,7 @@ impl GGLWESwitchingKey<Vec<u8>> {
rank: usize, rank: usize,
) -> usize ) -> usize
where where
Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxBigNormalizeTmpBytes, Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes,
{ {
GLWECiphertext::keyswitch_inplace_scratch_space(module, basek, k_out, k_ksk, digits, rank) GLWECiphertext::keyswitch_inplace_scratch_space(module, basek, k_out, k_ksk, digits, rank)
} }
@@ -128,10 +128,10 @@ impl<DataSelf: DataMut> GGLWESwitchingKey<DataSelf> {
scratch: &mut Scratch<B>, scratch: &mut Scratch<B>,
) where ) where
Module<B>: VecZnxDftAllocBytes Module<B>: VecZnxDftAllocBytes
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VecZnxBigNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ DFT<B> + DFT<B>
+ IDFTConsume<B> + IDFTConsume<B>
+ VecZnxBigAddSmallInplace<B> + VecZnxBigAddSmallInplace<B>
@@ -184,10 +184,10 @@ impl<DataSelf: DataMut> GGLWESwitchingKey<DataSelf> {
scratch: &mut Scratch<B>, scratch: &mut Scratch<B>,
) where ) where
Module<B>: VecZnxDftAllocBytes Module<B>: VecZnxDftAllocBytes
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VecZnxBigNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ DFT<B> + DFT<B>
+ IDFTConsume<B> + IDFTConsume<B>
+ VecZnxBigAddSmallInplace<B> + VecZnxBigAddSmallInplace<B>

View File

@@ -2,7 +2,8 @@ use poulpy_hal::{
api::{ api::{
DFT, IDFTConsume, IDFTTmpA, ScratchAvailable, TakeVecZnxBig, TakeVecZnxDft, VecZnxBigAddSmallInplace, DFT, IDFTConsume, IDFTTmpA, ScratchAvailable, TakeVecZnxBig, TakeVecZnxDft, VecZnxBigAddSmallInplace,
VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxCopy, VecZnxDftAddInplace, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxCopy, VecZnxDftAddInplace,
VecZnxDftAllocBytes, VecZnxDftCopy, VecZnxNormalizeTmpBytes, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VecZnxDftAllocBytes, VecZnxDftCopy, VecZnxNormalizeTmpBytes, VmpApplyDftToDft, VmpApplyDftToDftAdd,
VmpApplyDftToDftTmpBytes,
}, },
layouts::{Backend, DataMut, DataRef, Module, Scratch, VecZnx, VmpPMat, ZnxInfos}, layouts::{Backend, DataMut, DataRef, Module, Scratch, VecZnx, VmpPMat, ZnxInfos},
}; };
@@ -25,7 +26,7 @@ impl GGSWCiphertext<Vec<u8>> {
rank: usize, rank: usize,
) -> usize ) -> usize
where where
Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxBigAllocBytes + VecZnxNormalizeTmpBytes, Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxBigAllocBytes + VecZnxNormalizeTmpBytes,
{ {
let tsk_size: usize = k_tsk.div_ceil(basek); let tsk_size: usize = k_tsk.div_ceil(basek);
let self_size_out: usize = self_k.div_ceil(basek); let self_size_out: usize = self_k.div_ceil(basek);
@@ -33,7 +34,7 @@ impl GGSWCiphertext<Vec<u8>> {
let tmp_dft_i: usize = module.vec_znx_dft_alloc_bytes(rank + 1, tsk_size); let tmp_dft_i: usize = module.vec_znx_dft_alloc_bytes(rank + 1, tsk_size);
let tmp_a: usize = module.vec_znx_dft_alloc_bytes(1, self_size_in); let tmp_a: usize = module.vec_znx_dft_alloc_bytes(1, self_size_in);
let vmp: usize = module.vmp_apply_tmp_bytes( let vmp: usize = module.vmp_apply_dft_to_dft_tmp_bytes(
self_size_out, self_size_out,
self_size_in, self_size_in,
self_size_in, self_size_in,
@@ -59,8 +60,11 @@ impl GGSWCiphertext<Vec<u8>> {
rank: usize, rank: usize,
) -> usize ) -> usize
where where
Module<B>: Module<B>: VecZnxDftAllocBytes
VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxBigAllocBytes + VecZnxNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes, + VmpApplyDftToDftTmpBytes
+ VecZnxBigAllocBytes
+ VecZnxNormalizeTmpBytes
+ VecZnxBigNormalizeTmpBytes,
{ {
let out_size: usize = k_out.div_ceil(basek); let out_size: usize = k_out.div_ceil(basek);
let res_znx: usize = VecZnx::alloc_bytes(module.n(), rank + 1, out_size); let res_znx: usize = VecZnx::alloc_bytes(module.n(), rank + 1, out_size);
@@ -83,8 +87,11 @@ impl GGSWCiphertext<Vec<u8>> {
rank: usize, rank: usize,
) -> usize ) -> usize
where where
Module<B>: Module<B>: VecZnxDftAllocBytes
VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxBigAllocBytes + VecZnxNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes, + VmpApplyDftToDftTmpBytes
+ VecZnxBigAllocBytes
+ VecZnxNormalizeTmpBytes
+ VecZnxBigNormalizeTmpBytes,
{ {
GGSWCiphertext::keyswitch_scratch_space( GGSWCiphertext::keyswitch_scratch_space(
module, basek, k_out, k_out, k_ksk, digits_ksk, k_tsk, digits_tsk, rank, module, basek, k_out, k_out, k_ksk, digits_ksk, k_tsk, digits_tsk, rank,
@@ -104,13 +111,13 @@ impl<DataSelf: DataMut> GGSWCiphertext<DataSelf> {
DataTsk: DataRef, DataTsk: DataRef,
Module<B>: VecZnxCopy Module<B>: VecZnxCopy
+ VecZnxDftAllocBytes + VecZnxDftAllocBytes
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VecZnxBigAllocBytes + VecZnxBigAllocBytes
+ VecZnxNormalizeTmpBytes + VecZnxNormalizeTmpBytes
+ DFT<B> + DFT<B>
+ VecZnxDftCopy<B> + VecZnxDftCopy<B>
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ VecZnxDftAddInplace<B> + VecZnxDftAddInplace<B>
+ VecZnxBigNormalize<B> + VecZnxBigNormalize<B>
+ IDFTTmpA<B>, + IDFTTmpA<B>,
@@ -139,10 +146,10 @@ impl<DataSelf: DataMut> GGSWCiphertext<DataSelf> {
scratch: &mut Scratch<B>, scratch: &mut Scratch<B>,
) where ) where
Module<B>: VecZnxDftAllocBytes Module<B>: VecZnxDftAllocBytes
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VecZnxBigNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ DFT<B> + DFT<B>
+ IDFTConsume<B> + IDFTConsume<B>
+ VecZnxBigAddSmallInplace<B> + VecZnxBigAddSmallInplace<B>
@@ -167,10 +174,10 @@ impl<DataSelf: DataMut> GGSWCiphertext<DataSelf> {
scratch: &mut Scratch<B>, scratch: &mut Scratch<B>,
) where ) where
Module<B>: VecZnxDftAllocBytes Module<B>: VecZnxDftAllocBytes
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VecZnxBigNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ DFT<B> + DFT<B>
+ IDFTConsume<B> + IDFTConsume<B>
+ VecZnxBigAddSmallInplace<B> + VecZnxBigAddSmallInplace<B>
@@ -196,13 +203,13 @@ impl<DataSelf: DataMut> GGSWCiphertext<DataSelf> {
scratch: &mut Scratch<B>, scratch: &mut Scratch<B>,
) where ) where
Module<B>: VecZnxDftAllocBytes Module<B>: VecZnxDftAllocBytes
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VecZnxBigAllocBytes + VecZnxBigAllocBytes
+ VecZnxNormalizeTmpBytes + VecZnxNormalizeTmpBytes
+ DFT<B> + DFT<B>
+ VecZnxDftCopy<B> + VecZnxDftCopy<B>
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ VecZnxDftAddInplace<B> + VecZnxDftAddInplace<B>
+ VecZnxBigNormalize<B> + VecZnxBigNormalize<B>
+ IDFTTmpA<B>, + IDFTTmpA<B>,
@@ -288,9 +295,9 @@ impl<DataSelf: DataMut> GGSWCiphertext<DataSelf> {
module.vec_znx_dft_copy(digits, digits - 1 - di, &mut tmp_a, 0, &ci_dft, col_i); module.vec_znx_dft_copy(digits, digits - 1 - di, &mut tmp_a, 0, &ci_dft, col_i);
if di == 0 && col_i == 1 { if di == 0 && col_i == 1 {
module.vmp_apply(&mut tmp_dft_i, &tmp_a, pmat, scratch3); module.vmp_apply_dft_to_dft(&mut tmp_dft_i, &tmp_a, pmat, scratch3);
} else { } else {
module.vmp_apply_add(&mut tmp_dft_i, &tmp_a, pmat, di, scratch3); module.vmp_apply_dft_to_dft_add(&mut tmp_dft_i, &tmp_a, pmat, di, scratch3);
} }
}); });
}); });
@@ -330,10 +337,10 @@ impl<DataSelf: DataMut> GGSWCiphertext<DataSelf> {
scratch: &mut Scratch<B>, scratch: &mut Scratch<B>,
) where ) where
Module<B>: VecZnxDftAllocBytes Module<B>: VecZnxDftAllocBytes
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VecZnxBigNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ DFT<B> + DFT<B>
+ IDFTConsume<B> + IDFTConsume<B>
+ VecZnxBigAddSmallInplace<B> + VecZnxBigAddSmallInplace<B>

View File

@@ -1,7 +1,7 @@
use poulpy_hal::{ use poulpy_hal::{
api::{ api::{
DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxBigAddSmallInplace, VecZnxBigNormalize, DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxBigAddSmallInplace, VecZnxBigNormalize,
VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes,
}, },
layouts::{Backend, DataMut, DataRef, DataViewMut, Module, Scratch, VecZnx, VecZnxBig, VecZnxDft, VmpPMat, ZnxInfos}, layouts::{Backend, DataMut, DataRef, DataViewMut, Module, Scratch, VecZnx, VecZnxBig, VecZnxDft, VmpPMat, ZnxInfos},
}; };
@@ -21,14 +21,14 @@ impl GLWECiphertext<Vec<u8>> {
rank_out: usize, rank_out: usize,
) -> usize ) -> usize
where where
Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxBigNormalizeTmpBytes, Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes,
{ {
let in_size: usize = k_in.div_ceil(basek).div_ceil(digits); let in_size: usize = k_in.div_ceil(basek).div_ceil(digits);
let out_size: usize = k_out.div_ceil(basek); let out_size: usize = k_out.div_ceil(basek);
let ksk_size: usize = k_ksk.div_ceil(basek); let ksk_size: usize = k_ksk.div_ceil(basek);
let res_dft: usize = module.vec_znx_dft_alloc_bytes(rank_out + 1, ksk_size); // TODO OPTIMIZE let res_dft: usize = module.vec_znx_dft_alloc_bytes(rank_out + 1, ksk_size); // TODO OPTIMIZE
let ai_dft: usize = module.vec_znx_dft_alloc_bytes(rank_in, in_size); let ai_dft: usize = module.vec_znx_dft_alloc_bytes(rank_in, in_size);
let vmp: usize = module.vmp_apply_tmp_bytes(out_size, in_size, in_size, rank_in, rank_out + 1, ksk_size) let vmp: usize = module.vmp_apply_dft_to_dft_tmp_bytes(out_size, in_size, in_size, rank_in, rank_out + 1, ksk_size)
+ module.vec_znx_dft_alloc_bytes(rank_in, in_size); + module.vec_znx_dft_alloc_bytes(rank_in, in_size);
let normalize: usize = module.vec_znx_big_normalize_tmp_bytes(); let normalize: usize = module.vec_znx_big_normalize_tmp_bytes();
res_dft + ((ai_dft + vmp) | normalize) res_dft + ((ai_dft + vmp) | normalize)
@@ -43,7 +43,7 @@ impl GLWECiphertext<Vec<u8>> {
rank: usize, rank: usize,
) -> usize ) -> usize
where where
Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxBigNormalizeTmpBytes, Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes,
{ {
Self::keyswitch_scratch_space(module, basek, k_out, k_out, k_ksk, digits, rank, rank) Self::keyswitch_scratch_space(module, basek, k_out, k_out, k_ksk, digits, rank, rank)
} }
@@ -60,7 +60,7 @@ impl<DataSelf: DataRef> GLWECiphertext<DataSelf> {
) where ) where
DataLhs: DataRef, DataLhs: DataRef,
DataRhs: DataRef, DataRhs: DataRef,
Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxBigNormalizeTmpBytes, Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes,
Scratch<B>: ScratchAvailable, Scratch<B>: ScratchAvailable,
{ {
let basek: usize = self.basek(); let basek: usize = self.basek();
@@ -128,11 +128,11 @@ impl<DataSelf: DataMut> GLWECiphertext<DataSelf> {
scratch: &mut Scratch<B>, scratch: &mut Scratch<B>,
) where ) where
Module<B>: VecZnxDftAllocBytes Module<B>: VecZnxDftAllocBytes
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VecZnxBigNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ DFT<B> + DFT<B>
+ IDFTConsume<B> + IDFTConsume<B>
+ VecZnxBigAddSmallInplace<B> + VecZnxBigAddSmallInplace<B>
@@ -157,11 +157,11 @@ impl<DataSelf: DataMut> GLWECiphertext<DataSelf> {
scratch: &mut Scratch<B>, scratch: &mut Scratch<B>,
) where ) where
Module<B>: VecZnxDftAllocBytes Module<B>: VecZnxDftAllocBytes
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VecZnxBigNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ DFT<B> + DFT<B>
+ IDFTConsume<B> + IDFTConsume<B>
+ VecZnxBigAddSmallInplace<B> + VecZnxBigAddSmallInplace<B>
@@ -187,11 +187,11 @@ impl<D: DataRef> GLWECiphertext<D> {
DataRes: DataMut, DataRes: DataMut,
DataKey: DataRef, DataKey: DataRef,
Module<B>: VecZnxDftAllocBytes Module<B>: VecZnxDftAllocBytes
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VecZnxBigNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ DFT<B> + DFT<B>
+ IDFTConsume<B> + IDFTConsume<B>
+ VecZnxBigAddSmallInplace<B> + VecZnxBigAddSmallInplace<B>
@@ -224,7 +224,7 @@ where
DataRes: DataMut, DataRes: DataMut,
DataIn: DataRef, DataIn: DataRef,
DataVmp: DataRef, DataVmp: DataRef,
Module<B>: VecZnxDftAllocBytes + DFT<B> + VmpApply<B> + IDFTConsume<B> + VecZnxBigAddSmallInplace<B>, Module<B>: VecZnxDftAllocBytes + DFT<B> + VmpApplyDftToDft<B> + IDFTConsume<B> + VecZnxBigAddSmallInplace<B>,
Scratch<B>: TakeVecZnxDft<B>, Scratch<B>: TakeVecZnxDft<B>,
{ {
let cols: usize = a.cols(); let cols: usize = a.cols();
@@ -232,7 +232,7 @@ where
(0..cols - 1).for_each(|col_i| { (0..cols - 1).for_each(|col_i| {
module.dft(1, 0, &mut ai_dft, col_i, a, col_i + 1); module.dft(1, 0, &mut ai_dft, col_i, a, col_i + 1);
}); });
module.vmp_apply(&mut res_dft, &ai_dft, mat, scratch1); module.vmp_apply_dft_to_dft(&mut res_dft, &ai_dft, mat, scratch1);
let mut res_big: VecZnxBig<DataRes, B> = module.vec_znx_idft_consume(res_dft); let mut res_big: VecZnxBig<DataRes, B> = module.vec_znx_idft_consume(res_dft);
module.vec_znx_big_add_small_inplace(&mut res_big, 0, a, 0); module.vec_znx_big_add_small_inplace(&mut res_big, 0, a, 0);
res_big res_big
@@ -250,7 +250,12 @@ where
DataRes: DataMut, DataRes: DataMut,
DataIn: DataRef, DataIn: DataRef,
DataVmp: DataRef, DataVmp: DataRef,
Module<B>: VecZnxDftAllocBytes + DFT<B> + VmpApply<B> + VmpApplyAdd<B> + IDFTConsume<B> + VecZnxBigAddSmallInplace<B>, Module<B>: VecZnxDftAllocBytes
+ DFT<B>
+ VmpApplyDftToDft<B>
+ VmpApplyDftToDftAdd<B>
+ IDFTConsume<B>
+ VecZnxBigAddSmallInplace<B>,
Scratch<B>: TakeVecZnxDft<B>, Scratch<B>: TakeVecZnxDft<B>,
{ {
let cols: usize = a.cols(); let cols: usize = a.cols();
@@ -276,9 +281,9 @@ where
}); });
if di == 0 { if di == 0 {
module.vmp_apply(&mut res_dft, &ai_dft, mat, scratch1); module.vmp_apply_dft_to_dft(&mut res_dft, &ai_dft, mat, scratch1);
} else { } else {
module.vmp_apply_add(&mut res_dft, &ai_dft, mat, di, scratch1); module.vmp_apply_dft_to_dft_add(&mut res_dft, &ai_dft, mat, di, scratch1);
} }
}); });

View File

@@ -1,7 +1,7 @@
use poulpy_hal::{ use poulpy_hal::{
api::{ api::{
DFT, IDFTConsume, ScratchAvailable, TakeVecZnx, TakeVecZnxDft, VecZnxBigAddSmallInplace, VecZnxBigNormalize, DFT, IDFTConsume, ScratchAvailable, TakeVecZnx, TakeVecZnxDft, VecZnxBigAddSmallInplace, VecZnxBigNormalize,
VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes,
}, },
layouts::{Backend, DataMut, DataRef, Module, Scratch, ZnxView, ZnxViewMut, ZnxZero}, layouts::{Backend, DataMut, DataRef, Module, Scratch, ZnxView, ZnxViewMut, ZnxZero},
}; };
@@ -21,11 +21,11 @@ impl LWECiphertext<Vec<u8>> {
) -> usize ) -> usize
where where
Module<B>: VecZnxDftAllocBytes Module<B>: VecZnxDftAllocBytes
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VecZnxBigNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ DFT<B> + DFT<B>
+ IDFTConsume<B> + IDFTConsume<B>
+ VecZnxBigAddSmallInplace<B> + VecZnxBigAddSmallInplace<B>
@@ -47,10 +47,10 @@ impl<DLwe: DataMut> LWECiphertext<DLwe> {
A: DataRef, A: DataRef,
DKs: DataRef, DKs: DataRef,
Module<B>: VecZnxDftAllocBytes Module<B>: VecZnxDftAllocBytes
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VecZnxBigNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ DFT<B> + DFT<B>
+ IDFTConsume<B> + IDFTConsume<B>
+ VecZnxBigAddSmallInplace<B> + VecZnxBigAddSmallInplace<B>

View File

@@ -4,8 +4,8 @@ use poulpy_hal::{
VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphism, VecZnxAutomorphismInplace, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphism, VecZnxAutomorphismInplace,
VecZnxBigAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxBigAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes,
VecZnxCopy, VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxCopy, VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes,
VecZnxSub, VecZnxSubABInplace, VecZnxSubScalarInplace, VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VecZnxSub, VecZnxSubABInplace, VecZnxSubScalarInplace, VecZnxSwithcDegree, VmpApplyDftToDft, VmpApplyDftToDftAdd,
VmpPMatAlloc, VmpPrepare, VmpApplyDftToDftTmpBytes, VmpPMatAlloc, VmpPrepare,
}, },
layouts::{Backend, Module, ScratchOwned}, layouts::{Backend, Module, ScratchOwned},
oep::{ oep::{
@@ -37,10 +37,10 @@ pub fn test_gglwe_automorphism_key_automorphism<B>(
rank: usize, rank: usize,
) where ) where
Module<B>: VecZnxDftAllocBytes Module<B>: VecZnxDftAllocBytes
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VecZnxBigNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ DFT<B> + DFT<B>
+ IDFTConsume<B> + IDFTConsume<B>
+ VecZnxBigAddSmallInplace<B> + VecZnxBigAddSmallInplace<B>
@@ -214,11 +214,11 @@ pub fn test_gglwe_automorphism_key_automorphism_inplace<B>(
+ SvpPPolAllocBytes + SvpPPolAllocBytes
+ SvpPPolAlloc<B> + SvpPPolAlloc<B>
+ VecZnxDftAllocBytes + VecZnxDftAllocBytes
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VecZnxBigNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ DFT<B> + DFT<B>
+ IDFTConsume<B> + IDFTConsume<B>
+ VecZnxBigAddSmallInplace<B> + VecZnxBigAddSmallInplace<B>

View File

@@ -5,7 +5,8 @@ use poulpy_hal::{
VecZnxAutomorphismInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAlloc, VecZnxBigAllocBytes, VecZnxAutomorphismInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAlloc, VecZnxBigAllocBytes,
VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxCopy, VecZnxDftAddInplace, VecZnxDftAlloc, VecZnxDftAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxCopy, VecZnxDftAddInplace, VecZnxDftAlloc, VecZnxDftAllocBytes,
VecZnxDftCopy, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxDftCopy, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub,
VecZnxSubABInplace, VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare, VecZnxSubABInplace, VecZnxSwithcDegree, VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes, VmpPMatAlloc,
VmpPrepare,
}, },
layouts::{Backend, Module, ScalarZnx, ScratchOwned}, layouts::{Backend, Module, ScalarZnx, ScratchOwned},
oep::{ oep::{
@@ -57,9 +58,9 @@ pub fn test_ggsw_automorphism<B>(
+ VecZnxSubABInplace + VecZnxSubABInplace
+ VmpPMatAlloc<B> + VmpPMatAlloc<B>
+ VmpPrepare<B> + VmpPrepare<B>
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ VecZnxDftCopy<B> + VecZnxDftCopy<B>
+ VecZnxDftAddInplace<B> + VecZnxDftAddInplace<B>
+ VecZnxFillUniform + VecZnxFillUniform
@@ -211,9 +212,9 @@ pub fn test_ggsw_automorphism_inplace<B>(
+ VecZnxSubABInplace + VecZnxSubABInplace
+ VmpPMatAlloc<B> + VmpPMatAlloc<B>
+ VmpPrepare<B> + VmpPrepare<B>
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ VecZnxBigAddSmallInplace<B> + VecZnxBigAddSmallInplace<B>
+ VecZnxDftCopy<B> + VecZnxDftCopy<B>
+ VecZnxDftAddInplace<B> + VecZnxDftAddInplace<B>

View File

@@ -4,7 +4,8 @@ use poulpy_hal::{
VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphism, VecZnxAutomorphismInplace, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphism, VecZnxAutomorphismInplace,
VecZnxBigAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxBigAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes,
VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub,
VecZnxSubABInplace, VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare, VecZnxSubABInplace, VecZnxSwithcDegree, VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes, VmpPMatAlloc,
VmpPrepare,
}, },
layouts::{Backend, Module, ScratchOwned}, layouts::{Backend, Module, ScratchOwned},
oep::{ oep::{
@@ -53,10 +54,10 @@ pub fn test_glwe_automorphism<B>(
+ VecZnxBigAllocBytes + VecZnxBigAllocBytes
+ VecZnxBigAddInplace<B> + VecZnxBigAddInplace<B>
+ VecZnxBigAddSmallInplace<B> + VecZnxBigAddSmallInplace<B>
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VecZnxBigNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ VecZnxAutomorphism + VecZnxAutomorphism
+ VecZnxSwithcDegree + VecZnxSwithcDegree
+ VecZnxAddScalarInplace + VecZnxAddScalarInplace
@@ -177,10 +178,10 @@ pub fn test_glwe_automorphism_inplace<B>(
+ VecZnxBigAllocBytes + VecZnxBigAllocBytes
+ VecZnxBigAddInplace<B> + VecZnxBigAddInplace<B>
+ VecZnxBigAddSmallInplace<B> + VecZnxBigAddSmallInplace<B>
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VecZnxBigNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ VecZnxAutomorphism + VecZnxAutomorphism
+ VecZnxSwithcDegree + VecZnxSwithcDegree
+ VecZnxAddScalarInplace + VecZnxAddScalarInplace

View File

@@ -4,8 +4,8 @@ use poulpy_hal::{
VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphismInplace, VecZnxBigAddInplace, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphismInplace, VecZnxBigAddInplace,
VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes,
VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace,
VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare, ZnAddNormal, ZnFillUniform, VecZnxSwithcDegree, VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes, VmpPMatAlloc, VmpPrepare,
ZnNormalizeInplace, ZnAddNormal, ZnFillUniform, ZnNormalizeInplace,
}, },
layouts::{Backend, Module, ScratchOwned, ZnxView}, layouts::{Backend, Module, ScratchOwned, ZnxView},
oep::{ oep::{
@@ -45,9 +45,9 @@ where
+ VecZnxAddScalarInplace + VecZnxAddScalarInplace
+ VmpPMatAlloc<B> + VmpPMatAlloc<B>
+ VmpPrepare<B> + VmpPrepare<B>
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ VecZnxBigNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes
+ VecZnxSwithcDegree + VecZnxSwithcDegree
+ VecZnxAutomorphismInplace + VecZnxAutomorphismInplace
@@ -150,9 +150,9 @@ where
+ VecZnxAddScalarInplace + VecZnxAddScalarInplace
+ VmpPMatAlloc<B> + VmpPMatAlloc<B>
+ VmpPrepare<B> + VmpPrepare<B>
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ VecZnxBigNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes
+ VecZnxSwithcDegree + VecZnxSwithcDegree
+ VecZnxAutomorphismInplace + VecZnxAutomorphismInplace

View File

@@ -4,8 +4,8 @@ use poulpy_hal::{
VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphism, VecZnxAutomorphismInplace, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphism, VecZnxAutomorphismInplace,
VecZnxBigAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxBigAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes,
VecZnxCopy, VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxCopy, VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes,
VecZnxSub, VecZnxSubABInplace, VecZnxSubScalarInplace, VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VecZnxSub, VecZnxSubABInplace, VecZnxSubScalarInplace, VecZnxSwithcDegree, VmpApplyDftToDft, VmpApplyDftToDftAdd,
VmpPMatAlloc, VmpPrepare, VmpApplyDftToDftTmpBytes, VmpPMatAlloc, VmpPrepare,
}, },
layouts::{Backend, Module, ScratchOwned}, layouts::{Backend, Module, ScratchOwned},
oep::{ oep::{
@@ -42,10 +42,10 @@ where
+ SvpPrepare<B> + SvpPrepare<B>
+ SvpPPolAllocBytes + SvpPPolAllocBytes
+ SvpPPolAlloc<B> + SvpPPolAlloc<B>
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VecZnxBigNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ VecZnxBigAddSmallInplace<B> + VecZnxBigAddSmallInplace<B>
+ VecZnxAutomorphism + VecZnxAutomorphism
+ VecZnxSwithcDegree + VecZnxSwithcDegree
@@ -134,10 +134,10 @@ pub fn test_gglwe_automorphisk_key_compressed_encrypt_sk<B>(
+ SvpPrepare<B> + SvpPrepare<B>
+ SvpPPolAllocBytes + SvpPPolAllocBytes
+ SvpPPolAlloc<B> + SvpPPolAlloc<B>
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VecZnxBigNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ VecZnxBigAddSmallInplace<B> + VecZnxBigAddSmallInplace<B>
+ VecZnxAutomorphism + VecZnxAutomorphism
+ VecZnxSwithcDegree + VecZnxSwithcDegree

View File

@@ -4,7 +4,8 @@ use poulpy_hal::{
VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace,
VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxCopy, VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxCopy, VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize,
VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxRotateInplace, VecZnxSub, VecZnxSubABInplace, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxRotateInplace, VecZnxSub, VecZnxSubABInplace,
VecZnxSubScalarInplace, VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare, VecZnxSubScalarInplace, VecZnxSwithcDegree, VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes,
VmpPMatAlloc, VmpPrepare,
}, },
layouts::{Backend, Module, ScalarZnx, ScalarZnxToMut, ScratchOwned, ZnxViewMut}, layouts::{Backend, Module, ScalarZnx, ScalarZnxToMut, ScratchOwned, ZnxViewMut},
oep::{ oep::{
@@ -59,9 +60,9 @@ pub fn test_gglwe_switching_key_external_product<B>(
+ VecZnxCopy + VecZnxCopy
+ VmpPMatAlloc<B> + VmpPMatAlloc<B>
+ VecZnxRotateInplace + VecZnxRotateInplace
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ VmpPrepare<B>, + VmpPrepare<B>,
B: Backend B: Backend
+ TakeVecZnxDftImpl<B> + TakeVecZnxDftImpl<B>
@@ -199,9 +200,9 @@ pub fn test_gglwe_switching_key_external_product_inplace<B>(
+ VecZnxCopy + VecZnxCopy
+ VmpPMatAlloc<B> + VmpPMatAlloc<B>
+ VecZnxRotateInplace + VecZnxRotateInplace
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ VmpPrepare<B>, + VmpPrepare<B>,
B: Backend B: Backend
+ TakeVecZnxDftImpl<B> + TakeVecZnxDftImpl<B>

View File

@@ -4,7 +4,8 @@ use poulpy_hal::{
SvpPrepare, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace, SvpPrepare, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace,
VecZnxBigAlloc, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxCopy, VecZnxDftAlloc, VecZnxBigAlloc, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxCopy, VecZnxDftAlloc,
VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes,
VecZnxRotateInplace, VecZnxSub, VecZnxSubABInplace, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare, VecZnxRotateInplace, VecZnxSub, VecZnxSubABInplace, VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes,
VmpPMatAlloc, VmpPrepare,
}, },
layouts::{Backend, Module, ScalarZnx, ScalarZnxToMut, ScratchOwned, ZnxViewMut}, layouts::{Backend, Module, ScalarZnx, ScalarZnxToMut, ScratchOwned, ZnxViewMut},
oep::{ oep::{
@@ -56,9 +57,9 @@ pub fn test_ggsw_external_product<B>(
+ VecZnxCopy + VecZnxCopy
+ VmpPMatAlloc<B> + VmpPMatAlloc<B>
+ VecZnxRotateInplace + VecZnxRotateInplace
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ VmpPrepare<B> + VmpPrepare<B>
+ VecZnxBigAlloc<B> + VecZnxBigAlloc<B>
+ VecZnxDftAlloc<B> + VecZnxDftAlloc<B>
@@ -188,9 +189,9 @@ pub fn test_ggsw_external_product_inplace<B>(
+ VecZnxCopy + VecZnxCopy
+ VmpPMatAlloc<B> + VmpPMatAlloc<B>
+ VecZnxRotateInplace + VecZnxRotateInplace
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ VmpPrepare<B> + VmpPrepare<B>
+ VecZnxBigAlloc<B> + VecZnxBigAlloc<B>
+ VecZnxDftAlloc<B> + VecZnxDftAlloc<B>

View File

@@ -3,8 +3,8 @@ use poulpy_hal::{
DFT, IDFTConsume, ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, DFT, IDFTConsume, ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare,
VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace,
VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace,
VecZnxNormalizeTmpBytes, VecZnxRotateInplace, VecZnxSub, VecZnxSubABInplace, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VecZnxNormalizeTmpBytes, VecZnxRotateInplace, VecZnxSub, VecZnxSubABInplace, VmpApplyDftToDft, VmpApplyDftToDftAdd,
VmpPMatAlloc, VmpPrepare, VmpApplyDftToDftTmpBytes, VmpPMatAlloc, VmpPrepare,
}, },
layouts::{Backend, Module, ScalarZnx, ScratchOwned, ZnxViewMut}, layouts::{Backend, Module, ScalarZnx, ScratchOwned, ZnxViewMut},
oep::{ oep::{
@@ -56,9 +56,9 @@ pub fn test_glwe_external_product<B>(
+ VecZnxRotateInplace + VecZnxRotateInplace
+ VmpPMatAlloc<B> + VmpPMatAlloc<B>
+ VmpPrepare<B> + VmpPrepare<B>
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B>, + VmpApplyDftToDftAdd<B>,
B: Backend B: Backend
+ TakeVecZnxDftImpl<B> + TakeVecZnxDftImpl<B>
+ TakeVecZnxBigImpl<B> + TakeVecZnxBigImpl<B>
@@ -189,9 +189,9 @@ pub fn test_glwe_external_product_inplace<B>(
+ VecZnxRotateInplace + VecZnxRotateInplace
+ VmpPMatAlloc<B> + VmpPMatAlloc<B>
+ VmpPrepare<B> + VmpPrepare<B>
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B>, + VmpApplyDftToDftAdd<B>,
B: Backend B: Backend
+ TakeVecZnxDftImpl<B> + TakeVecZnxDftImpl<B>
+ TakeVecZnxBigImpl<B> + TakeVecZnxBigImpl<B>

View File

@@ -4,7 +4,7 @@ use poulpy_hal::{
VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace,
VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, VecZnxFillUniform,
VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, VecZnxSubScalarInplace, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, VecZnxSubScalarInplace,
VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare, VecZnxSwithcDegree, VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes, VmpPMatAlloc, VmpPrepare,
}, },
layouts::{Backend, Module, ScratchOwned}, layouts::{Backend, Module, ScratchOwned},
oep::{ oep::{
@@ -57,9 +57,9 @@ pub fn test_gglwe_switching_key_keyswitch<B>(
+ VecZnxAddScalarInplace + VecZnxAddScalarInplace
+ VmpPMatAlloc<B> + VmpPMatAlloc<B>
+ VmpPrepare<B> + VmpPrepare<B>
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ VecZnxBigNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes
+ VecZnxSwithcDegree + VecZnxSwithcDegree
+ VecZnxSubScalarInplace, + VecZnxSubScalarInplace,
@@ -204,9 +204,9 @@ pub fn test_gglwe_switching_key_keyswitch_inplace<B>(
+ VecZnxAddScalarInplace + VecZnxAddScalarInplace
+ VmpPMatAlloc<B> + VmpPMatAlloc<B>
+ VmpPrepare<B> + VmpPrepare<B>
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ VecZnxBigNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes
+ VecZnxSwithcDegree + VecZnxSwithcDegree
+ VecZnxSubScalarInplace, + VecZnxSubScalarInplace,

View File

@@ -4,8 +4,8 @@ use poulpy_hal::{
SvpPPolAllocBytes, SvpPrepare, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace, SvpPPolAllocBytes, SvpPrepare, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace,
VecZnxBigAddSmallInplace, VecZnxBigAlloc, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxBigAddSmallInplace, VecZnxBigAlloc, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes,
VecZnxDftAddInplace, VecZnxDftAlloc, VecZnxDftAllocBytes, VecZnxDftCopy, VecZnxFillUniform, VecZnxNormalize, VecZnxDftAddInplace, VecZnxDftAlloc, VecZnxDftAllocBytes, VecZnxDftCopy, VecZnxFillUniform, VecZnxNormalize,
VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree, VmpApply, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree, VmpApplyDftToDft,
VmpApplyAdd, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes, VmpPMatAlloc, VmpPrepare,
}, },
layouts::{Backend, Module, ScalarZnx, ScratchOwned}, layouts::{Backend, Module, ScalarZnx, ScratchOwned},
oep::{ oep::{
@@ -57,9 +57,9 @@ pub fn test_ggsw_keyswitch<B>(
+ VecZnxAddScalarInplace + VecZnxAddScalarInplace
+ VmpPMatAlloc<B> + VmpPMatAlloc<B>
+ VmpPrepare<B> + VmpPrepare<B>
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ VecZnxBigNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes
+ VecZnxSwithcDegree + VecZnxSwithcDegree
+ SvpApply<B> + SvpApply<B>
@@ -201,9 +201,9 @@ pub fn test_ggsw_keyswitch_inplace<B>(
+ VecZnxAddScalarInplace + VecZnxAddScalarInplace
+ VmpPMatAlloc<B> + VmpPMatAlloc<B>
+ VmpPrepare<B> + VmpPrepare<B>
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ VecZnxBigNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes
+ VecZnxSwithcDegree + VecZnxSwithcDegree
+ SvpApply<B> + SvpApply<B>

View File

@@ -4,7 +4,7 @@ use poulpy_hal::{
VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace,
VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, VecZnxFillUniform,
VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree,
VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare, VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes, VmpPMatAlloc, VmpPrepare,
}, },
layouts::{Backend, Module, ScratchOwned}, layouts::{Backend, Module, ScratchOwned},
oep::{ oep::{
@@ -56,9 +56,9 @@ pub fn test_glwe_keyswitch<B>(
+ VecZnxAddScalarInplace + VecZnxAddScalarInplace
+ VmpPMatAlloc<B> + VmpPMatAlloc<B>
+ VmpPrepare<B> + VmpPrepare<B>
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ VecZnxBigNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes
+ VecZnxSwithcDegree, + VecZnxSwithcDegree,
B: Backend B: Backend
@@ -170,9 +170,9 @@ where
+ VecZnxAddScalarInplace + VecZnxAddScalarInplace
+ VmpPMatAlloc<B> + VmpPMatAlloc<B>
+ VmpPrepare<B> + VmpPrepare<B>
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ VecZnxBigNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes
+ VecZnxSwithcDegree, + VecZnxSwithcDegree,
B: Backend B: Backend

View File

@@ -4,8 +4,8 @@ use poulpy_hal::{
VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphismInplace, VecZnxBigAddInplace, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphismInplace, VecZnxBigAddInplace,
VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes,
VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace,
VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare, ZnAddNormal, ZnFillUniform, VecZnxSwithcDegree, VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes, VmpPMatAlloc, VmpPrepare,
ZnNormalizeInplace, ZnAddNormal, ZnFillUniform, ZnNormalizeInplace,
}, },
layouts::{Backend, Module, ScratchOwned, ZnxView}, layouts::{Backend, Module, ScratchOwned, ZnxView},
oep::{ oep::{
@@ -44,9 +44,9 @@ where
+ VecZnxAddScalarInplace + VecZnxAddScalarInplace
+ VmpPMatAlloc<B> + VmpPMatAlloc<B>
+ VmpPrepare<B> + VmpPrepare<B>
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ VecZnxBigNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes
+ VecZnxSwithcDegree + VecZnxSwithcDegree
+ VecZnxAutomorphismInplace + VecZnxAutomorphismInplace

View File

@@ -7,8 +7,8 @@ use poulpy_hal::{
VecZnxBigAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigAutomorphismInplace, VecZnxBigNormalize, VecZnxBigAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigAutomorphismInplace, VecZnxBigNormalize,
VecZnxBigNormalizeTmpBytes, VecZnxBigSubSmallBInplace, VecZnxCopy, VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxBigNormalizeTmpBytes, VecZnxBigSubSmallBInplace, VecZnxCopy, VecZnxDftAllocBytes, VecZnxFillUniform,
VecZnxNegateInplace, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxRotate, VecZnxRotateInplace, VecZnxNegateInplace, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxRotate, VecZnxRotateInplace,
VecZnxRshInplace, VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VecZnxRshInplace, VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree, VmpApplyDftToDft, VmpApplyDftToDftAdd,
VmpPMatAlloc, VmpPrepare, VmpApplyDftToDftTmpBytes, VmpPMatAlloc, VmpPrepare,
}, },
layouts::{Backend, Module, ScratchOwned}, layouts::{Backend, Module, ScratchOwned},
oep::{ oep::{
@@ -57,9 +57,9 @@ where
+ VecZnxAddScalarInplace + VecZnxAddScalarInplace
+ VmpPMatAlloc<B> + VmpPMatAlloc<B>
+ VmpPrepare<B> + VmpPrepare<B>
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ VecZnxBigNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes
+ VecZnxSwithcDegree + VecZnxSwithcDegree
+ VecZnxAutomorphismInplace + VecZnxAutomorphismInplace

View File

@@ -7,7 +7,8 @@ use poulpy_hal::{
VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigAutomorphismInplace, VecZnxBigNormalize, VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigAutomorphismInplace, VecZnxBigNormalize,
VecZnxBigNormalizeTmpBytes, VecZnxBigSubSmallBInplace, VecZnxCopy, VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxBigNormalizeTmpBytes, VecZnxBigSubSmallBInplace, VecZnxCopy, VecZnxDftAllocBytes, VecZnxFillUniform,
VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxRotateInplace, VecZnxRshInplace, VecZnxSub, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxRotateInplace, VecZnxRshInplace, VecZnxSub,
VecZnxSubABInplace, VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare, VecZnxSubABInplace, VecZnxSwithcDegree, VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes, VmpPMatAlloc,
VmpPrepare,
}, },
layouts::{Backend, Module, ScratchOwned, ZnxView, ZnxViewMut}, layouts::{Backend, Module, ScratchOwned, ZnxView, ZnxViewMut},
oep::{ oep::{
@@ -55,9 +56,9 @@ where
+ VecZnxAddScalarInplace + VecZnxAddScalarInplace
+ VmpPMatAlloc<B> + VmpPMatAlloc<B>
+ VmpPrepare<B> + VmpPrepare<B>
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ VecZnxBigNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes
+ VecZnxSwithcDegree + VecZnxSwithcDegree
+ VecZnxCopy, + VecZnxCopy,

View File

@@ -24,8 +24,8 @@ pub trait VmpPrepare<B: Backend> {
} }
#[allow(clippy::too_many_arguments)] #[allow(clippy::too_many_arguments)]
pub trait VmpApplyTmpBytes { pub trait VmpApplyDftToDftTmpBytes {
fn vmp_apply_tmp_bytes( fn vmp_apply_dft_to_dft_tmp_bytes(
&self, &self,
res_size: usize, res_size: usize,
a_size: usize, a_size: usize,
@@ -36,7 +36,7 @@ pub trait VmpApplyTmpBytes {
) -> usize; ) -> usize;
} }
pub trait VmpApply<B: Backend> { pub trait VmpApplyDftToDft<B: Backend> {
/// Applies the vector matrix product [crate::layouts::VecZnxDft] x [crate::layouts::VmpPMat]. /// Applies the vector matrix product [crate::layouts::VecZnxDft] x [crate::layouts::VmpPMat].
/// ///
/// A vector matrix product numerically equivalent to a sum of [crate::api::SvpApply], /// A vector matrix product numerically equivalent to a sum of [crate::api::SvpApply],
@@ -61,7 +61,7 @@ pub trait VmpApply<B: Backend> {
/// * `a`: the left operand [crate::layouts::VecZnxDft] of the vector matrix product. /// * `a`: the left operand [crate::layouts::VecZnxDft] of the vector matrix product.
/// * `b`: the right operand [crate::layouts::VmpPMat] of the vector matrix product. /// * `b`: the right operand [crate::layouts::VmpPMat] of the vector matrix product.
/// * `buf`: scratch space, the size can be obtained with [VmpApplyTmpBytes::vmp_apply_tmp_bytes]. /// * `buf`: scratch space, the size can be obtained with [VmpApplyTmpBytes::vmp_apply_tmp_bytes].
fn vmp_apply<R, A, C>(&self, res: &mut R, a: &A, b: &C, scratch: &mut Scratch<B>) fn vmp_apply_dft_to_dft<R, A, C>(&self, res: &mut R, a: &A, b: &C, scratch: &mut Scratch<B>)
where where
R: VecZnxDftToMut<B>, R: VecZnxDftToMut<B>,
A: VecZnxDftToRef<B>, A: VecZnxDftToRef<B>,
@@ -69,8 +69,8 @@ pub trait VmpApply<B: Backend> {
} }
#[allow(clippy::too_many_arguments)] #[allow(clippy::too_many_arguments)]
pub trait VmpApplyAddTmpBytes { pub trait VmpApplyDftToDftAddTmpBytes {
fn vmp_apply_add_tmp_bytes( fn vmp_apply_dft_to_dft_add_tmp_bytes(
&self, &self,
res_size: usize, res_size: usize,
a_size: usize, a_size: usize,
@@ -81,8 +81,8 @@ pub trait VmpApplyAddTmpBytes {
) -> usize; ) -> usize;
} }
pub trait VmpApplyAdd<B: Backend> { pub trait VmpApplyDftToDftAdd<B: Backend> {
fn vmp_apply_add<R, A, C>(&self, res: &mut R, a: &A, b: &C, scale: usize, scratch: &mut Scratch<B>) fn vmp_apply_dft_to_dft_add<R, A, C>(&self, res: &mut R, a: &A, b: &C, scale: usize, scratch: &mut Scratch<B>)
where where
R: VecZnxDftToMut<B>, R: VecZnxDftToMut<B>,
A: VecZnxDftToRef<B>, A: VecZnxDftToRef<B>,

View File

@@ -1,12 +1,12 @@
use crate::{ use crate::{
api::{ api::{
VmpApply, VmpApplyAdd, VmpApplyAddTmpBytes, VmpApplyTmpBytes, VmpPMatAlloc, VmpPMatAllocBytes, VmpPMatFromBytes, VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftAddTmpBytes, VmpApplyDftToDftTmpBytes, VmpPMatAlloc,
VmpPrepare, VmpPrepareTmpBytes, VmpPMatAllocBytes, VmpPMatFromBytes, VmpPrepare, VmpPrepareTmpBytes,
}, },
layouts::{Backend, MatZnxToRef, Module, Scratch, VecZnxDftToMut, VecZnxDftToRef, VmpPMatOwned, VmpPMatToMut, VmpPMatToRef}, layouts::{Backend, MatZnxToRef, Module, Scratch, VecZnxDftToMut, VecZnxDftToRef, VmpPMatOwned, VmpPMatToMut, VmpPMatToRef},
oep::{ oep::{
VmpApplyAddImpl, VmpApplyAddTmpBytesImpl, VmpApplyImpl, VmpApplyTmpBytesImpl, VmpPMatAllocBytesImpl, VmpPMatAllocImpl, VmpApplyDftToDftAddImpl, VmpApplyDftToDftAddTmpBytesImpl, VmpApplyDftToDftImpl, VmpApplyDftToDftTmpBytesImpl,
VmpPMatFromBytesImpl, VmpPMatPrepareImpl, VmpPrepareTmpBytesImpl, VmpPMatAllocBytesImpl, VmpPMatAllocImpl, VmpPMatFromBytesImpl, VmpPMatPrepareImpl, VmpPrepareTmpBytesImpl,
}, },
}; };
@@ -59,11 +59,11 @@ where
} }
} }
impl<B> VmpApplyTmpBytes for Module<B> impl<B> VmpApplyDftToDftTmpBytes for Module<B>
where where
B: Backend + VmpApplyTmpBytesImpl<B>, B: Backend + VmpApplyDftToDftTmpBytesImpl<B>,
{ {
fn vmp_apply_tmp_bytes( fn vmp_apply_dft_to_dft_tmp_bytes(
&self, &self,
res_size: usize, res_size: usize,
a_size: usize, a_size: usize,
@@ -72,31 +72,31 @@ where
b_cols_out: usize, b_cols_out: usize,
b_size: usize, b_size: usize,
) -> usize { ) -> usize {
B::vmp_apply_tmp_bytes_impl( B::vmp_apply_dft_to_dft_tmp_bytes_impl(
self, res_size, a_size, b_rows, b_cols_in, b_cols_out, b_size, self, res_size, a_size, b_rows, b_cols_in, b_cols_out, b_size,
) )
} }
} }
impl<B> VmpApply<B> for Module<B> impl<B> VmpApplyDftToDft<B> for Module<B>
where where
B: Backend + VmpApplyImpl<B>, B: Backend + VmpApplyDftToDftImpl<B>,
{ {
fn vmp_apply<R, A, C>(&self, res: &mut R, a: &A, b: &C, scratch: &mut Scratch<B>) fn vmp_apply_dft_to_dft<R, A, C>(&self, res: &mut R, a: &A, b: &C, scratch: &mut Scratch<B>)
where where
R: VecZnxDftToMut<B>, R: VecZnxDftToMut<B>,
A: VecZnxDftToRef<B>, A: VecZnxDftToRef<B>,
C: VmpPMatToRef<B>, C: VmpPMatToRef<B>,
{ {
B::vmp_apply_impl(self, res, a, b, scratch); B::vmp_apply_dft_to_dft_impl(self, res, a, b, scratch);
} }
} }
impl<B> VmpApplyAddTmpBytes for Module<B> impl<B> VmpApplyDftToDftAddTmpBytes for Module<B>
where where
B: Backend + VmpApplyAddTmpBytesImpl<B>, B: Backend + VmpApplyDftToDftAddTmpBytesImpl<B>,
{ {
fn vmp_apply_add_tmp_bytes( fn vmp_apply_dft_to_dft_add_tmp_bytes(
&self, &self,
res_size: usize, res_size: usize,
a_size: usize, a_size: usize,
@@ -105,22 +105,22 @@ where
b_cols_out: usize, b_cols_out: usize,
b_size: usize, b_size: usize,
) -> usize { ) -> usize {
B::vmp_apply_add_tmp_bytes_impl( B::vmp_apply_dft_to_dft_add_tmp_bytes_impl(
self, res_size, a_size, b_rows, b_cols_in, b_cols_out, b_size, self, res_size, a_size, b_rows, b_cols_in, b_cols_out, b_size,
) )
} }
} }
impl<B> VmpApplyAdd<B> for Module<B> impl<B> VmpApplyDftToDftAdd<B> for Module<B>
where where
B: Backend + VmpApplyAddImpl<B>, B: Backend + VmpApplyDftToDftAddImpl<B>,
{ {
fn vmp_apply_add<R, A, C>(&self, res: &mut R, a: &A, b: &C, scale: usize, scratch: &mut Scratch<B>) fn vmp_apply_dft_to_dft_add<R, A, C>(&self, res: &mut R, a: &A, b: &C, scale: usize, scratch: &mut Scratch<B>)
where where
R: VecZnxDftToMut<B>, R: VecZnxDftToMut<B>,
A: VecZnxDftToRef<B>, A: VecZnxDftToRef<B>,
C: VmpPMatToRef<B>, C: VmpPMatToRef<B>,
{ {
B::vmp_apply_add_impl(self, res, a, b, scale, scratch); B::vmp_apply_dft_to_dft_add_impl(self, res, a, b, scale, scratch);
} }
} }

View File

@@ -57,8 +57,8 @@ pub unsafe trait VmpPMatPrepareImpl<B: Backend> {
/// * See TODO for reference code. /// * See TODO for reference code.
/// * See TODO for corresponding public API. /// * See TODO for corresponding public API.
/// # Safety [crate::doc::backend_safety] for safety contract. /// # Safety [crate::doc::backend_safety] for safety contract.
pub unsafe trait VmpApplyTmpBytesImpl<B: Backend> { pub unsafe trait VmpApplyDftToDftTmpBytesImpl<B: Backend> {
fn vmp_apply_tmp_bytes_impl( fn vmp_apply_dft_to_dft_tmp_bytes_impl(
module: &Module<B>, module: &Module<B>,
res_size: usize, res_size: usize,
a_size: usize, a_size: usize,
@@ -73,8 +73,8 @@ pub unsafe trait VmpApplyTmpBytesImpl<B: Backend> {
/// * See TODO for reference code. /// * See TODO for reference code.
/// * See TODO for corresponding public API. /// * See TODO for corresponding public API.
/// # Safety [crate::doc::backend_safety] for safety contract. /// # Safety [crate::doc::backend_safety] for safety contract.
pub unsafe trait VmpApplyImpl<B: Backend> { pub unsafe trait VmpApplyDftToDftImpl<B: Backend> {
fn vmp_apply_impl<R, A, C>(module: &Module<B>, res: &mut R, a: &A, b: &C, scratch: &mut Scratch<B>) fn vmp_apply_dft_to_dft_impl<R, A, C>(module: &Module<B>, res: &mut R, a: &A, b: &C, scratch: &mut Scratch<B>)
where where
R: VecZnxDftToMut<B>, R: VecZnxDftToMut<B>,
A: VecZnxDftToRef<B>, A: VecZnxDftToRef<B>,
@@ -86,8 +86,8 @@ pub unsafe trait VmpApplyImpl<B: Backend> {
/// * See TODO for reference code. /// * See TODO for reference code.
/// * See TODO for corresponding public API. /// * See TODO for corresponding public API.
/// # Safety [crate::doc::backend_safety] for safety contract. /// # Safety [crate::doc::backend_safety] for safety contract.
pub unsafe trait VmpApplyAddTmpBytesImpl<B: Backend> { pub unsafe trait VmpApplyDftToDftAddTmpBytesImpl<B: Backend> {
fn vmp_apply_add_tmp_bytes_impl( fn vmp_apply_dft_to_dft_add_tmp_bytes_impl(
module: &Module<B>, module: &Module<B>,
res_size: usize, res_size: usize,
a_size: usize, a_size: usize,
@@ -102,10 +102,16 @@ pub unsafe trait VmpApplyAddTmpBytesImpl<B: Backend> {
/// * See TODO for reference code. /// * See TODO for reference code.
/// * See TODO for corresponding public API. /// * See TODO for corresponding public API.
/// # Safety [crate::doc::backend_safety] for safety contract. /// # Safety [crate::doc::backend_safety] for safety contract.
pub unsafe trait VmpApplyAddImpl<B: Backend> { pub unsafe trait VmpApplyDftToDftAddImpl<B: Backend> {
// Same as [MatZnxDftOps::vmp_apply] except result is added on R instead of overwritting R. // Same as [MatZnxDftOps::vmp_apply] except result is added on R instead of overwritting R.
fn vmp_apply_add_impl<R, A, C>(module: &Module<B>, res: &mut R, a: &A, b: &C, scale: usize, scratch: &mut Scratch<B>) fn vmp_apply_dft_to_dft_add_impl<R, A, C>(
where module: &Module<B>,
res: &mut R,
a: &A,
b: &C,
scale: usize,
scratch: &mut Scratch<B>,
) where
R: VecZnxDftToMut<B>, R: VecZnxDftToMut<B>,
A: VecZnxDftToRef<B>, A: VecZnxDftToRef<B>,
C: VmpPMatToRef<B>; C: VmpPMatToRef<B>;

View File

@@ -1,13 +1,13 @@
use crate::{ use crate::{
api::{ api::{
DFT, IDFTTmpA, ModuleNew, ScratchOwnedAlloc, ScratchOwnedBorrow, VecZnxBigAlloc, VecZnxBigNormalize, DFT, IDFTTmpA, ModuleNew, ScratchOwnedAlloc, ScratchOwnedBorrow, VecZnxBigAlloc, VecZnxBigNormalize,
VecZnxBigNormalizeTmpBytes, VecZnxDftAlloc, VmpApply, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare, VecZnxBigNormalizeTmpBytes, VecZnxDftAlloc, VmpApplyDftToDft, VmpApplyDftToDftTmpBytes, VmpPMatAlloc, VmpPrepare,
}, },
layouts::{MatZnx, Module, ScratchOwned, VecZnx, VecZnxBig, VecZnxDft, VmpPMat, ZnxInfos, ZnxViewMut}, layouts::{MatZnx, Module, ScratchOwned, VecZnx, VecZnxBig, VecZnxDft, VmpPMat, ZnxInfos, ZnxViewMut},
oep::{ oep::{
DFTImpl, IDFTTmpAImpl, ModuleNewImpl, ScratchOwnedAllocImpl, ScratchOwnedBorrowImpl, VecZnxBigAllocImpl, DFTImpl, IDFTTmpAImpl, ModuleNewImpl, ScratchOwnedAllocImpl, ScratchOwnedBorrowImpl, VecZnxBigAllocImpl,
VecZnxBigNormalizeImpl, VecZnxBigNormalizeTmpBytesImpl, VecZnxDftAllocImpl, VmpApplyImpl, VmpApplyTmpBytesImpl, VecZnxBigNormalizeImpl, VecZnxBigNormalizeTmpBytesImpl, VecZnxDftAllocImpl, VmpApplyDftToDftImpl,
VmpPMatAllocImpl, VmpPMatPrepareImpl, VmpApplyDftToDftTmpBytesImpl, VmpPMatAllocImpl, VmpPMatPrepareImpl,
}, },
}; };
@@ -17,14 +17,14 @@ pub fn test_vmp_apply<B>()
where where
B: Backend B: Backend
+ ModuleNewImpl<B> + ModuleNewImpl<B>
+ VmpApplyTmpBytesImpl<B> + VmpApplyDftToDftTmpBytesImpl<B>
+ VecZnxBigNormalizeTmpBytesImpl<B> + VecZnxBigNormalizeTmpBytesImpl<B>
+ VmpPMatAllocImpl<B> + VmpPMatAllocImpl<B>
+ VecZnxDftAllocImpl<B> + VecZnxDftAllocImpl<B>
+ VecZnxBigAllocImpl<B> + VecZnxBigAllocImpl<B>
+ VmpPMatPrepareImpl<B> + VmpPMatPrepareImpl<B>
+ DFTImpl<B> + DFTImpl<B>
+ VmpApplyImpl<B> + VmpApplyDftToDftImpl<B>
+ IDFTTmpAImpl<B> + IDFTTmpAImpl<B>
+ ScratchOwnedAllocImpl<B> + ScratchOwnedAllocImpl<B>
+ ScratchOwnedBorrowImpl<B> + ScratchOwnedBorrowImpl<B>
@@ -49,7 +49,7 @@ where
let mat_cols_out: usize = res_cols; let mat_cols_out: usize = res_cols;
let mut scratch = ScratchOwned::alloc( let mut scratch = ScratchOwned::alloc(
module.vmp_apply_tmp_bytes( module.vmp_apply_dft_to_dft_tmp_bytes(
res_size, res_size,
a_size, a_size,
mat_rows, mat_rows,
@@ -89,7 +89,7 @@ where
module.dft(1, 0, &mut a_dft, i, &a, i); module.dft(1, 0, &mut a_dft, i, &a, i);
}); });
module.vmp_apply(&mut c_dft, &a_dft, &vmp, scratch.borrow()); module.vmp_apply_dft_to_dft(&mut c_dft, &a_dft, &vmp, scratch.borrow());
let mut res_have_vi64: Vec<i64> = vec![i64::default(); n]; let mut res_have_vi64: Vec<i64> = vec![i64::default(); n];

View File

@@ -5,7 +5,8 @@ use poulpy_hal::{
TakeVecZnxDftSlice, TakeVecZnxSlice, VecZnxAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigNormalize, TakeVecZnxDftSlice, TakeVecZnxSlice, VecZnxAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigNormalize,
VecZnxBigNormalizeTmpBytes, VecZnxCopy, VecZnxDftAdd, VecZnxDftAddInplace, VecZnxDftAllocBytes, VecZnxDftSubABInplace, VecZnxBigNormalizeTmpBytes, VecZnxCopy, VecZnxDftAdd, VecZnxDftAddInplace, VecZnxDftAllocBytes, VecZnxDftSubABInplace,
VecZnxDftZero, VecZnxIDFTTmpBytes, VecZnxMulXpMinusOneInplace, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxDftZero, VecZnxIDFTTmpBytes, VecZnxMulXpMinusOneInplace, VecZnxNormalize, VecZnxNormalizeInplace,
VecZnxNormalizeTmpBytes, VecZnxRotate, VecZnxSubABInplace, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VecZnxNormalizeTmpBytes, VecZnxRotate, VecZnxSubABInplace, VmpApplyDftToDft, VmpApplyDftToDftAdd,
VmpApplyDftToDftTmpBytes,
}, },
layouts::{Backend, DataMut, DataRef, Module, Scratch, SvpPPol, VecZnx, ZnxView, ZnxZero}, layouts::{Backend, DataMut, DataRef, Module, Scratch, SvpPPol, VecZnx, ZnxView, ZnxZero},
}; };
@@ -32,7 +33,7 @@ pub fn cggi_blind_rotate_scratch_space<B: Backend>(
) -> usize ) -> usize
where where
Module<B>: VecZnxDftAllocBytes Module<B>: VecZnxDftAllocBytes
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VecZnxNormalizeTmpBytes + VecZnxNormalizeTmpBytes
+ VecZnxBigAllocBytes + VecZnxBigAllocBytes
+ VecZnxIDFTTmpBytes + VecZnxIDFTTmpBytes
@@ -47,7 +48,7 @@ where
let vmp_res: usize = module.vec_znx_dft_alloc_bytes(cols, brk_size) * extension_factor; let vmp_res: usize = module.vec_znx_dft_alloc_bytes(cols, brk_size) * extension_factor;
let vmp_xai: usize = module.vec_znx_dft_alloc_bytes(1, brk_size); let vmp_xai: usize = module.vec_znx_dft_alloc_bytes(1, brk_size);
let acc_dft_add: usize = vmp_res; let acc_dft_add: usize = vmp_res;
let vmp: usize = module.vmp_apply_tmp_bytes(brk_size, rows, rows, 2, 2, brk_size); // GGSW product: (1 x 2) x (2 x 2) let vmp: usize = module.vmp_apply_dft_to_dft_tmp_bytes(brk_size, rows, rows, 2, 2, brk_size); // GGSW product: (1 x 2) x (2 x 2)
let acc: usize = if extension_factor > 1 { let acc: usize = if extension_factor > 1 {
VecZnx::alloc_bytes(module.n(), cols, k_res.div_ceil(basek)) * extension_factor VecZnx::alloc_bytes(module.n(), cols, k_res.div_ceil(basek)) * extension_factor
} else { } else {
@@ -70,7 +71,7 @@ where
Module<B>: VecZnxBigAllocBytes Module<B>: VecZnxBigAllocBytes
+ VecZnxDftAllocBytes + VecZnxDftAllocBytes
+ SvpPPolAllocBytes + SvpPPolAllocBytes
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VecZnxBigNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes
+ VecZnxIDFTTmpBytes + VecZnxIDFTTmpBytes
+ IDFT<B> + IDFT<B>
@@ -88,8 +89,8 @@ where
+ VecZnxNormalizeInplace<B> + VecZnxNormalizeInplace<B>
+ VecZnxCopy + VecZnxCopy
+ VecZnxMulXpMinusOneInplace + VecZnxMulXpMinusOneInplace
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ IDFTConsume<B> + IDFTConsume<B>
+ VecZnxBigNormalize<B> + VecZnxBigNormalize<B>
+ VecZnxNormalizeTmpBytes, + VecZnxNormalizeTmpBytes,
@@ -132,7 +133,7 @@ fn execute_block_binary_extended<DataRes, DataIn, DataBrk, B: Backend>(
Module<B>: VecZnxBigAllocBytes Module<B>: VecZnxBigAllocBytes
+ VecZnxDftAllocBytes + VecZnxDftAllocBytes
+ SvpPPolAllocBytes + SvpPPolAllocBytes
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VecZnxBigNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes
+ VecZnxIDFTTmpBytes + VecZnxIDFTTmpBytes
+ IDFT<B> + IDFT<B>
@@ -151,7 +152,7 @@ fn execute_block_binary_extended<DataRes, DataIn, DataBrk, B: Backend>(
+ VecZnxCopy + VecZnxCopy
+ VecZnxMulXpMinusOneInplace + VecZnxMulXpMinusOneInplace
+ VecZnxBigNormalize<B> + VecZnxBigNormalize<B>
+ VmpApply<B>, + VmpApplyDftToDft<B>,
Scratch<B>: TakeVecZnxDftSlice<B> + TakeVecZnxDft<B> + TakeVecZnxBig<B> + TakeVecZnxSlice + ScratchAvailable + TakeVecZnx, Scratch<B>: TakeVecZnxDftSlice<B> + TakeVecZnxDft<B> + TakeVecZnxBig<B> + TakeVecZnxSlice + ScratchAvailable + TakeVecZnx,
{ {
let n_glwe: usize = brk.n(); let n_glwe: usize = brk.n();
@@ -220,7 +221,7 @@ fn execute_block_binary_extended<DataRes, DataIn, DataBrk, B: Backend>(
// vmp_res = DFT(acc) * BRK[i] // vmp_res = DFT(acc) * BRK[i]
(0..extension_factor).for_each(|i| { (0..extension_factor).for_each(|i| {
module.vmp_apply(&mut vmp_res[i], &acc_dft[i], skii.data(), scratch5); module.vmp_apply_dft_to_dft(&mut vmp_res[i], &acc_dft[i], skii.data(), scratch5);
}); });
// Trivial case: no rotation between polynomials, we can directly multiply with (X^{-ai} - 1) // Trivial case: no rotation between polynomials, we can directly multiply with (X^{-ai} - 1)
@@ -299,7 +300,7 @@ fn execute_block_binary<DataRes, DataIn, DataBrk, B: Backend>(
Module<B>: VecZnxBigAllocBytes Module<B>: VecZnxBigAllocBytes
+ VecZnxDftAllocBytes + VecZnxDftAllocBytes
+ SvpPPolAllocBytes + SvpPPolAllocBytes
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VecZnxBigNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes
+ VecZnxIDFTTmpBytes + VecZnxIDFTTmpBytes
+ IDFT<B> + IDFT<B>
@@ -317,7 +318,7 @@ fn execute_block_binary<DataRes, DataIn, DataBrk, B: Backend>(
+ VecZnxNormalizeInplace<B> + VecZnxNormalizeInplace<B>
+ VecZnxCopy + VecZnxCopy
+ VecZnxMulXpMinusOneInplace + VecZnxMulXpMinusOneInplace
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VecZnxBigNormalize<B>, + VecZnxBigNormalize<B>,
Scratch<B>: TakeVecZnxDftSlice<B> + TakeVecZnxDft<B> + TakeVecZnxBig<B> + TakeVecZnxSlice + ScratchAvailable + TakeVecZnx, Scratch<B>: TakeVecZnxDftSlice<B> + TakeVecZnxDft<B> + TakeVecZnxBig<B> + TakeVecZnxSlice + ScratchAvailable + TakeVecZnx,
{ {
@@ -377,7 +378,7 @@ fn execute_block_binary<DataRes, DataIn, DataBrk, B: Backend>(
let ai_pos: usize = ((aii + two_n as i64) & (two_n - 1) as i64) as usize; let ai_pos: usize = ((aii + two_n as i64) & (two_n - 1) as i64) as usize;
// vmp_res = DFT(acc) * BRK[i] // vmp_res = DFT(acc) * BRK[i]
module.vmp_apply(&mut vmp_res, &acc_dft, skii.data(), scratch4); module.vmp_apply_dft_to_dft(&mut vmp_res, &acc_dft, skii.data(), scratch4);
// DFT(X^ai -1) * (DFT(acc) * BRK[i]) // DFT(X^ai -1) * (DFT(acc) * BRK[i])
(0..cols).for_each(|i| { (0..cols).for_each(|i| {
@@ -413,7 +414,7 @@ fn execute_standard<DataRes, DataIn, DataBrk, B: Backend>(
Module<B>: VecZnxBigAllocBytes Module<B>: VecZnxBigAllocBytes
+ VecZnxDftAllocBytes + VecZnxDftAllocBytes
+ SvpPPolAllocBytes + SvpPPolAllocBytes
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VecZnxBigNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes
+ VecZnxIDFTTmpBytes + VecZnxIDFTTmpBytes
+ IDFT<B> + IDFT<B>
@@ -431,8 +432,8 @@ fn execute_standard<DataRes, DataIn, DataBrk, B: Backend>(
+ VecZnxNormalizeInplace<B> + VecZnxNormalizeInplace<B>
+ VecZnxCopy + VecZnxCopy
+ VecZnxMulXpMinusOneInplace + VecZnxMulXpMinusOneInplace
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ IDFTConsume<B> + IDFTConsume<B>
+ VecZnxBigNormalize<B> + VecZnxBigNormalize<B>
+ VecZnxNormalizeTmpBytes, + VecZnxNormalizeTmpBytes,

View File

@@ -5,8 +5,8 @@ use poulpy_hal::{
VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxCopy, VecZnxDftAdd, VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxCopy, VecZnxDftAdd,
VecZnxDftAddInplace, VecZnxDftAllocBytes, VecZnxDftSubABInplace, VecZnxDftZero, VecZnxFillUniform, VecZnxIDFTTmpBytes, VecZnxDftAddInplace, VecZnxDftAllocBytes, VecZnxDftSubABInplace, VecZnxDftZero, VecZnxFillUniform, VecZnxIDFTTmpBytes,
VecZnxMulXpMinusOneInplace, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxRotate, VecZnxMulXpMinusOneInplace, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxRotate,
VecZnxRotateInplace, VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VecZnxRotateInplace, VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree, VmpApplyDftToDft, VmpApplyDftToDftAdd,
VmpPMatAlloc, VmpPrepare, ZnAddNormal, ZnFillUniform, ZnNormalizeInplace, VmpApplyDftToDftTmpBytes, VmpPMatAlloc, VmpPrepare, ZnAddNormal, ZnFillUniform, ZnNormalizeInplace,
}, },
layouts::{Backend, Module, ScratchOwned, ZnxView}, layouts::{Backend, Module, ScratchOwned, ZnxView},
oep::{ oep::{
@@ -31,7 +31,7 @@ where
Module<B>: VecZnxBigAllocBytes Module<B>: VecZnxBigAllocBytes
+ VecZnxDftAllocBytes + VecZnxDftAllocBytes
+ SvpPPolAllocBytes + SvpPPolAllocBytes
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VecZnxBigNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes
+ VecZnxIDFTTmpBytes + VecZnxIDFTTmpBytes
+ IDFT<B> + IDFT<B>
@@ -64,8 +64,8 @@ where
+ VecZnxSub + VecZnxSub
+ VmpPMatAlloc<B> + VmpPMatAlloc<B>
+ VmpPrepare<B> + VmpPrepare<B>
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ ZnFillUniform + ZnFillUniform
+ ZnAddNormal + ZnAddNormal
+ ZnNormalizeInplace<B>, + ZnNormalizeInplace<B>,

View File

@@ -7,7 +7,7 @@ use poulpy_hal::{
VecZnxBigAutomorphismInplace, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxBigSubSmallBInplace, VecZnxCopy, VecZnxBigAutomorphismInplace, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxBigSubSmallBInplace, VecZnxCopy,
VecZnxDftAddInplace, VecZnxDftAllocBytes, VecZnxDftCopy, VecZnxNegateInplace, VecZnxNormalizeInplace, VecZnxDftAddInplace, VecZnxDftAllocBytes, VecZnxDftCopy, VecZnxNegateInplace, VecZnxNormalizeInplace,
VecZnxNormalizeTmpBytes, VecZnxRotate, VecZnxRotateInplace, VecZnxRshInplace, VecZnxSub, VecZnxSubABInplace, VecZnxNormalizeTmpBytes, VecZnxRotate, VecZnxRotateInplace, VecZnxRshInplace, VecZnxSub, VecZnxSubABInplace,
VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VecZnxSwithcDegree, VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes,
}, },
layouts::{Backend, DataMut, DataRef, Module, Scratch, ToOwnedDeep}, layouts::{Backend, DataMut, DataRef, Module, Scratch, ToOwnedDeep},
oep::{ScratchOwnedAllocImpl, ScratchOwnedBorrowImpl}, oep::{ScratchOwnedAllocImpl, ScratchOwnedBorrowImpl},
@@ -40,10 +40,10 @@ where
+ VecZnxCopy + VecZnxCopy
+ VecZnxSubABInplace + VecZnxSubABInplace
+ VecZnxDftAllocBytes + VecZnxDftAllocBytes
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VecZnxBigNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ DFT<B> + DFT<B>
+ IDFTConsume<B> + IDFTConsume<B>
+ VecZnxBigAddSmallInplace<B> + VecZnxBigAddSmallInplace<B>
@@ -138,10 +138,10 @@ pub fn circuit_bootstrap_core<DRes, DLwe, DBrk, BRA: BlindRotationAlgo, B>(
+ VecZnxCopy + VecZnxCopy
+ VecZnxSubABInplace + VecZnxSubABInplace
+ VecZnxDftAllocBytes + VecZnxDftAllocBytes
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VecZnxBigNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ DFT<B> + DFT<B>
+ IDFTConsume<B> + IDFTConsume<B>
+ VecZnxBigAddSmallInplace<B> + VecZnxBigAddSmallInplace<B>
@@ -263,10 +263,10 @@ fn post_process<DataRes, DataA, B: Backend>(
+ VecZnxCopy + VecZnxCopy
+ VecZnxSubABInplace + VecZnxSubABInplace
+ VecZnxDftAllocBytes + VecZnxDftAllocBytes
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VecZnxBigNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ DFT<B> + DFT<B>
+ IDFTConsume<B> + IDFTConsume<B>
+ VecZnxBigAddSmallInplace<B> + VecZnxBigAddSmallInplace<B>
@@ -335,10 +335,10 @@ pub fn pack<D: DataMut, B: Backend>(
+ VecZnxCopy + VecZnxCopy
+ VecZnxSubABInplace + VecZnxSubABInplace
+ VecZnxDftAllocBytes + VecZnxDftAllocBytes
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VecZnxBigNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ DFT<B> + DFT<B>
+ IDFTConsume<B> + IDFTConsume<B>
+ VecZnxBigAddSmallInplace<B> + VecZnxBigAddSmallInplace<B>
@@ -414,10 +414,10 @@ fn combine<A: DataMut, D: DataMut, DataAK: DataRef, B: Backend>(
+ VecZnxCopy + VecZnxCopy
+ VecZnxSubABInplace + VecZnxSubABInplace
+ VecZnxDftAllocBytes + VecZnxDftAllocBytes
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VecZnxBigNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ DFT<B> + DFT<B>
+ IDFTConsume<B> + IDFTConsume<B>
+ VecZnxBigAddSmallInplace<B> + VecZnxBigAddSmallInplace<B>

View File

@@ -8,8 +8,8 @@ use poulpy_hal::{
VecZnxBigAutomorphismInplace, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxBigSubSmallBInplace, VecZnxCopy, VecZnxBigAutomorphismInplace, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxBigSubSmallBInplace, VecZnxCopy,
VecZnxDftAddInplace, VecZnxDftAlloc, VecZnxDftAllocBytes, VecZnxDftCopy, VecZnxFillUniform, VecZnxNegateInplace, VecZnxDftAddInplace, VecZnxDftAlloc, VecZnxDftAllocBytes, VecZnxDftCopy, VecZnxFillUniform, VecZnxNegateInplace,
VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxRotate, VecZnxRotateInplace, VecZnxRshInplace, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxRotate, VecZnxRotateInplace, VecZnxRshInplace,
VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare, VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree, VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes,
ZnAddNormal, ZnFillUniform, ZnNormalizeInplace, VmpPMatAlloc, VmpPrepare, ZnAddNormal, ZnFillUniform, ZnNormalizeInplace,
}, },
layouts::{Backend, Module, ScalarZnx, ScratchOwned, ZnxView, ZnxViewMut}, layouts::{Backend, Module, ScalarZnx, ScratchOwned, ZnxView, ZnxViewMut},
oep::{ oep::{
@@ -66,9 +66,9 @@ where
+ VmpPrepare<B> + VmpPrepare<B>
+ SvpPrepare<B> + SvpPrepare<B>
+ SvpPPolAlloc<B> + SvpPPolAlloc<B>
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ SvpPPolAllocBytes + SvpPPolAllocBytes
+ VecZnxRotateInplace + VecZnxRotateInplace
+ VecZnxBigAutomorphismInplace<B> + VecZnxBigAutomorphismInplace<B>
@@ -247,9 +247,9 @@ where
+ VmpPrepare<B> + VmpPrepare<B>
+ SvpPrepare<B> + SvpPrepare<B>
+ SvpPPolAlloc<B> + SvpPPolAlloc<B>
+ VmpApplyTmpBytes + VmpApplyDftToDftTmpBytes
+ VmpApply<B> + VmpApplyDftToDft<B>
+ VmpApplyAdd<B> + VmpApplyDftToDftAdd<B>
+ SvpPPolAllocBytes + SvpPPolAllocBytes
+ VecZnxRotateInplace + VecZnxRotateInplace
+ VecZnxBigAutomorphismInplace<B> + VecZnxBigAutomorphismInplace<B>