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::alloc(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::from_bytes(module.n(), rows, cols_in, cols_out, size, bytes)
40 }
41}