use*_*674 2 c cuda gpu gpu-shared-memory
我是 CUDA 新手,正在从事个人项目。我知道,如果您想在启动时指定共享内存量:
kernel<<<grid_size,block_size,shared_mem_size>>>(parameters);
Run Code Online (Sandbox Code Playgroud)
另一方面,如果我想将内核放入流中:
kernel<<<grid_size,block_size,0,stream_being_used>>>(parameters);
Run Code Online (Sandbox Code Playgroud)
我不明白为什么第三个参数在流的情况下是0?(我是从 Sanders 和 Kandrot 的《CUDA 示例》第 10 章中得到的)。
如果我想在启动时指定共享内存并将其放入流中,我该如何正确执行此操作?换句话说,中间的参数应该<<<...>>>是什么样的?
存在 0 的唯一原因是因为在该特定示例中不需要动态共享内存。
共享内存可以静态分配(不使用 using,extern在这种情况下,大小在声明中明确说明)或动态分配(使用extern,并且大小显示为内核启动配置中的第三个参数)。
内核启动配置参数<<<...>>>始终以相同的顺序显示:
1和2是强制的,3和4是可选的。但如果您需要指定参数 4(流),则必须提供参数 3,即使它为零。
所以正确的顺序是:
kernel_name<<<grid_dim, threadblock_dim, dynamic_shared_memory_size, stream>>>(...);
Run Code Online (Sandbox Code Playgroud)
您可以在文档中阅读更多相关信息
| 归档时间: |
|
| 查看次数: |
2678 次 |
| 最近记录: |