http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54966

--- Comment #9 from vincenzo Innocente <vincenzo.innocente at cern dot ch> 
2012-11-09 06:52:22 UTC ---
better and worse!
better than 4.7.2 
lto is worse in 4.8
Attached is a test case, just one file
bzip2 -d smatrix.ii.bz2 

the main component is this
three different way of computing the same matrix multiplication with more and
more
explicit temporaries..
    tvc = 
      //33       3N          NN  NM  MM
      -ve * (Transpose(a)) * tw * b * s;
  }


  void compute2() {
    //                        NM    NM  MM
    AlgebraicMatrixNM twbs =  tw *  b * s;
    tvc = 
      //33       3N         
    -ve * (Transpose(a)) * twbs;
  }

  void compute3() {
    //                        NM    NM  MM
    AlgebraicMatrixNM twbs =  tw *  b * s;
    //                       33       3N         
    AlgebraicMatrix3N tmpM1 = -ve * (Transpose(a));
    tvc = tmpM1 * twbs;
  }

timing is in cycle using __rdtsc(); on Inel x86_64
stability maybe 10%…

Target: x86_64-unknown-linux-gnu
gcc version 4.7.2 (GCC) 

[vocms123] ~/public/ctest/bugs48 $ c++ -O2 smatrix.ii; ./a.out 
size 5.  v1: time in cycles 30159.6
size 5.  v2: time in cycles 6031.1
size 5.  v3: time in cycles 3388.17
size 6.  v1: time in cycles 60336.6
size 6.  v2: time in cycles 10366.8
size 6.  v3: time in cycles 5955.81
[vocms123] ~/public/ctest/bugs48 $ c++ -O2 smatrix.ii -flto; ./a.out
size 5.  v1: time in cycles 12818.8
size 5.  v2: time in cycles 10453.9
size 5.  v3: time in cycles 5954.23
size 6.  v1: time in cycles 46293.1
size 6.  v2: time in cycles 12309.2
size 6.  v3: time in cycles 11621.8
[vocms123] ~/public/ctest/bugs48 $ c++ -O3 smatrix.ii; ./a.out
size 5.  v1: time in cycles 39630.3
size 5.  v2: time in cycles 5869.96
size 5.  v3: time in cycles 1966.87
size 6.  v1: time in cycles 69531.4
size 6.  v2: time in cycles 9020.06
size 6.  v3: time in cycles 4732.99
[vocms123] ~/public/ctest/bugs48 $ c++ -O3 smatrix.ii -flto; ./a.out
size 5.  v1: time in cycles 12425.1
size 5.  v2: time in cycles 9650.03
size 5.  v3: time in cycles 5340.79
size 6.  v1: time in cycles 45998
size 6.  v2: time in cycles 11128.1
size 6.  v3: time in cycles 10383


gcc version 4.8.0 20121108 (experimental) [trunk revision 193333] (GCC) 

[vocms123] ~/public/ctest/bugs48 $ c++ -O2 smatrix.ii ; ./a.out
size 5.  v1: time in cycles 14040.5
size 5.  v2: time in cycles 3264.85
size 5.  v3: time in cycles 3457.25
size 6.  v1: time in cycles 37368.4
size 6.  v2: time in cycles 5813.81
size 6.  v3: time in cycles 6224.37
[vocms123] ~/public/ctest/bugs48 $ c++ -O2 smatrix.ii -flto ; ./a.out
size 5.  v1: time in cycles 20705.2
size 5.  v2: time in cycles 6333.17
size 5.  v3: time in cycles 6654.85
size 6.  v1: time in cycles 49788.8
size 6.  v2: time in cycles 6828.72
size 6.  v3: time in cycles 7188.28
[vocms123] ~/public/ctest/bugs48 $ c++ -O3 smatrix.ii ; ./a.out
size 5.  v1: time in cycles 17350.4
size 5.  v2: time in cycles 2355.68
size 5.  v3: time in cycles 1891.62
size 6.  v1: time in cycles 38002
size 6.  v2: time in cycles 4046.09
size 6.  v3: time in cycles 3954.97
[vocms123] ~/public/ctest/bugs48 $ c++ -O3 smatrix.ii -flto; ./a.out
size 5.  v1: time in cycles 20380.9
size 5.  v2: time in cycles 4504.76
size 5.  v3: time in cycles 4576.5
size 6.  v1: time in cycles 42327.9
size 6.  v2: time in cycles 3405.72
size 6.  v3: time in cycles 3314.2

stability test


[vocms123] ~/public/ctest/bugs48 $ c++ -O3 smatrix.ii -flto ; ./a.out
size 5.  v1: time in cycles 20447.2
size 5.  v2: time in cycles 4509.64
size 5.  v3: time in cycles 4580.46
size 6.  v1: time in cycles 42361.2
size 6.  v2: time in cycles 3407.53
size 6.  v3: time in cycles 3316.36
[vocms123] ~/public/ctest/bugs48 $ ./a.out 
size 5.  v1: time in cycles 23968.7
size 5.  v2: time in cycles 5277.67
size 5.  v3: time in cycles 5353.72
size 6.  v1: time in cycles 49573
size 6.  v2: time in cycles 4023.34
size 6.  v3: time in cycles 3862.6

Reply via email to