shared memory

Shared memory is the software-managed on-chip memory region accessible by threads within a GPU thread block - it enables low-latency data reuse patterns that significantly reduce global memory traffic.

What Is Shared memory?

  • Definition: Fast scratchpad memory explicitly controlled by kernel code using block-local scope.
  • Primary Use: Tile staging for matrix operations and cooperative reuse across many threads.
  • Capacity Constraint: Limited per-multiprocessor size requires careful partitioning and occupancy tradeoffs.
  • Hazard: Bank conflicts and synchronization errors can degrade performance or correctness.

Why Shared memory Matters

  • Bandwidth Amplification: One global read can serve many arithmetic operations via shared-memory reuse.
  • Latency Reduction: On-chip access is substantially faster than repeated HBM fetches.
  • Kernel Performance: Efficient shared-memory tiling is key to high GEMM and convolution throughput.
  • Resource Balance: Proper usage improves arithmetic intensity and overall GPU utilization.
  • Optimization Control: Programmer-managed cache behavior gives deterministic tuning leverage.

How It Is Used in Practice

  • Tiling Design: Load blocks of frequently reused data into shared memory before compute loops.
  • Synchronization: Use block barriers correctly to protect producer-consumer ordering within tiles.
  • Conflict Avoidance: Arrange data layout to minimize bank conflicts and maximize parallel access efficiency.

Shared memory is a critical manual optimization tool for high-performance GPU kernels - disciplined tiling and synchronization can transform memory-bound code into compute-efficient execution.

Go deeper with CFSGPT

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

Create Free Account