Hi,

I was looking into the polyhedral optimizations that are done in GCC
using the graphite pass. Just had a few queries as I was looking into
PR14741 on its current state:

1. Are there any resources I could look into to see how it performs
compared to the source to source optimizer Pluto or LLVM's polly? And
any plans to improve the current optimizations that are done in
graphite?

2. I see that using "-O2 -fgraphite -floop-block -fdump-tree-all", the
graphite pass is actually placed a bit deeper in the pipeline. And I
observed that it hinders ability to do polyhedral transformations,
since it creates complex loop dependencies after loop invariant motion
and partial redundancy elimination.
Any reason as to why it is placed so deep in the pipeline? Because
according to the tools I have seen, it would be beneficial to perform
polyhedral analysis/transformations closer to source.

3. Is graphite under active development? Would it be beneficial to
implement polyhedral transforms closer to the source level (right after
gimplification)? 

Also I think it would be useful to have some kind of metadata/pragma
for the scops, where a programmer familiar with polyhedral schedules
could specify a custom transformation like blocking/interchange.
Something like

#pragma beginscop
#pragma transform (i, j, k) -> (j / N_C, k / K_C, i / M_C, j / N_R, i /
M_R, k mod K_C, j mod N_R, i mod M_R)
for loop...

#pragma endscop

Please let me know your thoughts/comments on this.

Thanks and regards,
Avinash Jayakar

Reply via email to