0
我在學習矢量化(第一次學習)。關鍵是看看我能否展開一個循環。我喜歡像這樣加載四個連續的花車,請參閱Seg故障。無法將浮點數組讀入__m128
el0 = _mm_load_ps(&array[0]);
el1 = _mm_load_ps(&array[1]); // Seg fault
我明白爲什麼我會得到seg故障。我的問題是,是否有一個整潔的方式_mm_loading與抵消?
我在學習矢量化(第一次學習)。關鍵是看看我能否展開一個循環。我喜歡像這樣加載四個連續的花車,請參閱Seg故障。無法將浮點數組讀入__m128
el0 = _mm_load_ps(&array[0]);
el1 = _mm_load_ps(&array[1]); // Seg fault
我明白爲什麼我會得到seg故障。我的問題是,是否有一個整潔的方式_mm_loading與抵消?
評論者已經解決了這個問題,但當問題出現在未解答的問題列表中時,它很煩人。
_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代碼時,您不必更改索引。)
您可能正在尋找未對齊的[加載內部函數](http://software.intel.com/sites/products/文檔/ doclib/stdxe/2013/composerxe /編譯器/ CPP-MAC/GUID-A3272CE8-E597-4296-AFE1-52BF12625F84.htm)。 '_mm_loadu_ps()'特別。 – Mysticial
假設數組的類型是'float []',你可能還想跨4個元素而不是1個數組。 –
Jason - 正如我所說的,重點是展開循環,即跨度大於1的元素。這裏的計劃是看我是否能在某些foo()計算中加快速度。我想要使用的數組元素是數組[i],數組[i + 1]和數組[i + 2],或者更具體的,從i,i + 1和i + 2開始的四個元素。神祕 - 我想我可以通過修改你鏈接的功能來調整工作。謝謝! –