arnaucube
arnaucube/poulpyPublic Self-hosted repository
poulpy/backend/src/implementation/cpu_spqlios/mat_znx.rs
backend/src/implementation/cpu_spqlios/mat_znx.rsRaw
 1use crate::{
 2    hal::{
 3        layouts::{Backend, MatZnxOwned, Module},
 4        oep::{MatZnxAllocBytesImpl, MatZnxAllocImpl, MatZnxFromBytesImpl},
 5    },
 6    implementation::cpu_spqlios::CPUAVX,
 7};
 8
 9unsafe impl<B: Backend> MatZnxAllocImpl<B> for B
10where
11    B: CPUAVX,
12{
13    fn mat_znx_alloc_impl(module: &Module<B>, rows: usize, cols_in: usize, cols_out: usize, size: usize) -> MatZnxOwned {
14        MatZnxOwned::new(module.n(), rows, cols_in, cols_out, size)
15    }
16}
17
18unsafe impl<B: Backend> MatZnxAllocBytesImpl<B> for B
19where
20    B: CPUAVX,
21{
22    fn mat_znx_alloc_bytes_impl(module: &Module<B>, rows: usize, cols_in: usize, cols_out: usize, size: usize) -> usize {
23        MatZnxOwned::bytes_of(module.n(), rows, cols_in, cols_out, size)
24    }
25}
26
27unsafe impl<B: Backend> MatZnxFromBytesImpl<B> for B
28where
29    B: CPUAVX,
30{
31    fn mat_znx_from_bytes_impl(
32        module: &Module<B>,
33        rows: usize,
34        cols_in: usize,
35        cols_out: usize,
36        size: usize,
37        bytes: Vec<u8>,
38    ) -> MatZnxOwned {
39        MatZnxOwned::new_from_bytes(module.n(), rows, cols_in, cols_out, size, bytes)
40    }
41}