Lección 5: Indexación: threadIdx, blockIdx, blockDim
Cuando lanzas un kernel sobre un grid de bloques, cada hilo debe saber de qué elemento del arreglo es responsable. CUDA le da a cada hilo tres variables incorporadas: threadIdx.x — el índice del hilo dentro de su bloque; blockIdx.x — el índice del bloque dentro del grid; y blockDim.x — el número de
Imagina un estacionamiento con filas de lugares. blockIdx.x es el número de fila, blockDim.x es cuántos lugares hay por fila, y threadIdx.x es tu lugar dentro de la fila. Para saber tu número de lugar total desde el inicio del estacionamiento: fila por lugares-por-fila, más tu lugar en la fila.
- threadIdx.x
- El índice del hilo dentro de su bloque. Va de 0 a blockDim.x-1, y se reinicia en cada bloque.
- blockIdx.x
- El índice del bloque dentro del grid. Va de 0 a gridDim.x-1.
- blockDim.x
- El número de hilos por bloque (la dimensión definida en el lanzamiento). Es el mismo para todos los bloques del grid.
- índice global
- Un identificador único de un hilo en todo el grid: i = blockIdx.x * blockDim.x + threadIdx.x.