首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自动矢量化GCC

自动矢量化GCC
EN

Stack Overflow用户
提问于 2012-10-25 10:04:26
回答 2查看 1.6K关注 0票数 3

我正试图让GCC 4.7自动将代码的某些部分矢量化,以提供速度增长,但是,似乎很难做到这一点。

这里有一些我想要矢量化的代码:

代码语言:javascript
复制
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开关:

代码语言:javascript
复制
-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。

EN

回答 2

Stack Overflow用户

发布于 2012-10-25 10:07:49

试着保证,number_of_sub_pixels_to_write是4的倍数,就像在这里做的那样:http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dht0002a/ch01s04s03.html

票数 0
EN

Stack Overflow用户

发布于 2012-10-25 10:28:34

编译器可以自由地做它喜欢做的事情。因此,如果您真的想使用SIMD功能(而不是依赖于编译器),那么应该使用函数(参见手册)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13066179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档