繁体   English   中英

使用gcc进行自动矢量化?

[英]Getting auto-vectorization with 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)。

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

使用所需选项-O3 -msse2

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM