1

私はベクトル化をいじっています(初めての学習者)。ポイントは、ループを展開できるかどうかです。このように 4 つの連続するフロートをロードするのが好きです。Seg fault を参照してください。

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 に答える