Lección 9: Grids y bloques 2D
Las matrices y las imágenes son naturalmente bidimensionales, así que CUDA te permite organizar los hilos en un grid 2D. En lugar de una sola dimensión x, tenemos threadIdx.x y threadIdx.y, blockIdx.x y blockIdx.y, además de blockDim.x y blockDim.y. Cada hilo calcula una fila y una columna: row = bl
Un teatro con filas y asientos. Para encontrar un asiento con un solo número corrido, cuentas: cada fila completa aporta width asientos, así que el asiento es la fila multiplicada por width más el número de columna. Cada acomodador (hilo) sabe exactamente su propia fila y columna.
- grid 2D
- Organizar los hilos en dos dimensiones (x e y), conveniente para matrices e imágenes donde cada elemento tiene una fila y una columna.
- row y col
- row viene de la dimensión y (blockIdx.y, threadIdx.y) y col de la dimensión x. Juntos son la coordenada 2D del hilo.
- aplanado row-major
- Convertir (row, col) en un índice plano: idx = row * width + col, porque la memoria se almacena fila tras fila.
- dim3
- Un tipo de tres componentes (x, y, z) que describe el tamaño de un bloque o grid, por ejemplo dim3 block(16, 16).