Capstone Projects

Command-line tool that loads a PNG/JPEG (stb_image), applies grayscale, blur, sharpen, and Sobel filters on the GPU, and saves the result; report speedup vs CPU.

Project 1 — GPU image filter tool (beginner)

Command-line tool that loads a PNG/JPEG (stb_image), applies grayscale, blur, sharpen, and Sobel filters on the GPU, and saves the result; report speedup vs CPU. *Concepts: 2-D indexing, memory management, error checking, timing.*

Project 2 — Parallel primitives library (intermediate)

Implement reduce, scan (multi-block), histogram, compact, and radix sort; benchmark against CUB/Thrust; achieve ≥70% of CUB performance on at least two primitives. *Concepts: shared memory, warp shuffles, atomics, multi-pass algorithms.*

Project 3 — High-performance SGEMM (intermediate/advanced)

Progressively optimize matrix multiplication: naive → shared-memory tiling → register tiling → vectorized loads → double buffering (async copy) → Tensor Cores (WMMA); chart GFLOP/s at each step against cuBLAS. *Concepts: memory hierarchy, occupancy, ILP, Tensor Cores, profiling.*

Project 4 — N-body / particle simulation with OpenGL visualization (advanced)

Real-time simulation of 100K+ particles with shared-memory tiling, CUDA–OpenGL interop for rendering, and interactive controls. *Concepts: compute-bound optimization, graphics interop, streams.*

Project 5 — 2-D/3-D heat or fluid solver (advanced)

Finite-difference or Lattice Boltzmann solver with stencil optimization, multi-GPU domain decomposition (P2P or NCCL/MPI halo exchange), and VTK output for ParaView. *Concepts: stencils, multi-GPU, communication overlap.*

Project 6 — Custom deep learning op (advanced)

Write a fused LayerNorm + GELU or a FlashAttention-style attention kernel as a PyTorch CUDA extension (or in Triton); verify gradients with torch.autograd.gradcheck; benchmark vs PyTorch. *Concepts: reductions, fusion, mixed precision, framework integration.*

Project 7 — GPU-accelerated database operator (expert)

Implement a GPU hash join and group-by aggregation over columnar data (Arrow), handling data larger than GPU memory with streaming chunks and unified memory prefetching. *Concepts: hash tables, atomics, memory management, out-of-core processing.*

Project 8 — Ray tracer (expert)

Path tracer with BVH acceleration structure built on the GPU, materials, and progressive rendering; compare a pure-CUDA implementation with OptiX. *Concepts: divergence management, irregular memory access, persistent threads, RNG.*