This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Polyhedron test: gas_dyn run-time performance regression compared with yesterday
- From: "Uros Bizjak" <ubizjak at gmail dot com>
- To: "GCC Development" <gcc at gcc dot gnu dot org>
- Cc: "Tobias Burnus" <burnus at net-b dot de>, "Jagasia, Harsha" <harsha dot jagasia at amd dot com>, "Jan Sjodin" <jan dot sjodin at amd dot com>
- Date: Tue, 11 Sep 2007 17:57:23 +0200
- Subject: Re: Polyhedron test: gas_dyn run-time performance regression compared with yesterday
- References: <5787cf470709110851xf21ab26y36761571b4f9686e@mail.gmail.com>
Hello!
> This is using the Polyhedron Fortran test.
> http://www.polyhedron.co.uk/MFL6VW74649
> Using several options, the gas_dyn test got much slower; however, with
> some options, the performance remained roughly the same.
> In terms of the geometric mean, it is a slowdown of around 1%.
> The run time of the other programs only changed slightly (up/down/const).
> Result from http://www.suse.de/~gcctest/c++bench/polyhedron/
> -ffast-math -funroll-loops -O3 -ftree-vectorize -march= ??? (opteron I
> think).
> 14.59s -> 21.06s (44% slower)
> Result on for my AMD Athlon64 4800+,
> http://physik.fu-berlin.de/~tburnus/gcc-trunk/benchmark/
> Yesterday: 2007-09-10-r128322
> Today: 2007-09-11-r128363
The problem was introduced by r128353 [1]:
2007-09-10 Harsha Jagasia <harsha.jagasia@amd.com>
Jan Sjodin <jan.sjodin@amd.com>
* tree-vect-analyze.c (vect_analyze_operations): Change
comparison of loop iterations with threshold to less than
or equal to instead of less than. Reduce
min_scalar_loop_bound by one.
* tree-vect-transform.c (vect_estimate_min_profitable_iters):
Change prologue and epilogue iterations estimate to vf/2,
when unknown at compile-time. Change versioning guard
cost to taken_branch_cost. If peeling for alignment is
unknown at compile-time, change peel guard costs to one
taken branch and one not-taken branch per peeled loop.
If peeling for alignment is known but number of scalar loop
iterations is unknown at compile-time, change peel guard
costs to one taken branch per peeled loop. Change the cost
model equation to consider vector iterations as the loop
iterations less the prologue and epilogue iterations.
Change outside vector cost check to less than or equal to
zero instead of equal to zero.
(vect_do_peeling_for_loop_bound): Reduce
min_scalar_loop_bound by one.
* tree-vectorizer.h: Add TARG_COND_TAKEN_BRANCH_COST and
TARG_COND_NOT_TAKEN_BRANCH_COST.
...
[1]: http://gcc.gnu.org/ml/gcc-cvs/2007-09/msg00347.html
Uros.