CUDA Threads and Blocks

Einfaches Handling in Cuda
Cuda ist spezialisert auf das parallele Verarbeiten vieler Elemente (Vektoren).

Bsp:
8 Blocks (Funktion wird 8 mal ausgeführt) mit
Vektoren in der Funktion.
Jedes Element des Vektors kann per Thread-Index angesprochen werden.

threads_block

Zugriff auf ein Element
Der Index des Elements ist einfach gebildet

int index = (blockIdx.x * Blocktiefe) + threadIdx.x
int index = (blockId2.2 * 8) + threadId5.5
int index = ( 2 * 8 ) + 5 = 21

index_cuda
Elemente aus verschiedenen Threads und Blocks
Sofern man genau weiss, wie weit die Daten in den einzelnen Threads generiert sind, können Indizes unterschiedlicher Nummern verarbeitet werden

__global__ void add( int *a, int *b, int *c ) {

.      c[index12] = a[index63] + b[index20];
}

Dazu braucht es jedoch die Synchronisation der Prozesse, die über synctrheads() organisiert werden kann.