[cfe-dev] [OT?] real-world interest of the polly optimiser

Michael Kruse via cfe-dev cfe-dev at lists.llvm.org
Mon May 22 07:08:17 PDT 2017


Hi René,

2017-05-19 10:38 GMT+02:00 René J.V. Bertin via cfe-dev
<cfe-dev at lists.llvm.org>:
> Hi,
>
> Apologies if this isn't the best place.

Polly has its own mailing list here:
https://groups.google.com/forum/#!forum/polly-dev
polly-dev at googlegroups.com


> I've been looking for some information (understandable by the average user) about the real-world benefits of the polly optimiser, but have found only either very broad and vague claims or specialist research papers.

As a researcher, I can tell about the research we are doing. We
currently have a paper under review about optimizing gemm where we get
85\% of vendor-provided BLAS implementation, which is 20x the speed of
the program compiled by clang without Polly.

We know Samsung, Qualcomm and Xilinx are using Polly on a regular basis.

Polly can automatically generate OpenMP and CUDA code. The benefits
depend a lot on what you are using it for, for instance whether your
code consists of for-loops and dense arrays. In other cases you only
get increased compilation time.


> What I'd like to get an idea of is what benefits Polly brings, under what conditions, for what cost and how (= any special compiler options needed?).
>
> Also, given I'm installing clang via MacPorts: does clang pick up Polly's presence automatically after I add the libpolly binary (i.e. port:llvm with the +polly install variant) or do I need to rebuild clang too?

I don't have a Mac, so I don't know how it works there. So I can only
explain how to do it from source:

Check out the Polly source into LLVM's tools directory then recompile
opt and clang. Add "-mllvm -polly" to the clang command line to enable
Polly.

As currently being a research project, I'd not expect a sudden
improvement of execution time. Performance-critical "real-world" code
is often already optimized manually simply because general purpose
compilers do not automatically optimize code aggressive enough. Many
such manual optimizations are incompatible with Polly, e.g. parts
written in assembler.


Michael



More information about the cfe-dev mailing list