Skip to main content

rstsr_core/device_cpu_serial/linalg/
vecdot.rs

1use crate::prelude_dev::*;
2use num::Zero;
3
4impl<TA, TB, TC, DA, DB, DC> DeviceVecdotAPI<TA, TB, TC, DA, DB, DC> for DeviceCpuSerial
5where
6    TA: Clone,
7    TB: Clone,
8    TC: Clone + Zero,
9    DA: DimAPI,
10    DB: DimAPI,
11    DC: DimAPI,
12    TA: Mul<TB, Output = TC>,
13    TA: ExtNum,
14    Self: DeviceAPI<TA, Raw = Vec<TA>> + DeviceAPI<TB, Raw = Vec<TB>> + DeviceAPI<TC, Raw = Vec<TC>>,
15{
16    fn vecdot(
17        &self,
18        c: &mut Vec<MaybeUninit<TC>>,
19        lc: &Layout<DC>,
20        a: &Vec<TA>,
21        la: &Layout<DA>,
22        b: &Vec<TB>,
23        lb: &Layout<DB>,
24        axes_a: &[isize],
25        axes_b: &[isize],
26    ) -> Result<()> {
27        vecdot_naive_cpu_serial(c, lc, a, la, b, lb, axes_a, axes_b, self.default_order())
28    }
29}