Further reading
NVIDIA profiling tools
- Nsight Systems User Guide — capture modes, CUDA/NVTX tracing, CPU sampling, GPU metrics, and CLI options.
- Nsight Systems post-collection analysis — reports, recipes, and trace export.
- Nsight Compute documentation — UI, CLI, profiling guide, and developer interfaces.
- Nsight Compute Profiling Guide — replay, metric semantics, scheduler states, occupancy, rooflines, and stall reasons.
- Nsight Compute CLI Guide — filtering, sections, NVTX, multi-process profiling, and report import.
- NVIDIA performance-counter permissions — current Windows, Linux, container, and platform instructions.
CUDA architecture and optimization
- CUDA C++ Programming Guide — execution model, memory hierarchy, synchronization, and architecture features.
- CUDA C++ Best Practices Guide — coalescing, bandwidth, occupancy, register pressure, NUMA, and optimization process.
- CUDA Binary Utilities —
cuobjdump,nvdisasm, instruction-set reference, and resource usage. - NVTX documentation and source — application semantic ranges and domains.
- CUDA Samples — bandwidth, matrix, graph, and performance examples.
Kernel libraries and DSLs
- CUTLASS Profiler — enumerate and benchmark GEMM/convolution implementations and shapes.
- CUTLASS quickstart — architecture-specific build and profiler configuration.
- Triton tutorials — vector add, fused softmax, GEMM, normalization, attention, and block-scaled matmul.
- Triton matrix multiplication — tiling, grouped program ordering, L2 reuse, and autotuning.
- PyTorch profiler and autograd NVTX annotations — framework-level attribution before kernel analysis.
Kernel engineering technique guides
- How to Optimize a CUDA Matmul Kernel for cuBLAS-like Performance — a worklog that pairs each optimization step (coalescing, shared-memory tiling, vectorization, warp tiling) with its measured throughput against cuBLAS; a model for the diagnosis-technique-measurement loop this book itself follows.
- FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness — Dao et al.'s IO-aware attention algorithm; a well-known worked example of spending memory and recomputation to avoid a bandwidth-bound pass, the same trade-off ch. 13's Case G makes on this book's own representative workload.
- Programming Massively Parallel Processors: A Hands-on Approach (Hwu, Kirk, and El Hajj) — the standard foundational textbook for CUDA kernel-writing technique, from the memory model through tiling and tensor cores.
- Efficient GEMM in CUDA — CUTLASS's own account of hierarchical tiling, double buffering, and split-K/sliced-K reduction; the design rationale behind the library the Profiler doc above only benchmarks.
Suggested reading order
This list retraces the book's own funnel through the primary documentation: system-level tracing first, then one kernel, then the memory/occupancy and SASS layers underneath it.
- Nsight Systems CUDA trace and NVTX chapters — the system-level view Part I builds on.
- Nsight Compute sections, scheduler states, and replay — the per-kernel toolkit from Part II.
- CUDA Best Practices memory/coalescing and occupancy chapters — the mechanisms behind those Part II counters.
- A transpose exercise, then a GEMM shape sweep — the same coarse-to-fine method applied by hand.
- Source/SASS correlation on one custom kernel — the finest grain the funnel reaches.
- Simon Boehm's CUDA matmul worklog — once a target kernel is identified, a full worked sequence of implementing and measuring the fix, not just diagnosing it.
Documentation moves with toolkit releases. Prefer the version matching the installed tools when metric names or CLI syntax differ.