This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [GOOGLE] Increase max-early-inliner-iterations to 2 for profile-gen and use
- From: Jan Hubicka <hubicka at ucw dot cz>
- To: Xinliang David Li <davidxl at google dot com>
- Cc: Jan Hubicka <hubicka at ucw dot cz>, Teresa Johnson <tejohnson at google dot com>, "gcc-patches at gcc dot gnu dot org" <gcc-patches at gcc dot gnu dot org>
- Date: Sun, 19 Oct 2014 01:26:06 +0200
- Subject: Re: [GOOGLE] Increase max-early-inliner-iterations to 2 for profile-gen and use
- Authentication-results: sourceware.org; auth=none
- References: <CAAe5K+V=F8SF0K0uFtu=f46TLzS-XLTn7vVVZvaqyi+GP05HfQ at mail dot gmail dot com> <20141018170537 dot GG11581 at atrey dot karlin dot mff dot cuni dot cz> <CAAkRFZLG-_zXHskq1ToCHPXimt2D3N5btwx+JWUA_U_L8dSTtA at mail dot gmail dot com> <20141018222727 dot GC17993 at kam dot mff dot cuni dot cz> <CAAkRFZJ7GDBJspSciY08CLQM=SSs1wsdkJDGQ9mZ7DO4zcnyYw at mail dot gmail dot com>
> On Sat, Oct 18, 2014 at 3:27 PM, Jan Hubicka <hubicka@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).
I would be more interested in case where increasing iteration to 2 actually
improves train run perfomrance. (einline was originally invented to make
profiling useable on tramp3d ;)
It seems to me that the cases handled by iteration are rather rare, so I am
suprised you get important benefit from these. Perhaps we miss something
obvious here.
Honza
>
> David
>
> > Honza
> >>
> >> David
> >>
> >> On Sat, Oct 18, 2014 at 10:05 AM, Jan Hubicka <hubicka@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 <tejohnson@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 | tejohnson@google.com | 408-460-2413