开发者

Getting auto-vectorization with gcc?

In the context of evaluating negative-log-likelihoods, I have to perform a bunch of operations that could bene开发者_如何学JAVAfit from vectorization

0) for (i = 1...n) { a[i] = 0; } // but this I think

std::fill( a.begin(), a.end(), 0 ) is already optimal

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

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

do you know if there's any hope to get gcc 434 to do auto-vectorization, and how should I code the loop to help him (e.g. using indices vs using iterators, should I break up (2) in simpler loops, ...) up to now I'm using doubles, have to check if I can move to floats at least for (1).


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

Use the required options, -O3 -msse2

For more options, read the documentation above.


for autovectorization of floating point reductions like 2) you need to enable -funsafe-math-optimizations

on i386 like targets you also need to add -mfpmath=sse

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜