内核使用__global__声明符定义,使用<<<...>>>执行配置语法指定执行某一指定内核的线程数。每一个执行内核的线程拥有一个独一无二的线程ID,通过内置的变量threadIdx访问。
下面的例子是将两个长度为N的向量A和B相加,并将结果存入向量C中。
__global__ void VecAdd(float* A, float* B, float* C)
{
int i = threadIdx.x;
C[i] = A[i] + B[i];
}
int main()
{
...
VecAdd<<<1, N>>>(A, B, C);
...
}
每个线程都会执行一次VecAdd,完成一对向量元素的加法。