[llvm-dev] [GSoC] Project Proposal: Parallel extensions for llvm analysis and transform framework

Hal Finkel via llvm-dev llvm-dev at lists.llvm.org
Thu Mar 16 12:58:29 PDT 2017


On 03/16/2017 01:31 PM, Mehdi Amini wrote:
> Hey,
>
> I think it is a great idea!
>
> On Mar 16, 2017, at 9:06 AM, Kareem Ergawy via llvm-dev 
> <llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>> wrote:
>>
>> Hello,
>>
>> Below is a proposal for a GSoC project that I would like to work on 
>> this year. Your input and feedback is much appreciated.
>>
>> Background:
>> =========
>>
>> My name is Kareem Ergawy and I currently work as part of the PIR 
>> project. PIR is an extension of the IR to support fork-join 
>> parallelism that is currently under review [1, 2, 3, 4].
>>
>> Goals:
>> =====
>>
>> As a GSoC project, here I propose an extension for llvm analyses and 
>> transformations to support parallel IR. Such extension should serve 
>> as a foundation for an optimization framework for parallel regions. I 
>> would like to emphasize that, in this proposal, I am trying propose 
>> ideas that satisfy the following conditions:
>>
>> (1) Not specific to PIR but rather can be adapted to other explicit 
>> parallel representations in the IR. For example, see [5] for Hal 
>> Finkel's and Xinmin Tian's proposal for region annotations.
>
> Having both Hal and Johannes as mentor would be very nice for this 
> project indeed.
> I’ll be happy to help as well if needed, but I feel Hal and Johannes 
> would do a great job here if they’re willing to work on this.

I'm certainly happy to mentor this (and I know that Johannes is as well).

  -Hal

>
>> Mehdi
>
>
>
>
>
>>
>> (2) Can be extended upon in the future. Hopefully, this will be the 
>> start of a parallel optimization pipeline that integrates nicely with 
>> llvm's sequential pipeline.
>>
>> Proposed passes:
>> =============
>>
>> Here I list a few passes that I think will help kicking off such a 
>> parallel-centric optimization pipeline.
>>
>> 1 - Execution partial order analysis:
>> ----------------------------------------------
>>
>> Yuki et al. [6] characterize 2 parallel relations, namely: "Happens 
>> Before" and "May Happen in Parallel". As the names imply, these 2 
>> relations can be used to calculate a partial ordering over 
>> statements. I believe such analysis can be used as a useful building 
>> block for later analyses and optimizations. For example, it can 
>> reduce the constraints induced by the sequential order of statements 
>> in the IR of a parallel program. Lifting such constraints can provide 
>> better optimization chances even for already existing sequential 
>> passes. For an example of using such pass, see point 3 below.
>>
>> 2 - Redundant barrier removal:
>> ----------------------------------------
>>
>> Satoh et al. [7] developed a memory synchronization analysis 
>> algorithm. At each synchronization point n, the algorithm calculates 
>> 2 sets:
>>
>> (1) WSync(n): is the set of definitions/writes that may need to be 
>> synchronized at n.
>> (2) RSync(n): is the set of uses/reads that may need to be 
>> synchronized at n.
>>
>> If intersect(WSync(n), RSync(n)) = {}, then no inter-thread flow 
>> dependencies require barrier synchronization. Removing such barriers 
>> will mitigate the associated runtime overhead.
>>
>> 3 - Adapt polyhedral transformations for parallel contexts:
>> --------------------------------------------------------------------------
>>
>> Chatarasi et al. [8] build on the "Happens Before" relation 
>> introduced in the the first point above to enable larger sets of 
>> polyhedral transformations. In particular, the complement of the 
>> "Happens Before" relation is used to mitigate conservative 
>> dependences. The reduced set of dependences can then be passed to a 
>> polyhedral transformation tool. I guess such idea can be a good 
>> addition to Polly since it enables faster and more meaningful 
>> transformations of parallel programs.
>>
>> Other passes:
>> -------------------
>>
>> The 3 suggestions above provide a taste for what can be an analysis 
>> framework for parallel programs in IR. There are other examples in 
>> the literature that can be added as well. Also, new ones can be 
>> designed. I will try to implement as much as I can for the time 
>> period of GSoC. But the good thing about this project is its 
>> incremental nature. We have a set of self-contained measurable steps.
>>
>> Implementation:
>> ============
>>
>> I propose to implement such passes on top of PIR. Being currently 
>> active in development, I guess it can be a good vehicle to experiment 
>> with the idea of having parallel centric optimization pipeline.
>>
>> More about my background and commitments this Summer:
>> ===========================================
>>
>> Currently I am a CS master’s students at Saarland University where I 
>> work on the practical aspects of the PIR project. Also, over the past 
>> year I have been working on the design and implementation of a 
>> parallel primitives library called libpp (not public yet) as part of 
>> the AnyDSL compiler framework project [8]. The library is implemented 
>> in the research language Impala.
>>
>> During the coming Summer, I shouldn’t have any commitments other than 
>> mostly PIR and libpp for but only a few hours every week. This 
>> proposal integrates well with PIR and hopefully you will find it of 
>> general interest for the LLVM project. I would like to emphasize the 
>> idea that I am aiming at a parallel-centric optimization pipeline 
>> through this proposal and PIR is a nice vehicle to experiment with that.
>>
>> Final notes:
>> =========
>>
>> Johannes Doerfert suggested me the general idea of that project and 
>> also provided very useful guidelines for writing the proposal.
>>
>> Thank you for reading this proposal and hopefully you will find it 
>> useful.
>>
>> [1] "[llvm-dev] [RFC][PIR] Parallel LLVM IR -- Stage 0 -- IR 
>> extension", 
>> http://lists.llvm.org/pipermail/llvm-dev/2017-January/109615.html
>> [2] https://reviews.llvm.org/D29250
>> [3] https://reviews.llvm.org/D30353
>> [4] https://reviews.llvm.org/D30354
>> [5] "[llvm-dev] [RFC] IR-level Region Annotations", 
>> http://lists.llvm.org/pipermail/llvm-dev/2017-January/108906.html
>> [6] Chatarasi, Prasanth, Jun Shirako, and Vivek Sarkar. "Polyhedral 
>> transformations of explicitly parallel programs." 5th International 
>> Workshop on Polyhedral Compilation Techniques (IMPACT), Amsterdam, 
>> Netherlands. 2015.
>> [7] Satoh, Shigehisa, Kazuhiro Kusano, and Mitsuhisa Sato. "Compiler 
>> optimization techniques for OpenMP programs." Scientific Programming 
>> 9.2, 3 (2001): 131-142.
>> [8] https://anydsl.github.io/
>> _______________________________________________
>> LLVM Developers mailing list
>> llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>

-- 
Hal Finkel
Lead, Compiler Technology and Programming Languages
Leadership Computing Facility
Argonne National Laboratory

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170316/5f087487/attachment.html>


More information about the llvm-dev mailing list