【发布时间】:2014-03-14 19:55:37
【问题描述】:
我尝试写入 int 数组中的随机位置。 为了确保我可以在随机位置访问内存,我尝试对齐整个内存块。
int * array = memalign(16384*2,16384*sizeof(short));
后来我在向量中这样写:
__m128i * index = (__m128i *) &array[RANDOMNUMBER];
_mm_store_si128(index+, ...)
此指令导致访问错误。如果我使用_mm_storeu_si128 指令,我不明白。
有人可以解释一下为什么这不起作用吗?
【问题讨论】:
-
尝试对齐写入位置。
-
如何对齐写入位置?
-
_mm_store_si128( (index+RANDOMNUMBER) & ~(127), ...) -
@erenon 谢谢你,但如果尝试写这个我得到一个错误。 “错误:'__m128i* {aka __vector(2) long long int*}'和'int'类型的无效操作数到二进制'operator&”。这个逻辑操作怎么对齐?