以下cuda Kernel语法的含义

use*_*900 6 cuda opencl visual-c++

以下语法的含义是什么:

Kernel_fun<<<256, 128, 2056>>>(arg1, arg2, arg3);
Run Code Online (Sandbox Code Playgroud)

哪个值表示工作组,哪个值表示线程.

Eso*_*ame 14

CUDA编程指南,附录B.19:

通过在函数名和带括号的参数列表之间插入<<< Dg,Db,Ns,S >>>形式的表达式来指定执行配置,其中:

  • Dg的类型为dim3(参见B.3.2节)并指定网格的尺寸和大小,使得Dg.x*Dg.y*Dg.z等于正在启动的块数; 对于计算能力为1.x的设备,Dg.z必须等于1;

  • Db的类型为dim3(参见第B.3.2节)并指定每个块的尺寸和大小,使得Db.x*Db.y*Db.z等于每个块的线程数;

  • Ns的类型为size_t,并指定除了静态分配的内存之外,每个块为此调用动态分配的共享内存中的字节数.这个动态分配的内存被声明为外部数组的任何变量使用,如B.2.3节所述; Ns是一个可选参数,默认为0;

  • S的类型为cudaStream_t,并指定相关的流; S是可选参数,默认为0.

简而言之: <<< number of blocks, number of threads, dynamic memory per block, associated stream >>>