From f2b6941a4856ae5d5b3413789f58d4ee3aa5a562 Mon Sep 17 00:00:00 2001 From: Eric Buehler Date: Sat, 12 Oct 2024 21:26:41 -0400 Subject: [PATCH] Error checking for metal --- candle-core/src/metal_backend/mod.rs | 4 ++++ candle-core/src/sort.rs | 2 ++ 2 files changed, 6 insertions(+) diff --git a/candle-core/src/metal_backend/mod.rs b/candle-core/src/metal_backend/mod.rs index 7fad400eae..400ada07b6 100644 --- a/candle-core/src/metal_backend/mod.rs +++ b/candle-core/src/metal_backend/mod.rs @@ -103,6 +103,7 @@ impl BackendStorage for MetalStorage { DType::BF16 => Ok(CpuStorage::BF16(self.to_cpu()?)), DType::F32 => Ok(CpuStorage::F32(self.to_cpu()?)), DType::F64 => Ok(CpuStorage::F64(self.to_cpu()?)), + DType::F8E4M3 => Ok(CpuStorage::F64(self.to_cpu()?)), } } @@ -2133,6 +2134,7 @@ impl BackendDevice for MetalDevice { DType::F32 => "fill_f32", DType::I32 => "fill_i32", DType::I16 => "fill_i16", + DType::F8E4M3 => crate::bail!("Metal device does not yet support F8E4M3."), DType::F64 => { let cpu_storage = crate::cpu_backend::CpuDevice.ones_impl(shape, dtype)?; return self.storage_from_cpu_storage(&cpu_storage); @@ -2170,6 +2172,7 @@ impl BackendDevice for MetalDevice { CpuStorageRef::F16(storage) => (storage.len(), self.new_buffer_with_data(storage)), CpuStorageRef::F32(storage) => (storage.len(), self.new_buffer_with_data(storage)), CpuStorageRef::F64(storage) => (storage.len(), self.new_buffer_with_data(storage)), + CpuStorageRef::F8E4M3(_) => crate::bail!("Metal device does not yet support F8E4M3."), }; Ok(Self::Storage::new(buffer?, self.clone(), count, T::DTYPE)) } @@ -2185,6 +2188,7 @@ impl BackendDevice for MetalDevice { CpuStorage::F16(storage) => (storage.len(), self.new_buffer_with_data(storage)), CpuStorage::F32(storage) => (storage.len(), self.new_buffer_with_data(storage)), CpuStorage::F64(storage) => (storage.len(), self.new_buffer_with_data(storage)), + CpuStorage::F8E4M3(_) => crate::bail!("Metal device does not yet support F8E4M3."), }; Ok(Self::Storage::new( buffer?, diff --git a/candle-core/src/sort.rs b/candle-core/src/sort.rs index c7236e7f5f..34ef0259e2 100644 --- a/candle-core/src/sort.rs +++ b/candle-core/src/sort.rs @@ -154,6 +154,7 @@ impl crate::CustomOp1 for ArgSort { DType::I64 => "asort_asc_i64", DType::I32 => "asort_asc_i32", DType::I16 => "asort_asc_i16", + DType::F8E4M3 => crate::bail!("Metal device does not yet support F8E4M3."), } } else { match storage.dtype() { @@ -166,6 +167,7 @@ impl crate::CustomOp1 for ArgSort { DType::I64 => "asort_desc_i64", DType::I32 => "asort_desc_i32", DType::I16 => "asort_desc_i16", + DType::F8E4M3 => crate::bail!("Metal device does not yet support F8E4M3."), } } };