AVX2 和 AVX-512 有啥区别?

Posted

技术标签:

【中文标题】AVX2 和 AVX-512 有啥区别?【英文标题】:What is the difference between AVX2 and AVX-512?AVX2 和 AVX-512 有什么区别? 【发布时间】:2019-12-02 20:34:55 【问题描述】:

在 SIMD 和并行化方面,AVX2 和 AVX-512 有什么区别?它们是相同的还是不同的?刚刚看到avx-512用double8,avx2用double4?

我正在使用 PyOpenCL 用 C 编写内核代码,但不确定会有什么区别。

【问题讨论】:

【参考方案1】:

AVX2 是一个 256 位向量指令集。您有 256 位寄存器,可以用多种方式解释(8 个浮点数、4 个双精度数、32 个字节等)。 AVX1 仅支持浮点运算,AVX2 增加了 256 位整数运算。 AVX-512 是一组 512 位向量指令。 AVX只有2种口味,plain old AVX和AVX2。 AVX-512 来自many different flavors。你可能会觉得Intel's Intrinsics Guide很有趣。

最大的不同是每条指令处理的操作数是原来的两倍。不过,AVX-512 中的某些指令可能会使某些特定事物更加优化(例如指数近似)。

【讨论】:

AVX512 引入了掩蔽,因此您可以更便宜地混合作为另一个操作的一部分。甚至在您需要跳过的数据位于未映射的页面中时,甚至可以使用故障抑制进行有效的屏蔽加载/存储。还分散存储,而 AVX2 仅具有收集负载。此外,您可能想提及与 AVX 不同的 FMA。 AVX512 始终包含 FMA。 你可能会觉得这个paper很有趣

以上是关于AVX2 和 AVX-512 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

使用 AVX512 或 AVX2 计算所有压缩 32 位整数之和的最快方法

如何编译 TensorFlow 二进制文件以使用 AVX2、AVX512F、FMA?

有没有办法用 AVX2 编写 _mm256_shldi_epi8(a,b,1) ? (向量之间每 8 位元素移位一位)

题解 P4117 [Ynoi2018]五彩斑斓的世界

如何在运行时检测 NEON 和 Helium 指令集的可用性

_mm512_dpbusd_epi32 AVX-512VNNI 指令的 AVX-512BW 仿真