mlx/tests
Arkar Min Aung e5c8773371 feat(metal): implement complete Metal SVD with Jacobi algorithm
Add GPU-accelerated SVD implementation for Apple Silicon using Metal compute kernels.

FEATURES:
 Complete one-sided Jacobi SVD algorithm in Metal
 Full GPU acceleration with proper Metal integration
 Mathematical correctness verified against CPU reference
 Support for both singular values only and full SVD (U, S, Vt)
 Comprehensive input validation and error handling
 Production-ready implementation with extensive testing

IMPLEMENTATION:
- Metal compute kernels implementing Jacobi algorithm
- Proper MLX primitive integration with eval_gpu support
- Optimized for matrices up to 64x64 (shared memory limitation)
- Float32 precision (Metal hardware limitation)
- Batched operations support

TESTING:
- Comprehensive test suite with 10 test cases
- Mathematical correctness validation
- Shape and type verification
- Edge case handling
- Performance characteristics testing

This transforms MLX from 'Metal GPU SVD not yet implemented' to a
complete, working GPU-accelerated SVD solution.
2025-06-15 17:44:38 +10:00
..
allocator_tests.cpp Metal validation (#432) 2024-01-11 11:57:24 -08:00
arg_reduce_tests.cpp Use int64 stride everywhere (#1671) 2024-12-09 11:09:02 -08:00
array_tests.cpp Use int64 stride everywhere (#1671) 2024-12-09 11:09:02 -08:00
autograd_tests.cpp Fix some complex vjps (#2178) 2025-05-14 23:37:12 -07:00
blas_tests.cpp Use int64 stride everywhere (#1671) 2024-12-09 11:09:02 -08:00
CMakeLists.txt feat(metal): implement complete Metal SVD with Jacobi algorithm 2025-06-15 17:44:38 +10:00
compile_tests.cpp fix compile merging (#2150) 2025-05-02 15:08:50 -07:00
creations_tests.cpp Remove test of converting negative float to uint (#2048) 2025-04-06 06:21:46 -07:00
custom_vjp_tests.cpp Update pre-commit hooks (#984) 2024-04-11 07:27:53 -07:00
device_tests.cpp copyright + ack 2023-11-30 11:12:53 -08:00
einsum_tests.cpp Einsum (#1269) 2024-07-25 09:36:44 -07:00
eval_tests.cpp Shared events for synchronization + async eval (#998) 2024-04-17 06:16:02 -07:00
export_import_tests.cpp Use unordered map for kwargs in export/import (#2087) 2025-04-21 07:17:22 -07:00
fft_tests.cpp Fix some complex vjps (#2178) 2025-05-14 23:37:12 -07:00
gpu_tests.cpp Remove metal-only tests (#2139) 2025-04-30 09:08:39 -07:00
linalg_tests.cpp Adds nuclear norm support (#1894) 2025-03-04 13:26:02 -08:00
load_tests.cpp Use int64 stride everywhere (#1671) 2024-12-09 11:09:02 -08:00
ops_tests.cpp Fix out-of-bounds default value in logsumexp/softmax (#2213) 2025-05-21 07:25:16 -07:00
random_tests.cpp Resolved ambiguity in mlx::core::take_along_axis (#1822) 2025-02-04 06:06:17 -08:00
scheduler_tests.cpp redesign for faster cpu/gpu synch (#1869) 2025-03-06 19:23:38 -08:00
test_metal_svd.cpp feat(metal): implement complete Metal SVD with Jacobi algorithm 2025-06-15 17:44:38 +10:00
tests.cpp copyright + ack 2023-11-30 11:12:53 -08:00
utils_tests.cpp iinfo and scalar overflow detection (#2009) 2025-03-27 19:54:56 -07:00
vmap_tests.cpp Adds nuclear norm support (#1894) 2025-03-04 13:26:02 -08:00