Changes between Version 19 and Version 20 of Frisby2013Q1


Ignore:
Timestamp:
Feb 23, 2013 4:44:15 PM (14 months ago)
Author:
nfrisby
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Frisby2013Q1

    v19 v20  
    365365Just turning on the -fprotect-last-arg flag was generally helpful for allocation. It was also generally helpful for runtime: somewhere between +1% and -3%. But a couple were > +4%. In a couple of those cases, I discovered that the increased expression size was breaching the unfolding creation threshold (in a base library module). This actual prevented some inlining. 
    366366 
    367 I implemented the -funfolding-ignore-RealWorld flag by ignoring arguments of type State# RealWorld when measuring applications and lambdas. The only subtlety was that we still need to count the void args when considering whether to award the partial application result discount. Otherwise, every invocation of a join point meant a huge discount (ufFunAppDiscount). In a couple programs, this increased allocation drastically because the newly inlined function's RHS included a join point that lost its LNE status at the call-site because the entire inlined RHS was case-scrutinized. 
    368  
    369 The switch improved the runtimes of -fprotect-last-arg, especially the formerly bad ones. Two exceptional cases: 
    370  
    371   * rewrite gets +3% allocation when ignoring RealWorld (regardless of protection) and 
    372   * hidden gets +15% run time with both protecting and ignoring. 
    373  
    374 TODO: I'm investigating these now. 
     367I implemented the -funfolding-ignore-RealWorld flag by ignoring arguments of type State# RealWorld when measuring applications and lambdas. The only subtlety was that we still need to count the void args when considering whether to award the partial application result discount --- not counting the void args incorrectly awards the discount. That mistake means every invocation of a join point awards the rather large ufFunAppDiscount. In a couple programs, this increased allocation drastically because the newly inlined function's RHS included a join point that lost its LNE status at the call-site because the entire inlined RHS was case-scrutinized. 
     368 
     369==== Measurements ==== 
     370 
     371Allocation 
     372 
     373{{{ 
     374                          baseline       protect-no-ignore   protect-ignore 
     375        circsim           1326471120           -0.7%           -0.7% 
     376  comp_lab_zift            330889440           -5.0%           -5.0% 
     377         hidden           1165309432           -0.7%           -0.7% 
     378      listcompr            304662896           -0.4%           -0.4% 
     379       listcopy            334710912           -0.4%           -0.4% 
     380       maillist             92431136           +0.0%           -0.7% 
     381}}} 
     382 
     383Repeatable Elapsed Times 
     384 
     385There are some good ones in the -3 to -5% range. This table is just the bad ones/ones where ignore made things worse. 
     386 
     387{{{ 
     388x5 
     389 
     390           atom                 3.66           -0.1%           -2.2%           +2.0% 
     391     bernouilli                 0.91           -0.4%           +0.7%           +1.8% 
     392       cichelli                 0.34           +0.0%           -2.4%           +2.9% 
     393       compress                 0.92           +0.0%           +0.4%           +1.3% 
     394           fft2                 0.28           +0.0%           +0.0%           +5.7% 
     395         genfft                 0.21           -0.9%           +2.8%           +3.8% 
     396            hpg                 0.48           -1.3%           -2.5%           +4.2% 
     397          infer                 0.36           -1.1%           -2.2%           -2.8% 
     398       nucleic2                 0.26           +1.5%           +3.0%           +5.3% 
     399            scs                 3.54           +0.2%           +0.8%           +2.7% 
     400         simple                 1.33           -0.2%           -0.2%           +2.1% 
     401          solid                 0.91           -0.0%           -1.1%           +0.4% 
     402      transform                 1.86           -0.3%           -0.8%           +0.1% 
     403 
     404x15 
     405 
     406           atom                 3.66           +0.2%           -2.1%           +1.8% 
     407     bernouilli                 0.92           -0.6%           -0.1%           +0.1% 
     408       cichelli                 0.34           +0.0%           -2.0%           +0.4% 
     409       compress                 0.92           -0.5%           +0.1%           +1.3% 
     410           fft2                 0.28           -0.2%           +0.2%           +5.5% 
     411         genfft                 0.21           +0.3%           +4.7%           +4.1% 
     412            hpg                 0.47           +0.3%           -1.6%           +4.9% 
     413          infer                 0.36           +0.2%           -1.3%           -2.2% 
     414       nucleic2                 0.26           +0.5%           +5.3%           +4.0% 
     415            scs                 3.55           -0.1%           +0.7%           +2.4% 
     416         simple                 1.32           +0.2%           -0.1%           +2.4% 
     417          solid                 0.91           +0.4%           -0.3%           +0.6% 
     418      transform                 1.85           +0.5%           -0.1%           +0.9% 
     419 
     420x50 
     421 
     422       cichelli                 0.34           +0.0%           -1.7%           +0.5% 
     423         genfft                 0.21           -0.5%           +4.3%           +4.1% 
     424       nucleic2                 0.26           -0.1%           +4.0%           +4.3% 
     425          solid                 0.91           -0.1%           -0.9%           +0.7% 
     426 
     427}}} 
     428 
     429TODO: investigate 
     430 
     431TODO: see how this interacts with LLF 
    375432 
    376433===== Continuation ===== 
     
    472529Repeatable Elapsed time changes: 
    473530 
     531 * These don't necessarily include all *good* changes, but I think I caught all the bad ones. 
     532 
    474533{{{ 
    475534              baseline   baseline2  late-strictness  wwsplit 
    476535atom          3.66       0.10%       3.00%            -1.10% 
    477536compress2     1.97       0.10%      -3.80%            -3.40% 
     537fft           0.23       0.00%      -2.30%           -10.40% 
     538integrate     0.66       0.30%      -0.20%            -4.10% 
     539life          1.85       0.10%       1.90%             1.30% 
     540para          1.65      -0.40%       0.20%            -3.40% 
     541scs           3.59       0.60%      -0.90%           -12.50% 
     542wave4main     1.18      -0.10%       1.90%             0.40% 
     543 
    478544cryptarithm1  2.36       0.10%      -1.90%             2.90% 
    479 fft           0.23       0.00%      -2.30%           -10.40% 
    480545fft2          0.28      -0.20%       0.10%             2.10% 
    481546genfft        0.21      -0.30%       1.90%             5.30% 
    482547hpg           0.47       0.10%      -3.00%             2.80% 
    483548integer       5.69      -0.20%      -0.70%             2.90% 
    484 integrate     0.66       0.30%      -0.20%            -4.10% 
    485 life          1.85       0.10%       1.90%             1.30% 
    486 para          1.65      -0.40%       0.20%            -3.40% 
    487 scs           3.59       0.60%      -0.90%           -12.50% 
    488549transform     1.86      -0.20%      -0.20%             2.20% 
    489550treejoin      1.61       0.40%       1.10%             2.30% 
    490 wave4main     1.18      -0.10%       1.90%             0.40% 
    491551}}} 
    492552