diff --git a/candle-core/Cargo.toml b/candle-core/Cargo.toml index f717e206..c5521c92 100644 --- a/candle-core/Cargo.toml +++ b/candle-core/Cargo.toml @@ -12,7 +12,6 @@ readme = "README.md" [dependencies] accelerate-src = { workspace = true, optional = true } byteorder = { workspace = true } -tracing = { workspace = true } candle-kernels = { path = "../candle-kernels", version = "0.3.0", optional = true } metal = { workspace = true, optional = true} cudarc = { workspace = true, optional = true } diff --git a/candle-core/src/device.rs b/candle-core/src/device.rs index ce6a4b1b..de57c03a 100644 --- a/candle-core/src/device.rs +++ b/candle-core/src/device.rs @@ -1,6 +1,6 @@ use crate::backend::BackendDevice; use crate::cpu_backend::CpuDevice; -use crate::{bail, CpuStorage, DType, Result, Shape, Storage, WithDType}; +use crate::{CpuStorage, DType, Result, Shape, Storage, WithDType}; /// A `DeviceLocation` represents a physical device whereas multiple `Device` /// can live on the same location (typically for cuda devices). @@ -105,14 +105,14 @@ impl NdArray for Vec { fn shape(&self) -> Result { if self.is_empty() { - bail!("empty array") + crate::bail!("empty array") } let shape0 = self[0].shape()?; let n = self.len(); for v in self.iter() { let shape = v.shape()?; if shape != shape0 { - bail!("two elements have different shapes {shape:?} {shape0:?}") + crate::bail!("two elements have different shapes {shape:?} {shape0:?}") } } Ok(Shape::from([[n].as_slice(), shape0.dims()].concat())) @@ -166,6 +166,10 @@ impl Device { matches!(self, Self::Cuda(_)) } + pub fn is_metal(&self) -> bool { + matches!(self, Self::Metal(_)) + } + pub fn cuda_if_available(ordinal: usize) -> Result { if crate::utils::cuda_is_available() { Self::new_cuda(ordinal) @@ -199,7 +203,7 @@ impl Device { Device::Metal(_device) => { // let storage = device.rand_uniform(shape, dtype, lo, up)?; // Ok(Storage::Metal(storage)) - bail!("Metal rand_uniform not implemented") + crate::bail!("Metal rand_uniform not implemented") } } }