Jaguar gcc3 has some 30-40 optimizations that are not in standard 
3.1/3.2, both
generic and PowerPC-specific, so I think you can expect to see different
performance numbers (hopefully better ones :-) ).

Stan

Jonas Maebe wrote:

> Hello,
>
> The program at the end of this mail is 10% slower when compiled with 
> GCC 3.x (both 3.0.4 and 3.1.1 tested, using -O6, on a PPC604e/180MHz) 
> than when compiled with 2.95. The reasons are
>
> a) several superfluous "fmr" instructions are generated by gcc3 (which 
> aren't generated by gcc 2.95):
>
>         lfs 0,200(11)
>         lfs 1,-200(11)
>         lfs 10,4(11)
>         lfs 8,-4(11)
>         fadds 9,0,1
>         fadds 7,9,10
>         fadds 6,7,8
> >>        fmr 13,6
>         fmul 5,13,11
>         frsp 4,5
>         stfs 4,4(6)
>
>
> b) the static prediction bit for the loop-branches are wrong (they are 
> set to be predicted "not taken). Changing this doesn't really improve 
> performance on my test machine, but it should still be fixed of course 
> (note that I've only verified this with gcc 3.0.4, I don't have access 
> to 3.1.1 currently):
>
> .L46:
>         li 5,1
>         li 4,50
> .L45:
>         li 8,8
>         slwi 6,4,2
>         mtctr 8
>         add 7,6,0
>         addi 6,7,4
> .L65:
>         lfs 10,200(6)
>
> ...
>
>         cmpwi 0,5,48
>         ble- 0,.L45
>         addi 3,3,1
>         cmpwi 0,3,2999
>         ble- 0,.L46
>
>
> From the dialect, you can see these tests were performed under Linux. 
> I don't have access a Mac OS X machine with gcc 3.x (only with 2.95.2, 
> I'm still under 10.1.5 and I don't want to install the beta tools 
> since I'll soon upgrade to 10.2), so it's possible neither of these 
> problems shows up in the Apple version of gcc3.
>
>
> Jonas
>
>
> -------------------------------------
> /*
> ************************************************************************
> *  laplace.c:  Solution of Laplace equation with finite differences    *
> *                                       *
> *  taken from: "Projects in Computational Physics" by Landau and Paez  *
> *           copyrighted by John Wiley and Sons, New York            *
> *                                                                      *
> *  written by: students in PH465/565, Computational Physics,           *
> *           at Oregon State University                              *
> *              code copyrighted by RH Landau                           *
> *  supported by: US National Science Foundation, Northwest Alliance    *
> *                for Computational Science and Engineering (NACSE),    *
> *                US Department of Energy                            *
> *                                       *
> *  UNIX (DEC OSF, IBM AIX): cc laplace.c                               *
> *                                                               *
> *  comment: Output data is saved in 3D grid format used by gnuplot     *
> ************************************************************************
> */
> #include <stdio.h>
>
> #define max 50                         /* number of grid points */
>
> main()
> {
>    float x, p[max][max];
>    int i, j, iter, y;
> #if 0
>    FILE *output;            /* save data in laplace.dat */
>    output = fopen("laplace.dat","w");
> #endif
>
>    for(i=0; i<max; i++)                 /* clear the array  */
>    {
>       for (j=0; j<max; j++) p[i][j] = 0;
>    }
>
>    for(i=0; i<max; i++) p[i][0] = 100.0;        /* p[i][0] = 100 V 
> */       
>
>    for(iter=0; iter<3000; iter++)               /* iterations */
>    {
>       for(i=1; i<(max-1); i++)                  /* x-direction */
>       {
>          for(j=1; j<(max-1); j++)               /* y-direction */
>          {
>             p[i][j] = 0.25*(p[i+1][j]+p[i-1][j]+p[i][j+1]+p[i][j-1]);
>          }
>       }
>    }
>
> #if 0
>    printf("Start writing data ...\n");
>    for (i=0; i<max ; i++)         /* write data gnuplot 3D format */
>    {
>       for (j=0; j<max; j++)
>       {
>          fprintf(output, "%f\n",p[i][j]);
>       }
>       fprintf(output, "\n");      /* empty line for gnuplot */
>    }
>    printf("data stored in laplace.dat\n");
>    fclose(output);
> #endif
> }
>
> -------------------------------------
>
>


Reply via email to