为什么我不能在win7和CUDA 5.0上的fermi上将异步memcpy与内核执行重叠?

为什么我不能在win7和CUDA 5.0上的fermi上将异步memcpy与内核执行重叠?,cuda,Cuda,我甚至无法在CUDA SDK中使用simpleStreams示例实现重叠的memcpy和内核执行,更不用说在我自己的程序中了。这些线程认为windows中的WDDM驱动程序存在问题: , 并建议: 使用cudaEventQuery或cudaEventQuery刷新WDDM队列。不起作用。 以广度优先的方式提交流。不起作用。 该线程认为这是费米中的一个缺陷: 此线程: 提出了一种解决方案,以缓解windows上WDDM的问题。然而,它只适用于特斯拉卡,并且需要额外的视频卡来控制显示器,因为

我甚至无法在CUDA SDK中使用simpleStreams示例实现重叠的memcpy和内核执行,更不用说在我自己的程序中了。这些线程认为windows中的WDDM驱动程序存在问题:

, 并建议:

使用cudaEventQuery或cudaEventQuery刷新WDDM队列。不起作用。 以广度优先的方式提交流。不起作用。 该线程认为这是费米中的一个缺陷:

此线程:

提出了一种解决方案,以缓解windows上WDDM的问题。然而,它只适用于特斯拉卡,并且需要额外的视频卡来控制显示器,因为提议的驱动程序是仅计算的驱动程序

然而,这些线程都不能提供真正的解决方案。如果NVIDIA能对这个问题发表评论并提出解决方案,我将不胜感激,因为显然很多人都在经历这个问题

TL;DR:问题是由Nsight Monitor中的WDDM TDR延迟选项引起的!如果设置为false,则会出现问题。相反,如果您设置 TDR延迟值为非常高的数值,且启用选项为 没错,这个问题消失了

阅读下面的其他旧步骤,直到我找到上面的解决方案,以及一些其他可能的原因

我最近才基本上解决了这个问题!我认为这是针对windows和aero的。请尝试这些步骤,并发布您的结果以帮助他人!我在GTX 650和GT 640上试过

<> P>在你做任何事情之前,考虑一下,因为英伟达驱动程序已经为Windows验证了问题!当你使用板载gpu时,据说驱动程序并没有完全加载,所以很多错误都被避免了。此外,系统响应性在工作时得到保持

确保您的并发问题与其他问题无关,如旧的驱动程序,包括bios、错误的代码、无法使用的设备等。 转到计算机>属性 选择左侧的高级系统设置 转到“高级”选项卡 在性能上单击“设置” 在“视觉效果”选项卡中,选择“调整以获得最佳性能”项目符号。 这将禁用aero和几乎所有的视觉效果。如果此配置有效,您可以尝试逐个启用视觉效果框,直到找到导致问题的精确框

或者,您可以:

右键单击桌面,选择个性化设置 从基本主题中选择一个没有aero的主题。 这也将如上所述,但启用了更多的视觉选项。对于我的两台设备,这个设置也可以使用,所以我保留了它

请,当您尝试这些解决方案时,回到这里并发布您的发现

对我来说,它解决了我制作的平铺dgemm在大多数情况下的问题,但请注意,我仍然无法正确运行simpleStreams并实现并发性

更新:新的windows安装完全解决了此问题!!前面的步骤改善了某些情况下的行为,但新安装解决了所有问题


我将尝试找到一种不太激进的方法来解决这个问题,也许只恢复注册表就足够了。

您使用的是哪个GPU?您使用的是哪个NVIDIA windows驱动程序?我使用的是GTX 460,带有最新的硬件驱动程序:320.18GTX 460有一个复制引擎,因此在任何情况下,您都可以看到最多的复制/计算重叠是一个复制,即在一个方向上使用计算内核。您将无法看到两个方向上的完整复制/计算重叠。这也可能影响到如何构造memcpy和内核调用操作的序列。较新的特斯拉GPU通常有2个复制引擎,这允许不同的场景。罗伯特,谢谢你的回复。但是,我看不到任何memcpy/compute在两个方向上重叠。所有内核执行和异步memcpy都被序列化。@Luc您的问题现在解决了吗?你还试过别的吗?你试过我贴的答案吗?这确实帮了我的忙!我将非常感谢您的反馈。