• Aucun résultat trouvé

Le MPPA face à d’autres accélérateurs OpenCL

7.4 OpenCL adapté au manycore MPPA

7.4.3 Le MPPA face à d’autres accélérateurs OpenCL

Grâce aux modifications apportées à l’implémentation OpenCL de FREIA et explicitées à la section précédente, nous avons pu tester les performances du MPPA sur notre jeu d’applications de traitement d’images. Nous avons ainsi comparé les performances des deux premières génération de processeur MPPA, puis confronter le MPPA aux processeurs décrits en sous-section 7.3.3.

7.4. OpenCL adapté au manycore MPPA

Deux générations de MPPA

Ayant eu accès à deux générations de processeurs MPPA, nous avons pu comparer les temps d’exécution de nos sept applications sur les deux cibles.

anr999 antibi o

burn er

deblockinglicenseP late retin a toggl e GMEAN 0 0.5 1 1.5 2 Speed up →

Andey OpenCL Bostan OpenCL

Figure 7.3 – Speedups de sept applications de traitement d’images sur deux générations de processeur MPPA avec le modèle de programmation OpenCL : (1) OpenCL sur Andey (référence) ; (2) OpenCL sur Bostan

L’histogramme en figure 7.3 présente ainsi le différentiel de performances entre la pre- mière génération, « Andey », et la seconde, « Bostan ». Le chapitre 5 compare en section 5.3.4 la performance d’OpenMP sur un cluster de calcul. Les résultats montraient alors un spee- dup allant jusqu’à ×6 avec un seul thread. Dans le cas présent, les applications OpenCL utilisent les seize clusters de calcul sur les deux puces. Le speedup est ici moindre, avec une moyenne de ×1.5, ce qui reste inférieur à l’évolution mesurée avec OpenMP. L’utilisation de la mémoire globale, à travers la DSM, ainsi que les communications inter-clusters semblent diminuer les apports de la seconde génération Bostan.

Les accélérateurs matériels

Après ces tests préliminaires, nous avons repris les chiffres de [29] concernant les deux processeurs graphiques Nvidia Quadro et Tesla afin de confronter le MPPA aux accélérateurs OpenCL déjà présentés plus haut. Nous avons également mesuré les temps d’exécution sur le CPU hôte Intel Core i7-3820. Nous figurons en tableau 7.1 les différents accélérateurs utilisés dans cette comparaison, ainsi que leur consommation énergétique moyenne.

Les applications comparées le sont à code égal : il s’agit du code généré par PIPS et non retouché par la suite. Ce sont donc les accélérateurs eux-mêmes et leurs implémentations OpenCL qui sont comparés.

Comparaison des performances

Nous avons d’abord comparé les temps d’exécution de nos applications sur les différents accélérateurs par rapport à la puce MPPA « Bostan ». Le résultat, présenté en figure 7.4,

7. L’approche GPGPU : le framework OpenCL

Hardware Type Power Kalray MPPA Manycore 10 W Intel Core i7-3820 CPU 130 W Nvidia Quadro 600 GPU 40 W Nvidia Tesla C 2050 GPU 240 W

Table 7.1 – Description des accélérateurs matériels OpenCL

montre que le MPPA, est en moyenne, de 3 à 20 fois plus lent que les autres cibles dans l’exécution du même code OpenCL. Il est à noter que les évolutions actuelles de Kalray sur sa pile logicielle OpenCL laissent présager des améliorations dans ce domaine. De plus, nous n’avons, contrairement au travail effectué au chapitre 6, pas implémenté d’optimisations spécifiques au MPPA dans FREIA.

L’application « deblocking » semble particulièrement plus lente sur le MPPA en compa- raison des autres accélérateurs. Au contraire des autres applications, celle-ci dispose d’un graphe des tâches plus large que profond : plusieurs images intermédiaires coexistent simul- tanément. Cela entraîne de nombreux accès mémoire à la DDR qui grèvent particulièrement les performances.

En ce qui concerne l’efficacité énergétique, le MPPA profite de sa faible consomma- tion : seul le GPU Quadro 600 est, en moyenne, plus efficace. Ainsi, à code applicatif égal, le processeur MPPA offre, d’après ces mesures, un bon compromis entre performance et consommation énergétique.

7.5 Conclusion

Les processeurs graphiques, de par leur architecture qui multiplie les unités de calcul, sont devenus des accélérateurs de choix pour les calculs scientifiques. Les interfaces traditionnelles de programmation graphique telles OpenGL et DirectX, trop spécifiques, ont pavé la voie à des frameworks dédiés aux calculs généralistes sur processeurs graphiques : CUDA et OpenCL en sont les principaux représentants, et les évolutions vont vers toujours plus de programmabilité, en fusionnant par exemple le code hôte et le code accéléré.

OpenCL est un modèle de programmation particulièrement portable : il peut s’adapter autant aux GPUs qu’aux processeurs multicœurs et manycore. En particulier, le processeur MPPA de Kalray implémente un sous-ensemble de l’interface OpenCL. Cela permet ainsi à ce processeur manycore d’exécuter des applications OpenCL sans ou avec peu de modifications. Dans ce chapitre, nous étudions la portabilité d’applications FREIA sur le MPPA via OpenCL et comparons les performances de cet accélérateur à plusieurs autres.

Nous avons étendu le framework FREIA pour rendre sa cible OpenCL compatible avec le MPPA, de sorte à améliorer davantage la portabilité des applications FREIA. En effet, le MPPA ne supporte qu’un sous-ensemble de la spécification : des modifications, bien que mineures, sont nécessaires. Suite à ces travaux, nous avons été en mesure de comparer les performances du MPPA à celles de plusieurs accélérateurs OpenCL. Les résultats montrent que, sur notre jeu d’applications FREIA, le MPPA est en-deçà de ses concurrents pour les temps d’exécution, mais se montre à la hauteur en matière de consommation énergétique. Les travaux actuels sur la pile logicielle OpenCL par Kalray laissent toutefois espérer une amélioration dans ce domaine.

7.5. Conclusion

anr999 antibi o

burn er

deblockinglicenseP late retin a toggl e GMEAN 10−3 10−2 10−1 100 101 ← Temps d’exécuti ons

Bostan OpenCL Intel Core i7-3820 Nv Quadro 600 Nv Tesla C 2050

(a) Temps d’exécution relatifs

anr999 antibi o

burn er

deblockinglicenseP late retin a toggl e GMEAN 10−2 10−1 100 101 102 ← C onso mmati on d’én ergi e

Bostan OpenCL Intel Core i7-3820 Nv Quadro 600 Nv Tesla C 2050

(b) Consommation d’énergie relative

Figure 7.4 – Performance relative (échelle logarithmique) des plateformes OpenCL : (1) MPPA Bostan (référence) ; (2) CPU Intel Core i7-3820 ; (3) GPU Nvidia Quadro 600 ; (4) GPU Nvidia Tesla C 2050

Chapitre8

Synthèse

I know when to go out And when to stay in Get things done I catch a paper boy

But things don’t really change I’m standing in the wind But I never wave bye-bye But I try

I try

— David Bowie, L’amour moderne (extr.)

L

es contributions décrites dans les chapitres précédents se focalisent chacune sur un modèle de programmation spécifique pour nos applications de traitement d’images. Ainsi, le chapitre 5 est dédié au modèle OpenMP sur un cluster de calcul du processeur MPPA, le chapitre 6, au modèle flot de données à travers le langage Sigma-C, et, enfin, le chapitre 7, au modèle OpenCL pour les accélérateurs matériels.

Les résultats des expérimentations réalisées au cours de ces travaux permettent de comparer les différents modèles de programmation supportés par les deux générations de processeur MPPA, ainsi que de comparer le MPPA à d’autres accélérateurs matériels. Nous effectuons une telle comparaison dans la section 8.1. L’agrégation des chaînes de compilation, détaillées dans ces chapitres, et du compilateur smiltofreia, décrit dans le chapitre 4, forme un environnement logiciel complet dédié au traitement d’images, qui cible différentes classes d’architectures matérielles et notamment le processeur MPPA, selon dif- férents modèles de programmation. Cet environnement logiciel est décrit dans la section 8.2.

8.1 Une puce, différents modèles de programmation

Le processeur MPPA propose plusieurs niveaux de parallélisme : seize cœurs de calcul autour d’une mémoire partagée, seize clusters communiquant au travers d’un réseau sur puce et une puce se comportant comme un coprocesseur servant à accélérer certains cal-

8. Synthèse

culs d’un processeur hôte. Pour tirer parti d’une telle architecture, différents modèles de programmation peuvent être utilisés :

— OpenMP et POSIX Threads visent en particulier les architectures à mémoire partagée et sont supportés sur les clusters de calcul ;

— les transferts de données et synchronisations entre clusters utilisent une bibliothèque de communication à travers le réseau sur puce qui rappelle l’interface MPI ;

— le modèle flot de données abstrait le matériel aux dépens d’une réécriture totale des applications dans un nouveau paradigme ;

— OpenCL est une interface standard dédiée aux architectures hétérogènes, afin de dé- charger les calculs depuis un processeur hôte vers un accélérateur matériel disposant d’une mémoire séparée ;

— un dernier modèle, de plus bas niveau, permet de gérer finement les ressources d’un cluster de calcul, afin de construire des systèmes d’exploitations, que nous n’avons pas jusqu’à présent utilisé.

Nous avons, au cours de cette thèse, testé ces différents modèles de programmation — à l’exception toutefois du dernier, pas vraiment destiné au développement d’applications. Nous n’avons pas, à notre grand regret, été en mesure de finaliser l’examen du modèle par passage de message entre les différents clusters : une étude préliminaire est néanmoins présentée dans le chapitre 9.