我有一个CUDA应用程序,它是数据移动绑定的(例如,在主机到设备之间的大型内存拷贝,在内核中完成的计算相对较少)。在较老的GPU上,我是计算受限的(例如,QUADRO FX 5800),但对于Fermi和Kepler架构,情况不再是这样(对于我的优化代码)。
我刚刚把我的代码移到了GTX680上,计算性能的提高给我留下了深刻的印象,但令人困惑的是,主机和GPU之间的带宽似乎下降了(相对于我的费米M20270)。
简而言之,当我运行封装的SDK带宽测试时,我在GTX680上获得了大约5000MB/秒的带宽,而在M2070上获得了大约5700MB/秒。我认识到GTX“只是一张游戏卡”,但GTX680的规格似乎比M2070更令人印象深刻,除了总线宽度。
来自维基百科: M2070: 102.4 GB/秒,GDDR3,512位总线宽度GTX680: 192 GB/秒,GDDR5,256位总线宽度
我正在使用"--wc -- memory =pinned“运行封装测试,以使用写组合内存。
我在这项测试中获得的改进结果与我使用优化的CUDA代码获得的结果相同。
不幸的是,我不能在同一台机器上运行测试(只是更换视频卡),但我已经在旧的和新的机器上尝试了GTX680,并且得到了相同的“降级”结果(相对于我在M2070上得到的结果)。
任何人都可以确认,他们能够实现与M2070 Quadro比GTX680更高的吞吐量备忘录副本?带宽规格不考虑总线宽度吗?另一种可能是我没有在GTX680上正确/最佳地进行memcopies,但在这种情况下,是否有用于带宽测试的补丁,以便它也会显示我向680传输数据的速度比向M2070传输数据的速度更快?
谢谢。
发布于 2012-10-16 02:10:01
正如Robert Crovella已经评论的那样,瓶颈是PCIe带宽,而不是GPU内存带宽。
您的GTX680可能会比M2070性能高出两倍,因为它支持PCIe 3.0,使M2070的PCIe 2.0接口的带宽翻了一番。然而,你需要一个支持PCIe 3.0的主板。
GPU内存的总线宽度本身并不是一个问题,即使对于GPU内存带宽受限的程序也是如此。Nvidia设法大幅提高了GTX680存储器总线上使用的频率,这大大弥补了相对于M2070减少的总线宽度。
https://stackoverflow.com/questions/12899068
复制相似问题