Chaque kernel va faire le calcul de la somme sur un seul élément :
1
2
3
4
5
|
__global__ void addVectKernel(float * result, const float * vectLeft, const float * vectRight, int width){
int i = blockIdx.x*blockDim.x + threadIdx.x;
if(i < width) result[i] = vectLeft[i] + vectRight[i];
}
|
On test si l'indice est plus petit que width, au cas ou la taille du vecteur ne soit pas un multiple de gridDim.x et blockDim.x.
|