Maître de Conférences en Informatique à l'Université d'Angers
Ce site est en cours de reconstruction certains liens peuvent ne pas fonctionner ou certaines images peuvent ne pas s'afficher.
Au final, on peut dire que la programmation many-core sur GPU avec CUDA possède quelques avantages :
On peut voir que la programmation CUDA est formée de deux modèles (on pourrait également parler de couches) :
L'intérêt de ce modèle est que l'on peut modifier la couche physique sans toucher à la couche logique.
En fait, celà est vrai pour NVidia qui conçoit les GPUs et a tout loisir de faire évoluer l'architecture (couche physique), mais pas pour le programmeur qui cherche à atteindre le maximum de performance puisqu'alors modèle logique et physique sont intimement liés.
Le modèle logique à pour but d'aider à scinder le calcul initial en plusieurs tâches (kernels) qui seront par la suite exécutées en parallèle.
L'organisation se fait sous forme d'une grille (de une à trois dimensions) composée de blocs de threads (de une à 3 dimensions).
On est contraint par les caractéristiques et capacités de calcul (compute capability) de la carte graphique afin d'exprimer la taille de la grille ou du bloc.
Il permet d'exécuter les threads (ou kernels) en utilisant au mieux les capacités de l'architecture.
les ressources sont limitées, il faut les utiliser au mieux pour atteindre le maximum de performances
On est contraint notamment par :
Plus de puissance, plus de parallèlisme, plus d'intégration.
Depuis l'apparition des processeurs Pentium D (dual-core) en 2005, nous assistons à une augmentation du nombre de coeurs :
Depuis quelques années, on assiste également à l'intégration des GPU sur la même puce que le CPU (APU = Accelerated Processing Unit) :
Dernièrement en 2012, Intel a introduit le Xeon Phi (Knights Corner) composé de 64 x86 cores (256 threads) dotés d'unités vectorielles de 512-bits qui peuvent traiter 8 doubles en SIMD, l'objectif pour Intel étant de proposer avec le Xeon Phi une puissance de calcul de l'ordre du Téraflops en double précision.
Chez Intel le Xeon Phi se place dans la lignée MIC (Many Integrated Core) qui consiste a utiliser un haut degré de parallèlisme pour effectuer des calculs.On pourra également lire cet article : The Xeon Phi at work at TACC
Du côté d'ARM (Advanced Risc Machine), on intégre plusieurs unités différentes :
L'intégration de ces différents éléments permet de créer des SoC (System on Chip) qui rassemblent processeur, mémoire, graphique, circuit de calcul dédié, comme le Tegra de NVidia. Ces Soc sont destinés à être utilisés dans les systèmes embarqués : smartphone, tablette, ...
La question majeure que l'on peut se poser face à ces systèmes est la suivant : va t-on continuer à disposer de systèmes hétérogènes ou va t-on converger vers un système unique ?
Autre question, notre ordinateur ne va t-il pas devenir une sorte de super calculateur d'ici quelques années ?