On 03/14/2014 09:18 PM, Roman Gareev wrote:
Dear gcc contributors,
I am going to try to participate in Google Summer of Code 2014. My project
is "Integration of ISL code generator into Graphite".
My proposal can be found at on the following link
https://drive.google.com/file/d/0B2Wloo-931AoTWlkMzRobmZKT1U/edit?usp=sharing.
I would be very grateful for your comments, feedback and ideas about
its
improvement.
Hi Roman,
sorry for the delay. The proposal looks already very promising. Here
some more comments:
- Graphite does not any more support CLooG-PPL. This part of software is
history. No need to talk about it in the proposal. We currently have
CLooG-isl and want to replace it by the isl internal ast generator.
3) Benefits
- We currently do not have license issues with cloog-isl. So no need to
talk about them.
- Users currently do not need to choose between CLooG with PPL and isl
backend. The PPL backend is not supported any more
Actual new benefits:
- Support for unrolling, full/partial tile separation, as well as
fine-grained code size adjustments
- In unreleased isl 0.13.0, support for compute out feature
- Improved code generation quality
4)
- CLooG is not only meant to generate C code. Using the clasts is a
supported and direct way to use CLooG, as it is CLooG's library interface.
- "New internal representaion will be generated by ISL. Its structure is
planned to be similar to the CLAST tree, but can be changed ..."
What does this mean? The isl_ast representation is already defined. Are
you saying that isl may generate an ast that is different in structure
to the clast tree currently generated? Or are you saying we
still need to define the isl_ast and its nodes itself?
- "can be union" -> "can be the union"
4)
- It is great that you schedule explicit time to get familiar with
the libraries and to do testing and bug fixing.
However, to get familiar, it would be nice to list a couple of small
projects/steps that you can use for this. E.g. in the first week
you could already generate an isl_build and an isl_union_map schedule,
pass it to the isl code generation and dump the resulting AST
to a file.
- "Designing of new internal format"
What kind of new format do you need to generate?
- "Code generation from internal form"
This is the whole project. You really should divide this into smaller
steps. You could e.g. first just create a simple loop ignoring any basic
blocks. You could then generate a simple loop with a single basic block.
Then a loop with more complex ast expressions, then nested loops and
ifs, ...
It would be very helpful if you could think about such steps and
possibly an approach to ensure you systematically add all pieces of the
code generation.
Also, it would be good to understand which parts of the code generation
can be copied/shared with the exiting cloog based code generation and
which parts need to be rewritten.
5)
gcc should bootstrap
6)
- Another nice to have would be to use the full/partial tile separation
for the tiles generated by the isl scheduler.
cheers,
tobi