我错过了 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替换模块中转义+字符
serialization - 使用#[serde(untagged)] 和#[serde(with
kubernetes - 部署后如何在 kubernetes 中删除 Traefik 2.0 中间件
sass - Stylelint 禁用规则, "no-descending-specificity"
django - 如何在基于 Django 类的 View 中更改模板
reactjs - 如何在 primereact 中拥有主题切换器
python - numpy 中如何实现多维数组切片/索引?