如何评估cpu的理论FLOPS能力
文章目录
- 如何评估cpu的理论FLOPS能力
- FLOPS定义
- 公式
- 指令集
- 两个具体的计算例子
- Intel® Xeon Phi 7250F
- RK3588
- 最后
如何评估cpu的理论FLOPS能力
已知一些硬件的参数,知道怎么计算硬件的性能对自己研究的硬件选取乃至程序开发都有重要的借荐意义。
GPU和NPU之类的硬件因为其专门计算用途,因此一般规格书都会提供相应的理论处理能力,但是CPU主要用于处理逻辑而非大规模并行计算,一般不会提供对应的数据。但是我们可以通过定义来计算CPU硬件的理论FLOPS能力。
FLOPS定义
FLOPS,即每秒浮点运算次数, 是每秒所执行的浮点运算次数(Floating-point operations per second;缩写:FLOPS)的简称。
当然浮点精度不同,单精度,双精度,对应的FLOPS能力也不一样,这里我们以单精度浮点FP32为例。
公式
FLOPS = cores × cycles second × FLOPs cycle {\displaystyle {\text{FLOPS}}={\text{cores}}\times {\frac {\text{cycles}}{\text{second}}}\times {\frac {\text{FLOPs}}{\text{cycle}}}} FLOPS=cores×secondcycles×cycleFLOPs
简单来说
FLOPS=核心数x单核主频xCPU单个周期浮点计算次数
核心数和主频没什么好说的,规格书都会有提,但是CPU单个周期浮点计算值这个需要好好说道说道
指令集
cpu单处理浮点运算的能力需要看cpu支持的执行集,
例如x86架构下的 AVX512指令集
在例如ARM架构下的NEON指令集(ASIMD)
两个具体的计算例子
Intel® Xeon Phi 7250F
规格书
- core :68
- 主频:1.4 ghz
- 指令集:AVX512 + 2 FMA(浮点乘加融合计算单元)
AVX512 提供16个单浮点数运算,并且浮点乘加融合相当于两次运算,提供了两个FMA单元
因此单周期可运算的FP32运算数为16x2x2;
因此他的单精度FLOPS为 68x1.4x16x2x2 = 6092.8 GFLOPS;
intel 官方flops数据为3046双精度GFLOPS,和我们的计算数据是匹配的。
RK3588
大小核:四核ARM Cortex-A76@2.4GHz + 四核ARM Cortex-A55@1.8GHz
参照该文档,可知a76存在两个ASIMD单元,128位带宽
The Cortex-A76 processor includes two load/store pipelines, which allow it to execute two 128 bit load uops and one 128 bit store
uop every cycle
a55 一个mac单元,128带宽
因此理论峰值性能为,
大核 4X2.4X4X2X2 = 153.6
小核 4x1.8x4x2 = 57.6
最后
当然理论性能只是理论,以上数据都是无依赖情况下的运算,一次FMA可以看作两次浮点运算,但是不是所有的两次浮点元算可以替代成FMA,两者并不等价,另外还要看编写软件能不能充分发挥软件性能,实际场景中,仍被业务逻辑依赖,内存吞图带宽,发热降频,大小核数据交互损耗等种种原因所影响。
理论值只能给予初步参考,实际场景仍需实测评估。