AVX-512是典型的SIMD(Single Instruction Multiple Data,单指令多数据)指令集,它可以认为是256位的AVX 2.0的扩展,SIMD宽度达到了512位。AVX(Advanced Vector Extensions,高级矢量扩展)当中的Vector矢量(也就是向量)一词就已经标明了其为一个SIMD指令集。矢量化,或者说向量化,是提升数据处理能力的一个重要手段。
AVX-512 - KNL and future Xeon:是的,一切早有预谋
我们先来看AVX-512要求的根本性架构改变:
SSE->AVX-2->AVX-512,16xXMM->16xYMM->32xZMM,笔者担心的是,未来的AVX-1024的寄存器该叫什么?
如果你了解过AVX 1.0(通常简略为AVX或AVX1)和AVX 2.0(AVX2或AVX-2),那么AVX-512也很好理解:数据处理宽度翻倍,在硬件上,它需要将处理器的AVX寄存器的宽度和数量都进行翻倍。新的AVX-512指令集将使用被称为ZMM0-31的32个512位寄存器,其中,16个就是原有的AVX 2.0使用的256位YMM寄存器加宽,然后新增加了16个新的512位寄存器。需要特别注明的是,新增加的寄存器必须运行在64位模式才能进行存取。
Intel AVX-512 on Intel Skylake-SP:AVX-512-(F, VL, BW, DQ, CD)
说到寄存器必须说到的是,在Skylake-SP的微架构设计当中,使用的是寄存器重命名,实际上是将操作数当中的寄存器重定位到寄存器当中的某些寄存器上,这种虚拟的对应可以消除大量的寄存器move操作——只需要建立新的指向即可。因此,AVX-512指令集要求的32个ZMM寄存器,实际上没有必要反映出来,当然,寄存器的宽度最好实装,如下图所示,实际增加了12个整数寄存器,浮点寄存器并没有变化,就这样支持了AVX-512指令集。
Intel Skylake-SP Core Microarchitecture:增加了12个整数寄存器
这12个整数寄存器可能包含了8个64位的mask寄存器,这些寄存器用来精细控制SIMD指令执行的对象,披露,只对512位总长数据中的某几个数据进行操作,而掠过某几个其他的数据。Skylake-SP的AVX-512还内置了广播和取整功能,在以往,使用什么规格的浮点取整方式是全局设定的,现在,每一条指令都可以设置自己的取整方式,这可以让指令的执行变得更为灵活。
AVX-512当中最让人迷惑的可能就是其包含的众多子集合了,Intel Skylake-SP搭载的是AVX-512-(F, VL, BW, CD):
F指Foundation,基础。AVX-512F就是基础的AVX-512指令集,为MIC与Xeon当中通用的部分(到了未来,就变成Xeon SP的基础部分了)。CD则是Conflict Detection,冲突检测,类似的机制在Core微架构的MOB(Memory Ordering Buffer)复合体中存在,实质上是以地址冲突检测搭配机遇性执行来充分发掘指令的执行度(上图中说的是向量化循环)。ER和PR则是Exponential指数操作和Prefetch预取操作,前者还包含了倒数操作(或者说,以-1为幂的指数),这两个指令集扩展不受SKL-SP支持而存在于KNL当中。
DQ这是Double and Quad word指令——双字/四字指令,包含了AVX-512F当中不具备的所有packed 32位/64位操作。BW这是Byte and Word指令,字节/字指令,将packed指令扩展到字节和字(8位和16位),如此一次性可以处理64个/32个数据。这个指令集也给出了MMX/SSE2/AVX2指令对应的AVX-512原语。VL这是Vector Length扩展——向量长度扩展,它的含义是,AVX-512指令集也可以对128位或者256位数据进行处理。
接下来可能是比较少为人知的几个新指令集:
请允许我们暂时忽略其他,只介绍最后一个:XSAVE{S,C},它用来保存扩展的处理器状态,包括AVX-512指令集在内,需要新的XSAVE指令集支持,以在线程切换的时候,保存/恢复这些新寄存器的数据。
关于AVX-512暂时介绍到这里,接下来我们将会展开对其进行的测试。
好文章,需要你的鼓励
工业升级的关键,或许在于智能本身。“工业+机器人”将成为通向下一阶段工业体系的核心抓手。——黄仁勋。
浙江大学等联合研究发现,AI强化学习效果取决于"模型-任务对齐"程度。当AI擅长某任务时,单样本训练、错误奖励等非常规方法也有效;但面对陌生任务时,这些方法失效,只有标准训练有用。研究团队通过大量实验证实,这种"舒适圈"现象比数据污染更能解释训练差异,为AI训练策略优化提供了新思路。
瑞士政府正式发布了自主研发的人工智能模型,该模型完全基于公共数据进行训练。这一举措标志着瑞士在AI技术自主化方面迈出重要一步,旨在减少对外国AI技术的依赖,同时确保数据安全和隐私保护。该模型的推出体现了瑞士对发展本土AI能力的战略重视。
巴赫切希尔大学研究团队通过对五种不同规模YOLO模型的量化鲁棒性测试发现,静态INT8量化虽能带来1.5-3.3倍速度提升,但会显著降低模型对噪音等图像损伤的抵抗能力。他们提出的混合校准策略仅在大型模型处理噪音时有限改善,揭示了效率与鲁棒性平衡的复杂挑战。