What is Shared Memory?
Shared memory is the layer of the CUDA memory hierarchy that matches the thread block level of the thread hierarchy, a pool every thread in a block can read and write. It's small next to a GPU's global memory, but much faster in both latency and throughput, since it lives inside the Streaming Multiprocessor's own L1 data cache rather than off-chip.
A typical CUDA kernel follows the same shape because of it: load data from global memory into shared memory, run the arithmetic through the CUDA Cores or Tensor Cores while it stays on-chip, optionally sync threads with barriers, then write results back to global memory, guarding against races with atomics. Let threads in a warp collide on the same memory bank and you'll hit a bank conflict that serializes what should run in parallel.
Aquanode's GPU recommender factors a workload's shared memory footprint into which card it suggests.
Building on GPUs? Aquanode runs the workload.
Deploy on H100, H200, B200, A100 and MI300X across a multi-provider marketplace, without racking your own hardware or committing to one cloud's spec sheet.
See also
Bank Conflict
A bank conflict is what happens when threads in a warp hit the same shared memory bank from different addresses, forcing the hardware to serialize accesses it could otherwise run in parallel.
Thread Block
A CUDA thread block is the smallest unit of thread coordination a programmer directly controls, sitting between a kernel grid and a single thread. How blocks are sized and why they must run independently of each other.
Register File
The register file is the fastest, closest-to-the-core memory on a Streaming Multiprocessor. How it's organized, what backs it in PTX, and why using too much of it per thread quietly kills occupancy.
Kernel
A CUDA kernel is the function a GPU programmer writes and launches, executed once per thread across thousands of threads at once. How kernels map onto the thread and memory hierarchy, with two worked matrix-multiply examples.