Lección 14: Coalescing de memoria global — el concepto
La memoria global (la DRAM del device) es la memoria más grande pero también la más lenta de la GPU, y el hardware la lee en transacciones de un bloque de direcciones contiguo — típicamente 128 bytes a la vez. Cuando los 32 hilos de un warp acceden a direcciones consecutivas, por ejemplo a[i] con i
Imagina una regadera que riega 32 plantines. Si los plantines están en una fila apretada, un solo riego los moja a todos. Si cada plantín está a 32 pasos del siguiente, necesitas 32 viajes separados a la regadera para los mismos 32 plantines — la misma agua, 32 veces el trabajo.
- coalescing
- Cuando hilos consecutivos de un warp acceden a direcciones consecutivas, de modo que el hardware los atiende a todos en una sola transacción de memoria.
- transacción de memoria
- Un bloque de direcciones contiguo (típicamente 128 bytes) que el hardware lee o escribe en una sola operación contra la memoria global.
- stride
- La distancia entre las direcciones de dos hilos vecinos. Un stride de 1 es contiguo (coalesced); un stride grande dispersa los accesos.
- ancho de banda
- La cantidad de bytes útiles movidos hacia o desde la memoria por unidad de tiempo. Un acceso disperso lo desperdicia porque cada transacción trae bytes innecesarios.