CUDA paralleles Programmieren

N-mal Funktion parallel ausführen

__global__ void add( int *a, int *b, int *c){
.      *c = *a + *b;
}

// Funktion add() wird 1-mal ausgeführt
add<<< 1, 1 >>>( dev_a, dev_b, dev_c );

// Funktion add() wird N-mal ausgeführt
add<<< N, 1 >>>( dev_a, dev_b, dev_c );

Die Variablen werden dadurch zu Arrays.
a -> a[N]      ,       b -> b[N],        c -> c[N]


Zugreifen auf die parallelen Prozesse

Jeder parallele Prozess läuft im Kernel in einem anderen Block. Jeder Block hat seine Id  blockIdx.x  .
a[1], b[1], c[1] laufen im Block 1.

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

.