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]; }
.