CUDA计算和复制引擎队列限制

时间:2013-04-25 11:57:06

标签: cuda

我似乎遇到了可以在计算引擎队列中排队的异步内核启动次数的限制。在此限制之后,主机被阻止,GPU-CPU并发性丢失。这在CUDA编程指南中没有提到。

  • 可以在计算引擎队列中排队的异步内核启动的最大数量是多少?
  • 这个最大数量在某种程度上取决于正在启动的内核吗?
  • CPU在计算引擎队列中启动内核所需的时间是否取决于正在启动的内核?
  • 可以在复制引擎队列中排队的异步memcpy的最大数量是多少?

1 个答案:

答案 0 :(得分:3)

我不确定这个问题是否有一个普遍的答案,在某种程度上它是平台和CUDA版本特定的AFAIK。为了回答你的要点

  • 我认为,限制是队列大小,因此存在最大数量的队列操作而不是内核启动。相同的总限制应适用于内核,复制操作和流事件的任何组合。操作总数取决于平台和CUDA版本
  • 没有
  • 不,但是一旦驱动程序队列被填满,提交任何异步操作所需的时间将会大大增加
  • 见第一点。我不相信驱动程序会区分副本,内核启动或事件。

我记得做一些基准测试,大约是CUDA 2.1,并发现一切都快速运行直到24个操作排队,然后后续操作排队的时间减慢了。当CUDA 3.0发布时,我没有任何代码可以达到旧版本中存在的限制,所以有些变化。编写一个基准来检查更多现代CUDA版本的功能应该是微不足道的。