一文看懂CPU算力测算方法(Cpu算力)

小编:大闷头 更新时间:2022-08-23

说到CPU算力,就不能不提到FLOPS了。


一文看懂CPU算力测算方法(Cpu算力)


FLOPS是CPU每秒浮点运算次数,也称为每秒峰值速度,英语是Floating-point operations per second;简写就是FLOPS,flops 或者 flop/s。

在多数情况下,测算FLOPS比测算每秒指令数(IPS)要准确。

要测算FLOPS就要搞清楚浮点数的精度。


一文看懂CPU算力测算方法(Cpu算力)


浮点(floating-point)指的是带有小数的数值,浮点运算就是小数的四则运算,常用来测量计算机运算速度或被用来估算计算机性能,特别是在科学计算领域会使用到大量的浮点运算,对CPU的算力性能要求就比较高了。

说到浮点计算能力,就涉及到半精度、单精度、双精度三种类型,双精度是64位的(FP64),单精度是32位的(FP32),半精度是16位的(FP16),半精度是英伟达在2002年搞出来的,双精度和单精度是为了计算,而半精度更多是为了降低数据传输和存储成本。

双精度浮点数

一文看懂CPU算力测算方法(Cpu算力)

单精度浮点数

一文看懂CPU算力测算方法(Cpu算力)

半精度浮点数

一文看懂CPU算力测算方法(Cpu算力)

双精度、单精度、半精度都分成3部分,符号位,指数和尾数。

不同精度只不过是指数位和尾数位的长度不一样。

解析一个浮点数就5条规则

1、如果指数位全零,尾数位是全零,那就表示0
2、如果指数位全零,尾数位是非零,就表示一个很小的数(subnormal),计算方式 (−1)^signbit × 2^−126 × 0.fractionbits
3、如果指数位全是1,尾数位是全零,表示正负无穷
4、如果指数位全是1,尾数位是非零,表示不是一个数NAN
5、剩下的计算方式为 (−1)^signbit × 2^(exponentbits−127) × 1.fractionbits
常用的语言几乎都不提供半精度的浮点数,这时候需要我们自己转化。

所以,要做算力规划时要结合其使用场景来分析,其实很多场景对于精度要求也没那么高,例如:分布式深度学习里面,如果用半精度的话,比起单精度来可以节省一半传输成本。考虑到深度学习的模型可能会有几亿个参数,使用半精度传输还是非常有价值的。

通常,在没有特别明确算力算法的前提下,我们默认都是按照双精度去测算算力能力的。

一般做算力规模分析时会明确算力单位如EFLOPS,或PFLOPS,这就需要自己根据情况去换算了,但都是通过FLOPS换算而来的。

浮点计算值的换算单位:

一个MFLOPS(megaFLOPS)等于每秒一佰万(=10^6)次的浮点运算

一个GFLOPS(gigaFLOPS)等于每秒拾亿(=10^9)次的浮点运算

一个TFLOPS(teraFLOPS)等于每秒万亿(=10^12)次的浮点运算

一个PFLOPS(petaFLOPS)等于每秒千万亿(=10^15)次的浮点运算

一个EFLOPS(exaFLOPS)等于每秒百亿亿(=10^18)次的浮点运算

一个ZFLOPS(zettaFLOPS)等于每秒十万京(=10^21)次的浮点运算


对于FLOPS的计算公式为: FLOPS=CPU核数*单核主频*CPU单个周期浮点计算值*1000000

只要我们知道CPU的型号,就可以到对应的CPU厂商网站上查询相关参数了。

下面我们拿intel的CPU为例,到Intel官网进行查询,网址如下:https://ark.intel.com/content/www/us/en/ark/search.html

输入具体的CPU型号,如 6240R,进入对应参数页面。

https://ark.intel.com/content/www/us/en/ark/products/199343/intel-xeon-gold-6240r-processor-35-75m-cache-2-40-ghz.html


一文看懂CPU算力测算方法(Cpu算力)


一文看懂CPU算力测算方法(Cpu算力)


一文看懂CPU算力测算方法(Cpu算力)


CPU单个周期浮点计算值有点复杂,具体如下表

instruction set(指令集)

每时钟周期的单精度运算次数

每时钟周期的双精度运算次数

SSE(128-bits)

8

4

AVX(256-bits)

16

8

AXV2(256-bits)

32

16

AXV256(512-bits)

64

16(FMA=1)
32(FMA=2)

那么,6240R的核数为10,主频为2.4Hz,每时钟周期的双精度运算次数32,其单颗CPU的GFLOPS算力算法就是24*2.4*32=1843.2 GFLOPS

索性将之前用过的CPU都拿出来分析了一下,顺便按照CPU计算能力排个序。

一文看懂CPU算力测算方法(Cpu算力)


一文看懂CPU算力测算方法(Cpu算力)