These articles cover performance optimization, assuming familiarity with the fundamentals and the profiling tools.
The Poisson example is a guided, end-to-end optimization of a complete application. This extended example demonstrates how to use the Nsight tools to carry out profile-guided optimization.
Part 1: Background and reference implementation (WIP)
Part 2: Iterative solver algorithm (WIP)
Part 3: Memory Pools (WIP)
Part 4: Kernel Fusion (WIP)
Part 5: cuSPARSE and Arithmetic Intensity
Part 6: Block Size Tuning (WIP)
Part 7: Laplace Kernel Tuning (WIP)
Deeper dives into individual phenomena:
Bytes In Flight (WIP) — latency hiding, Little's law, ILP, and vectorized loads
Instruction Latencies (WIP) — compute-bound optimization: measuring op costs, the roofline, function approximation
Load Balancing (WIP) — data-dependent divergence, CUB block sort, producer/consumer queues
Case studies:
SoA vs AoS — Which data layout is best for my application?
Mesh Connectivity — Using Thrust to accelerate a mesh preprocessing
Black Hole Rendering (WIP)
Granular Flow (written document WIP, sources available here, video demo)