[alias-improvements] Review of branch as of 2009-01-23
Richard Guenther
richard.guenther@gmail.com
Sun Feb 1 13:55:00 GMT 2009
On Sat, Jan 31, 2009 at 11:31 PM, Richard Guenther
<richard.guenther@gmail.com> wrote:
> On Sat, Jan 31, 2009 at 10:30 PM, Diego Novillo <dnovillo@google.com> wrote:
>> I took a snapshot of the branch as of 2009-01-23 and reviewed the
>> diff against trunk as of the latest merge point. I saw various
>> changes to the branch come in during this time, so some of the
>> comments may be stale by now (sorry).
>>
>> Some general observations:
>>
>> - Overall, the cleanups in the branch look impressive. There is
>> a lot of simplified logic in the basic operand manipulation
>> routines. Good stuff.
>
> That probably accounts for most of the compile-time improvements I saw.
>
>> - We need to get an idea of how much codegen quality has degraded
>> (or not). This change is very disruptive as it shifts the
>> responsibility from the memory SSA web to the alias oracle. We
>> need to find the right balance. I suspect that the memory web
>> in the IL will always need to be very coarse.
>>
>> - What is the compile time performance profile? We are trading
>> slowness in one place for slowness in another. Though now the
>> slowness should only happen in memory passes. I also didn't
>> notice very many changes to the various memory optimizers
>> (except, perhaps PRE), it mostly looked like updates for the
>> new virtual operand interfaces. What do you estimate needs to
>> be changed for them to come back to parity with the existing
>> behaviour?
>
> I am running SPEC2006, SPEC2000, Polyhedron and our set of C++
> benchmarks (tramp3d, DLV and some more) continuously on the
> branch vs. the trunk. Overall the branch is better in compile-time
> and memory-usage, optimization seems to be on-par overall
> with occasional slower/faster cases, a few of them probably worth
> investigating. I promised to post some numbers, I'll hope to manage
> to next week (I have to extract them first...). You can see graphs
> beyond http://gcc.opensuse.org/, follow "frescobaldi" and
> "frescobaldi (alias-improvements)".
I am looking at the results now and just want to cite overall performance
numbers. On x86_64 we have for SPEC2006 (base: -O2,
peak: -O3 -march=native -ffast-math -funroll-loops -fpeel-loops):
trunk branch
compile-time of all FP binaries: 500s/800s 420s/740s
compile-time of all INT binaries: 180s/255s 175s/250s
GCC build time (noisy): 420s 420s
SPEC2006 INT overall score: 10.9/11.05 10.9/11.05
SPEC2006 FP overall score: 9.55/10.65 9.55/10.7
so we get significantly reduced benchmark compile-time at no cost for
the above scenario. The other example would be tramp3d, my favorite
benchmark, where for -fprofile-generate with leafify (the worst compile-time
offender and probably a good case for long stmt walks) the branch builds
this in 132s vs. 134s on the trunk. Runtime at -O3 is 6.9s vs 7.9s, the
branch is more than 10% faster.
Polyhedron scores are (pasting from the last available logfile):
trunk:
Benchmark Compile Executable Ave Run Number Estim
Name (secs) (bytes) (secs) Repeats Err %
--------- ------- ---------- ------- ------- ------
ac 1.54 1305543 13.79 5 0.0094
aermod 47.06 2567970 36.01 5 0.0401
air 3.00 1363170 10.97 5 0.1328
capacita 1.96 1376112 82.94 4 0.0326
channel 1.13 1311637 6.45 5 0.4735
doduc 5.95 1468235 43.35 5 0.0334
fatigue 2.53 1405225 9.84 5 0.1173
gas_dyn 3.51 1423748 8.19 5 0.0663
induct 5.11 1552778 25.36 5 0.0064
linpk 1.02 1299568 20.09 5 0.0474
mdbx 1.94 1334296 18.19 5 0.0660
nf 4.71 1392755 27.51 5 0.0913
protein 5.24 1518725 51.17 5 0.0361
rnflow 6.67 1511810 35.58 5 0.0770
test_fpu 6.31 1485860 15.31 5 0.0476
tfft 0.67 1321163 7.31 5 0.0754
Geometric Mean Execution Time = 19.73 seconds
branch:
Benchmark Compile Executable Ave Run Number Estim
Name (secs) (bytes) (secs) Repeats Err %
--------- ------- ---------- ------- ------- ------
ac 1.91 1300871 13.85 5 0.0083
aermod 42.95 2547458 36.52 5 0.1237
air 2.95 1358498 10.86 5 0.0933
capacita 1.84 1371760 81.43 4 0.1287
channel 1.16 1306949 6.47 5 0.3794
doduc 5.90 1463547 44.13 5 0.0436
fatigue 2.44 1400761 10.34 5 0.0555
gas_dyn 3.32 1419268 8.30 5 0.1099
induct 5.01 1548554 23.81 5 0.0420
linpk 1.01 1294896 20.10 5 0.0077
mdbx 1.89 1329608 18.77 5 0.0771
nf 4.56 1388275 27.53 5 0.0161
protein 5.12 1509173 50.23 5 0.0195
rnflow 6.57 1507522 34.93 5 0.0223
test_fpu 6.27 1481428 15.36 5 0.0305
tfft 0.68 1316651 7.37 5 0.1213
Geometric Mean Execution Time = 19.76 seconds
both at -ffast-math -funroll-loops -O3.
Richard.
More information about the Gcc-patches
mailing list