Lección 18: Conflictos de bank en memoria compartida
La memoria compartida es rápida, pero está dividida en 32 canales paralelos llamados banks. Los 32 hilos de un warp pueden leer juntos en un solo paso — pero solo si cada uno apunta a un bank distinto. Cuando dos apuntan al mismo bank, ocurre un conflicto de bank (bank conflict), y el hardware los o
Imagina 32 cajas registradoras en una tienda y 32 clientes. Si cada cliente va a una caja distinta, todos pagan al mismo tiempo, rápido. Pero si dos clientes se amontonan en la misma caja, uno espera al otro. El relleno (padding) es como correr la fila en diagonal para que, de nuevo, cada cliente tenga su propia caja.
- bank
- Una de las 32 unidades de memoria paralelas que forman la memoria compartida. Una palabra en el índice i pertenece al bank i % 32.
- conflicto de bank (bank conflict)
- Cuando hilos del mismo warp acceden a direcciones distintas que caen en el mismo bank, el hardware las serializa (un conflicto n-way cuesta n veces el tiempo).
- broadcast
- Cuando todos los hilos del warp leen exactamente la misma dirección de memoria compartida, el valor se transmite (broadcast) a todos en un solo paso — sin penalización.
- relleno (padding)
- Agregar una columna ficticia, tile[N][N+1], que desplaza cada fila un bank para que el acceso por columna caiga en 32 banks distintos.