如何做到性能翻倍 NVIDIA Ampere架构解析
持续了一个月的“显卡发布季”已经告一段落,截止目前nvidia发布了geforce rtx 3060 ti/3070/3080/3090共4个型号的显卡,相比上一代显卡,rtx 30系显卡再次做到了性能翻倍的神话。
除了性能上的提升,新的nvidia ampere架构还带来了第二代rt core和第三代tensor,虽然rtx 30系显卡拥有诸多提升,但价格却与上一代显卡相同。
在9月2日发布会当天,虽然过程仅有短短的40分钟,却震惊了全世界的用户。
算力提升
下面我们就来看看,“有史以来最伟大性能提升”相比上一代的nvidia turing架构,做了哪些提升。
首先来简单回顾一下在9月2日发布会的ppt上我们都看到了什么,相较于初代的turing rtx架构,nvidia ampere架构在算力上有着成倍的增长,每个时钟执行2次着色器运算。
而turing为1次,着色器性能达到30 tflops单精度性能,而turing为11 tflops。
nvidia ampere架构翻倍了光线与三角形的相交吞吐量,rt core达到58 rt tflops,而turing为34 rt tflops。
另外在全新的tensor core中,可自动识别并消除不太重要的dnn权重,处理稀疏网络的速率是turing的两倍,算力高达238 tensor tflops,而turing为89 tensor tflops。
全新的nvidia ampere gpu核心拥有280亿个晶体管,628平方毫米的面积,基于三星的8nm nvidia定制工艺,来自美光的gddr6x显存,以及我们上面说的,三大处理核心均为初代turing的两倍速率,构成了有史以来性能最强大的ampere。
sm单元的改变
而nvidia ampere架构的强大性能并不是nvidia一蹴而就,可以说在20系显卡中所采用的turing架构功不可没,下面我们先来看看完整的ga102核心。
完整的ga102 gpu包含7个gpc(图形处理集群)42个tpc(纹理处理集群)以及84个sm(流处理器)组成。
gpc是占据主导地位的高级模块,拥有所有的关键图形处理单元,每个gpc包含一个专用光栅引擎。
在新的nvidia ampere架构中,每个gpc还包含了两个rop分区,每个分区包含8个rop单元。下面我们来看看每个sm单元的变化。
在每个sm中,包含四个大的处理分区共128个cuda核心,4个第三代tensor core,1个第二代rt core,1个256 kb的缓存文件,1个128 kb的l1缓存,这个l1缓存可以根据不同的工作需求来调配缓存,工作效率发挥至最大。
另外大家都知道本次rtx 3080的cuda数量暴增至8704个,而rtx 3090的cuda数量更是达到了惊人的10496个。
但是大家要知道专业计算卡tesla a100的ga100核心,拥有更大的核心面积,更多的晶体管数量,理论上只有8192个cuda,那rtx 3080又是如何达到这种效果的呢?
其实是因为本次nvidia ampere的sm在turing基础上增加了一倍的fp32运算单元,这就使得每个sm的fp32运算单元数量提高了一倍。
我们在发布会中经常听到性能翻倍的说法,其实是因为本次nvidia ampere的sm在turing基础上增加了一倍的fp32运算单元,这就使得每个sm的fp32运算单元数量提高了一倍,同时吞吐量也就变为了一倍。
而通常我们计算显卡的cuda数量,并不是把sm中的所有单元加起来计数,而是只统计fp32单元的数量,所以这样一来,sm中的【fp32 : int32】 从 1:1 变为 2:1。
如rtx 3080的8704个cuda,其实它只有4352个int32单元,但由于内部的fp32数量翻了一倍,所以最终实现了8704这个惊人的数字。
而这样粗暴的提升cuda数量对于游戏有帮助吗?
答案是有,不仅有提升还很大。其实通常在游戏中浮点运算相比整数计算要常用的多,图形、算法以及各种计算操作中着色器工作负载通常需要混合使用fp32算数指令,而fp32的加速也有助于光线追踪降噪着色器。
第二代rt core
在此次的nvidia ampere架构中,nvidia官方宣布为第二代rt core,它和第一代有什么不同呢。
首先要知道rt core的工作原理是,着色器发出光线追踪的请求,交给rt core来处理,它将进行两种测试,分别为边界交叉测试(box intersection testing)和三角形交叉测试(triangle intersection testing)。
基于bvh算法来判断,如果是方形,那么就返回缩小范围继续测试,如果是三角形,则反馈结果进行渲染。
而光线追踪最耗时的正是求交计算,因此,要提升光线追踪性能,主要是对两种求交(bvh/三角形求交)进行加速。
在turing的rt core中,可以每个周期完成5次bvh遍历、4次bvh求交以及一次三角形求交,在第二代rt core 里,nvidia增加了一个新的三角形位置插值模块以及一个的额外的三角形求交模块,这样做的目的是为了提升诸如运动模糊特效时候的光线追踪性能。
第二代rt core可以让光线追踪与着色同时进行,进行的光线追踪越多,加速就越快,它将光线相交的处理性能提升了一倍,在渲染有动态模糊的影像时,按照nvidia自己的实测,比turing快8倍。
第三代tensor core
除了光线追踪的强化,ampere架构的tensor core也得到了极大地加强,在第三代tensor core中,nvidia引入了稀疏化加速,可自动识别并消除不太重要的dnn(深度神经网络)权重,同时依然能保持不错的精度。
首先原始的密集矩阵会经过训练,删除掉稀疏矩阵,再经过训练稀疏矩阵,从而实现稀疏优化,进而提高tensor core的性能。
所以最终的结果就是tensor core在处理稀疏网络的速率是turing的两倍,算力高达238 tensor tflops,而turing为89 tensor tflops。
rtx io
与此次rtx 30系显卡一同发布的还有一项新技术——rtx io。目前很多游戏动辄几十g甚至百g的安装空间,对于存储空间的负担暂且不提,但存放在硬盘中的数据,如果显卡想要读取到,需要先由cpu从硬盘中读取压缩过的数据,经过解压缩再发送到显存中。
虽然随着nvme ssd的推出,读取速度相较机械硬盘能够快20倍,但受制于传统i/o限制,nvme高达7gb/秒的高速读写对于cpu是极大的负担。
在这个过程中,会占用多个cpu核心,压力急剧增大,占用较多的内存,而此时其实gpu是处于闲置状态的。
rtx io的作用就是越过cpu解压再传输数据这一步,直接从pcie总线读取硬盘上经过压缩的数据,并且完成解压,降低cpu占用,变向提升了性能。
当然这项技术作为系统底层的运行方式改变,还需要借助微软发布的directstorage来实现,对于目前容量的游戏来说,rtx io的改善效果有限,但假以时日等游戏容量上百g成为常态的时候,这项技术将会发挥巨大的功效。
最快的显存
在rtx 3080中,采用了gddr6x显存,gddr6x拥有320bit的位宽以及19gbps的带宽速度,与采用gddr6的turing相比可提升40%的速度,在相同时间内gddr6x可以比gddr6传输多2倍的数据。
这对于需要大量数据负载的工作尤为重要,如光线追踪的游戏、ai学习和8k视频渲染。
同时搭配新增的hdmi2.1接口,可以支持单线8k的视频输出,而上一代hdmi2.0仅支持4k 98hz的视频输出,如果想要连接8k电视,则需要更多的线缆支持。
相信了解rtx 30系显卡的性能后,会有玩家会问,rtx 20系显卡如此“短寿”算不算失败的一代,我认为不算。
turing为我们开创了光线追踪和ai学习的新世界,奠定了gpu未来的发展方向,真正意义上实现从性能的堆砌到质的改变。
而ampere则是站在巨人的肩膀,将上一代的路走的更宽更扎实。
- the end -
原文链接: 责任编辑:振亭