From f0eaddb63ee60c4b1a9f7d0d1edc190d95532e82 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Bossuat Date: Fri, 25 Apr 2025 08:57:08 +0200 Subject: [PATCH] Added memory layout field --- base2k/src/lib.rs | 8 ++++++++ base2k/src/svp.rs | 3 ++- base2k/src/vec_znx.rs | 7 +++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/base2k/src/lib.rs b/base2k/src/lib.rs index ec0d2b7..86cd1fd 100644 --- a/base2k/src/lib.rs +++ b/base2k/src/lib.rs @@ -27,6 +27,14 @@ pub use vmp::*; pub const GALOISGENERATOR: u64 = 5; pub const DEFAULTALIGN: usize = 64; +#[derive(Copy, Clone)] +#[repr(u8)] +pub enum LAYOUT { + ROW, + COL, +} + + pub fn is_aligned_custom(ptr: *const T, align: usize) -> bool { (ptr as usize) % align == 0 } diff --git a/base2k/src/svp.rs b/base2k/src/svp.rs index a55f954..7dfebbc 100644 --- a/base2k/src/svp.rs +++ b/base2k/src/svp.rs @@ -1,6 +1,6 @@ use crate::ffi::svp::{self, svp_ppol_t}; use crate::ffi::vec_znx_dft::vec_znx_dft_t; -use crate::{BACKEND, Module, VecZnx, VecZnxDft, assert_alignement}; +use crate::{assert_alignement, Module, VecZnx, VecZnxDft, BACKEND, LAYOUT}; use crate::{Infos, alloc_aligned, cast_mut}; use rand::seq::SliceRandom; @@ -119,6 +119,7 @@ impl Scalar { n: self.n, size: 1, // TODO REVIEW IF NEED TO ADD size TO SCALAR cols: 1, + layout: LAYOUT::COL, data: Vec::new(), ptr: self.ptr, } diff --git a/base2k/src/vec_znx.rs b/base2k/src/vec_znx.rs index f68ed9c..9d78dfa 100644 --- a/base2k/src/vec_znx.rs +++ b/base2k/src/vec_znx.rs @@ -1,6 +1,7 @@ use crate::cast_mut; use crate::ffi::vec_znx; use crate::ffi::znx; +use crate::LAYOUT; use crate::{Infos, Module}; use crate::{alloc_aligned, assert_alignement}; use itertools::izip; @@ -24,6 +25,9 @@ pub struct VecZnx { /// Stack size pub size: usize, + /// Stacking layout + pub layout: LAYOUT, + /// Number of columns. pub cols: usize, @@ -59,6 +63,7 @@ impl VecZnx { n: n, size: size, cols: cols, + layout: LAYOUT::COL, data: Vec::from_raw_parts(ptr, bytes.len(), bytes.len()), ptr: ptr, } @@ -76,6 +81,7 @@ impl VecZnx { n: n, size: size, cols: cols, + layout: LAYOUT::COL, data: Vec::new(), ptr: bytes.as_mut_ptr() as *mut i64, } @@ -254,6 +260,7 @@ impl VecZnx { Self { n: n, size: size, + layout: LAYOUT::COL, cols: cols, data: data, ptr: ptr,