On Sat, Oct 18, 2014 at 4:19 PM, Xinliang David Li <davi...@google.com> wrote:
> On Sat, Oct 18, 2014 at 3:27 PM, Jan Hubicka <hubi...@ucw.cz> wrote:
>>> The difference in instrumentation runtime is huge -- as topn profiler
>>> is pretty expensive to run.
>>>
>>> With FDO, it is probably better to make early inlining more aggressive
>>> in order to get more context sensitive profiling.
>>
>> I agree with that, I just would like to understand where increasing the 
>> iterations
>> helps and if we can handle it without iterating (because Richi originally 
>> requested to
>> drop the iteration for correcness issues)
>> Do you have some examples?
>
> We can do FDO experiment by shutting down einline. (Note that
> increasing iteration to 2 did not actually improve performance with
> our benchmarks).

Early inlining itself has large performance impact for FDO (the
runtime of the profile-use build). With it disabled, the FDO
performance drops by >2% on average. The degradation is seen across
all benchmarks except for one.

David


>
> David
>
>> Honza
>>>
>>> David
>>>
>>> On Sat, Oct 18, 2014 at 10:05 AM, Jan Hubicka <hubi...@ucw.cz> wrote:
>>> >> Increasing the number of early inliner iterations from 1 to 2 enables 
>>> >> more
>>> >> indirect calls to be promoted/inlined before instrumentation. This in 
>>> >> turn
>>> >> reduces the instrumentation overhead, particularly for more expensive 
>>> >> indirect
>>> >> call topn profiling.
>>> >
>>> > How much difference you get here? One posibility would be also to run 
>>> > specialized
>>> > ipa-cp before profile instrumentation.
>>> >
>>> > Honza
>>> >>
>>> >> Passes internal testing and regression tests. Ok for google/4_9?
>>> >>
>>> >> 2014-10-18  Teresa Johnson  <tejohn...@google.com>
>>> >>
>>> >>         Google ref b/17934523
>>> >>         * opts.c (finish_options): Increase max-early-inliner-iterations 
>>> >> to 2
>>> >>         for profile-gen and profile-use builds.
>>> >>
>>> >> Index: opts.c
>>> >> ===================================================================
>>> >> --- opts.c      (revision 216286)
>>> >> +++ opts.c      (working copy)
>>> >> @@ -870,6 +869,14 @@ finish_options (struct gcc_options *opts, struct g
>>> >>          opts->x_param_values, opts_set->x_param_values);
>>> >>      }
>>> >>
>>> >> +  if (opts->x_profile_arc_flag
>>> >> +      || opts->x_flag_branch_probabilities)
>>> >> +    {
>>> >> +      maybe_set_param_value
>>> >> +       (PARAM_EARLY_INLINER_MAX_ITERATIONS, 2,
>>> >> +        opts->x_param_values, opts_set->x_param_values);
>>> >> +    }
>>> >> +
>>> >>    if (!(opts->x_flag_auto_profile
>>> >>          || (opts->x_profile_arc_flag || 
>>> >> opts->x_flag_branch_probabilities)))
>>> >>      {
>>> >>
>>> >>
>>> >> --
>>> >> Teresa Johnson | Software Engineer | tejohn...@google.com | 408-460-2413

Reply via email to