From f4789ab8b9edd080fae9819ec3d14807e370c02d Mon Sep 17 00:00:00 2001 From: Arkar Min Aung Date: Sat, 14 Jun 2025 21:23:04 +1000 Subject: [PATCH] feat: Add SVD primitive GPU evaluation support - Implement SVD::eval_gpu in Metal primitives backend - Add proper float32/float64 type dispatch - Include clear error messages for unsupported double precision - Connect SVD primitive to Metal backend implementation - Enable GPU path for SVD operations in MLX --- mlx/backend/metal/primitives.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mlx/backend/metal/primitives.cpp b/mlx/backend/metal/primitives.cpp index 19f3ab446..c44a1b2eb 100644 --- a/mlx/backend/metal/primitives.cpp +++ b/mlx/backend/metal/primitives.cpp @@ -348,7 +348,10 @@ void SVD::eval_gpu( svd_metal_impl(inputs[0], outputs, compute_uv_, d, s); break; case float64: - svd_metal_impl(inputs[0], outputs, compute_uv_, d, s); + // Metal does not support double precision, fall back to CPU + throw std::runtime_error( + "[SVD::eval_gpu] Double precision not supported on Metal GPU. " + "Use mx.set_default_device(mx.cpu) for float64 SVD operations."); break; default: throw std::runtime_error(