[llvm-dev] [GSoC 2016] Enabling Polyhedral Optimizations in Julia - Midterm Report
Viral Shah via llvm-dev
llvm-dev at lists.llvm.org
Sat Jul 9 17:42:29 PDT 2016
I am looking forward to trying this out when it is ready!
-viral
On Wednesday, June 22, 2016 at 7:39:54 AM UTC-7, Tobias Grosser wrote:
>
> On Wed, Jun 22, 2016, at 02:15 AM, Matthias Reisinger via llvm-dev
> wrote:
> > Dear Community,
>
> Hi Matthias,
>
> thank you a lot for this update!
>
> > in an earlier post, students working on LLVM were asked to provide a
> > short
> > report on
> > their GSoC project. in the following I want to give an overview on the
> > current status of my
> > GSoC project and outline my next planned activities. Since my mentoring
> > organization is Julia,
> > I also send this to the according mailing list.
> >
> > *1. Activities so far:*
> >
> > As described in my proposal [1], I am working on making available
> Polly's
> > optimizations on Julia.
> > Within the pull-requests [2] and [3] I integrated Polly into Julia's
> > LLVM-based JIT infrastructure.
> > Polly can now be explicitly used to optimize Julia functions that are
> > annotated with the newly
> > introduced `@polly` macro. You may also read my blog post [4] on this
> > topic, which illustrates how
> > these new features can be used in Julia. In a next step I used first
> > micro
> > benchmarks to analyze
> > the LLVM code that Julia produces internally and tried to determine
> > characteristics of the produced
> > code that prevents Polly from applying its optimizations. For a more
> > comprehensive evaluation,
> > I ported the PolyBench benchmark suite to Julia. My recent blog post [5]
> > provides more details on this.
> >
> > These benchmarks helped to identify Julia constructs which hinder
> Polly's
> > SCoP detection. `for`-loops
> > for which both the lower and the upper bound are parametric are lowered
> > to
> > LLVM code that restrain
> > ScalarEvolution analysis and has been discussed in the bug report at
> [6].
> > It was possible to solve
> > this problem and I will shortly supply a patch for this. Another
> language
> > construct that is lowered to
> > LLVM IR that limits the optimization potential are Julia's `StepRange`s.
> > More concretely, this regards
> > loops of the form `for i = lower_bound:step:upper_bound`. They will
> > prevent
> > optimizations especially
> > when occurring inside other loops.
>
> Very good work indeed! Thanks for upstreaming the first patches and for
> tracking down all the mismatches that today make optimizations more
> difficult than necessary! It seems -- despite it certainly requiring
> effort -- most of the changes look tracktable. Looking forward to see
> them resolved one-by-one.
>
> Also, thank you for writing a PollyBench-Julia version. This is indeed a
> great tool to test your work and
> obviously gives some nice data to talk about in your blog post.
>
> Best,
> Tobias
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160709/d8308b06/attachment.html>
More information about the llvm-dev
mailing list