5.1 Écriture du kernel

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){
	// identifiant de thread à deux dimensions, comme la matrice
	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.