admin管理员组

文章数量:1655344

学了IT那么久,只知道CPU主频不断的提升,核数也越来越多,但是如何理论上计算出不同代CPU性能的提升,还真没有认真思考过,我估计大多数人也不会关注,这次由于要进行高性能集群项目遇到,刚好认真的研究了一下CPU的浮点计算理论值。记录一下过程。

首先,FLOAS=核数*单核主频*CPU单个周期浮点计算值。

上述三个参数中,核数,单核主频在CPU型号都会标明,只有CPU单个周期浮点计算值这个要深入思考一下。

首先要了解CPU指令集的概念。

现在服务器的CPU都是AVX-512指令集了,

对应CPU能处理什么样的指令集,可以查intel官方的Specifications.比如我想查Intel® Xeon® Gold 6142 Processor这款CPU的支持哪种指令,可以查如下链结https://ark.intel/products/120487/Intel-Xeon-Gold-6142-Processor-22M-Cache-2-60-GHz-

同时还能查到此款CPU的AVX-512 FMA Units是2,这个意思是可以单个CPU周期可以同时执行2条512bit 加法和2条512bit 乘法。

其次是理解单精度和双精度浮点运算概念,简单的理解单精度就是指32bit的指令长度的运算,对应操作系统就是32位操作系统;双精度就是指64bit指令长度的运算,对应操作系统就是64位操作系统。

理解上述二个概念,我们就可以算出CPU单周期浮点计算能力了,

CPU单周期双精度浮点计算能力=2(FMA数量)*2(同时加法和乘法)*512/64

CPU单周期双精度浮点计算能力=2(FMA数量)*2(同时加法和乘法)*512/32

可以理解为单个CPU周期能够同时执行加法和乘法的指令的条数。

例如上述的Intel 6142 CPU的浮点能力可以计算出,6142是16核,每核2.6GHz

FLOAS(双精度)=16*2.6*(2*2*512/64)=1331.2GFLOAs

FLOAS(单精度)=16*2.6*(2*2*512/32)=2662.4GFLOAs

可以理解此款CPU的双精度浮点运算峰值为1.3TFLOAs,单精度为2.6TFLOAs.

对一个计算节点,有可能有多个CPU,那么对于计算节点,单个CPU浮点运算峰值要乘以CPU个数才是一个计算节点的浮点运算峰值。

常用的CPU情况:

Intel Core 2 and Nehalem:

4 DP FLOPs/cycle: 2-wide SSE2 addition + 2-wide SSE2 multiplication

8 SP FLOPs/cycle: 4-wide SSE addition + 4-wide SSE multiplication

Intel Sandy Bridge/Ivy Bridge:

8 DP FLOPs/cycle: 4-wide AVX addition + 4-wide AVX multiplication

16 SP FLOPs/cycle: 8-wide AVX addition + 8-wide AVX multiplication

Intel Haswell/Broadwell/Skylake/Kaby Lake:

16 DP FLOPs/cycle: two 4-wide FMA (fused multiply-add) instructions

32 SP FLOPs/cycle: two 8-wide FMA (fused multiply-ad

本文标签: 浮点能力GPUCPU