Skip to main content

burn_vision/backends/cpu/
ops.rs

1#[cfg(feature = "ndarray")]
2mod ndarray {
3    use crate::{BoolVisionOps, FloatVisionOps, IntVisionOps, QVisionOps, VisionBackend};
4    use burn_ndarray::{
5        FloatNdArrayElement, IntNdArrayElement, NdArray, NdArrayTensor, QuantElement, SharedArray,
6    };
7
8    impl<E: FloatNdArrayElement, I: IntNdArrayElement, Q: QuantElement> BoolVisionOps
9        for NdArray<E, I, Q>
10    where
11        NdArrayTensor: From<SharedArray<E>>,
12        NdArrayTensor: From<SharedArray<I>>,
13    {
14    }
15    impl<E: FloatNdArrayElement, I: IntNdArrayElement, Q: QuantElement> IntVisionOps
16        for NdArray<E, I, Q>
17    where
18        NdArrayTensor: From<SharedArray<E>>,
19        NdArrayTensor: From<SharedArray<I>>,
20    {
21    }
22    impl<E: FloatNdArrayElement, I: IntNdArrayElement, Q: QuantElement> FloatVisionOps
23        for NdArray<E, I, Q>
24    where
25        NdArrayTensor: From<SharedArray<E>>,
26        NdArrayTensor: From<SharedArray<I>>,
27    {
28    }
29    impl<E: FloatNdArrayElement, I: IntNdArrayElement, Q: QuantElement> QVisionOps for NdArray<E, I, Q>
30    where
31        NdArrayTensor: From<SharedArray<E>>,
32        NdArrayTensor: From<SharedArray<I>>,
33    {
34    }
35    impl<E: FloatNdArrayElement, I: IntNdArrayElement, Q: QuantElement> VisionBackend
36        for NdArray<E, I, Q>
37    where
38        NdArrayTensor: From<SharedArray<E>>,
39        NdArrayTensor: From<SharedArray<I>>,
40    {
41    }
42}
43
44#[cfg(feature = "candle")]
45mod candle {
46    use crate::{BoolVisionOps, FloatVisionOps, IntVisionOps, QVisionOps, VisionBackend};
47    use burn_candle::{Candle, FloatCandleElement, IntCandleElement};
48
49    impl<F: FloatCandleElement, I: IntCandleElement> BoolVisionOps for Candle<F, I> {}
50    impl<F: FloatCandleElement, I: IntCandleElement> IntVisionOps for Candle<F, I> {}
51    impl<F: FloatCandleElement, I: IntCandleElement> FloatVisionOps for Candle<F, I> {}
52    impl<F: FloatCandleElement, I: IntCandleElement> QVisionOps for Candle<F, I> {}
53    impl<F: FloatCandleElement, I: IntCandleElement> VisionBackend for Candle<F, I> {}
54}
55
56#[cfg(feature = "tch")]
57mod tch {
58    use crate::{BoolVisionOps, FloatVisionOps, IntVisionOps, QVisionOps, VisionBackend};
59    use burn_tch::{LibTorch, TchElement};
60
61    impl<E: TchElement, Q: burn_tch::QuantElement> BoolVisionOps for LibTorch<E, Q> {}
62    impl<E: TchElement, Q: burn_tch::QuantElement> IntVisionOps for LibTorch<E, Q> {}
63    impl<E: TchElement, Q: burn_tch::QuantElement> FloatVisionOps for LibTorch<E, Q> {}
64    impl<E: TchElement, Q: burn_tch::QuantElement> QVisionOps for LibTorch<E, Q> {}
65    impl<E: TchElement, Q: burn_tch::QuantElement> VisionBackend for LibTorch<E, Q> {}
66}