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进行仿真。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...