[llvm-dev] Polly as an Analysis pass in LLVM

Utpal Bora via llvm-dev llvm-dev at lists.llvm.org
Mon Mar 21 09:56:59 PDT 2016


On Mon, Mar 21, 2016 at 4:05 PM, Johannes Doerfert <
doerfert at cs.uni-saarland.de> wrote:

> 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.]
>
Thank you! I would like to have some comments from LLVM developers on how
we can extend Loop Vectorizer using a better dependence analysis. Please
feel free to share your views.


> 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:
>
Thats nice of you, Thank you.


>   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.]
>
I also think this is the most important step for this project.


>   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.]
>
 Ok.

  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.
>
Are you suggesting that such pattern could be a possible client for Polly
as an Analysis pass?
I have not thought about them right now, but yes we can include them in the
proposal as well.

  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.
>
I do agree with you here. We need to separate out the interface(API) from
LLVM.


>   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.
>
That makes sense. We can fall-back to Polly only when needed.


>   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.
>
I think this will be one of the criteria for a successful implementation of
the proposal.


>   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.
>
Yes, possible clients are Loop Vectorizer, Loop Versioning, LNO, etc


> 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
>
> Thank you for your suggestions. Looking forward for more comments from the
LLVM and Polly community.

Regards,
Utpal Bora

> --
> You received this message because you are subscribed to the Google Groups
> "Polly Development" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to polly-dev+unsubscribe at googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160321/d8842a5c/attachment.html>


More information about the llvm-dev mailing list