On Fri, May 20, 2011 at 2:12 AM, Richard Guenther
<richard.guent...@gmail.com> wrote:
> On Thu, May 19, 2011 at 8:26 PM, Xinliang David Li <davi...@google.com> wrote:
>> I have done some SPEC testing evaluating the performance impact of
>> your patch.  They look very positive.  LIPO got helped even more than
>> FDO (I only did SPEC2k LIPO testing).
>
> Did you also check impact on compile-time and code-size?

Not yet for SPEC -- will pick some benchmarks and take a look.

David

>
>> Thanks,
>>
>> David
>>
>> 1. SPEC06 (C/C++)  with FDO
>>
>>                                   before          after         Improvement
>> ---------------------------------------------------------------------------------
>>       400.perlbench           27.4           28.2      2.89%         <---
>>           401.bzip2           18.1           18.2      0.28%
>>             403.gcc           25.5           26.3      3.26%           <---
>>             429.mcf           26.0           26.0      0.08%
>>           445.gobmk           22.6           23.2      2.30%         <----
>>           456.hmmer           20.1           19.8     -1.25%
>>           458.sjeng           23.6           23.6     -0.42%
>>      462.libquantum           57.1           56.9     -0.40%
>>         464.h264ref           34.4           34.1     -0.70%
>>         471.omnetpp           18.8           18.9      0.53%
>>           473.astar           16.6           17.0      2.53%         <---
>>       483.xalancbmk           27.4           28.5      3.79%    <---
>>        999.specrand           94.9           98.4      3.71%      <---
>>          450.soplex           34.5           33.8     -2.00%
>>          447.dealII           32.0           31.9     -0.34%
>>          453.povray           25.9           28.3      9.02%       <---
>>         482.sphinx3           32.6           31.4     -3.50%
>>
>>
>> 2. SPEC2k FDO
>>
>>                                        before               after
>>  Improvement
>> --------------------------------------------------------------------------------------------------
>>            164.gzip                1308                1372      4.95%
>>             175.vpr                1723                1805      4.76%
>>             176.gcc                2407                2504      4.01%
>>             181.mcf                1724                1748      1.38%
>>          186.crafty                2292                2349      2.47%
>>          197.parser                1457                1601      9.88%
>>             252.eon                2557                2588      1.22%
>>         253.perlbmk                2479                2574      3.83%
>>             254.gap                1996                2013      0.84%
>>          255.vortex                2683                2798      4.31%
>>           256.bzip2                1833                1829     -0.26%
>>           300.twolf                2321                2359      1.63%
>>            188.ammp                 771                 766     -0.72%
>>          183.equake                1071                1071      0.05%
>>             179.art                2954                2979      0.85%
>>
>>
>> 3.  SPEC2k LIPO:
>>
>>                                       before              after
>>  Improvement
>> -------------------------------------------------------------------------------------------------
>>            164.gzip                1311                1405      7.18%
>>             175.vpr                1732                1772      2.35%
>>             176.gcc                2462                2559      3.96%
>>             181.mcf                1723                1731      0.50%
>>          186.crafty                2552                2662      4.33%
>>          197.parser                1468                1671     13.78%
>>             252.eon                2690                3000     11.49%
>>         253.perlbmk                2545                2611      2.60%
>>             254.gap                2097                2152      2.60%
>>          255.vortex                2949                3719     26.11%
>>           256.bzip2                1864                1935      3.78%
>>           300.twolf                2371                2471      4.22%
>>            188.ammp                 771                 774      0.41%
>>          183.equake                1081                1081     -0.04%
>>             179.art                2878                2884      0.24%
>>
>>
>> 4. SPEC2k LIPO vs FDO before the change:
>>
>>                                       FDO(before)    LIPO(before) Improvement
>> -----------------------------------------------------------------------------------------------------
>>           164.gzip                1308                1311      0.22%
>>             175.vpr                1723                1732      0.53%
>>             176.gcc                2407                2462      2.27%
>>             181.mcf                1724                1723     -0.07%
>>          186.crafty                2292                2552     11.32%
>>          197.parser                1457                1468      0.81%
>>             252.eon                2557                2690      5.20%
>>         253.perlbmk                2479                2545      2.66%
>>             254.gap                1996                2097      5.04%
>>          255.vortex                2683                2949      9.91%
>>           256.bzip2                1833                1864      1.67%
>>           300.twolf                2321                2371      2.15%
>>            188.ammp                 771                 771     -0.04%
>>          183.equake                1071                1081      1.02%
>>             179.art                2954                2878     -2.59%
>>
>>
>>
>> 5. SPEC2k LIPO vs FDO  after the change:
>>                                     FDO(after)        LIPO(after) Improvement
>> ------------------------------------------------------------------------------------------------
>>            164.gzip                1372                1405      2.36%
>>             175.vpr                1805                1772     -1.79%
>>             176.gcc                2504                2559      2.21%
>>             181.mcf                1748                1731     -0.94%
>>          186.crafty                2349                2662     13.35%
>>          197.parser                1601                1671      4.38%
>>             252.eon                2588                3000     15.88%
>>         253.perlbmk                2574                2611      1.44%
>>             254.gap                2013                2152      6.87%
>>          255.vortex                2798                3719     32.88%
>>           256.bzip2                1829                1935      5.79%
>>           300.twolf                2359                2471      4.75%
>>            188.ammp                 766                 774      1.10%
>>          183.equake                1071                1081      0.92%
>>             179.art                2979                2884     -3.18%
>>
>>
>>
>> On Wed, May 18, 2011 at 12:53 PM, Mark Heffernan <meh...@google.com> wrote:
>>> Verified identical binaries created and submitted.
>>>
>>> Mark
>>>
>>> On Wed, May 18, 2011 at 11:37 AM, Xinliang David Li <davi...@google.com> 
>>> wrote:
>>>> Ok with that change to google/main with some retesting.
>>>>
>>>> David
>>>>
>>>> On Wed, May 18, 2011 at 11:34 AM, Mark Heffernan <meh...@google.com> wrote:
>>>>> On Wed, May 18, 2011 at 10:52 AM, Xinliang David Li <davi...@google.com> 
>>>>> wrote:
>>>>>> The new change won't help those. Your original place will be ok if you
>>>>>> test profile_arcs and branch_probability flags.
>>>>>
>>>>> Ah, yes.  I see your point now. Reverted to the original change with
>>>>> condition profile_arc_flag and flag_branch_probabilities.
>>>>>
>>>>> Mark
>>>>>
>>>>>>
>>>>>> David
>>>>>>
>>>>>>
>>>>>> On Wed, May 18, 2011 at 10:39 AM, Mark Heffernan <meh...@google.com> 
>>>>>> wrote:
>>>>>>> On Tue, May 17, 2011 at 11:34 PM, Xinliang David Li <davi...@google.com>
>>>>>>> wrote:
>>>>>>>>
>>>>>>>> To make consistent inline decisions between profile-gen and
>>>>>>>> profile-use, probably better to check these two:
>>>>>>>>
>>>>>>>> flag_profile_arcs and flag_branch_probabilities.  -fprofile-use
>>>>>>>> enables profile-arcs, and value profiling is enabled only when
>>>>>>>> edge/branch profiling is enabled (so no need to be checked).
>>>>>>>
>>>>>>> I changed the location where these parameters are set to someplace more
>>>>>>> appropriate (to where the flags are set when profile gen/use is 
>>>>>>> indicated).
>>>>>>>  Verified identical binaries are generated.
>>>>>>> OK as updated?
>>>>>>>
>>>>>>> Mark
>>>>>>> 2011-05-18  Mark Heffernan  <meh...@google.com>
>>>>>>> * opts.c (set_profile_parameters): New function.
>>>>>>> Index: opts.c
>>>>>>> ===================================================================
>>>>>>> --- opts.c      (revision 173666)
>>>>>>> +++ opts.c      (working copy)
>>>>>>> @@ -1209,6 +1209,25 @@ print_specific_help (unsigned int includ
>>>>>>>                        opts->x_help_columns, opts, lang_mask);
>>>>>>>  }
>>>>>>>
>>>>>>> +
>>>>>>> +/* Set parameters to more appropriate values when profile information
>>>>>>> +   is available.  */
>>>>>>> +static void
>>>>>>> +set_profile_parameters (struct gcc_options *opts,
>>>>>>> +                       struct gcc_options *opts_set)
>>>>>>> +{
>>>>>>> +  /* With accurate profile information, inlining is much more
>>>>>>> +     selective and makes better decisions, so increase the
>>>>>>> +     inlining function size limits.  */
>>>>>>> +  maybe_set_param_value
>>>>>>> +    (PARAM_MAX_INLINE_INSNS_SINGLE, 1000,
>>>>>>> +     opts->x_param_values, opts_set->x_param_values);
>>>>>>> +  maybe_set_param_value
>>>>>>> +    (PARAM_MAX_INLINE_INSNS_AUTO, 1000,
>>>>>>> +     opts->x_param_values, opts_set->x_param_values);
>>>>>>> +}
>>>>>>> +
>>>>>>> +
>>>>>>>  /* Handle target- and language-independent options.  Return zero to
>>>>>>>     generate an "unknown option" message.  Only options that need
>>>>>>>     extra handling need to be listed here; if you simply want
>>>>>>> @@ -1560,6 +1579,7 @@ common_handle_option (struct gcc_options
>>>>>>>         opts->x_flag_unswitch_loops = value;
>>>>>>>        if (!opts_set->x_flag_gcse_after_reload)
>>>>>>>         opts->x_flag_gcse_after_reload = value;
>>>>>>> +      set_profile_parameters (opts, opts_set);
>>>>>>>        break;
>>>>>>>
>>>>>>>      case OPT_fprofile_generate_:
>>>>>>> @@ -1580,6 +1600,7 @@ common_handle_option (struct gcc_options
>>>>>>>          is done.  */
>>>>>>>        if (!opts_set->x_flag_ipa_reference && in_lto_p)
>>>>>>>          opts->x_flag_ipa_reference = false;
>>>>>>> +      set_profile_parameters (opts, opts_set);
>>>>>>>        break;
>>>>>>>
>>>>>>>      case OPT_fshow_column:
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>

Reply via email to