gpt4 book ai didi

concurrency - 为什么我无法与 GTX 480 和 CUDA 5 重叠数据传输和计算?

转载 作者:行者123 更新时间:2023-12-04 16:11:23 27 4
gpt4 key购买 nike

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

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

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

我附上了一些屏幕截图,显示了 Visual Profiler 和 Nsight for VS2008 中的问题。

附:我没有设置 CUDA_LAUNCH_BLOCKING 环境

简单流可视化分析器
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,耗时是相同的。如果我设置环境 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
  • 可视化分析器 5.0
  • Nsight 3.0
  • 最佳答案

    正如我在评论中所说,CUDA 驱动程序确实存在一个 BUG,它使流式传输无法与我的设置一起使用。我已经测试了 1.1 功能卡 (8800 GTS) 和 3.5 功能卡 (GTX Titan) 并且两张卡都可以正常工作。某些 Fermi 卡似乎有问题(我的 GTX 480 不工作)。

    关于concurrency - 为什么我无法与 GTX 480 和 CUDA 5 重叠数据传输和计算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14456236/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com