pub trait AssignOps<T, S: Shape = (), D: Device = Self>: Device {
    // Required methods
    fn add_assign(
        &self,
        lhs: &mut Buffer<'_, T, Self, S>,
        rhs: &Buffer<'_, T, D, S>
    );
    fn sub_assign(
        &self,
        lhs: &mut Buffer<'_, T, Self, S>,
        rhs: &Buffer<'_, T, D, S>
    );
    fn mul_assign(
        &self,
        lhs: &mut Buffer<'_, T, Self, S>,
        rhs: &Buffer<'_, T, D, S>
    );
}
Expand description

Assignment operations

Examples

use custos::{CPU, Read};
use custos_math::{Matrix, AssignOps};

let device = CPU::new();
let mut lhs = Matrix::from((&device, 2, 2, [3, 5, 4, 1]));
let rhs = Matrix::from((&device, 2, 2, [1, 8, 6, 2]));

device.add_assign(&mut lhs, &rhs);
assert_eq!(vec![4, 13, 10, 3], lhs.read());

device.sub_assign(&mut lhs, &rhs);
assert_eq!(vec![3, 5, 4, 1], lhs.read());

Required Methods§

source

fn add_assign(&self, lhs: &mut Buffer<'_, T, Self, S>, rhs: &Buffer<'_, T, D, S>)

Add assign

Examples
use custos::{CPU, Read};
use custos_math::{Matrix, AssignOps};

let device = CPU::new();
let mut lhs = Matrix::from((&device, 2, 2, [3, 5, 4, 1]));
let rhs = Matrix::from((&device, 2, 2, [1, 8, 6, 2]));

device.add_assign(&mut lhs, &rhs);
assert_eq!(vec![4, 13, 10, 3], lhs.read());

device.sub_assign(&mut lhs, &rhs);
assert_eq!(vec![3, 5, 4, 1], lhs.read());
source

fn sub_assign(&self, lhs: &mut Buffer<'_, T, Self, S>, rhs: &Buffer<'_, T, D, S>)

source

fn mul_assign(&self, lhs: &mut Buffer<'_, T, Self, S>, rhs: &Buffer<'_, T, D, S>)

Implementors§

source§

impl<T: Number, D: MainMemory, S: Shape> AssignOps<T, S, D> for CPU

source§

impl<T: CDatatype> AssignOps<T, (), CUDA> for CUDA

source§

impl<T: CDatatype> AssignOps<T, (), OpenCL> for OpenCL