【发布时间】:2017-05-25 18:24:52
【问题描述】:
在 CUDA 中可以创建的流的最大数量吗?
为了澄清,我的意思是 CUDA 流,即允许您执行内核和内存操作的流。
【问题讨论】:
-
你是指CUDA流(witch提供并行内存操作和内核执行)还是CUDA线程(执行单个内核)。
标签: cuda
在 CUDA 中可以创建的流的最大数量吗?
为了澄清,我的意思是 CUDA 流,即允许您执行内核和内存操作的流。
【问题讨论】:
标签: cuda
您可以创建的流的数量没有实际限制(至少 1000 个)。但是,您可以有效用于实现并发的流的数量是有限的。
在 Fermi 中,该架构支持 16 路并发内核启动,但从主机到 GPU 只有一个连接。因此,即使您有 16 个 CUDA 流,它们最终也会汇集到一个硬件队列中。这可能会创建错误的数据依赖关系,并限制可以轻松获得的并发量。
使用 Kepler,主机和 GPU 之间的连接数现在是 32(而不是使用 Fermi)。借助新的 Hyper-Q 技术,现在可以更轻松地让 GPU 忙于并发工作。
【讨论】:
我没有在任何文档中看到限制,但这并不意味着所有流都将同时执行,因为这是硬硬件限制(多处理器、寄存器等)。
【讨论】:
根据此 NVIDIA 演示文稿,最多为 16 个流(在 Fermi 上)。 http://developer.download.nvidia.com/CUDA/training/StreamsAndConcurrencyWebinar.pdf
澄清一下,我已经成功创建了超过16个流,但我认为硬件只能支持16个并发内核,所以多余的在并发方面被浪费了。
开普勒可能不同。
【讨论】: