我转我自己 解释一下硬件光追加速器的指标

NoTurbo-avatar

NoTurbo

2020-09-19T03:06:30+00:00

从图灵开始,显卡正式引入了光追加速器。光追加速器作为一个图形方面的固化功能单元,承接了光追渲染中非常不适合由流处理器来跑的部分。正如其他的图形固化功能单元,光追加速器也有他自己的性能指标(比如纹理过滤单元的xxG Texel/s,ROP的xxG Pixel/s )。这里我们来详细的说一说这个指标。


先看看官方用的指标。图灵发布之时,使用过三个不同类型的指标来说明他的性能,

[img]https://img.nga.178.com/attachments/mon_202009/23/9aQ5-38wyK2kT3cSr1-iy.jpg[/img]
[img]https://img.nga.178.com/attachments/mon_202009/23/9aQ5-gpxpK1qT3cSpn-ax.jpg[/img]
[img]https://img.nga.178.com/attachments/mon_202009/23/9aQ5-8yurK1sT3cSon-az.jpg[/img]

一个是GigaRay/s,一个是RTX OPS,一个RT OPS。
GigaRay/s这个参数是通过某个固定场景的实际运行时得到的一个指标,可以看到2080TI和RTX 6000在这个上面没有区别,首先这点就否定了他可以用来衡量光追加速器的性能的可能,因为并不能实际反应规格差距。

RTX OPS,这个是通过了解工作负载的组成,然后来推出一个整卡性能的指标,由于是整卡的,而且不同游戏工作负载比例也不一致,所以也不适合衡量光追加速器的指标。


RT OPS,这个是计算上面RTX OPS值的时候,所需要的其中一项,代表着光追加速硬件本身的性能,是一个很好的指标。
那么这个指标的是怎么计算出来的喃?
我们可以看到计算2080ti的那个例子里面这项的值大约是一百,那么事情就很简单了。我们倒推一下:14T的FP32/FMA带来的2倍flops/4352个SP = 1.608Ghz的工作频率。然后我们用这个频率算一下,68个RT Core*1.608Ghz = 109.375,因为计算用的值都是粗略值,也可能是不同负载下的频率不同,大概写个100也没啥错。


这样计算方式就简单了,我们就用RT OPS来代表光追加速器的性能指标。


但这还没完,我们需要搞清楚这个值的含义。图灵架构中光追加速器内其实有两种不同的加速器,分别针对Bounding box的求交和三角形求交,简单点说,就是一个用来做大致范围的求交,在这个过程中逐渐缩小搜索范围,然后确定到具体的三角形的时候,再做三角形的求交。图灵中,每个光追加速器中前者4个,后者是1个,因为通常需要多次缩小范围之后才能具体到某个三角形,做最终的三角形求交。所以实际上RT OPS这个指标是说的三角形求交的次数,Bounding Box的求交次数是他的四倍。
这样我们可以简单的算出图灵各个显卡的光追性能,比如2080 按boost频率来算:
46个RT Core*1三角形求交加速器*1.71Ghz的频率 = 78.66G的三角形求交性能
46个RT Core*4Bounding Box求交加速器*1.71Ghz的频率 = 314.64G的Bounding Box求交性能
说完图灵,接下来是XSX的光追性能。XSX的光追性能由MS直接给出了:
[img]https://img.nga.178.com/attachments/mon_202009/23/9aQ5-fcvpK1bT3cSsg-ga.jpg[/img]

稍微算一下就可以得出,每CU依然是4个Bounding Box求交,1个三角形求交。性能大约在2080ti到2080的正中间。
所以这里也能大致算算Navi21的性能,
80光追加速器*1三角形求交加速器*2.25Ghz = 180G三角形求交性能
80光追加速器*4Bouding Box求交加速器*2.25Ghz = 720G三角形求交性能


最后来说说安培,安培的RT Core中,将三角形求交加速器的数量从一个提升到了两个,但Bounding Box求交加速器的数量不变,另外引入了一个三角位置插值加速器用于动态模糊的画面加速。
[img]https://img.nga.178.com/attachments/mon_202009/23/9aQ5-4vllK1wT3cSxh-k0.jpg[/img]
[img]https://img.nga.178.com/attachments/mon_202009/23/9aQ5-h0xlK1pT3cSu2-k0.jpg[/img]
[img]https://img.nga.178.com/attachments/mon_202009/23/9aQ5-57qfK2kT3cSrw-k0.jpg[/img]


简而言之就是,在一个三角形的Bounding Box求交命中之后,对其中三角形不同时间点的轨迹进行插值计算,再分别对不同不同时间点下面的三角形进行三角形求交,在求交取样完成之后统一进行denoise,完成一幅动态模糊的画面。这样不需要真正走完整个光追流程,节约了Bouding Box求交次数。所以Nvidia在这里降低了Bouding Box求交加速器的比例。实际游戏中,如果应用了这个技术,那么动态模糊的画面中可以得到不少的性能提升,而没有应用的,则依然只有类似于图灵的单位频率单位规模的性能,多出来的插值以及三角形求交单元并没有用处。

这里来算一下3080的光追加速器性能:
68光追加速器*2三角形求交加速器*1.71Ghz = 232.56G三角形求交性能
68光追加速器*4Bouding Box求交加速器*1.71Ghz = 465.12G三角形求交性能

最后附上一张理论指标的柱状图:
[img]https://img.nga.178.com/attachments/mon_202009/23/9aQ5-flxrK1fT3cSra-dz.jpg[/img]