2年前,D3D11显卡刚出来没多久的时候,我曾经做过一个《NV GTX480对ATI HD5870:另一个视角》,用DX SDK的D3D11例子来对当时巅峰的显卡进行各个单项的性能评测。时过境迁,现在NV GTX680已经上市,硬指标对比如下表所示。
GTX 680 | GTX 580 | |
---|---|---|
制程(nm) | 28 | 40 |
晶体管数量(Million) | 3540 | 3000 |
Die大小(mm^2) | 294 | 520 |
显存(MB) | 2048 | 1536 |
SM数量 | 8 | 16 |
核心配比 | 1536:128:32 | 512:64:48 |
核心频率(MHz) | 1006-1058 | 772 |
shader频率(MHz) | N/A | 1544 |
显存频率(MHz) | 6008 | 4008 |
像素填充率(GP/s) | 32.2 | 37.06 |
纹理填充率(GT/s) | 128.8 | 49.41 |
显存带宽(GB/s) | 192 | 192.4 |
总线宽度(bit) | 256 | 384 |
API | D3D11.1 OpenGL 4.2 OpenCL 1.2 |
D3D11.1 OpenGL 4.2 OpenCL 1.1 |
Gflop/s | 3090.4 | 1581.1 |
TDP(watts) | 195 | 244 |
Gflop/s-watt | 15.85 | 6.48 |
从指标上可以看出,GTX680的 SP数量急剧提高(512->1536),但SM数量见到原来的一半(16->8),所以每个SM内的SP个数从32猛增到192。这对scheduler是极大的考验。
由于配置上的较大不同,性能能有多高看理论值不行,还是得实际跑程序才能知道。这次的评测仍然分三轮进行,分别评测传统图形流水线,DirectCompute和Tessellation的性能。测试的机器仍是两年前的Dell T5400 Workstation(Xeon E5440 4-core,4GB内存),依次装上GTX580和GTX680。两块显卡都是Zotac的公版。操作系统是Win7 64bit,使用传统界面以消除Areo界面的PS开销。显卡驱动分别是Forceware 295.73和Forceware 301.10。DX SDK的版本是June 2010。
第一轮 传统图形流水线
第一论测试的是两块显卡在游戏常见的场景中的图形性能表现,选用的sample是Cascaded shadow depth map,contact hardening shadows, variance shadows 11和Dynamic shadow linkage 11。测试结果如下:
GTX 680 | GTX 580 | |
---|---|---|
CascadedShadowDepthMap | 332.04 | 337.63 |
Contact Hardening Shadows | 1225.67 | 851.30 |
VarianceShadows11 | 305.40 | 309.83 |
DynamicShaderLinkage11 | 2716.49 | 2620.81 |
很失望吧,除了Contact hardening shadows,GTX 680并没有比GTX 580提高多少,甚至还有所下降。但领先的那个例子恰恰是计算量和带宽要求最大的。
第二轮 DirectCompute
盛传GTX 680的GPGPU能力不如从前,第二轮就来测试DirectCompute这个GPGPU能力。
GTX 680 | GTX 580 | |
---|---|---|
NBodyGravityCS11 | 675.10 | 374.28 |
AdaptiveTessellationCS40 | 1031.88 | 938.46 |
HDRToneMappingCS11 | 3308.63 | 2815.89 |
GTX 680在三个例子中都得到了领先的地位,最明显的是NBodyGravityCS11,达到了1.8x的提升。我认为和这个例子的计算量大、但分支较少有关。一个SM包含那么多的SP,对于分支diverse的代价是很大的。
第三轮 Tessellation
Tessellation一直是NV的强项,这次GTX 680的tessellator再次有了提升。
GTX 680 | GTX 580 | |
---|---|---|
DetailTessellation11 | 1077.48 | 983.20 |
PN-Triangles | 2481.89 | 2376.34 |
SimpleBezier11 | 4373.63 | 3884.52 |
SubD11 | 923.32 | 578.62 |
也达到了全部领先的程度。最复杂的SubD11提升1.6x。
以上三个测试可以看到,GTX 680并没有传说中的GTX 580×3的性能,至少,在DX SDK sample的分辨率和复杂程度下没达到。但是可以看到的一个趋势是,对计算量和带宽要求越大的例子,GTX 680的提升就越大,所以其实在大部分时候它的能力是没有完全发挥出来的。分支的程度也比较影响GTX 680,所以应该在shader/kernel级别明智使用分支。另一个重要的事情在于驱动,对比2年前的测试,虽然GTX 580比GTX 480只是多了32个SP,但由于驱动的改进,性能却有非常明显的提升,部分例子甚至达到了3倍。目前GTX 680的驱动刚处于非常初级的状态,相信过一段时间成熟了才会达到GTX 680的最佳状态。
额外测试
在测完DX SDK的例子之后,我与顺便测试了KlayGE的例子。这里选了两个比较有代表性的例子,分别是Deferred和Forward流水线。分辨率是1280×800,高于DX SDK sample的800×600。
GTX 680 | GTX 580 | |
---|---|---|
Deferred rendering | 150.55 | 139.84 |
Shadow cubemap | 267.38/330.78 | 259.08/239.07 |
Deferred rendering的例子情况类似于前面的评测。比较有趣的是Shadow cubemap的例子。和《不争气的geometry shader》一样,这里分别测试了6 pass cubemap和1 pass cubemap。斜杠之前的FPS是6 pass的。在以前的显卡上,不管是NV还是AMD,通过geometry shader完成render to cubemap都比6 pass还慢。但在GTX 680上,GS终于翻身了,彻底打败6 pass的做法。从这个角度也可以看出GTX 680的硬件性能提升。
总的来说,GTX 680并没有官方宣传的“恐怖”性能。但凭借工艺的进步,在那个Die大小的情况下能达到这样的速度是很不容易的。期待下半年的旗舰GK110。
Comments