小编tha*_*los的帖子

用于多个内核的Cuda Stream Processing消歧

关于Cuda流处理多个内核的几个问题.在具有3.5个功能的kepler设备中假设s流和内核,其中s <= 32.内核使用大小为n的dev_input数组和大小为s*n的dev输出数组.内核从输入数组中读取数据,将其值存储在寄存器中,对其进行操作并将其结果写回位于s*n + tid的dev_output.

我们的目标是每次使用n个流中的一个来运行相同的内核.与simpleHyperQ示例类似.你能否评论以下任何一项是否以及如何影响并发?

  1. dev_input和dev_output没有固定;
  2. dev_input因为它是vs dev_input size s*n,其中每个内核读取唯一数据(没有读取冲突)
  3. 内核从常量内存中读取数据
  4. 每个块分配10kb的共享内存.
  5. 内核使用60个寄存器

任何好的评论将不胜感激...... !!!

欢呼,Thanasio

罗伯特,非常感谢你的详细解答.这非常有帮助.我编辑了4,每块10kb.所以在我的情况下,我发布了61个块和256个线程的网格.内核受计算限制.我启动了8个相同内核的流.描述它们然后我看到前两个之间非常好的重叠然后它变得越来越糟.内核执行时间约为6ms.在前两个流执行几乎完全并发后,其余的流之间的距离为3ms.关于5,我使用具有255寄存器文件的K20.所以我不希望那里有弊端.我真的不明白为什么我没有达到相当于为gk110s指定的并发性.

请看下面的链接.有一个名为kF.png的图像.它显示了流的分析器输出.. !!!

https://devtalk.nvidia.com/default/topic/531740/cuda-programming-and-performance/concurrent-streams-and-hyperq-for-k20/

concurrency cuda cuda-streams

0
推荐指数
1
解决办法
2208
查看次数

标签 统计

concurrency ×1

cuda ×1

cuda-streams ×1