真正的“理论”性能怎样看待GPU浮点运算
2022-05-30
目前的GPU都是由很多小处理核心,或者叫流处理器组成(图1),这个核心比處理器核心简单得多,每个时钟周期只负责处理一个浮点数据,所以总的浮点运算次数就是核心数量×时钟周期了(当前常见的GPU浮点运算单位一般是TFLOPS,即每秒浮点操作多少万亿次)。又因为现在的核心可以一次性处理一个双精度浮点数据,它相当于两个最基础的单精度浮点数据,所以再×2就得到了GPU的浮点运算次数。国产GPU、英伟达RTX40系列和AMD RX 7000系列的理论性能其实就是根据其透露出的配置计算出来的理论浮点计算性能。
因为现在的图像是分成像素点来处理的,每个点的色彩都要进行浮点运算,然后组合成一幅图片(图2),所以这个参数其实就说明了显卡或者GPU每秒能处理多少个像素点。
回过头来看看这个参数对游戏能力有什么关系。在分辨率确定后,每一幅画面的像素点数量也就确定了,那么每秒处理的像素点越多,实际上每秒能处理的画面数量当然就越多。这说明了什么呢?当然就是游戏的帧速(每秒画面数)越高啦。没错,对使用同一代特别是同一核心的显卡,算出它的浮点运算能力,基本就了解游戏画面的生成速度了。当然,实际的游戏画面生成速度还与CPU、内存等配件性能有关,但GPU的浮点运算速度仍然是决定游戏画面生成速度的最大因素(见表1)。最终呈现到我们面前的游戏画面帧速还会再受到显卡输出接口、显示器刷新率的影响,但这就不在本文的讨论范围内了。
对于不同代甚至不同架构的GPU,这种对比就不合适了,比如RT X3080拥有两倍于RTX 2080 Ti的浮点运算次数,帧速能达到RTX 2080 Ti的两倍吗?这就牵扯出了另一个问题,也就是核心的效率,因为谁也不能保证所有的核心或者流处理器能一直满载、有效运行,它的实际发挥还要考虑到前端的分配、后端的合成、显存数据等单元的配合(图3)。
RTX 30系列的“问题”更大一些,它们实际上是让每个核心中的整数运算单元也参加浮点运算(图4),得到的成倍“理论”运算能力。但因为干的是非“专业”工作,整数单元的浮点运算效率肯定是不如专业的浮点运算单元的,加上前端的数据分配能力、显存带宽没有跟着翻倍,所以效率大幅下降。最终我们可以看到,翻倍的理论浮点性能带来的只是不到40%的实际帧速提升(见表2)。
现在大家应该知道了,RTX 40系列性能提升幅度真的只是理论上的,游戏帧速提升幅度不一定与其一致。AMD和英伟达这种相差更远的架构就更不能直接对比了,比如R X 6800系列就以远低于RTX3080/3070的浮点运算能力,得到了能抗衡甚至压制它们的性能。
类似的还有国产GPU,它的设计目标是利用浮点计算能力满足各种专业、商业计算的需求,极可能根本就不支持Direct 3D等消费级3D技术,当然也就不能直接玩大部分游戏,因此现在还无法用它们的理论浮点性能来讨论游戏性能。