This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Integer performance regression on alpha
- To: gcc at gcc dot gnu dot org
- Subject: Integer performance regression on alpha
- From: Brad Lucier <lucier at math dot purdue dot edu>
- Date: Fri, 6 Oct 2000 11:10:31 -0500 (EST)
- Cc: lucier at math dot purdue dot edu
The following simple code is much slower compiled with yesterday's CVS
sources than it is compiled with 2.95.1 on alphaev6-unknown-linux-gnu:
popov-246% /export/u10/egcs-test/bin/gcc -O9 -funroll-all-loops -ffast-math -o massimo massimo.c
popov-247% ./massimo
16K ( 131072/ 65536) 14.145 sec INT 2.957 sec FLOAT
32K ( 65536/ 32768) 14.144 sec INT 2.956 sec FLOAT
48K ( 43690/ 21845) 14.220 sec INT 2.969 sec FLOAT
64K ( 32768/ 16384) 14.339 sec INT 3.165 sec FLOAT
80K ( 26214/ 13107) 18.706 sec INT 5.086 sec FLOAT
96K ( 21845/ 10922) 21.944 sec INT 6.364 sec FLOAT
128K ( 16384/ 8192) 21.930 sec INT 6.427 sec FLOAT
256K ( 8192/ 4096) 21.881 sec INT 6.422 sec FLOAT
512K ( 4096/ 2048) 23.029 sec INT 6.973 sec FLOAT
1024K ( 2048/ 1024) 25.203 sec INT 7.997 sec FLOAT
8192K ( 256/ 128) 38.823 sec INT 14.798 sec FLOAT
popov-248% /export/u10/egcs-test/bin/gcc -v
Reading specs from /export/u10/egcs-test/lib/gcc-lib/alphaev6-unknown-linux-gnu/2.97/specs
gcc version 2.97 20001005 (experimental)
popov-249% gcc -O9 -funroll-all-loops -ffast-math -o massimo massimo.c
popov-250% ./massimo
16K ( 131072/ 65536) 7.832 sec INT 2.594 sec FLOAT
32K ( 65536/ 32768) 7.828 sec INT 2.592 sec FLOAT
48K ( 43690/ 21845) 7.865 sec INT 2.606 sec FLOAT
64K ( 32768/ 16384) 7.910 sec INT 2.648 sec FLOAT
80K ( 26214/ 13107) 12.787 sec INT 5.116 sec FLOAT
96K ( 21845/ 10922) 16.039 sec INT 6.479 sec FLOAT
128K ( 16384/ 8192) 20.658 sec INT 8.849 sec FLOAT
256K ( 8192/ 4096) 18.368 sec INT 7.616 sec FLOAT
512K ( 4096/ 2048) 18.142 sec INT 7.852 sec FLOAT
1024K ( 2048/ 1024) 20.527 sec INT 8.804 sec FLOAT
8192K ( 256/ 128) 32.418 sec INT 15.218 sec FLOAT
popov-251% gcc -v
Reading specs from /export/u10/gcc-2.95.1/lib/gcc-lib/alphaev6-unknown-linux-gnu/2.95.1/specs
gcc version 2.95.1 19990816 (release)
This is going in the wrong direction!
Brad Lucier
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define FLOAT float
void bench (int nvec)
{
int *idat;
float *fdat;
int ireps,freps;
int num;
int i,j;
time_t debut,fin;
double temps_int,temps_float;
ireps = 1024*2048/nvec;
num = nvec*1024/sizeof(int);
idat = (int *) malloc(num*sizeof(int));
debut = clock();
for (j=0; j<ireps; ++j) {
for (i=0; i<num; ++i) {
idat[i] = 18;
}
for (i=0; i<num; ++i) {
idat[i] += 13;
}
for (i=0; i<num; ++i) {
idat[i] *= 17;
}
for (i=0; i<num; ++i) {
idat[i] /= 5;
}
}
fin = clock();
temps_int = ((double)(fin-debut))/CLOCKS_PER_SEC;
free(idat);
freps = 1024*1024/nvec;
num = nvec*1024/sizeof(float);
fdat = (float *) malloc(num*sizeof(float));
debut = clock();
for (j=0; j<freps; ++j) {
for (i=0; i<num; ++i) {
fdat[i] = 183.7463123456;
}
for (i=0; i<num; ++i) {
fdat[i] += 13;
}
for (i=0; i<num; ++i) {
fdat[i] *= 17;
}
for (i=0; i<num; ++i) {
fdat[i] /= 5;
}
}
fin = clock();
temps_float = ((double)(fin-debut))/CLOCKS_PER_SEC;
free(fdat);
printf("%7dK (%7d/%7d) %7.3f sec INT %7.3f sec FLOAT\n",nvec,ireps,freps,temps_int,temps_float);
}
main (int argc, char *argv[])
{
int nvec;
if (argc < 2) {
bench(16);
bench(32);
bench(48);
bench(64);
bench(80);
bench(96);
bench(128);
bench(256);
bench(512);
bench(1024);
bench(8192);
} else {
nvec = atoi(argv[1]);
bench(nvec);
}
}