不同显卡(GPU)浮点数计算能力


1、SP总数=TPC&GPC数量*每个TPC中SM数量*每个SM中的SP数量;

TPC和GPC是介于整个GPU和流处理器簇之间的硬件单元,用于执行CUDA计算。特斯拉架构硬件将SM组合成TPC(纹理处理集群),其中,TPC包含有纹理硬件支持(特别包含一个纹理缓存)和2个或3个SM,后面会有详细描述。费米架构硬件组则将SM组合为GPC(图形处理器集群),其中,每个GPU包含有一个光栅单元和4个SM。

2、单精度浮点处理能力=SP总数*SP运行频率*每条执行流水线每周期能执行的单精度浮点操作数;

该公式实质上是3部分相乘得到的,分别为计算单元数量、计算单元频率和指令吞吐量。
前两者很好理解,指令吞吐量这里是按照FMA(融合乘法和增加)算的,也就是每个SP,每周期可以有一条FMA指令的吞吐量,并且同时FMA因为同时计算了乘加,所以是两条浮点计算指令。

以及需要说明的是,并不是所有的单精度浮点计算都有这个峰值吞吐量,只有全部为FMA的情况,并且没有其他访存等方面的限制的情况下,并且在不考虑调度效率的情况下,才是这个峰值吞吐量。如果是其他吞吐量低的计算指令,自然达不到这个理论峰值。

3、双精度浮点处理能力=双精度计算单元总数*SP运行频率*每个双精度计算单元每周期能进行的双精度浮点操作数。

目前对于N卡来说,双精度浮点计算的单元是独立于单精度单元之外的,每个SP都有单精度的浮点计算单元,但并不是每个SP都有双精度的浮点单元。对于有双精度单元的SP而言,最大双精度指令吞吐量一样是在实现FMA的时候的每周期2条(指每周期一条双精度的FMA指令的吞吐量,FMA算作两条浮点操作)。

而具备双精度单元的SP数量(或者可用数量)与GPU架构以及产品线定位有关,具体为:

计算能力为1.3的GT200核心,第一次硬件支持双精度浮点计算,双精度峰值为单精度峰值的1/8,该核心目前已经基本退出使用。

GF100/GF110核心,有一半的SP具备双精度浮点单元,但是在geforce产品线中屏蔽了大部分的双精度单元而仅在tesla产品线中全部打开。代表产品有:tesla C2050,2075等,其双精度浮点峰值为单精度浮点峰值的一半;

geforce GTX 480,580,其双精度浮点峰值为单精度浮点峰值的大约1/8左右。

其他计算能力为2.1的Fermi核心,原生设计中双精度单元数量较少,双精度计算峰值为单精度的1/12。

kepler GK110核心,原生的双精度浮点峰值为单精度的1/3。而tesla系列的K20,K20X,K40他们都具备完整的双精度浮点峰值;geforce系列的geforce TITAN,此卡较为特殊,和tesla系列一样具备完整的双精度浮点峰值,geforce GTX780/780Ti,双精度浮点峰值受到屏蔽,具体情况不详,估计为单精度峰值的1/10左右。

其他计算能力为3.0的kepler核心,原生具备较少的双精度计算单元,双精度峰值为单精度峰值的1/24。

计算能力3.5的GK208核心,该卡的双精度效能不明,但是考虑到该核心定位于入门级别,大规模双精度计算无需考虑使用。

所以不同核心的N卡的双精度计算能力有显著区别,不过目前基本上除了geforce TITAN以外,其他所有geforce卡都不具备良好的双精度浮点的吞吐量,而本代的tesla K20/K20X/K40以及上一代的fermi核心的tesla卡是较好的选择。

参考于:https://cudazone.nvidia.cn/forum/forum.php?mod=viewthread&tid=7722&extra=page%253D1

你可能感兴趣的:(gpu,CUDA,并行处理)