Skip to main content

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