在CUDA中是否存在可以创建的流的最大数量?
为了澄清,我指的是CUDA中的流,即允许您执行内核和内存操作的流。
在CUDA中是否存在可以创建的流的最大数量?
为了澄清,我指的是CUDA中的流,即允许您执行内核和内存操作的流。
您可以创建的流的数量没有实际限制(至少有成千上万个)。但是,使用流来实现并发性的数量是有限制的。
在Fermi中,架构支持16路并发内核启动,但是主机到GPU之间只有单个连接。因此,即使您有16个CUDA流,它们最终也会被汇聚到一个硬件队列中。这可能会创建虚假的数据依赖关系,并限制可以轻松获取的并发量。
使用Kepler后,主机与GPU之间的连接数现在为32个(而不是Fermi的1个)。通过新的Hyper-Q技术,现在更容易让GPU保持繁忙并进行并发工作。
我没有在任何文档中看到限制,但这并不意味着所有流都会并发执行,因为这是一个硬件上的限制(多处理器、寄存器等)。