[Bug tree-optimization/42027] New: Performance regression in convolution loop optimization
nbenoit at tuxfamily dot org
gcc-bugzilla@gcc.gnu.org
Fri Nov 13 09:49:00 GMT 2009
GCC trunk rev. 154141 seems to handle less efficiently a convolution code than
previous stable releases, it was also spotted in revision 153048.
Here are some average timings on an Intel E5320 clocked at 1.86 GHz with 4 MB
of L2 cache, Debian GNU/Linux with a 2.6.26 kernel.
* with -O2 -march=native
GCC 4.3.2 8239 ms
GCC-4.4.2 8102 ms
GCC-snapshot-20091105 9347 ms
GCC-trunk-r154141 9343 ms
* with -O2
GCC 4.3.2 8128 ms
GCC-4.4.2 8158 ms
GCC-snapshot-20091105 9824 ms
GCC-trunk-r154141 9828 ms
* with -O1
GCC 4.3.2 20926 ms
GCC-4.4.2 8277 ms
GCC-snapshot-20091105 9369 ms
GCC-trunk-r154141 9375 ms
* with -O0
GCC 4.3.2 34061 ms
GCC-4.4.2 34241 ms
GCC-snapshot-20091105 34903 ms
GCC-trunk-r154141 34910 ms
GCC compiled with : configure --prefix=/export/home/nicolas/gcc/trunk-install
--enable-languages=c --disable-multilib --disable-bootstrap
--enable-checking=release
I haven't been able to track down the origin of the performance difference.
Note that data are not initialized in the attached code, as the slowdown is
observed wether they are or not.
---BEGIN code---
#define N 1024*512
#define M 512
#define ITER 16
double in[N];
double H[M];
double vH[N];
int main ( int argc,
char **argv )
{
int i, j, k;
for ( i=0; i<ITER; ++i )
for ( j=0; j<N; ++j )
for ( k=0; (k<M)&&(k<=j); ++k )
vH[j] += H[k]*in[j-k];
return (int) vH[argc];
}
---END code---
--
Summary: Performance regression in convolution loop optimization
Product: gcc
Version: 4.5.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: tree-optimization
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: nbenoit at tuxfamily dot org
GCC build triplet: i686-pc-linux-gnu
GCC host triplet: i686-pc-linux-gnu
GCC target triplet: i686-pc-linux-gnu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42027
More information about the Gcc-bugs
mailing list