flash attention

**Flash Attention** is the **IO-aware, exact attention algorithm that computes self-attention in O(N) memory (instead of O(N²)) by tiling the computation to exploit GPU SRAM (shared memory) locality**, avoiding materialization of the full N×N attention matrix in HBM (high-bandwidth memory) — delivering 2-4× wall-clock speedup and enabling much longer sequence lengths. Standard attention computes: Attention(Q,K,V) = softmax(QK^T / √d) · V. The naive implementation materializes the N×N attention score matrix S = QK^T in GPU HBM, reads it back for softmax, then multiplies by V. For sequence length N=8192 and batch×heads=32, this intermediate matrix is 32 × 8192 × 8192 × 2 bytes ≈ 4 GB — far exceeding GPU SRAM capacity and requiring expensive HBM round-trips. **The IO Bottleneck**: Modern GPUs have ~20 MB of SRAM (shared memory per SM) with ~19 TB/s bandwidth, versus ~80 GB of HBM with ~3 TB/s bandwidth. Standard attention is memory-bandwidth-bound because it reads/writes the N×N matrix from/to slow HBM multiple times. Flash Attention restructures the computation to keep working data in fast SRAM. **Tiling Algorithm**: 1. Divide Q into blocks of size Br × d, and K,V into blocks of size Bc × d (where Br, Bc fit in SRAM) 2. For each Q block, iterate over all K,V blocks 3. Compute block attention scores S_ij = Q_i · K_j^T in SRAM 4. Track running softmax statistics (row-max m and row-sum l) using the online softmax trick 5. Update the output block O_i incrementally: O_i += exp(S_ij - m_new) · V_j, adjusting for the running normalization 6. After all K,V blocks are processed, normalize O_i by the final softmax denominator **Online Softmax Trick**: The key mathematical insight. Standard softmax requires two passes (find max, then compute exp/sum). Flash Attention maintains running max and sum across blocks, rescaling previous partial results when a new block produces a larger maximum. This enables single-pass softmax computation across tiled blocks. **Flash Attention 2 Improvements**: Reduced non-matmul FLOPs by restructuring the algorithm to minimize rescaling operations; improved parallelism by distributing work across both the sequence and head dimensions; and optimized warp-level scheduling to reduce shared memory bank conflicts. Result: ~2× faster than Flash Attention 1, approaching theoretical peak FLOPS. **Flash Attention 3 (Hopper)**: Exploits NVIDIA H100 features: **asynchronous GEMM** via TMA (Tensor Memory Accelerator) for overlapping data loading with computation; **FP8 support** for quantized attention with 2× throughput; and **warp specialization** (producer-consumer warp groups) for better instruction-level parallelism. **Impact on Sequence Length**: By reducing memory from O(N²) to O(N), Flash Attention makes training with 64K-1M+ token sequences practical. Context windows expanded from 2K (GPT-3) to 128K+ (Claude, GPT-4 Turbo) largely because Flash Attention removed the memory wall. **Flash Attention is perhaps the single most impactful systems optimization in modern deep learning — by recognizing that attention's bottleneck is memory bandwidth rather than computation, it unlocked longer contexts, faster training, and lower inference costs without any approximation or quality loss.**

Go deeper with CFSGPT

Get AI-powered deep-dives, save terms, and run advanced simulations — free account.

Create Free Account