diff options
Diffstat (limited to 'candle-core/src/dummy_cuda_backend.rs')
-rw-r--r-- | candle-core/src/dummy_cuda_backend.rs | 118 |
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) } } |