x86-64 - AVX512 与矢量比较不屏蔽

我错过了 avx2 中生成向量而不是掩码的比较指令。在 avx512 中完成同样的事情最有效的方法是什么? _mm512_cmp_ps_mask 后跟展开吗?

最佳答案

是的,我想比较一下和vpmovm2d ,尽管通常您可以在下一步中使用合并掩码或零掩码(可能使用 set1(-1) 常量),而不是您要对向量执行的任何操作。例如为了计算匹配项,而不是 _mm_sub_epi32() 与向量 0/-1 比较结果,只需执行合并屏蔽添加。

当然,对于 256 位向量,AVX2 比较指令仍然可用。解压 512 位矢量的一半可能不值得,但有时用 AVX-512 完全避免 512 位矢量是值得的(例如,避免在某些 CPU 上使用 clock-speed penalties,并避免关闭矢量端口 1 上的 ALU)。因此,您仍然可以利用 AVX-512 中有用的新指令,以及不需要与 VEX 编码的 AVX1/AVX2-only 指令一起使用的操作数的额外寄存器 (x/ymm16..31)。

不过,在某些情况下,为了使用 512 位向量而接受将掩码变回向量的代价可能是值得的。

https://stackoverflow.com/questions/68310432/

相关文章:

ansible - 如何在ansible替换模块中转义+字符

rust - 如何正确处理 Warp 路由的错误

serialization - 使用#[serde(untagged)] 和#[serde(with

kubernetes - 部署后如何在 kubernetes 中删除 Traefik 2.0 中间件

sass - Stylelint 禁用规则, "no-descending-specificity"

django - 如何在基于 Django 类的 View 中更改模板

reactjs - 如何在 primereact 中拥有主题切换器

python - numpy 中如何实现多维数组切片/索引?

python - 通用协议(protocol) : mypy error: Argument 1 h

python - 我的损失函数在训练期间没有得到更小的值