[llvm-dev] Polly as an Analysis pass in LLVM
Johannes Doerfert via llvm-dev
llvm-dev at lists.llvm.org
Mon Mar 21 03:35:02 PDT 2016
Hey Utpal,
First of, I think you made nice process here and have some very good
ideas of what we could do in the future.
[NOTE: I CC'ed some people that have shown interest in this topic but I
might have forgotten some, therefor I also added the llvm-dev list.]
For the upcoming GSoC proposal we should slow down a little bit and
reevaluate our goals. After talking to a couple of LLVM and Polly folks
at EuroLLVM last week, I hope to have a fairly good idea of how to
proceed. To this end, I will give you my personal road map that might be
a good start for the proposal too, though it is not the only way we
could do this:
1) Make ScopInfo & DependenceInfo function passes to avoid the
RegionPassManager for these Polly analysis parts. [This doesn't
need to be the first step but it should be done at some point.]
2) Create a secondary ScopDetection & ScopInfo that is restricted to
analyze a single loop. We might just create a dummy region for this
loop and use the original ScopDetection & ScopInfo. The goal is to
make (this secondary) ScopDetection & ScopInfo demand driven and
non-dependent on the RegionInfo analysis. [Same as before, this
does not need to happen right away.]
3) Scan the LLVM source code for uses of ScalarEvolution or reasoning
about the execution of basic blocks [this includes thing like loop
trip count queries]. These are possible candidates that might
profit from the knowledge contained in a "Scop" object.
4) Start an API that translates (simple) queries from the LLVM passes
to lookups in a Scop. The LLVM pass should never "see" the Scop
object or anything related for that matter. It will only require a
"PolyhedralInfo" pass and query it.
5) Use the above API to augment the information available at the
points identified in 3), but only if the available information is
not sufficient to apply the intended transformation.
6) Evaluate the impact on compile and runtime for each pass that was
augmented. Check how often (and for which kind of codes) the
polyhedral information was queried and how often it allowed a
transformation.
7) Go back to 3 but now look for passes/opportunities that would need
dependence information, thus the DependenceInfo pass. Then proceed
with 4), 5) and 6) for dependences.
Note that not all points are ironed out and it is possibly to much for
one GSoC (or maybe to little, who knows). In any case, I think this
would be a good way to proceed with this work.
I am looking forward to comments or questions from you but also others in
the LLVM or Polly community.
Cheers,
Johannes
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 213 bytes
Desc: Digital signature
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160321/81c2976a/attachment.sig>
More information about the llvm-dev
mailing list