微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SSE向量重新对齐?

如何解决SSE向量重新对齐?

是否有办法重新对齐已加载到SSE / AVX向量寄存器中的数据(例如,实现滑动窗口)?还是我需要自己移动字节,然后再次从内存中重新加载到向量寄存器中?

解决方法

对于128位向量,SSSE3 / AVX [v]palignr xmm适用于一对寄存器上的任意字节窗口。对于AVX2 ymm寄存器,2x 128位通道行为对此几乎没有用。 _mm_alignr_epi8 (PALIGNR) equivalent in AVX2

有时候从内存中重新加载会更好一些:2 /时钟加载吞吐量,如果您不跨越缓存行边界(在Intel上),则不会受到任何损失;而1 /时钟加载吞吐量则没有任何损失。高速缓存行拆分的吞吐量/延迟损失也不可怕。如果一个palignr就足够了,通常可以使用它,但是通常最好执行未对齐的负载,而不要尝试针对AVX2进行仿真。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。