CUDA Threads

Eine Funktion kann N-mal aufgerufen werden. Daraus entstehen N parallele Blocks im Kernel, die man über ihre Block-Id ansprechen kann.

Innerhalb eines Blocks können mehrere Prozesse (Threads) gestartet werden. Dies ist notwendig, wenn ein Vektor, auf mehrere Blöcke eingeteilt wird.
Jeder Block hat seinen Vektor. Doch innerhalb eines Vektors entstehen mehrere Prozesse.

__global__ void add( int *a, int *b, int *c ) {
.   c[ threadIdx.x blockIdx.x ] = 
.              a[ threadIdx.x  blockIdx.x ] + 
.              b[ threadIdx.x  blockIdx.x ];
}

Jedes Element des Vektors hat seinen Thread.