使用gcc进行自动矢量化?

时间:2011-06-22 08:48:43

标签: c++ gcc

在评估负对数可能性的背景下,我必须这样做 执行一系列可以从矢量化中受益的操作

0)for(i = 1 ... n){a [i] = 0; } //但我认为

std :: fill(a.begin(),a.end(),0)已经是最优的

1)for(i = 1 ... n){a [i] + = b * c [i]; }

2)sum = 0; for(i = 1 .. n){sum + = a [i] * log(b [i] / c); }

你知道是否有希望获得gcc 434 自动矢量化,我应该如何编写循环来帮助他(例如 使用索引与使用迭代器,我应该更简单地分解(2) 循环,...) 到目前为止我正在使用双打,必须检查我是否可以移动浮标 至少为(1)。

2 个答案:

答案 0 :(得分:2)

http://gcc.gnu.org/projects/tree-ssa/vectorization.html

使用所需选项-O3 -msse2

有关更多选项,请阅读上面的文档。

答案 1 :(得分:0)

用于浮动点减少的自动向量化,例如2)你需要启用-funsafe-math-optimizations

在类似目标的i386上你还需要添加-mfpmath = sse