[GSoC 2016] Introduction - "Enabling Polyhedral Optimizations in Julia"

Dear LLVM contributors,

my name is Matthias, I am a graduate student majoring in computer science at the Vienna University of Technology, and I am glad to be one of this year’s GSoC students who work for the Julia foundation. Julia is a relatively young programming language that uses LLVM for just-in-time compilation and the goal of my project is to integrate Polly in this environment to enable polyhedral optimizations for Julia programs. On the one side this will require changing Julia’s LLVM IR generator to make the code more amenable for Polly, but on the other side it will also require adaptions to Polly’s analyses and transformations.

If you are interested you may have a look at my proposal [1], besides, I also plan to post interesting findings and results at my blog [2].

During the next four to five weeks, I plan to do the following:

  1. For my proposal, I’ve already built a very simplistic patch that experimentally integrated Polly into Julia’s execution environment [4], but that was really only a proof-of-concept. Currently I am working on improving this patch. Based on this, one of the first milestones will be to introduce an annotation (namely @polly), which enables to selectively run Polly for annotated parts of Julia programs.
  2. Identify and analyze first Julia programs (or their corresponding LLVM IR respectively) which currently cannot be optimized via Polly.
  3. Begin to correct Julia/Polly such that polyhedral optimizations can be applied to these programs

Essentially, points 2 and 3 will be a gradual process which will also build the working process for the subsequent weeks then.

I’ll gladly accept any kind of input so feel free to comment on this, post suggestions and give advice.

[1] [2] [3] [4] [5] [6] Best regards, Matthias

Dear LLVM contributors,

my name is Matthias, I am a graduate student majoring in computer
science at the Vienna University of Technology, and I am glad to be one
of this year's GSoC students who work for the Julia foundation. Julia is
a relatively young programming language that uses LLVM for just-in-time
compilation and the goal of my project is to integrate Polly in this
environment to enable polyhedral optimizations for Julia programs. On
the one side this will require changing Julia's LLVM IR generator to
make the code more amenable for Polly, but on the other side it will
also require adaptions to Polly's analyses and transformations.

If you are interested you may have a look at my proposal [1], besides, I
also plan to post interesting findings and results at my blog [2].

During the next four to five weeks, I plan to do the following:
1. For my proposal, I've already built a very simplistic patch that
experimentally integrated Polly into Julia's execution environment [4],
but that was really only a proof-of-concept. Currently I am working on
improving this patch. Based on this, one of the first milestones will be
to introduce an annotation (namely @polly), which enables to selectively
run Polly for annotated parts of Julia programs.
2. Identify and analyze first Julia programs (or their corresponding
LLVM IR respectively) which currently cannot be optimized via Polly.
3. Begin to correct Julia/Polly such that polyhedral optimizations can
be applied to these programs

Essentially, points 2 and 3 will be a gradual process which will also
build the working process for the subsequent weeks then.

I'll gladly accept any kind of input so feel free to comment on this,
post suggestions and give advice.

Perfect, thanks for posting this intro.

Do you happen to have any plans on reporting your progress publicly?

[1]
GSoC Proposal - Google Docs
[2] http://www.mreisinger.com

Cool.

[3] https://groups.google.com/group/julia-dev
[4] https://gist.github.com/MatthiasJReisinger/18c08b18903d7729b5b3

Eagerly waiting for news here!

Also, please submit a patch to llvm.org/SummerOfCode/2016.html to add
some information about your project. (Also feel free to suggest
improvements to the design if needed. This is the student's page)

Best,
Tobias

Do you happen to have any plans on reporting your progress publicly?

I will try to make my progress transparent by writing about it on my blog as often as possible and definitely give updates at the mailing lists (julia-dev, polly-dev and llvm-dev).

Also, please submit a patch to llvm.org/SummerOfCode/2016.html to add
some information about your project. (Also feel free to suggest
improvements to the design if needed. This is the student’s page)

Cool. I’ll prepare a patch with my project details.

Best,
Matthias

Great. Vivek and Roman should be able to help with reviews and upstreaming.

Best,
Tobias

Hello Matthias Reisinger,

It is simple html page that shows simple abstract ( which I have already added for all projects as per GSoC page) , link to your read-only proposal, blog URL (if you maintain any) , and status reporting interval (if you want to follow) and any other relevant information.
You can check out (SVN) related code here http://llvm.org/svn/llvm-project/www/trunk/SummerOfCode/ then do required changes and send patch for review on Phabricator http://reviews.llvm.org, while sending patch please follow guidelines given at http://reviews.llvm.org. Add Tobias and GRoman as reviewers.

Feel free to ask for any help!

Sincerely,
Vivek

*Vivek Pandya*

Hello Matthias Reisinger,

It is simple html page that shows simple abstract ( which I have already
added for all projects as per GSoC page) , link to your read-only proposal,
blog URL (if you maintain any) , and status reporting interval (if you want
to follow) and any other relevant information.
You can check out (SVN) related code here
http://llvm.org/svn/llvm-project/www/trunk/SummerOfCode/ then do required
changes and send patch for review on Phabricator http://reviews.llvm.org,
while sending patch please follow guidelines given at
http://reviews.llvm.org. Add Tobias and GRoman as reviewers.

Sorry wrong URL for guidelines, please note correct one

http://llvm.org/docs/Phabricator.html

Thank you Vivek, I posted an according patch on phabricator. I also took the liberty to change the design a little bit (based on the open projects page http://llvm.org/OpenProjects.html). But take it with a grain of salt, I’m no html expert :slight_smile:

Best regards,
Matthias

Matthias welcome anytime! We have to get design changes approved by Tobias.

Sincerely,
Vivek

No, you do not. This is your page. Just review each other's patches and
do whatever you believe is best.

Best,
Tobias

*Vivek Pandya*

> Matthias welcome anytime! We have to get design changes approved by
Tobias.

No, you do not. This is your page. Just review each other's patches and
do whatever you believe is best.

Not a problem.

Sincerely,
Vivek