AVX-512指令的前世今生

  • 作者: yanyun

  • 时间: September 18, 2017
  • 分类: Intel CPU
  • 转自:http://linuxperformance.top/index.php/archives/94/

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了。

    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. 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

AVX-512指令的前世今生相关推荐

  1. 英特尔全部cpu列表_程序员大神Linus转投AMD:我希望英特尔的AVX 512指令集「去死」...

    机器之心报道 参与:泽南 「去死吧,AVX 512 指令集.」Linux 提出者林纳斯 · 托瓦兹(Linus Torvalds)说道. Linux 首席架构师,当今全球最著名程序员之一 Linus ...

  2. 单指令多数据SIMD的SSE/AVX指令集和API

    https://software.intel.com/sites/landingpage/IntrinsicsGuide/# Technologies MMX SSE SSE2 SSE3 SSSE3 ...

  3. SIMD 编程的优势与SIMD指令:SSE/AVX 与编程demo

    资源:https://download.csdn.net/download/Rong_Toa/18745608 <Benefits of SIMD Programming | SIMD的优势&g ...

  4. ARM_NEON_CNN编程 SIMD单指令多数据流 intrinsics指令 内联汇编 CNN卷积网络优化 深度学习优化

    ARM_NEON_CNN编程 SIMD单指令多数据流 intrinsics指令 内联汇编 CNN卷积网络优化 深度学习优化 博文末尾支持二维码赞赏哦 _ 本文github 神经网络arm neon加速 ...

  5. 英特尔AVX指令集解析

    Sandy Bridge和Larrabee架构新指令集 Intel的微架构也进入了全速发展的时期,在刚刚结束的IDF峰会上Intel公司就发布了2010年的RoadMap.2010年Intel也将发布 ...

  6. ncnn 框架分析 openmp多核加速 缓存 仿存 cache 快速矩阵乘法 单指令多数据指令SIMD

    ncnn 框架分析 本文github链接 博文末尾支持二维码赞赏哦 _ 在ncnn中建立新层 ncnn 下载编译使用 参考1 参考2 1. param 和 bin 文件分析 param 7767517 ...

  7. Linux下的last指令详解

    Linux下的last指令是解析登录记录与审计轨迹的利器 简介: 在Linux系统中,了解用户登录记录和审计轨迹是一项重要的任务.而last指令是一个强大的工具,用于检索和展示系统中用户的登录信息.本 ...

  8. Linux下的Telnet指令详解

    简介: Telnet指令是一种常用的远程登录工具,可用于与远程主机建立连接并执行命令.本篇博客将以通俗易懂的方式,详细解析Telnet指令的前世今生.功能.用法和应用场景,帮助读者全面了解Telnet ...

  9. Linux下的SCP指令详解

    Linux下的SCP指令是一个安全文件传输利器 简介: 在Linux系统中,文件传输是一项常见的任务.而SCP(Secure Copy)指令作为一种安全的文件传输工具,可以在网络环境中快速.安全地传输 ...

最新文章

  1. 设计模式在外卖营销业务中的实践
  2. 【转】[C# 基础知识系列]专题四:事件揭秘
  3. python os方法-Python os.lchflags() 方法
  4. 云计算重头戏:可信计算技术
  5. 真·干货!这套深度学习教程整理走红,从理论到实践的带你系统学习 | 资源...
  6. 【SQL Server】CONVERT() 函数
  7. PSP模块Tensorflow/Pytorch实现小结
  8. Linux系统管理.Samba配置文件
  9. python运维都做些什么,Python运维工程师主要做什么?岗位职责!
  10. C++判断是否为一个凹多边形
  11. Excel技巧——从身份证号码里提取员工性别
  12. nrg文件是什么?nrg文件格式详细介绍
  13. pyecharts绘制地图(Geo and Map)(细节更丰富)
  14. UFS学习一:UTP层和UPIU
  15. misc类设备驱动1——板载蜂鸣器驱动测试
  16. python允许无止境的循环_python基础课程 第6章 循环(无尽的未来)
  17. 品读《你不努力,谁也给不了你想要的生活》
  18. 数字信号处理FFT快速傅立叶变换MATLAB实现——实例
  19. 视频伪原创工具 苹果手机视频md5值修改
  20. 常见的无法上网故障原因和解决方法

热门文章

  1. Eigen: C++开源矩阵计算库
  2. Java几种设计模式
  3. 独家丨DeepMind科学家、AlphaTensor一作解读背后的故事与实现细节
  4. 第一款带无代码应用搭建平台的固定资产管理系统
  5. Linux命令行使用总结
  6. 三维重建技术(2)各种方法简介
  7. Week of 2.21
  8. 中文分词技术比较:单字切分 vs 中文分词
  9. vs2008使用技巧推荐
  10. 经典SVM之SMO算法实现