- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
关闭。这个问题需要debugging details .它目前不接受答案。
想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。
3年前关闭。
Improve this question
我目前正在对 DSP 应用程序进行一些优化和比较矢量化可能性,这对于 AVX512 来说似乎是理想的,因为这些只是简单的不相关数组处理循环。但是在新的 i9 上,与 AVX2 相比,我在使用 AVX512 时没有测量出任何合理的改进。任何指针?有什么好的结果吗? (顺便说一句。我试过 MSVC/CLANG/ICL,没有明显区别,很多时候 AVX512 代码实际上看起来更慢)
最佳答案
这看起来太宽泛了,但实际上有一些微架构细节值得一提。
请注意,AVX512-VL(向量长度)允许您在 128 位和 256 位向量上使用新的 AVX512 指令(如打包 uint64_t
<-> double
转换、掩码寄存器等)。现代编译器通常在调整 Skylake-AVX512(又名 Skylake-X)时使用 256 位向量自动向量化。例如gcc -march=native
或 gcc -march=skylake-avx512
, 除非您覆盖调整选项以将首选矢量宽度设置为 512 以用于权衡值得权衡的代码。请参阅@zam 的回答。
Skylake-X 上的 512 位向量(不是 256 位的 AVX512 指令,如 vpxord ymm30, ymm29, ymm10
)的一些主要内容是:
vsqrtps/pd zmm
的FP除法执行单元和 vdivps/pd
不是全宽;它只有 128 位宽,因此 div/sqrt 与乘法吞吐量的比率差了大约 2 倍。参见 Floating point division vs floating point multiplication . vsqrtps xmm/ymm/zmm
的 SKX 吞吐量是每 3/6/12 个周期一个。 double
-precision 是相同的比率,但吞吐量和延迟更差。VRSQRT14PS
即使您需要牛顿迭代以获得足够的精度,也值得考虑。但请注意 AVX512 的近似值 1/sqrt(x)
确实比 AVX/SSE 有更多的保证精度位。)sin
函数,也许如果编译器/SIMD 数学库只有 256 位版本,它不会使用 AVX512 自动矢量化。
关于performance - 简单阵列处理循环的 AVX 512 与 AVX2 性能对比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52523349/
我是一名优秀的程序员,十分优秀!