两块不同的显卡,配置好的运行速度反而慢

相同的程序,我使用GTS450和GTX650分别测试程序,发现GTX650的反而慢了几毫秒,GTX650的流处理器是GTS450的两倍啊,应该比GTS450快很多才对呀,我电脑的主板PCI是PCIEx16_1,不知道影响GPU 显卡运行的因素到底有哪些?

LZ您好:

1:您上文中的PCIEx16_1,这个如果指的是主板上的pci-e的编号,那么这个一般是主pci-e图形卡插槽的,您的安装是正确的。如果是其他含义,请反馈一下。

2:一般来说,更高等级的显卡速度会更好一些。但是这个还和其他一些因素有关。比如您的pci-e总线速度是否一致,如果不一致,可能会在传输数据的时候变慢;以及您的代码的具体情况等。

大致如此,因为不知道您的具体情况,并无法继续深入了。

祝您好运~

1、不知道LZ是用什么测时间的,是用CUDA EVENT API还是NVVP?
2、出了ICE版主提到的可能性外,有可能是显卡启动延时造成测试不准。LZ可以尝试先空跑一下kernel再运行测试的kernel,并对其测时。

这个也许很正常,450,430之类的频率都超级高,例如我之前的一块430是1.8Ghz,

再加上2.x很容易跑出峰值性能,

超过2个SM的GTX650应该很有可能。

以及ice指出的pci-e的插槽位置之类的,也都会影响性能的。

嗯, 那个PCIEx16_1就是主板上的pci-e的编号,而GTS450的总线是PCI-E 2.0x16,GTX650的总线是PCI-E 3.0x16

LZ您好:

1:您使用的插槽是正确的。

2:GTX650自身是支持pci-e 3.0的,但是运行在pci-e 3.0上还需要您硬件系统的其他设备相配合。配合适当的情况下可以达到pci-e 3.0 16X的理想速度。

大致如此,供您参考。

祝您好运~

好的 谢谢版主的热心解答,大致了解了!

您说的启动延时之前也碰到过,程序没有计算这一部分的时间,我使用的是windows下的计时函数,通过得到计数器频率来计时,精度可以达到微秒级。

您说的1.8GHz应该是GPU的显存频率,我的理解是这个是数据交换的速度,而主要影响并行计算效率的应该是显卡的核心频率和流处理器的数量这两个因素吧,而我的程序中涉及到数据拷贝的操作很少,大部分都是核函数计算,想想,感觉还是有点解释不通啊!

LZ您好:

4#中横扫斑竹说的这个1.8GHz的频率,应该指的是Fermi GPU的SP频率,而不是在说显存DRAM的等效频率。

因为Fermi的SP是倍频的,以及一些核心规模较小的GPU上没有供电和散热压力,所以可以将频率拔得较高。而一些核心规模较大的GPU,如GTX480,则无法设定到那么高的频率。

大致如此,供您参考。

祝您编码顺利~

版大大,我有点晕,SP频率是什么东东,它跟显卡的核心频率有什么关系呢?如果是这样的话,显然SP频率才是影响效率最重要的因素吧,另外GTX650确实需要额外供电。

LZ您好:

SP=stream processor=cuda core。
在fermi和更早的NV CUDA capable的GPU架构中,GPU芯片上有两个频率,一个被称之为GPU核心频率,另外一个称之为SP频率。其中,后者是前者的倍频。

而从kepler架构开始,集成度和能耗比的情况发生了一些变化,人们以提高集成度为代价进一步降低了单位计算速度下的功耗。所以Kepler的GPU内只有一个频率,SP和GPU核心的其他部分运行在同样的频率下,以及这个频率比之前的GPU核心频率有所提升。

以上是SP频率,GPU核心频率以及现在的统一频率的情况。

“影响效率”这个题目较大,不好说是由SP频率影响还是其他因素影响,需要具体分析。

以及收到LZ GTX 650需要外接供电的反馈。

大致如此,供您参考。

祝您好运~

恩恩,学习了!谢谢ice版主的解答!!!

不客气的,欢迎您常来论坛!

祝您好运~