AVX指令集介绍
AVX指令集(英语:Advanced Vector Extensions,即高级向量扩展指令集)是x86架构处理器中的指令集,被英特尔和AMD的处理器所支持。AVX指令集由英特尔在2008年3月提出,并在2011年第一季度出品的Sandy Bridge系列处理器首获支持。

AVX-512 是一组新的指令集,和之前的 SSE/AVX-128/AVX-256一样,都属于向量运算指令,支持的数据宽度更大了。更大数据宽度的向量指令一直(在深度学习流行起来以前) 被用于加速各种实际运算,例如多媒体编解码、加密解密和数值运算等。
官方如Intel描述:
Intel® AVX-512 is a set of new instructions that can accelerate performance for workloads and usages such as scientific simulations, financial analytics, artificial intelligence (AI)/deep learning, 3D modeling and analysis, image and audio/video processing, cryptography and data compression.
比较巧的是深度学习也刚好需要这类运算和需求,所以 AVX-512 被冠以深度学习就是水到渠成的事情了。

Intel 在最新的桌面和 Xeon 处理器中也开始支持 AVX-512,但是并不意味可以替代现在的专用加速卡 (如 FPGA 和 GPU) 在深度学习中的地位。毕竟核数太少。针对深度学习Intel将会推出新的指令集AVX512_4VNNIW 和 AVX512_4FMAPS。

  1. AVX架构演进

    架构演进如下图,最早从SSE指令集开始,到现在AVX512指令集,理论上行应该叫AVX3才对,当然INTEL最早也是这么计划的,后来画风变量就直接成AVX-512了。
    1.png
    AVX是X86指令集的SSE延伸架构,类似IA16至IA32演进,AVX把暂存器XMM 128bit提升至YMM 256bit,以增加一倍的运算效率。此架构支持了三运算指令(3-Operand Instructions),减少在编码上需要先复制才能运算的动作。在微码部分使用了LES LDS这两少用的指令作为延伸指令Prefix。
    AVX2指令集将整数操作扩展到了256位,并引入了FMA指令集作为扩充。AVX-512则将指令进一步扩展到了512位。
    详细的如下图,从64位到512位,AMD曾经企图率先发布SSE5来夺权,结果Intel将指令集的名称改成了AVX,而AMD只能宣布支持AVX指令集,夺权失败。:
    2.png

  2. AVX-512特性分析

    AVX-512指令集由独立的指令集组成,他们有唯一的CPUID特性位。各种指令集如下:

  3. F,CD,ER,PF

    F,CD,ER,PF在Xeon Phi x200 (Knights Landing)和Xeon V5中支持,其中ER和PF只有Knights Landing。分别是如下指令集。
    • AVX-512 Foundation (F)
    • AVX-512 Conflict Detection Instructions (CD)
    • AVX-512 Exponential and Reciprocal Instructions (ER)
    • AVX-512 Prefetch Instructions (PF)

  4. BW, DQ, VL

    在Skylake中引入,可见架构演进图。
    • AVX-512 Byte and Word Instructions (BW) 扩展AVX512能覆盖8位和16位整形操作。
    • AVX-512 Doubleword and Quadword Instructions (DQ) – 增加32位和64位AVX-512指令。
    • AVX-512 Vector Length Extensions (VL) – 扩展大部分AVX-512操作同样可以在XMM(128)和YMM(256)寄存器。

  5. IFMA, VBMI,4VNNIW, 4FMAPS

    后续计划的指令集
    • AVX-512 Integer Fused Multiply Add (IFMA)
    • AVX-512 Vector Byte Manipulation Instructions (VBMI)
    • AVX-512 Vector Neural Network Instructions Word variable precision (4VNNIW)
    • AVX-512 Fused Multiply Accumulation Packed Single precision (4FMAPS) -
    其中4VNNIW和4FMAPS是专门用来深度学习的,Intel是不会放弃这块大蛋糕的。

  6. 参考

Intel will add deep-learning instructions to its processors:
https://lemire.me/blog/2016/10/14/intel-will-add-deep-learning-instructions-to-its-processors/
AVX架构研发及支持:
https://llvm.org/devmtg/2014-10/Slides/Nis-AVX-512ArchPoster.pdf
Intel® AVX-512 Instructions and Their Use in the Implementation of Math Functions
http://arith22.gforge.inria.fr/slides/s1-cornea.pdf