【发布时间】:2013-05-22 14:43:39
【问题描述】:
我正在摆弄矢量化(第一次学习)。它的重点是看看我是否可以展开循环。我喜欢像这样加载四个连续的浮点数,请参阅 Seg 错误。
el0 = _mm_load_ps(&array[0]);
el1 = _mm_load_ps(&array[1]); // Seg fault
我明白为什么会出现 seg 错误。我的问题是,有没有一种巧妙的 _mm_loading 方法?
【问题讨论】:
-
您可能正在寻找未对齐的load intrinsics。尤其是
_mm_loadu_ps()。 -
假设数组的类型是
float[],您可能还想跨过数组4个元素,而不是1个元素。 -
Jason - 就像我说的那样,重点是展开循环,即步幅大于 1 个元素。这里的计划是看看我是否可以加快一些 foo() 计算。我想使用的数组元素是array[i]、array[i+1]和array[i+2],或者更具体地说,是从i、i+1和i+2开始的四个元素。神秘 - 我想我可以通过修补您链接的功能来解决问题。谢谢!
-
请提供完整的源代码。
标签: c load offset sse vectorization