thi*_*rry 6 intel simd avx avx2 avx512
英特尔拥有多个SIMD ISA,如Xeon Phi上的SSE,AVX,AVX2,AVX-512和IMCI.这些ISA在不同的处理器上受支持.例如,AVX-512 BW,AVX-512 DQ和AVX-512 VL仅支持Skylake,但不支持Xeon Phi.Skylake和Xeon Phi均支持AVX-512F,AVX-512 CDI,AVX-512 ERI和AVX-512 PFI.
为什么英特尔不设计可以在其所有高级处理器上运行的更通用的SIMD ISA?
此外,英特尔在开发ISA时删除了一些内在函数并添加了新的内在函数.很多内在函数有很多种.例如,一些工作在打包的8位上,而一些工作在打包的64位上.有些口味没有得到广泛支持.例如,Xeon Phi无法处理打包的8位值.然而,Skylake将拥有此功能.
为什么英特尔以这种不一致的方式改变其SIMD内在函数?
如果SIMD ISA彼此更兼容,则现有的AVX代码可以轻松移植到AVX-512.
我看到三倍的原因.
(1)当他们最初设计 MMX时,他们只有很少的工作区域,所以尽可能简单.他们也采用了与现有x86 ISA完全兼容的方式(精确中断+上下文切换时的一些状态保存).他们没有预料到他们会不断扩大SIMD寄存器的宽度并添加如此多的指令.每一代,当他们添加更宽的SIMD寄存器和更复杂的指令时,他们必须维护旧的ISA以实现兼容性.
(2)你在AVX-512上看到的这个奇怪的事情是他们试图统一两个完全不同的产品线.Skylake来自英特尔的PC /服务器系列,因此它们的路径可以看作是MMX - > SSE/2/3/4 - > AVX - > AVX2 - > AVX-512.Xeon Phi基于一个名为Larrabee的x86兼容显卡,它使用了LRBni指令集.这或多或少与AVX-512相同,但指令较少且与MMX/SSE/AVX /等不正式兼容......
(3)他们针对不同的人口统计数据提供不同的产品.例如,(据我所知)AVX-512 CD指令不适用于PC的常规SkyLake处理器,只有用于服务器的SkyLake Xeon处理器以及用于HPC的Xeon Phi.我可以理解这一点,因为CD扩展的目标是并行直方图生成; 这种情况更可能是服务器/ HPC中的关键热点,而不是通用PC.
我确实同意这有点乱.英特尔正在开始看到了光明和规划额外的扩展更好; 据推测,AVX-512可以在下一代中扩展到1024位.不幸的是,它仍然不够好,Agner Fog 在英特尔论坛上对此进行了讨论.
对我来说,我希望看到一个可以升级的模型,而无需用户每次都必须重新编译它们的代码.例如,不是在ISA中将AVX寄存器定义为512位,而应该是存储在微体系结构中的参数,并且可以由程序员在运行时检索.用户询问此机器上可用的最大SIMD宽度是多少?,体系结构返回XYZ,并且用户具有通用控制流以应对任何XYZ内容.这将比当前技术更清晰和可扩展,该技术对于每个可能的SIMD版本使用相同功能的若干版本.: - /
| 归档时间: |
|
| 查看次数: |
1386 次 |
| 最近记录: |