在评估负对数似然的上下文中,我必须执行一系列可以从矢量化中受益的操作
0) for (i = 1...n) { ai = 0;} //但我认为
std::fill( a.begin(),a.end(),0)已经是最优的
1) for (i = 1...n) { ai += b* ci;}
2) sum = 0;for (i =1 ..n) { sum += ai * log( bi /c );}
你知道是否有希望让gcc 434做自动向量化,以及我应该如何编写循环来帮助他(例如,使用索引与使用迭代器,如果我在更简单的循环中分解(2),...)到目前为止,我使用的是替身,我必须检查我是否可以移动到浮点数至少(1)。
发布于 2011-06-22 16:54:04
http://gcc.gnu.org/projects/tree-ssa/vectorization.html
使用所需的选项-O3 -msse2
有关更多选项,请阅读上面的文档。
发布于 2012-12-12 01:07:22
对于像2)这样的浮点缩减的自动向量化,您需要启用-funsafe-math optimizations
在类似i386的目标上,您还需要添加-mfpmath=sse
https://stackoverflow.com/questions/6437224
复制相似问题