英特尔有几种SIMD指令集,例如SSE、AVX、AVX2、AVX-512和Xeon Phi上的IMCI。这些指令集适用于不同的处理器。例如,AVX-512 BW、AVX-512 DQ和AVX-512 VL仅支持Skylake处理器,而不支持Xeon Phi。AVX-512F、AVX-512 CDI、AVX-512 ERI和AVX-512 PFI则支持Skylake和Xeon Phi两种处理器。
为什么英特尔不设计一种更通用的SIMD指令集,可以在所有先进的处理器上运行?
此外,在开发指令集时,英特尔会删除一些内部函数并添加新的内部函数。许多内部函数有许多变体。例如,一些内部函数适用于打包的8位,而一些内部函数适用于打包的64位。某些变体得到的支持不广泛。例如,Xeon Phi将无法处理打包的8位值,但Skylake可以。
为什么英特尔会以如此不一致的方式更改其SIMD内部函数?
如果SIMD指令集彼此更兼容,现有的AVX代码可以更轻松地移植到AVX-512。