是否可以在CUDA中创建最大数量的流?
澄清我的意思是流中允许您执行内核和内存操作的CUDA流。
答案 0 :(得分:20)
您可以创建的流数量(至少1000)没有实际限制。但是,有效实现并发的流数量是有限的。
在Fermi中,该架构支持16路并发内核启动,但从主机到GPU只有一个连接。因此,即使您有16个CUDA流,它们最终也会进入一个硬件队列。这可能会创建错误的数据依赖关系,并限制可以轻松获得的并发数量。
使用Kepler,主机和GPU之间的连接数现在是32(而不是Fermi的连接数)。使用新的Hyper-Q技术,现在更容易让GPU忙于并发工作。
答案 1 :(得分:12)
我没有在任何文档中看到限制,但这并不意味着所有流将同时执行,因为这是一个硬硬件限制(多处理器,寄存器等)。
答案 2 :(得分:10)
根据NVIDIA的演示文稿,max是16个流(在Fermi上)。 http://developer.download.nvidia.com/CUDA/training/StreamsAndConcurrencyWebinar.pdf
为了澄清,我已成功创建了超过16个流,但我认为硬件只能支持16个并发内核,因此多余的内核在并发方面浪费了。
开普勒可能与众不同。