6

以下语法的含义是什么:

Kernel_fun<<<256, 128, 2056>>>(arg1, arg2, arg3);

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

4

1 回答 1

14

来自CUDA Programming Guide的附录 B.22(截至 2019 年 5 月):

通过在函数名称和带括号的参数列表之间插入 <<< 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 >>>

于 2012-08-20T16:59:10.107 回答