为什么我没有与GTX 480和CUDA 5重叠数据传输和计算?

时间:2013-01-22 10:20:14

标签: concurrency cuda overlapping nsight

我试图将内核执行与memcpyasync重叠,但它不起作用。我遵循编程指南中的所有建议,使用固定内存,不同的流等。我看到内核执行确实重叠,但它不与mem传输。我知道我的卡只有一个复制引擎和一个执行引擎,但执行和传输应该重叠,对吗?

似乎“复制引擎”和“执行引擎”总是强制执行我调用函数的顺序。工作包括执行[HtoD x2,Kernel,DtoH]的4个流。如果我在每个流上发出HtoDx2,Kernel,DtoH系列,我在profiler中看到像stream2 HtoD第一个操作在第一个DtoH操作结束之前不会启动。如果我首先在每个流上发布HtoD,那么第二个HtoD,然后是内核,然后是DtoH(广度),我看不到重叠,并且GPU也强制执行问题顺序。

我尝试过使用CUDA SDK中给出的simpleStreams示例,我也看到了相同的行为。

我附加了一些屏幕截图,显示了VS2008的visual profiler和Nsight中的问题。

PS。我没有设置CUDA_LAUNCH_BLOCKING env

Simple Streams Visual Profiler Simple Streams Visual Profiler

MyApp Nsight时间轴广度 MyApp Nsight timeline breadth first

MyApp Nsight时间轴深度优先 MyApp Nsight timeline depth first

修改

添加额外的x4内核(每个流总共2HtoD,5个内核,1DtoH) - > 如果我使用和不使用--concurrent-kernels-off运行nvprof,则经过的时间是相同的。如果我设置env CUDA_LAUNCH_BLOCKING = 1,那么我看到7.5%的性能改进(来自命令行)!

系统规范:

  • Windows 7
  • 第一个PCI-E插槽中的NVIDIA 6800 VGA
  • 第二个PCI-E插槽中的GTX480
  • NVIDIA驱动程序:306.94
  • Visual studio 2008
  • CUDA v5.0
  • Visual Profiler 5.0
  • Nsight 3.0

3 个答案:

答案 0 :(得分:0)

正如我在评论中所说,确实存在一个带有CUDA驱动程序的BUG,它使得流式传输无法与我的安装程序一起使用。我已经测试了1.1功能卡(8800 GTS)和3.5功能卡(GTX Titan),两种卡工作正常。一些费米卡似乎存在问题(我的GTX 480不起作用)。

答案 1 :(得分:0)

我刚刚遇到同样的问题。我同意你的说法有一个BUG。我认为该错误可能是用于Windows的CUDA驱动程序,也可能是Windows本身。我测试了我的代码,它在Linux中运行良好(重叠)。

实际上,您可以在SDK中测试“simpleStreams”示例。我发现在Windows中运行的“simpleStreams”根本没有内核和内存副本之间的重叠,但是在Linux中它运行得很好。

我使用的是CUDA 5.0和Fermi GTX570。通过对8800GT和GTX Titan的测试,我同意这是Windows的CUDA驱动程序中的一个错误。希望很快就能解决。

答案 2 :(得分:0)

  

TL; DR:问题是由Nsight Monitor中的WDDM TDR延迟选项引起的!设置为false时,会出现问题。相反,如果你设置了   TDR延迟值到一个非常高的数字,"启用"选项   是的,问题就消失了。 请尝试下面介绍的选项(更常见),因为它们也与问题有关!

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

我最近才能部分解决这个问题!我认为它特定于windows和aero。请尝试这些步骤并发布结果以帮助其他人!我在GTX 650和GT 640上尝试过它。

  

在您执行任何操作之前,请考虑using both onboard gpu(as display) and the discrete gpu (for computations),因为nvidia驱动程序已经验证了Windows的问题!当你使用板载gpu时,说驱动程序没有满载,所以很多bug都被规避了。此外,在工作时保持系统响应能力!

  1. 确保您的并发问题与旧驱动程序(包括BIOS),错误代码,无法使用的设备等其他问题无关。
  2. 转到计算机>属性
  3. 选择左侧的高级系统设置
  4. 转到“高级”标签
  5. 关于效果点击设置
  6. 在“视觉效果”选项卡中,选择"调整以获得最佳性能"子弹。
  7. 这将禁用空气动力学和几乎所有视觉效果。如果此配置有效,您可以尝试逐个启用视觉效果框,直到找到导致问题的精确框!

      

    或者,您可以:

    1. 右键单击桌面,选择个性化
    2. 从基本主题中选择一个没有空气动力学的主题。
    3. 这也可以如上所述,但启用了更多可视化选项。对于我的两个设备,此设置也有效,所以我保留了它。

        

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

      对我来说, 解决了大多数情况下的问题(我做过平铺的dgemm) ,但请注意我仍然无法运行&#34 ; simpleStreams"正确并实现并发......

        

      更新 <问题通过新的Windows安装完全解决 !!前面的步骤改进了某些情况下的行为,但是全新安装解决了所有问题!

      我会尝试找一种解决这个问题的不那么激进的方法,也许只需恢复注册表即可。