簡體   English   中英

自動矢量化GCC

[英]Automatic vectorization GCC

我試圖讓GCC 4.7自動向量化我的代碼的某些部分以提高速度,但是,似乎很難這樣做。

這里有一些我想要矢量化的代碼:

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。

試着保證, number_of_sub_pixels_to_write是4的倍數,就像在這里完成它一樣掩蓋它: http//infocenter.arm.com/help/index.jsp?topic = / com.arm.doc.dht0002a / ch01s04s03 html的

編譯器可以自由地做它喜歡的事情。 因此,如果您真的想使用SIMD功能(而不是依賴編譯器),則應使用這些功能(參見手冊 )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM