[LLVMdev] Static Profiling Algorithms in LLVM

Andrei Alvares logytech at gmail.com
Tue Nov 2 17:54:27 PDT 2010


Hello Jeff,

On Tue, Nov 2, 2010 at 9:17 PM, Jeff Kunkel <jdkunk3 at gmail.com> wrote:
> My god! I would love a branch predictor! It would simplify many aspects of
> my register allocator.

The branch predictor of the implementation is not as accurate as the
one from the paper, but it is close enough. Unfortunately, the branch
predictor is a very expensive pass, because it relies on post
domination information for some heuristics which is costly to
calculate.

> Second, I am surprised it did not make it into the tree. Since more is being
> done with register allocation as a while "RegAllocBasic" was just put in, I
> hope this is looked at again.
> Do you have a working svn copy?

I created the patch based on the official 2.8 branch release, but as I
said before I didn't get the time to fully tested it on this release.

> Also, could you send me a copy/link to that '94 paper off the list please?

You can get it from the following link:
  http://ftp.cs.wisc.edu/pub/techreports/1994/TR1248.pdf

Regards,
  Andrei

> -Thanks
> -Jeff Kunkel
> On Tue, Nov 2, 2010 at 6:57 PM, kapil anand <kapilanand2 at gmail.com> wrote:
>>
>> Thanks Andrei!
>>
>> I haven't read the paper. I would see whether this fulfills my
>> requirements or whether I need to make any changes.
>>
>> --Kapil
>>
>> On Tue, Nov 2, 2010 at 12:43 PM, Andrei Alvares <logytech at gmail.com>
>> wrote:
>>>
>>> Hello Kapil,
>>>
>>>  I have implemented a static profiler for LLVM as a google summer of
>>> code project in 2009. I wrote it for the 2.4 branch, but the
>>> implementation never made into the tree. I have recently ported it to
>>> LLVM 2.8, but I haven't tested it. You can take a look at the code
>>> from: http://homepages.dcc.ufmg.br/~rimsa/tools/stprof-llvm.patch
>>>
>>>  The implementation is based on Wu's [1994] paper and provides a
>>> branch predictor that calculates probabilities. The implementation
>>> also covers an intraprocedural and interprocedural frequency
>>> calculator for edges and functions.
>>>
>>>  Reference:
>>> Youfeng Wu and James R. Larus. Static branch frequency and program
>>> profile analysis. In MICRO 27: Proceedings of the 27th annual
>>> international symposium on Microarchitecture. IEEE, 1994.
>>>
>>>  Regards,
>>>    Andrei
>>>
>>> On Tue, Nov 2, 2010 at 10:46 AM, Andrew Lenharth <andrewl at lenharth.org>
>>> wrote:
>>> > On Tue, Nov 2, 2010 at 12:28 AM, kapil anand <kapilanand2 at gmail.com>
>>> > wrote:
>>> >> Hi all,
>>> >>
>>> >> Does LLVM infrastructure contain implementation of any static
>>> >> profiling
>>> >> algorithm apart from "Spill-Weight" calculation present in Live
>>> >> Intervals
>>> >> class? The future work page does suggest implementation of some
>>> >> "static
>>> >> profiling" algorithms to make an educated guesses about the relative
>>> >> execution frequencies of various parts of the code.
>>> >
>>> > If you look at old releases, there was a profiling library and
>>> > transforms, including infrastructure to do any of the profiling with
>>> > random sampling.  Those were unmaintained and removed not that long
>>> > ago.  What you could profile was somewhat limited.
>>> >
>>> > Andrew
>>> >
>>> >
>>> >> Thanks
>>> >>
>>> >> --Kapil
>>> >>
>>> >> _______________________________________________
>>> >> LLVM Developers mailing list
>>> >> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>>> >> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>> >>
>>> >>
>>> >
>>> > _______________________________________________
>>> > LLVM Developers mailing list
>>> > LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>>> > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>> >
>>
>>
>> _______________________________________________
>> LLVM Developers mailing list
>> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>
>
>




More information about the llvm-dev mailing list