Skip to main content

hanzo_ml/
dummy_wgpu_backend.rs

1#![allow(dead_code)]
2use crate::op::{BinaryOpT, CmpOp, ReduceOp, UnaryOpT};
3use crate::{CpuStorage, DType, Error, Layout, Result, Shape};
4
5#[derive(Debug, Clone)]
6pub struct WgpuDevice;
7
8#[derive(Debug)]
9pub struct WgpuStorage;
10
11#[derive(thiserror::Error, Debug)]
12pub enum WgpuError {
13    #[error("{0}")]
14    Message(String),
15}
16
17impl From<String> for WgpuError {
18    fn from(e: String) -> Self {
19        WgpuError::Message(e)
20    }
21}
22
23fn err<T>() -> Result<T> {
24    Err(Error::Msg("hanzo was not compiled with wgpu support".into()))
25}
26
27macro_rules! fail {
28    () => {
29        unimplemented!("wgpu support has not been enabled, add `wgpu` feature to enable.")
30    };
31}
32
33impl crate::backend::BackendStorage for WgpuStorage {
34    type Device = WgpuDevice;
35
36    fn try_clone(&self, _: &Layout) -> Result<Self> {
37        err()
38    }
39
40    fn dtype(&self) -> DType {
41        fail!()
42    }
43
44    fn device(&self) -> &Self::Device {
45        fail!()
46    }
47
48    fn const_set(&mut self, _: crate::scalar::Scalar, _: &Layout) -> Result<()> {
49        err()
50    }
51
52    fn to_cpu_storage(&self) -> Result<CpuStorage> {
53        err()
54    }
55
56    fn affine(&self, _: &Layout, _: f64, _: f64) -> Result<Self> {
57        err()
58    }
59
60    fn powf(&self, _: &Layout, _: f64) -> Result<Self> {
61        err()
62    }
63
64    fn elu(&self, _: &Layout, _: f64) -> Result<Self> {
65        err()
66    }
67
68    fn reduce_op(&self, _: ReduceOp, _: &Layout, _: &[usize]) -> Result<Self> {
69        err()
70    }
71
72    fn cmp(&self, _: CmpOp, _: &Self, _: &Layout, _: &Layout) -> Result<Self> {
73        err()
74    }
75
76    fn to_dtype(&self, _: &Layout, _: DType) -> Result<Self> {
77        err()
78    }
79
80    fn unary_impl<B: UnaryOpT>(&self, _: &Layout) -> Result<Self> {
81        err()
82    }
83
84    fn binary_impl<B: BinaryOpT>(&self, _: &Self, _: &Layout, _: &Layout) -> Result<Self> {
85        err()
86    }
87
88    fn where_cond(&self, _: &Layout, _: &Self, _: &Layout, _: &Self, _: &Layout) -> Result<Self> {
89        err()
90    }
91
92    fn conv1d(
93        &self,
94        _: &Layout,
95        _: &Self,
96        _: &Layout,
97        _: &crate::conv::ParamsConv1D,
98    ) -> Result<Self> {
99        err()
100    }
101
102    fn conv_transpose1d(
103        &self,
104        _l: &Layout,
105        _kernel: &Self,
106        _kernel_l: &Layout,
107        _params: &crate::conv::ParamsConvTranspose1D,
108    ) -> Result<Self> {
109        err()
110    }
111
112    fn conv2d(
113        &self,
114        _: &Layout,
115        _: &Self,
116        _: &Layout,
117        _: &crate::conv::ParamsConv2D,
118    ) -> Result<Self> {
119        err()
120    }
121
122    fn conv_transpose2d(
123        &self,
124        _l: &Layout,
125        _kernel: &Self,
126        _kernel_l: &Layout,
127        _params: &crate::conv::ParamsConvTranspose2D,
128    ) -> Result<Self> {
129        err()
130    }
131
132    fn index_select(&self, _: &Self, _: &Layout, _: &Layout, _: usize) -> Result<Self> {
133        err()
134    }
135    fn gather(&self, _: &Layout, _: &Self, _: &Layout, _: usize) -> Result<Self> {
136        err()
137    }
138
139    fn scatter_set(
140        &mut self,
141        _: &Layout,
142        _: &Self,
143        _: &Layout,
144        _: &Self,
145        _: &Layout,
146        _: usize,
147    ) -> Result<()> {
148        err()
149    }
150
151    fn scatter_add_set(
152        &mut self,
153        _: &Layout,
154        _: &Self,
155        _: &Layout,
156        _: &Self,
157        _: &Layout,
158        _: usize,
159    ) -> Result<()> {
160        err()
161    }
162
163    fn index_add(
164        &self,
165        _: &Layout,
166        _: &Self,
167        _: &Layout,
168        _: &Self,
169        _: &Layout,
170        _: usize,
171    ) -> Result<Self> {
172        err()
173    }
174
175    fn matmul(
176        &self,
177        _: &Self,
178        _: (usize, usize, usize, usize),
179        _: &Layout,
180        _: &Layout,
181    ) -> Result<Self> {
182        err()
183    }
184
185    fn copy_strided_src(&self, _: &mut Self, _: usize, _: &Layout) -> Result<()> {
186        err()
187    }
188
189    fn copy2d(
190        &self,
191        _: &mut Self,
192        _: usize,
193        _: usize,
194        _: usize,
195        _: usize,
196        _: usize,
197        _: usize,
198    ) -> Result<()> {
199        err()
200    }
201
202    fn avg_pool2d(&self, _: &Layout, _: (usize, usize), _: (usize, usize)) -> Result<Self> {
203        err()
204    }
205
206    fn max_pool2d(&self, _: &Layout, _: (usize, usize), _: (usize, usize)) -> Result<Self> {
207        err()
208    }
209
210    fn upsample_nearest1d(&self, _: &Layout, _: usize) -> Result<Self> {
211        err()
212    }
213
214    fn upsample_nearest2d(&self, _: &Layout, _: usize, _: usize) -> Result<Self> {
215        err()
216    }
217
218    fn upsample_bilinear2d(
219        &self,
220        _: &Layout,
221        _: usize,
222        _: usize,
223        _: bool,
224        _: Option<f64>,
225        _: Option<f64>,
226    ) -> Result<Self> {
227        err()
228    }
229}
230
231impl crate::backend::BackendDevice for WgpuDevice {
232    type Storage = WgpuStorage;
233    fn new(_: usize) -> Result<Self> {
234        err()
235    }
236
237    fn set_seed(&self, _: u64) -> Result<()> {
238        err()
239    }
240
241    fn get_current_seed(&self) -> Result<u64> {
242        err()
243    }
244
245    fn location(&self) -> crate::DeviceLocation {
246        fail!()
247    }
248
249    fn same_device(&self, _: &Self) -> bool {
250        fail!()
251    }
252
253    fn zeros_impl(&self, _shape: &Shape, _dtype: DType) -> Result<Self::Storage> {
254        err()
255    }
256
257    unsafe fn alloc_uninit(&self, _shape: &Shape, _dtype: DType) -> Result<Self::Storage> {
258        err()
259    }
260
261    fn storage_from_slice<T: crate::WithDType>(&self, _: &[T]) -> Result<Self::Storage> {
262        err()
263    }
264
265    fn storage_from_cpu_storage(&self, _: &CpuStorage) -> Result<Self::Storage> {
266        err()
267    }
268
269    fn storage_from_cpu_storage_owned(&self, _: CpuStorage) -> Result<Self::Storage> {
270        err()
271    }
272
273    fn rand_uniform(&self, _: &Shape, _: DType, _: f64, _: f64) -> Result<Self::Storage> {
274        err()
275    }
276
277    fn rand_normal(&self, _: &Shape, _: DType, _: f64, _: f64) -> Result<Self::Storage> {
278        err()
279    }
280
281    fn synchronize(&self) -> Result<()> {
282        Ok(())
283    }
284}