1

我正在摆弄矢量化(第一次学习者)。它的重点是看看我是否可以展开一个循环。我喜欢像这样加载四个连续的浮点数,请参阅 Seg 错误。

el0 = _mm_load_ps(&array[0]);
el1 = _mm_load_ps(&array[1]);   // Seg fault

我明白为什么会出现段错误。我的问题是,是否有一种巧妙的 _mm_loading 偏移方式?

4

1 回答 1

0

评论者已经解决了它,但是当问题出现在未回答的问题列表中时,这很烦人。

_mm_load_ps(&array[0])   // load a vector of array[0..3]
_mm_load_ps(&array[1])   // load a vector of array[1..4].  different alignment than array[0]

// what you probably want is:
_mm_load_ps(&array[4])   // load a vector of array[4..7], aligned if array is aligned

索引步幅应该是sizeof(vector_type)/sizeof(array[0])。(然后,当您扩展 AVX 代码时,您不必更改索引。)

于 2015-08-03T23:05:54.383 回答