Mesures de performance

Environnement

Les exécutions ont été effectuées sur un Linux avec deux Intel Xeon E5-2630 (6 coeurs HT), 16 GB de RAM et gcc 6.2.1. Le temps mesuré ne concerne que la méthode carree() et le programme a été compilé avec et sans OpenMP. Enfin nous n'avons pas pris la moyenne de plusieurs expériences (shame ! shame ! shame !)

Cliquez sur les images pour avoir la version animée.

Taille variable de tableau

On fait varier la taille du tableau et on mesure le temps d'exécution pour la version séquentielle et la version OpenMP avec un nombre variable de threads (notés x_thread).

http://www.i3s.unice.fr/~huet/Unice/Parallelisme/bench_carre/base.html

On note les points suivants :

  • Il y a un léger surcoût à utiliser OpenMP (1_thread vs sequentiel)
  • Avoir deux threads rend le programme 1.4 fois plus rapide
  • Autour de 5-6 threads le gain devient négligeable

Performance en fonction du nombre de threads

On fixe maintenant la taille du tableau à 400M éléments et on fait varier le nombre de threads OpenMP.

http://www.i3s.unice.fr/~huet/Unice/Parallelisme/bench_carre/base.html

Le comportement est prévisible, l'ajout de premiers threads conduit à une bonne augmentation de la performance. C'est le même comportement que nous avions observé dans la courbe précédente. Le minimum semble atteint pour 7-8 threads, ensuite le gain est contre-balancé par le coût de gestion.