我将CUDA GPU计算SDK和CUDA计算工具包升级到4.1。我正在测试 simpleStreams 程序,但始终需要比非流式执行更多的时间。我的设备具有计算能力 2.1,我使用的是 VS2008,Windows 操作系统。
3 回答
我也注意到了这一点。我以为只是我的问题,但我没有注意到任何改进,并尝试搜索论坛,但没有找到其他有问题的人。
我还在 Cuda By Example 一书中运行了源代码(这真的很有帮助,如果您对 GPU 编程很认真,我建议您选择它)。
第 10 章的例子有一系列例子,展示了应该如何使用流。 http://developer.nvidia.com/content/cuda-example-introduction-general-purpose-gpu-programming-0
但是比较一下,1. 非流式版本(基本上是单流版本) 2. 流式(错误地排队 asyncmemcpy 和内核启动) 3. 流式(正确排队 asyncmemcpy 和内核启动)
我发现使用 cuda 流没有任何好处。这可能是一个 win7 问题,因为我在网上找到了一些讨论 win vista 不正确支持 cuda 流的资源。
让我知道您在我链接的示例中发现了什么。我的设置是:Win7 64bit Pro、Cuda 4.1、双 Geforce GTX460 卡、8GB RAM。
这个样本经常有问题。如果您调整样本以使内核和内存副本具有相同的持续时间,则重叠将得到改善。通常广度优先提交更适合并发;但是,在 WDDM OS 上,如果您在内核启动后立即发出内存副本,则此示例通常会有更好的重叠。
我对 Cuda 很陌生,所以可能无法提供帮助,但如果没有您发布任何代码,通常很难提供帮助。如果无法发布,那么我建议您查看Nvidia 的视觉分析器。它是跨平台的,可以向您展示您的瓶颈所在。