我似乎遇到了可以在计算引擎队列中排队的异步内核启动数量的限制。在此限制之后,主机被阻塞,GPU-CPU 并发丢失。这在 CUDA 编程指南中没有提到。
- 可以在计算引擎队列中排队的异步内核启动的最大数量是多少?
- 这个最大数量是否在某种程度上取决于正在启动的内核?
- CPU 将内核启动放入计算引擎队列所需的时间是否取决于正在启动的内核?
- 可以在复制引擎队列中排队的异步 memcpy 的最大数量是多少?
我似乎遇到了可以在计算引擎队列中排队的异步内核启动数量的限制。在此限制之后,主机被阻塞,GPU-CPU 并发丢失。这在 CUDA 编程指南中没有提到。
我不确定这个问题是否有一个通用的答案,在某种程度上它是平台和 CUDA 版本特定的 AFAIK。回答你的要点
我记得在 CUDA 2.1 左右进行了一些基准测试,发现一切都运行得很快,直到 24 个操作已排队,然后后续操作排队所需的时间变慢。到 CUDA 3.0 发布时,我没有任何代码可以达到旧版本中存在的限制,因此发生了一些变化。编写一个基准来检查更现代的 CUDA 版本的功能应该是微不足道的。