GPU的性能指标是如何计算的
通过阅读本文,你将知道GPU的性能指标都有哪些以及他们是如何计算出来的。
GPU性能指标
在GPU信息数据库-GPU Specs Database,可以查找到几乎所有GPU的信息。GPU信息中有一栏代表的是GPU的性能参数:Theoretical Performance。
通过阅读这一栏数据我们可以知道:
- 这些数据都是理论上的峰值
- 性能指标一般有:纹理填充率、像素填充率和浮点处理能力
理论上的峰值
所谓理论上的峰值可以理解为理想情况下的峰值,GPU在实际运行过程中几乎都跑不出该峰值。
在得出这个理论上的峰值的过程中,做了很多假设。
假设一,一个时钟完成一次处理。如:一个时钟完成一个像素的渲染,实际上一个时钟是完不成一个像素的渲染任务的,反而根据我们写的片段染色程序的复杂度,可能需要上百甚至更多的时钟。
假设二,数据已准备好。如:像素渲染的输入数据总是可以立马获取到,实际并非如此。
假设三,任务调度和逻辑控制不消耗时钟。
至于这个理论上的峰值是如何计算得来的,请参看下面章节的介绍。
纹理填充率
纹理填充率 = 纹理单元运行的时钟频率 x 纹理单元的个数 x 每个时钟纹理单元可以处理的纹素个数(理论值)
比如NAVIDA的GeForce GT 430:
- 纹理单元运行的时钟频率为:700 MHz
- 纹理单元的个数:16个
- 每个时钟纹理单元可以处理的纹素个数:1个
所以它的纹理填充率为11.20 GTexel/s。
像素填充率
像素填充率 = ROP运行的时钟频率 x ROP的个数 x 每个时钟ROP可以处理的像素个数
比如NAVIDA的GeForce GT 430:
- ROP运行的时钟频率:700 MHz
- ROP的个数:4个
- 每个时钟ROP可以处理的像素个数:1个
所以它的像素填充率为2.800 GPixel/s
浮点处理能力
浮点处理包含半精度、单精度和双精度浮点的处理。
下面以单精度浮点处理能力为例:
单精度浮点处理能力 = 渲染核运行的时钟频率 x 渲染核的个数 x 每个渲染核包含的单精度浮点处理单元的个数
比如NAVIDA的GeForce GT 430:
- 渲染核运行的时钟频率:1400 MHz
- 渲染核的个数:96个
- 每个渲染核包含的单精度浮点处理单元的个数:2个(这个数值是逆推出来的,原网页没有该信息)
所以它的单精度浮点处理能力为268.8 GFLOPS
注意:每个渲染核包含的单精度浮点处理单元的个数是逆推出来的。在本例中逆推出来是2,实际上还有可能是1,因为如果该单精度浮点处理单元支持乘加操作的话,一个浮点乘法和一个浮点加法,是两个浮点操作。
总结
- GPU的性能指标包含:纹理填充率、像素填充率和浮点处理能力
- 纹理填充率的计算方式为:纹理单元运行的时钟频率 x 纹理单元的个数 x 每个时钟纹理单元可以处理的纹素个数(理论值)
- 像素填充率的计算方式为:ROP运行的时钟频率 x ROP的个数 x 每个时钟ROP可以处理的像素个数
- 单精度浮点处理能力的计算方式为:渲染核运行的时钟频率 x 渲染核的个数 x 每个渲染核包含的单精度浮点处理单元的个数
- GPU性能指标的数值都是理论值
- 知道了GPU性能指标的计算方式,我们可以从GPU厂商公布的数据中逆推得到一些有用的信息