二、安培构架解析:流处理器数量翻倍是否言过其实?
在图灵诞生之前,GPU核心中并没有单独的INT32单元,从Kepler到Maxwell到再到Pascal,每一个CUDA核心都就是由FP32单元构成。
而Turing每一个CUDA核心除了有一个FP32的单精度浮点单元之外,还有对应有一个INT32的单精度整数单元。
在现代游戏(例如古墓丽影:暗影)中,每100条指令操作中有62条是浮点指令操作,38条是整数指令操作。以往GPU在只能单独、交替的执行浮点和整数运算,图灵构架加入了整数运算单元之后,可以与浮点单元一起并发执行,可以将流处理器的执行效率提升36%。
不过在游戏中整数运算量远远低于浮点运算量(38:62),因此经常会有大量的INT32单元被闲置。为了解决这个问题,提升INT32单元的利用率,NVIDIA改进了INT32单元,使之不仅可以运行整数运算,也能进行单精度浮点运算。
如上图所示,在安培构架中,每个SM单元中的64个FP32单元依旧保留,而INT32单元则被赋予了更多的使命,它不仅能进行整数运算,但是在不需要进行整数运算的情况下,它也能和FP32一样进行单精度浮点运算。
也就是说,每个SM单元可以同时执行4x(16FP32+16FP32)=128个FP32运算,或者4x(16FP32+16INT32)=64个FP32+64个INT32运算。
在理想的情况将下,一个SM单元中的64个INT单元全部都做单精度浮点运算的话,那么流处理器(FP32单元)数量将会直接变成128个。相对而言,图灵构架一个SM单元只有固定的64个流处理器。
RTX 3080拥有68个SM单元,理论上能达到8704个流处理器的规模。很多同学可能怀疑NVIDIA在骗我们,这些流处理器是否能够同时工作还是个问号。
下面我们使用AIDA64 GPGPU进行验证,看看RTX 3080的8704个流处理器是否言过其实。
如果依据1710MHz的频率和8704个FP32单元来计算RTX 3080的理论浮点性能应当是29767GFLOPS。
实测RTX 3080的单精度浮点运算性能是29117GFLOPS,略低于理论值。这是因为320W TDP的限制,RTX 3080在进行GPGPU单精度浮点测试时,GPU核心的满载频率只有1672MHz并没有达到默频的1710MHz。
不过从这里可以看出,RTX 3080的的确确拥有8704个流处理器(FP32单元),现在已经没有什么好质疑的了。
实测RTX 2080 Ti的单精度浮点运算性能是16626GFLOPS,接近RTX 3080的6成。
实际上,在进行GPGPU测试时,RTX 2080 Ti的运行频率达到了1910MHz,所以虽然流处理器数量只有一半,但是浮点性能却能达到6成。
RTX 2080在进行GPGPU测试时,运行频率更是高达1938MHz,单精度浮点运算性能达到了11416GFLOPS,约为RTX 3080的40%。要知道RTX 2080 2944个流处理器只相当于RTX 3080 8704个流处理器的1/3。
所以现在大家应该知道了RTX 3080 TDP如此之高的原因!即便是320W的TDP,也难以满足让8704个流处理器以较高的频率运行的功耗需求。