Week 7 — Coding Projects
Core
Compute covariance matrices and study floating-point stability.
- NumPy: Generate correlated data. Compute covariance manually. Compare one-pass vs. two-pass variance formulas. Show catastrophic cancellation example.
- Metal: Mean reduction kernel then covariance accumulation. Compare float32 and float16 where available. · Reading: MBT — reductions, parallel accumulation, synchronization concepts in compute chapters.
- Vulkan: Compute shader for mean and covariance with workgroup shared memory. · Reading: Vulkan Book — workgroup shared memory, barriers, reduction patterns.
- CUDA: Parallel reduction for means then a covariance kernel. · Reading: CUDA Book — reductions, numeric stability, accumulation strategies.
- Stretch: Add Kahan summation on CPU reference. Compare float16/float32 effects.
- Verify: Covariance is symmetric within tolerance · Two-pass formulas are more stable on adversarial data · GPU and CPU results are close.