参考此演示文稿文件中的第21页: http://on-demand.gputechconf.com/gtc-express/2011/presentations/StreamsAndConcurrencyWebinar.pdf
我不明白为什么顺序发出内核延迟信号并阻止D2H传输。是现代CUDA设备的情况
干杯
答案 0 :(得分:1)
该演示文稿的日期为2011年,主要是Fermi架构(cc2.x)设备。
在这些设备中,能够在流水线算法(即按正常顺序发生的D2H,H2D和内核启动序列)中具有D2H和H2D副本以及一个或多个内核的完全并发能力取决于实际的发布顺序(即主机线程中的操作顺序)。这是由于"错误依赖" Fermi架构在不同流中的操作之间插入,这些流不应相互依赖。在该演示中的幻灯片20和21上给出了对其原因的简要描述。我不相信费米的这种建筑特征的更详细的描述已经发表。
Kepler介绍了Hyper-Q,旨在减少或消除这种影响。该体系结构不应该引入这样的错误依赖性,因此Kepler(cc3.x)及其以后应该可以以深度优先顺序或广度优先顺序发出操作,并且仍然可以看到数据传输之间的并发性和内核操作。