AVX(Advanced Vector Extensions)

AVX(Advanced Vector Extensions) 是x86架构处理器(Intel/AMD)提供的SIMD(Single instruction,multiple data,单指令多数据)扩展。

最早是Intel于2008年3月发布的Sandby Bridge架构,随后AMD于2011年Q4在Bulldozer微架构提供。AVX提供了一个新的功能、新的指令集和新的编码方案。

AVX2 也称为Haswell New Instructions将大多数整数命令扩展为256位并引入了新的指令。AVX2最早是2013年随着Haswell微架构提供支持。

2013年7月Intel又发布了 AVX-512 ,使用了一个新的EVEX prefix编码将AVX扩展为512位,

性能估算

FLOPS: 即每秒浮点运算次数, 是每秒所执行的浮点运算次数(Floating-point operations per second)

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

浮点数有不同的规格:

  • FP16(半精度)占用2个字节,共16bit

  • FP32(单精度)占用4个字节,共32bit

  • FP64(双精度)占用8个字节,共64bit

FP16(半精度)

  • 支持AVX2的处理器在1个核心1个时钟周期可以执行16次浮点运算,也称为16FLOPs:

    CPU的算力=核心的个数 x 核心的频率 x 16FLOPs
    
  • 支持AVX512的处理器在1个核心1个时钟周期可以执行32次浮点运算,也称为32FLOPs:

    CPU的算力=核心的个数 x 核心的频率 x 32FLOPs
    

CPU的单双精度计算机能力

常用双精度浮点运算能力衡量CPU的科学计算的能力,就是处理64bit小数点浮动数据的能力

支持AVX512指令集,且FMA系数=2,所以CPU每周期算力值:

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

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

举例: Intel Xeon Gold 6348 ,28c,2.60 GHz,42MB,235w:

双精算力=28x2.3(10^9)x(32)/(10^12)=2.3Tflops

单精算力=28x2.3(10^9)x(64)/(10^12)=4.6Tflops

参考