Hi, I am a student and my team is trying to identify a suitable topic for our compiler class final project. The requirement is to implement some optimization in LLVM that is not already existed, at least not in the list of standard opt that LLVM already has. We are looking at loop fusion as a potential candidate topic. Since we are all new to LLVM we would like to ask for experts' opinions here if there already is a well known implementation of loop fusion pass existed, and if not, is there a particular reason that it is not done given such optimization is fairly standard? Thank you. -Qi -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20131112/60798c93/attachment.html>
Hi Qi, No, we don’t have loop fusion. The loop fusion transformation itself is easy, but the profitability and legality checks are challenging. For legality, you would need to analyze the memory that you access and figure out that it is legal to fuse the loops. For profitability you would need to predict the effect on performance. You would need to predict register pressure and resource utilization, which is difficult to do. Thanks, Nadav On Nov 12, 2013, at 8:39 AM, Qi Liao <qiliao at umich.edu> wrote:> Hi, > > I am a student and my team is trying to identify a suitable topic for our compiler class final project. The requirement is to implement some optimization in LLVM that is not already existed, at least not in the list of standard opt that LLVM already has. We are looking at loop fusion as a potential candidate topic. Since we are all new to LLVM we would like to ask for experts' opinions here if there already is a well known implementation of loop fusion pass existed, and if not, is there a particular reason that it is not done given such optimization is fairly standard? > > Thank you. > > -Qi > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
Thanks a lot for your input. We will look more into the legality and profitability checks you've mentioned. -Qi On Tue, Nov 12, 2013 at 7:32 PM, Nadav Rotem <nrotem at apple.com> wrote:> Hi Qi, > > No, we don’t have loop fusion. The loop fusion transformation itself is > easy, but the profitability and legality checks are challenging. For > legality, you would need to analyze the memory that you access and figure > out that it is legal to fuse the loops. For profitability you would need to > predict the effect on performance. You would need to predict register > pressure and resource utilization, which is difficult to do. > > Thanks, > Nadav > > On Nov 12, 2013, at 8:39 AM, Qi Liao <qiliao at umich.edu> wrote: > > > Hi, > > > > I am a student and my team is trying to identify a suitable topic for > our compiler class final project. The requirement is to implement some > optimization in LLVM that is not already existed, at least not in the list > of standard opt that LLVM already has. We are looking at loop fusion as a > potential candidate topic. Since we are all new to LLVM we would like to > ask for experts' opinions here if there already is a well known > implementation of loop fusion pass existed, and if not, is there a > particular reason that it is not done given such optimization is fairly > standard? > > > > Thank you. > > > > -Qi > > _______________________________________________ > > LLVM Developers mailing list > > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev > >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20131112/8d98c300/attachment.html>
On 11/12/2013 05:39 PM, Qi Liao wrote:> Hi, > > I am a student and my team is trying to identify a suitable topic for our > compiler class final project. The requirement is to implement some > optimization in LLVM that is not already existed, at least not in the list > of standard opt that LLVM already has. We are looking at loop fusion as a > potential candidate topic. Since we are all new to LLVM we would like to > ask for experts' opinions here if there already is a well known > implementation of loop fusion pass existed, and if not, is there a > particular reason that it is not done given such optimization is fairly > standard? > > Thank you.Hi Qi, regarding loop fusion and other high-level loop transformations, http://polly.llvm.org may also be of help. The default scheduling optimizer we use has some heuristics for loop fusion, but it does not yet take into account register pressure. Cheers, Tobias