mirror of
https://github.com/arnaucube/poulpy.git
synced 2026-02-10 05:06:44 +01:00
Update to custom fheuint prepare
This commit is contained in:
@@ -111,3 +111,9 @@ pub trait VmpApplyDftToDftAdd<B: Backend> {
|
||||
A: VecZnxDftToRef<B>,
|
||||
C: VmpPMatToRef<B>;
|
||||
}
|
||||
|
||||
pub trait VmpZero<B: Backend> {
|
||||
fn vmp_zero<R>(&self, res: &mut R)
|
||||
where
|
||||
R: VmpPMatToMut<B>;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
use crate::{
|
||||
api::{
|
||||
VmpApplyDft, VmpApplyDftTmpBytes, VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftAddTmpBytes,
|
||||
VmpApplyDftToDftTmpBytes, VmpPMatAlloc, VmpPMatBytesOf, VmpPMatFromBytes, VmpPrepare, VmpPrepareTmpBytes,
|
||||
VmpApplyDftToDftTmpBytes, VmpPMatAlloc, VmpPMatBytesOf, VmpPMatFromBytes, VmpPrepare, VmpPrepareTmpBytes, VmpZero,
|
||||
},
|
||||
layouts::{
|
||||
Backend, MatZnxToRef, Module, Scratch, VecZnxDftToMut, VecZnxDftToRef, VecZnxToRef, VmpPMatOwned, VmpPMatToMut,
|
||||
@@ -10,7 +10,7 @@ use crate::{
|
||||
oep::{
|
||||
VmpApplyDftImpl, VmpApplyDftTmpBytesImpl, VmpApplyDftToDftAddImpl, VmpApplyDftToDftAddTmpBytesImpl, VmpApplyDftToDftImpl,
|
||||
VmpApplyDftToDftTmpBytesImpl, VmpPMatAllocBytesImpl, VmpPMatAllocImpl, VmpPMatFromBytesImpl, VmpPrepareImpl,
|
||||
VmpPrepareTmpBytesImpl,
|
||||
VmpPrepareTmpBytesImpl, VmpZeroImpl,
|
||||
},
|
||||
};
|
||||
|
||||
@@ -161,3 +161,15 @@ where
|
||||
B::vmp_apply_dft_to_dft_add_impl(self, res, a, b, scale, scratch);
|
||||
}
|
||||
}
|
||||
|
||||
impl<B> VmpZero<B> for Module<B>
|
||||
where
|
||||
B: Backend + VmpZeroImpl<B>,
|
||||
{
|
||||
fn vmp_zero<R>(&self, res: &mut R)
|
||||
where
|
||||
R: VmpPMatToMut<B>,
|
||||
{
|
||||
B::vmp_zero_impl(self, res);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -145,3 +145,13 @@ pub unsafe trait VmpApplyDftToDftAddImpl<B: Backend> {
|
||||
A: VecZnxDftToRef<B>,
|
||||
C: VmpPMatToRef<B>;
|
||||
}
|
||||
|
||||
/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
|
||||
/// * See TODO.
|
||||
/// * See [crate::api::VmpZero] for corresponding public API.
|
||||
/// # Safety [crate::doc::backend_safety] for safety contract.
|
||||
pub unsafe trait VmpZeroImpl<B: Backend> {
|
||||
fn vmp_zero_impl<R>(module: &Module<B>, res: &mut R)
|
||||
where
|
||||
R: VmpPMatToMut<B>;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
use crate::{
|
||||
cast_mut,
|
||||
layouts::{MatZnx, MatZnxToRef, VecZnx, VecZnxToRef, VmpPMatToMut, ZnxView, ZnxViewMut},
|
||||
layouts::{DataViewMut, MatZnx, MatZnxToRef, VecZnx, VecZnxToRef, VmpPMatToMut, ZnxView, ZnxViewMut},
|
||||
oep::VecZnxDftAllocBytesImpl,
|
||||
reference::fft64::{
|
||||
reim::{ReimDFTExecute, ReimFFTTable, ReimFromZnx, ReimZero},
|
||||
@@ -157,6 +157,13 @@ pub fn vmp_apply_dft_to_dft_tmp_bytes(a_size: usize, prows: usize, pcols_in: usi
|
||||
(16 + 8 * row_max * pcols_in) * size_of::<f64>()
|
||||
}
|
||||
|
||||
pub fn vmp_zero<R, BE: Backend>(res: &mut R)
|
||||
where
|
||||
R: VmpPMatToMut<BE>,
|
||||
{
|
||||
res.to_mut().data_mut().fill(0);
|
||||
}
|
||||
|
||||
pub fn vmp_apply_dft_to_dft<R, A, M, BE>(res: &mut R, a: &A, pmat: &M, tmp_bytes: &mut [f64])
|
||||
where
|
||||
BE: Backend<ScalarPrep = f64>
|
||||
|
||||
Reference in New Issue
Block a user