【发布时间】:2013-05-28 21:53:13
【问题描述】:
我什至无法使用 CUDA SDK 中的 simpleStreams 示例实现重叠的 memcpy 和内核执行,更不用说在我自己的程序中了。这些线程认为这是 Windows 中的 WDDM 驱动程序的问题:
- Why it is not possible to overlap memHtoD with GPU kernel with GTX 590,
- CUDA kernels not launching before CudaDeviceSynchronize
- Time between Kernel Launch and Kernel Execution
并建议:
- 使用
cudaEventQuery()或cudaEventQuery()刷新WDDM 队列。 (不起作用)。 - 以广度优先方式提交流。 (不起作用)。
这个帖子认为这是 fermi 中的一个错误:
这个话题:
提出了一种解决方案来缓解 Windows 上的 WDDM 问题。但是,它仅适用于 Tesla 卡,并且需要额外的视频卡来控制显示器,因为建议的驱动程序是纯计算驱动程序。
但是,这些线程都没有提供真正的解决方案。如果 NVIDIA 能对这个问题发表评论并提出解决方案,我将不胜感激,因为显然很多人都遇到了这个问题。
【问题讨论】:
-
您使用的是哪个 GPU?您使用的是哪个 NVIDIA Windows 驱动程序?
-
我用的是GTX 460,最新的硬件驱动:320.18
-
GTX 460 有一个单一的复制引擎,所以在任何情况下你能看到的最多的复制/计算重叠是一个计算内核的 1 个副本(即在一个方向上)。您将无法在两个方向上看到完整的复制/计算重叠。这也可能对您如何构建 memcpy 和内核调用操作的序列有影响。较新的 Tesla GPU 通常有 2 个复制引擎,可用于不同的场景。
-
罗伯特,感谢您的回复。但是,我没有看到任何方向的 memcpy / 计算重叠。所有内核执行和异步 memcpy 都是序列化的。
-
@Luc 您的问题现在解决了吗?你试过别的吗?您是否尝试过我发布的答案?它确实帮助了我!非常感谢您的反馈。
标签: cuda