# Lab 05: Shared Memory Bank Conflict

This starter is a reading example for transpose, shared-memory tiling and bank
conflicts. Running Nsight Compute is optional; the lab is about understanding
why `tile[32][33]` changes address-to-bank mapping.

## Reading focus

- `transpose_naive` exposes strided global memory access.
- `transpose_tiled` uses `tile[32][32]` to improve global access but can conflict inside shared memory.
- `transpose_padded` uses `tile[32][33]` so adjacent transposed accesses map to different banks more often.
- Coalesced global access and shared-memory bank conflict are different problems.

## Optional commands

If you later use a CUDA development machine:

```bash
chmod +x build.sh
./build.sh
./transpose
ncu --set full ./transpose
```

## Questions to answer while reading

- What does the shared tile store before the transpose?
- Why does adding a column not change the mathematical output?
- Which access is global coalescing, and which access is shared-memory banking?
