以下语法的含义是什么:
Kernel_fun<<<256, 128, 2056>>>(arg1, arg2, arg3);
哪个值表示工作组,哪个值表示线程。
答案 0 :(得分:10)
从CUDA Programming Guide,附录B.22(截至2019年5月):
通过插入表达式来指定执行配置 形式&lt;&lt;&lt; Dg,Db,Ns,S&gt;&gt;函数名称和。之间 带括号的参数列表,其中:
Dg的类型为dim3(参见第B.3.2节)并指定网格的尺寸和大小,使得Dg.x * Dg.y * Dg.z等于数字 正在发射的区块;对于设备,Dg.z必须等于1 计算能力1.x;
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 >>>