如何解决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 位向量而接受需要将掩码转换回向量的惩罚可能是值得的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。