simd - 哪个更好? mask_compress + store 或 mask_compressstoreu

标签 simd avx512

我正在使用 sde(英特尔的模拟器)来运行 avx512 代码,并且没有实际的硬件来进行基准测试。

出于某种原因,我找不到有关压缩+存储和压缩存储之间的性能比较的信息。

压缩+存储将存储整个寄存器,而不仅仅是选定的元素,但我对此很满意。而 compressstore 必须屏蔽未选定的元素。

什么是更好的?据我所知,英特尔网站上没有延迟信息。

最佳答案

更新:AMD - ZEN4。据此:https://www.mersenneforum.org/showthread.php?p=614191 compressstoreu 的 ZEN4 性能非常差,因此如果代码可能在 AMD 上运行,则应避免使用 compressstoreu。

我发现了一个稍微错误的地方:压缩指令仅适用于 epi32 并且有延迟:

_mm256_mask_compress_epi32 延迟为 6 _mm256_mask_compressstoreu_epi32 延迟为 11 其他的似乎需要 VBMI2,这在我的目标上不可用。

看来压缩+存储应该更好。

关于simd - 哪个更好? mask_compress + store 或 mask_compressstoreu,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69247880/

相关文章:

x86 - SSE/AVX 是否提供确定结果是否四舍五入的方法?

go - 如何使用汇编优化这个 8 位位置 popcount?

c - 在 XeonPhi 上使用 AVX 内联汇编的 vector 和

c++ - 将 "__m256 with random-bits"转换为 [0, 1] 范围的浮点值

c++ - x86-64 上检查指针范围是否跨越 N 字节对齐地址的最快方法?

ARM NEON SIMD 版本 2

assembly - AVX512 舍入模式如何工作(或者 NDISASM 只是混淆了)?

c++ - AVX512非法指令

c - 相同除数时快速 AVX512 模

c - 为什么 _mm512_store_pd 在这个矩阵乘法代码中 super 慢?