英特尔向CPU添加深度学习指令


某些最新的Intel处理器支持AVX-512系列矢量指令。它们以512位(64字节)的块形式执行。支持如此大指令的硬件的优势在于,处理器可在单个时钟周期内处理更多数据。

如果代码中加载了64位字(8个字节),则从理论上讲,如果不考虑其他因素,则使用AVX-512指令可以将其加速八倍。

用于x86命令系统的AVX-512扩展支持8个掩码寄存器,用于整数和小数及其操作的512位压缩格式,微调舍入模式(允许您覆盖全局设置),广播操作,抑制小数操作中的错误,收集/分散运算,快速数学运算,大偏移量的紧凑编码。

AVX-512初始设置包括八组指令:

  • AVX-512冲突检测指令(CDI)
  • AVX-512指数和倒数指令(ERI)
  • AVX-512预取指令(PFI)
  • AVX-512矢量长度扩展(VL)
  • AVX-512字节和字指令(BW)
  • AVX-512双字和四字指令(DQ)
  • AVX-512整数融合乘法加法(IFMA)
  • AVX-512矢量字节处理指令(VBMI)

英特尔至强融核(以前称为英特尔MIC)Knights Landing协处理器,某些Skylake Xeon(SKX)处理器以及未来的Cannonlake处理器将支持AVX-512家族,这些处理器将于2017年上市。列出的处理器不支持所有指令。例如,Knights Landing Xeon Phi仅支持CD,ER和PF。 Skylake Xeon处理器(SKX)支持CD,VL,BW和DQ。 Cannonlake处理器-CD,VL,BW,DQ,IFMA。

当然,不是每一个代码,可向向量指令,但并不需要所有的代码来执行此魁北克大学计算机科学教授Daniel Lemire的博客中。据他介绍,优化“热代码”很重要,因为它占用了最多的处理器资源。在许多系统中,“热代码”是由一系列滚动数十亿次的循环构建的。就是应该对其进行优化,这是主要的好处。

例如,如果使用MKL Numpy将此类Python代码从标准64位指令重新编译为AVX-512 ,则在同一处理器上执行时间将从6-7秒减少到1秒。

import numpy as np
np.random.seed(1234)
xx = np.random.rand(1000000).reshape(1000, 1000)
%timeit np.linalg.eig(xx)

深度学习硬件支持


神经网络和深度学习是近来最光明的趋势之一。谷歌,Facebook和其他大型公司正在尝试尽可能地使用神经网络:在推荐系统,面部识别,文本翻译,语音识别,照片分类甚至是棋类游戏中使用神经网络(但这更多是为了宣传而不是商业利益)。有些人试图在非标准领域进行深入培训,例如自动驾驶培训

在风险投资投资者中,现在有一种理解,即快速致富的最有效方案是在深度学习领域成立一家初创公司,这家来自五大公司(Facebook,Google,苹果,微软,亚马逊)的公司将立即购买。这些公司最近在人才购买领域展开了激烈竞争,因此一家初创公司将以高昂的价格即刻离职,每位员工至少获得1,000万美元。随着公司发布开源开发工具,这种商业计划变得更加简单,就像Google对TensorFlow所做的那样

对于英特尔来说不幸的是,这家公司落后了,几乎没有参加比赛。 Lemir教授承认Nvidia GPU现在被认为是行业标准。他们依靠它们运行用于机器学习的程序代码。

并不是英特尔工程师睡过了这一趋势。只是GPU本身没有任何特殊说明,更适合于深度学习计算。

尽管如此,英特尔正在准备进行反击,因此情况可能会倒挂。 9月,该公司发布了新的《英特尔架构指令集扩展编程参考》。指示将来的处理器将支持的所有指令。如果您查看此文档,我们正在等待一个惊喜。事实证明,AVX-512指令系列分为几组并进行了扩展。

特别是,专门针对深度培训设计了两组指令:AVX512_4VNNIW和AVX512_4FMAPS。从描述的角度来看,这些说明不仅可用于深度学习,而且还可用于许多其他任务。

  • AVX512_4VNNIW:用于深度学习的矢量指令增强了单词变量的精度
  • AVX512_4FMAPS:用于深度学习浮点单精度的矢量指令



这是个好消息。

当标准Intel处理器中出现这种支持时,它们将变得更接近甚至超越Nvidia的深度学习图形性能。当然要服从适当的优化程序。谁知道,与视频编码相同的故事会突然重复出现,当在 CPU 添加H.264和H.265硬件支持后,具有集成显卡的英特尔处理器开始比单独的Nvidia和AMD视频卡更快地编码和解码视频。

Source: https://habr.com/ru/post/zh-CN398405/


All Articles