mesure

Projet L3 Informatique 2013-14, implantation de la fonction suivante et comparaison avec une implantation SSE.

float mesure_reference(char *v, char *w, uint size) {
    uint i, s, d;
	
    s = d = 0;
    for (i = 0; i < size; ++i) {
        if (v[i] == w[i]) ++s; else ++d;
    }
    return ((float) s / (float)(s + d));
}

Les figures qui suivent affichent le temps d'exécution de la fonction pour différentes longueurs de chaines (16, 255, 511, 1023, 2047, 4095, 8191). On fait figurer :

Différentes implémentations sont proposées en fonction des technologies présentes sur le processeur:

Voici quelques valeurs

Intel i5-4570 (AVX2)

 cpu   freq   comp   arch   copt   ref   copt   sse2   sse2 u4   sse2 u8   sse2 i   sse2 b   avx   avx u4   avx2   avx2 u4   avx2 u8   avx2 u4 o   avx2 u8 o   avx2 i 
 i5-4570   3.20GHz   gcc   64   -O2 -mavx2   362.66   37.33   20.84   18.90   17.28   17.70   45.66   20.37   19.03   14.53   19.31   18.56   14.96   14.60   15.68 
 i5-4570   3.20GHz   gcc   64   -O3 -mavx2   365.41   36.15   20.98   17.57   15.76   15.72   48.92   22.78   21.84   16.42   21.68   20.31   15.21   14.99   16.03 
 i5-4570   3.20GHz   icpc   64   -O2 -xCORE-AVX2   59.21   41.78   21.30   18.84   17.08   25.04   49.05   23.20   21.60   16.42   22.10   20.72   15.24   14.12   14.26 
 i5-4570   3.20GHz   icpc   64   -O3 -xCORE-AVX2   57.48   41.88   20.86   18.52   16.86   24.14   48.72   23.18   21.71   16.36   21.99   20.90   14.98   14.55   14.68 
 i5-4570   3.20GHz   gcc   32   -O2 -mavx2   924.20   33.79   18.23   16.65   14.84   14.72   45.06   20.20   18.89   14.42   10.99   10.73   10.98   10.54   17.98 
 i5-4570   3.20GHz   gcc   32   -O3 -mavx2   915.57   35.56   19.12   17.17   15.25   14.86   45.48   20.39   19.05   14.41   11.38   10.74   11.56   11.05   18.97 
 i5-4570   3.20GHz   icpc   32   -O2 -xCORE-AVX2   46.04   38.46   18.25   16.64   14.93   21.11   44.77   21.22   19.45   14.59   11.07   10.46   10.90   10.43   13.16 
 i5-4570   3.20GHz   icpc   32   -O3 -xCORE-AVX2   44.86   38.41   18.26   16.56   14.84   20.94   45.09   20.73   19.40   14.52   11.19   10.54   11.31   11.45   13.88 
Résultats sur différentes architectures

Intel i5-3570K et i7 2600 (AVX)

 cpu   freq   comp   arch   copt   ref   copt   sse2   sse2 u4   sse2 u8   sse2 i   sse2 b   avx   avx u4   avx2   avx2 u4   avx2 u8   avx2 u4 o   avx2 u8 o   avx2 i 
 i5-3570K   3.40GHz   gcc   32   -O2 -mavx   954.61   56.05   27.02   19.71   18.19   18.04   46.31   27.29   24.78   --   --   --   --   --   -- 
 i5-3570K   3.40GHz   icpc   32   -O2 -xAVX   92.23   65.10   26.31   19.90   18.17   23.63   46.36   26.91   24.58   --   --   --   --   --   -- 
Résultats i5-3570K
 cpu   freq   comp   arch   copt   ref   copt   sse2   sse2 u4   sse2 u8   sse2 i   sse2 b   avx   avx u4   avx2   avx2 u4   avx2 u8   avx2 u4 o   avx2 u8 o   avx2 i 
 i7-2600   3.40GHz   gcc   32   -O2 -mavx   923.06   56.37   27.38   20.98   19.57   18.98   45.81   28.06   26.00   --   --   --   --   --   -- 
 i7-2600   3.40GHz   gcc   32   -O3 -mavx   934.88   57.60   28.11   21.69   20.51   19.60   46.93   28.67   26.52   --   --   --   --   --   -- 
 i7-2600   3.40GHz   icpc   32   -O2 -xAVX   90.80   63.76   25.66   20.68   18.94   23.55   44.72   26.40   24.33   --   --   --   --   --   -- 
 i7-2600   3.40GHz   icpc   32   -O3 -xAVX   92.97   64.34   26.25   20.81   19.69   23.65   45.52   26.82   24.73   --   --   --   --   --   -- 
Résultats i7-2600

AMD Phenom II X6 1090 T

 cpu   freq   comp   arch   copt   ref   copt   sse2   sse2 u4   sse2 u8   sse2 i   sse2 b   avx   avx u4   avx2   avx2 u4   avx2 u8   avx2 u4 o   avx2 u8 o   avx2 i 
 X6 1090T   3200   gcc 4.5.2   32   -msse4a -msse4.2   1005.10   275.83   38.34   35.94   36.66   35.69   55.45   --   --   --   --   --   --   --   -- 
 X6 1090T   3200   gcc 4.6.x   64   -msse4a -msse4.2   377.01   219.88   38.34   34.23   36.54   36.32   61.00   --   --   --   --   --   --   --   -- 
 X6 1090T   3200   gcc 4.7.3   64   -msse4a   374.18   58.92   38.28   36.20   36.80   35.93   61.23   --   --   --   --   --   --   --   -- 
Résultats AMD Phenom II X6 1090 T

Autres architectures

 cpu   freq   comp   arch   copt   ref   copt   sse2   sse2 u4   sse2 u8   sse2 i   sse2 b   avx   avx u4   avx2   avx2 u4   avx2 u8   avx2 u4 o   avx2 u8 o   avx2 i 
 i3-2375M   1.50Ghz   gcc   64   -O2 -mavx   909.39   124.25   60.26   47.48   47.32   62.44   57.06   --   --   --   --   --   --   --   -- 
 i7-860   2.80GHz   gcc   32   -O2 -msse4_2   937.44   65.75   28.69   24.81   24.74   21.86   45.85   --   --   --   --   --   --   --   -- 
 Xeon E5520   2.27GHz   gcc 4.4.3   64   -O2 -msse4.2   582.44   349.74   40.80   35.89   35.18   35.18   64.93   --   --   --   --   --   --   --   -- 
 Xeon E5520   2.27GHz   gcc 4.7.3   64   -O2 -msse4.2   544.03   79.75   40.77   36.87   35.75   35.30   66.42   --   --   --   --   --   --   --   -- 
 Sempron 3000   1.80Ghz    gcc 4.7.3   32   -O2 -msse2   1630.84   321.87   357.04   361.95   357.39   640.02   373.59   --   --   --   --   --   --   --   -- 
 Pentium M   2.00Ghz   gcc 4.6.3   32   -O2 -msse2   1723.38   562.37   136.64   129.97   128.87   418.21   172.12   --   --   --   --   --   --   --   -- 
 Pentium D   3.00Ghz   gcc 4.7.3   32   -O2 -msse2   2089.04   235.83   148.82   136.34   133.38   474.50   184.50   --   --   --   --   --   --   --   -- 
Résultats sur différentes architectures