On 06/24/2011 04:40 PM, Renato Golin wrote:> On 24 June 2011 21:13, Xin Tong Utoronto<x.tong at utoronto.ca>
wrote:
>> I would like to know the status of the autovectorization support in
LLVM.
>> does LLVM have a loop dependence analysis, does LLVM have a
infrastructure
>> for autovectorization ? etc.
>
> Not yet, but it's getting there...
>
> http://polly.grosser.es/
Yes. In Polly we are working on autovectorization using polyhedral
techniques. Polly is currently founded as a research project (for the
next three years), but we plan to provide solutions that can be applied
on real world programs.
Feel free to have a look at our recent publications, the example on the
website, our performance statistics and obviously the source code. Keep
in mind that this is still a young research project. Even if we use
established polyhedral techniques applying this to LLVM is not 100%
straightforward. Especially the way we do vectorization is different to
the one used in GCC or ICC as we currently use 100% polyhedral
techniques, without any pattern matching. This is a nice and clean
approach, but may lead to compile time performance problems, we may have
problems to model specific situations and we obviously miss the years of
development that went into the pattern/tricks ICC uses. On the positive
side, the use of polyhedral techniques will allow us to use the
same/similar techniques to offload calculations e.g. to vector
accelerators (An interesting and active topic of research).
In terms of loop dependence analysis we use a powerful integer set
library to get exact dependency analysis for loops with static control
flow and affine linear memory accesses.
You may have a look at the matmul example which also includes the
results of our dependency analysis:
http://polly.grosser.es/examples.html
If you have any questions feel free to ask. Please tag the questions on
this mailinglist with [polly] or just use our own development mailing
list. Also I am highly interested in ->critical<- feedback.
Cheers
Tobi