我試圖讓GCC 4.7自動向我的代碼的某些部分提供一個速度增加的向量,但是,這似乎很難這樣做。自動矢量化GCC
這裏是一些代碼,我想向量化:
void VideoLine::WriteOut(unsigned short * __restrict__ start_of_line, const int number_of_sub_pixels_to_write)
{
unsigned short * __restrict__ write_pointer = (unsigned short *)__builtin_assume_aligned (start_of_line, 16);
unsigned short * __restrict__ line = (unsigned short *)__builtin_assume_aligned (_line, 16);
for (int i = 0; i < number_of_sub_pixels_to_write; i++)
{
write_pointer[i] = line[i];
}
}
我使用以下GCC開關:
-std=c++0x \
-o3 \
-msse \
-msse2 \
-msse3 \
-msse4.1 \
-msse4.2 \
-ftree-vectorizer-verbose=5\
-funsafe-loop-optimizations\
-march=corei7-avx \
-mavx \
-fdump-tree-vect-details \
-fdump-tree-optimized \
我知道,有些人超越。
我根本沒有從矢量化器獲得任何輸出,但是,在查看.optomized文件時,我可以看到它沒有使用矢量化。任何人都可以用正確的方式指出我想要做的矢量化嗎?
編輯:原來的問題是使用-o3而不是-O3。
這就是爲什麼我從不依靠自動矢量化。如果真的很重要,我會手動完成。 – Mysticial
你只是在複製數據。爲什麼要矢量化? –
我只是在這個功能複製,但我有其他人需要更多的工作。我認爲首先讓它起作用會更容易。 – robby987