This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: AutoFDO profile toolchain is open-sourced


On Fri, May 8, 2015 at 2:00 AM, Ilya Palachev <i.palachev@samsung.com> wrote:
> On 11.04.2015 01:49, Xinliang David Li wrote:
>>
>> On Fri, Apr 10, 2015 at 3:43 PM, Jan Hubicka <hubicka@ucw.cz> wrote:
>>>>
>>>> LBR is used for both cfg edge profiling and indirect call Target value
>>>> profiling.
>>>
>>> I see, that makes sense ;)  I guess if we want to support profile
>>> collection
>>> on targets w/o this feature we could still use one of the algorithms that
>>> try to guess edge profile from BB profile.
>>
>> Our experience with sampling cycles or retired instructions to guess
>> BB profile has not been great -- the profile quality is significantly
>> worse than LBR (which can almost match instrumentation based profile).
>
> Suppose that I have no opportunity to collect profile on x86 architecture
> with LBR support and the only available architecture is arm/aarch64 (since
> the application code is significantly different when compiled for different
> architectures because of manual optimizations and different function names
> and structure).

If it's already manually tuned towards architecture (or even
hand-written inlined-assembly), then I don't think FDO/AutoFDO can
help much.

>
> Honza has mentioned that it's possible to guess edge profile from BB
> profile. How do you think, can this help in the above described situation?
> Yes, this will be much worse than LBR, but can it give any performance
> benefit compared with no edge profile at all?

Yes, it will. But it's not well tuned at all. I will start tuning it
if I have free cycles. It would be great if opensource community can
also contribute to this tuning effort.

Cheers,
Dehao

>
> --
> Ilya


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]