Week 18 — Coding Projects

Core

Implement DFT first, then FFT.

  • NumPy: Implement O(N²) DFT manually. Compare against numpy.fft.fft. Visualize magnitude spectra of simple signals.
  • Metal: Small DFT or radix-2 FFT prototype using buffer ping-pong for stages. · Reading: MBT — compute-heavy multi-stage algorithms, buffer ping-pong, performance debugging.
  • Vulkan: Compute DFT/FFT prototype with staged compute pipelines. · Reading: Vulkan Book — staged compute pipelines, storage buffers, synchronization between FFT passes.
  • CUDA: Radix-2 FFT prototype with shared-memory staging. · Reading: CUDA Book — multi-stage compute, shared-memory staging, memory access patterns.
  • Stretch: 2D FFT for images. Frequency-domain filtering.
  • Verify: DFT matches NumPy within tolerance · Peaks appear where expected for sinusoidal signals · Inverse transform reconstructs original signal.