arnaucube
arnaucube/poulpyPublic Self-hosted repository
Added memory layout field
Jean-Philippe Bossuat jeanphilippe.bossuat@gmail.com
Fri, 25 Apr 2025 08:57:08 +0200
commit

f0eaddb63ee60c4b1a9f7d0d1edc190d95532e82

parent

f64d7868196d448aa24679a53b60c24053d2d722

3 files changed, 17 insertions(+), 1 deletions(-)

jump to
M base2k/src/lib.rs → base2k/src/lib.rs

@@ -27,6 +27,14 @@

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<T>(ptr: *const T, align: usize) -> bool { (ptr as usize) % align == 0 }
M base2k/src/svp.rs → 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 @@ VecZnx {

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, }
M base2k/src/vec_znx.rs → 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 @@

/// Stack size pub size: usize, + /// Stacking layout + pub layout: LAYOUT, + /// Number of columns. pub cols: usize,

@@ -59,6 +63,7 @@ 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 @@ 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 @@ let ptr: *mut i64 = data.as_mut_ptr();

Self { n: n, size: size, + layout: LAYOUT::COL, cols: cols, data: data, ptr: ptr,