CUDA 与 GPU 札记
Kernels
CUDA C++ 引入了一个新定义“核函数”(Kernels)。与常规的 C++ 函数不同,当调用核函数时,其会被 N 个不同的 CUDA 线程并行执行 N 次。
你可以使用 __global__ 标识符来定义一个核函数,同时使用一个新的 <<<...>>> 配置语法来指定核函数中线程的数量。
核函数中的每个线程都有一个独一无二的 ID,你可以使用核函数中的内建变量来计算得到线程 ID,内建变量我会稍后介绍。
下面代码中定义了一个名为 VecAdd 的核函数,该核函数中的线程数为 N。
// Kernel definition
__global__ void VecAdd(float* A, float* B, float* C)
{
int i = threadIdx.x;
C[i] = A[i] + B[i];
}
int main()
{
...
// Kernel invocation with N threads
VecAdd<<<1, N>>>(A, B, C);
...
}

浙公网安备 33010602011771号