什么是算力?

算力,即计算能力,英文为Compute Capability,缩写为CC.

计算能力是对计算水平高低的一个重要衡量指标,计算是一个抽象的概念,加减乘除是一种计算,三角函数是一种计算,微积分也是一种计算,在计算机领域,复杂的计算可以有多个简单的计算组合而成,为了描述计算能力,我们规定将一秒进行一次浮点运算的能力记为1(该处浮点数指单精度浮点数),即1FLOPS,其英文为FLoat point Operation Per Second。

算力的水平?

决定算力水平的主要有 :

1. 计算单元的数量;

2.计算的频率(即单位时间内计算的次数)。

对于GPU而言(针对NVidia产品),浮点计算单元的数量有两个维度,一个是Stream Multiprocessor(SM)的数目,另一个是SM中浮点计算单元的个数。

我们将第一个数记为 NsmN_{sm}N_{sm} ,第二个数记为 Nfp32N_{fp32}N_{fp32} ,计算频次记为F。

则计算能力可以表达为:CC=Nsm×Nfp32×FCC = N_{sm} \times N_{fp32}  \times FCC = N_{sm} \times N_{fp32}  \times F ,单位为FLOPS,该单位比较小,常用的单位为GFLOPS, TFLOPS,(即GigaFLOPS和TeraFLOPS)

计算单位扫盲!
Kilo (k):千,10^3,用于表示较小的数值。例如,在计算机科学中,经常使用K表示千字节(KB)。
Mega (M):百万,10^6,用于表示较大的数值。例如,在计算机科学中,经常使用M表示兆字节(MB)。
Giga (G):十亿,10^9,用于表示非常大的数值。例如,在计算机科学中,经常使用G表示吉字节(GB)。
Tera (T):万亿,10^12,用于表示极大规模的数据量或计算能力。例如,在计算机科学中,经常使用T表示太字节(TB)。
Peta (P):千万亿,10^15,用于表示非常大的数据量或计算能力。例如,在计算机科学中,经常使用P表示拍字节(PB)。
Exa (E):百亿亿,10^18,用于表示极大的数据量或计算能力。例如,在计算机科学中,经常使用E表示艾字节(EB)。
Zetta (Z):十万亿亿,10^21,用于表示极大的数据量或计算能力。例如,在计算机科学中,经常使用Z表示泽字节(ZB)。
Yotta (Y):百万亿亿亿,10^24,用于表示极大的数据量或计算能力。例如,在计算机科学中,经常使用Y表示尧字节(YB)。

针对深度学习而言,低精度计算是非常有效且常用的。

OPS 是什么?

而其核心计算单元Tensor Core(张量核心)提供的计算也是针对float16或者int8这样的数据类型,由此我们对Tensor Core类的GPU的算力的衡量不再单纯的用浮点数的操作能力,而使用特定算数类型的OPS来描述,即Operation Per Second。它表达单位时间内可以进行某种类型操作的次数。

下图即展示了TFLOPS、TOPS的使用

深度学习显存和算力关系 显卡算力和显存_深度学习