[llvm-dev] Existing studies on the benefits of pointer analysis
Philip Reames via llvm-dev
llvm-dev at lists.llvm.org
Mon Mar 21 18:28:34 PDT 2016
On 03/21/2016 08:56 AM, Jia Chen via llvm-dev wrote:
> Hi Christian,
>
> Thank you so much for the reply! Please see my comments inline.
>
> On 03/21/2016 09:32 AM, Christian Convey wrote:
>> Hi Jia,
>>
>> If one looks at existing research literatures, there are even
>> more algorithm to consider for doing pointer analysis.
>>
>>
>> For at least some published AA algorithms, there may be some
>> uncertainty about software patents and/or copyright.
>>
>> At one point I was interested in the status of this AA implementation
>> <https://dl.acm.org/citation.cfm?id=2466483> by Lian Li et al. IIRC,
>> when I contacted Lian to ask if there was any chance of getting it
>> into LLVM, IIRC she said that her employer wouldn't promise to
>> relinquish all possible claims it had on that algorithm's IP. So
>> unfortunately, at least in the U.S., an algorithm being published in
>> an academic journal doesn't remove all legal risk associated with
>> using it.
> This is news to me. Thanks for sharing it.
>>
>> Also, speaking from my own experience, even when an AA algorithm
>> seems to be described in great detail in some piece of literature
>> (e.g., a phd thesis), there can still be a lot of details which are
>> glossed over, or which seem clear when reading the document but which
>> get a lot more confusing when one tries to actually implement it.
>>
>> That can make implementing such an algorithm take far longer than one
>> would expect based on just reading the document. (It's also an
>> argument in favor of requiring academic papers which describe the
>> behavior of a software implementation to actually include a working
>> copy of the source code, IMHO.)
> My personal experience also coincides. And even if the paper does come
> with an artifact or source codes, they are usually proof-of-concept
> implementations with lots of important real-world corner cases ignored.
>>
>> So my question here is: what kind(s) of precision really justify
>> the cost and what kinds do not? Has anybody done any study in the
>> past to evaluate what kinds of features in pointer analyses will
>> benefit what kinds of optimization passes?
>>
>>
>> At one point I discussed this with Daniel Berlin, but I'm having
>> trouble find a record of the conversation. IIRC, he says that he
>> once threw a huge amount of computing power at doing a /full/
>> context-sensitive AA on some software, and the speedup he observed in
>> the resulting program as underwhelming (10-15%?).
> I kind of expect that. As you mentioned later, most optimization
> passes work in a context-insensitive manner (i.e. they won't clone a
> function and optimize differently on different clones). Context
> sensitivity on the pointer analysis side is probably not going to help
> a lot if the client cannot fully capitalize on it. In the settings of
> compiler optimization, my guess is that flow sensitivity, field
> sensitivity, heap model and external library annotations are the four
> aspects that are likely to matter.
>
> I did some preliminary experiments with licm on c programs over the
> last weekend. I chose licm because intuitively that's the optimization
> that could have the biggest performance impact. The result suggested
> that tbaa, cfl-aa, scev-aa and globals-aa yields very little
> additional benefits over basic-aa. Again, both the methodology and
> benchmark selection are very immature and the results need to be
> double-checked, but my hope is that by looking at how aa algorithms
> and their clients interact I may be able to get some hints on what
> kind of aa a compiler really wants.
Just to chime in here, your results match my experience and expectations
with LICM as well. Between basic-aa, and TBAA (specifically LLVM's
implementation thereof), I haven't seen a lot of cases where an
imprecision in the alias analysis prevents hoisting.
*However*, if you're interested in LICM specifically, I have
*definitely* seen cases where the precision of AliasSetTracker (our
grouping of AA results to prevent O(n^2) queries) prevents hoisting in
spurious cases. AST could use some serious attention, both from an
engineering standpoint and from (possibly) a theoretically one.
>>
>> I can't remember if that was with GCC or LLVM. That result is a data
>> point, although it may not say much about how much additional speedup
>> could be realized if the algorithms which use the AA results were
>> themselves adapted to capitalize on fully context-sensitive,
>> flow-sensitive, hula-dancer-on-the-dashboard AA results.
>>
>> Cheers,
>> Christian
>>
>
> --
> Best Regards,
>
> --
> Jia Chen
>
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160321/0813de43/attachment.html>
More information about the llvm-dev
mailing list