On Sat, Oct 18, 2014 at 4:26 PM, Jan Hubicka <hubi...@ucw.cz> 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). > > 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 ;)
What is special about tram3d ? > 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. For training run performance, as in this case, einline helps reducing indirect calls thus reduces instrumentation overhead. Instrumentation has another side-effect that it changes function body size, thus can reduce the amount of ipa-inline later. David > > Honza >> >> 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