summaryrefslogtreecommitdiff
path: root/candle-core/src/dummy_cuda_backend.rs
diff options
context:
space:
mode:
Diffstat (limited to 'candle-core/src/dummy_cuda_backend.rs')
-rw-r--r--candle-core/src/dummy_cuda_backend.rs118
1 files changed, 55 insertions, 63 deletions
diff --git a/candle-core/src/dummy_cuda_backend.rs b/candle-core/src/dummy_cuda_backend.rs
index f5c80fcf..a81dda57 100644
--- a/candle-core/src/dummy_cuda_backend.rs
+++ b/candle-core/src/dummy_cuda_backend.rs
@@ -1,142 +1,134 @@
#![allow(dead_code)]
use crate::{CpuStorage, DType, Error, Layout, Result, Shape};
-#[derive(thiserror::Error, Debug)]
-pub enum DummyError {}
-pub type CudaError = DummyError;
-
#[derive(Debug, Clone)]
pub struct CudaDevice;
+#[derive(Debug)]
+pub struct CudaStorage;
+
macro_rules! fail {
() => {
unimplemented!("cuda support has not been enabled")
};
}
-impl CudaDevice {
- pub(crate) fn new(_: usize) -> Result<Self> {
+impl crate::backend::BackendStorage for CudaStorage {
+ type Device = CudaDevice;
+
+ fn try_clone(&self, _: &Layout) -> Result<Self> {
Err(Error::NotCompiledWithCudaSupport)
}
- pub(crate) fn same_id(&self, _: &Self) -> bool {
- true
+ fn dtype(&self) -> DType {
+ fail!()
}
- pub(crate) fn ordinal(&self) -> usize {
+ fn device(&self) -> &Self::Device {
fail!()
}
- pub(crate) fn zeros_impl(&self, _shape: &Shape, _dtype: DType) -> Result<CudaStorage> {
+ fn to_cpu_storage(&self) -> Result<CpuStorage> {
Err(Error::NotCompiledWithCudaSupport)
}
- pub(crate) fn ones_impl(&self, _shape: &Shape, _dtype: DType) -> Result<CudaStorage> {
+ fn affine(&self, _: &Layout, _: f64, _: f64) -> Result<Self> {
Err(Error::NotCompiledWithCudaSupport)
}
- pub(crate) fn cuda_from_cpu_storage(&self, _: &CpuStorage) -> Result<CudaStorage> {
+ fn elu(&self, _: &Layout, _: f64) -> Result<Self> {
Err(Error::NotCompiledWithCudaSupport)
}
- pub(crate) fn rand_uniform(&self, _: &Shape, _: DType, _: f64, _: f64) -> Result<CudaStorage> {
+ fn sum(&self, _: &Layout, _: &[usize]) -> Result<Self> {
Err(Error::NotCompiledWithCudaSupport)
}
- pub(crate) fn rand_normal(&self, _: &Shape, _: DType, _: f64, _: f64) -> Result<CudaStorage> {
+ fn divide_by_sum_over_dim(&mut self, _: &Shape, _: usize) -> Result<()> {
Err(Error::NotCompiledWithCudaSupport)
}
-}
-#[derive(Debug)]
-pub struct CudaStorage;
-
-impl CudaStorage {
- pub fn try_clone(&self, _: &Layout) -> Result<Self> {
+ fn to_dtype(&self, _: &Layout, _: DType) -> Result<Self> {
Err(Error::NotCompiledWithCudaSupport)
}
- pub fn dtype(&self) -> DType {
- fail!()
+ fn unary_impl<B: crate::op::UnaryOp>(&self, _: &Layout) -> Result<Self> {
+ Err(Error::NotCompiledWithCudaSupport)
}
- pub fn device(&self) -> &CudaDevice {
- fail!()
+ fn binary_impl<B: crate::op::BinaryOp>(
+ &self,
+ _: &Self,
+ _: &Layout,
+ _: &Layout,
+ ) -> Result<Self> {
+ Err(Error::NotCompiledWithCudaSupport)
}
- pub(crate) fn to_cpu_storage(&self) -> Result<CpuStorage> {
+ fn where_cond(&self, _: &Layout, _: &Self, _: &Layout, _: &Self, _: &Layout) -> Result<Self> {
Err(Error::NotCompiledWithCudaSupport)
}
- pub(crate) fn affine(&self, _: &Layout, _: f64, _: f64) -> Result<Self> {
+ fn conv1d(
+ &self,
+ _: &Layout,
+ _: &Self,
+ _: &Layout,
+ _: &crate::conv::ParamsConv1D,
+ ) -> Result<Self> {
Err(Error::NotCompiledWithCudaSupport)
}
- pub(crate) fn elu(&self, _: &Layout, _: f64) -> Result<Self> {
+ fn embedding(&self, _: &Layout, _: &Self, _: &Layout) -> Result<Self> {
Err(Error::NotCompiledWithCudaSupport)
}
- pub(crate) fn sum(&self, _: &Layout, _: &[usize]) -> Result<Self> {
+ fn matmul(
+ &self,
+ _: &Self,
+ _: (usize, usize, usize, usize),
+ _: &Layout,
+ _: &Layout,
+ ) -> Result<Self> {
Err(Error::NotCompiledWithCudaSupport)
}
- pub(crate) fn divide_by_sum_over_dim(&mut self, _: &Shape, _: usize) -> Result<()> {
+ fn copy_strided_src(&self, _: &mut Self, _: usize, _: &Layout) -> Result<()> {
Err(Error::NotCompiledWithCudaSupport)
}
+}
- pub(crate) fn to_dtype(&self, _: &Layout, _: DType) -> Result<Self> {
+impl crate::backend::BackendDevice for CudaDevice {
+ type Storage = CudaStorage;
+ fn new(_: usize) -> Result<Self> {
Err(Error::NotCompiledWithCudaSupport)
}
- pub(crate) fn unary_impl<B: crate::op::UnaryOp>(&self, _: &Layout) -> Result<Self> {
- Err(Error::NotCompiledWithCudaSupport)
+ fn location(&self) -> crate::DeviceLocation {
+ fail!()
}
- pub(crate) fn binary_impl<B: crate::op::BinaryOp>(
- &self,
- _: &Self,
- _: &Layout,
- _: &Layout,
- ) -> Result<Self> {
- Err(Error::NotCompiledWithCudaSupport)
+ fn same_device(&self, _: &Self) -> bool {
+ fail!()
}
- pub(crate) fn where_cond(
- &self,
- _: &Layout,
- _: &Self,
- _: &Layout,
- _: &Self,
- _: &Layout,
- ) -> Result<Self> {
+ fn zeros_impl(&self, _shape: &Shape, _dtype: DType) -> Result<Self::Storage> {
Err(Error::NotCompiledWithCudaSupport)
}
- pub(crate) fn conv1d(
- &self,
- _l: &Layout,
- _kernel: &Self,
- _kernel_l: &Layout,
- _params: &crate::conv::ParamsConv1D,
- ) -> Result<Self> {
+ fn ones_impl(&self, _shape: &Shape, _dtype: DType) -> Result<Self::Storage> {
Err(Error::NotCompiledWithCudaSupport)
}
- pub(crate) fn embedding(&self, _: &Layout, _: &Self, _: &Layout) -> Result<Self> {
+ fn storage_from_cpu_storage(&self, _: &CpuStorage) -> Result<Self::Storage> {
Err(Error::NotCompiledWithCudaSupport)
}
- pub(crate) fn matmul(
- &self,
- _: &Self,
- _: (usize, usize, usize, usize),
- _: &Layout,
- _: &Layout,
- ) -> Result<Self> {
+ fn rand_uniform(&self, _: &Shape, _: DType, _: f64, _: f64) -> Result<Self::Storage> {
Err(Error::NotCompiledWithCudaSupport)
}
- pub(crate) fn copy_strided_src(&self, _: &mut Self, _: usize, _: &Layout) -> Result<()> {
+ fn rand_normal(&self, _: &Shape, _: DType, _: f64, _: f64) -> Result<Self::Storage> {
Err(Error::NotCompiledWithCudaSupport)
}
}