L’héritage des GPUs
Dans ce chapitre nous présentons les causes de la naissance d’une architecture en rupture : le GPU. Nous détaillons ses moyens de mise en œuvre, son fonctionnement architectural mais aussi son implication dans le domaine du traitement d’images. Cette mise en contexte a pour but de mieux appréhender les chapitres suivants. Une «étrange maladie» a touché nos processeurs au début du 21ème siècle. Alors que leurs performances étaient jusque là sans cesse améliorées, un effet de plafonnement est venu opérer. La structure même des Central Processing Unit (CPU)s ne permettait alors plus d’augmenter leurs fréquences de fonctionnement. La solution pour contourner ce problème a été de multiplier les cœurs de calculs au sein des processeurs. La scalabilité de ces derniers était alors rendue possible par l’exploitation du parallélisme. Cependant, alors que nous étions aveuglés par des performances calculatoires toujours plus élevées, les per- formances des transferts de données n’ont pas connu la même évolution. Hennessy et Patterson dans leur ouvrage de référence [75] font référence à ce constat. Afin de palier à cette contrainte, de nouveaux ensembles d’instructions tels que MultiMedia eXtension (MMX), Streaming SIMD Extensions (SSE) puis Advanced Vector Extensions (AVX) ont été ajoutés aux jeux d’instructions des CPUs. Ces instructions, à l’origine prévues pour les applications multimédia, permettent d’exploiter des unités de calculs vectoriels dont le but est de regrouper une ou plusieurs opérations sur un même bloc de données consécutives. Au sein de la taxynomie de Flynn [60], cette approche architecturale est de type Single Instruction on Multiple Data (SIMD).
Dans le domaine du rendu graphique, l’application récurrente de certains patterns, ainsi qu’une augmentation sans fin des volumes de données à traiter, ont engendré la création de processeurs dédiés à l’accélération graphique. C’était le début des GPUs. Leur ambition était d’accélérer les temps de rendu pour atteindre le temps réel, mais aussi d’améliorer la qualité de rendu des scènes tri–dimensionelles pour le domaine des jeux vidéo. Ce marché très porteur a permis aux industriels de faire progresser le concept des GPUs basé sur une approche vectorielle pour arriver à une architecture massivement parallèle de type Single Instruction Multiple Thread (SIMT). Ces capacités calculatoires se comptent en teraflops pour plusieurs centaines, voire milliers, de cœurs de calcul tandis que la bande passante mémoire se compte en centaines de giga-octets par seconde. La figure 1.1 nous montre l’évolutions de ces performances. La position dominante du GPU comparée aux autres architectures explique non seulement la popularité de cette architecture mais aussi son origine. Le détournement des GPUs pour effectuer des calculs plus généralistes a été facilité par la libération en 2007 du pipeline de rendu graphique. Celui-ci auparavant considéré comme une boîte noire, devenait alors programmable par les développeurs pour permettre d’utiliser la puissance de calcul des GPUs pour toutes sortes de calculs volumineux.
Les différents acteurs
En 2018, trois principaux acteurs sont présents dans le domaine des GPUs. Intel, Nvi-dia et Advanced Micro Devices (AMD) se partagent l’héritage d’un passé où les GPUs n’étaient utilisés que dans l’unique but d’accélérer les calculs de rendu de scènes en trois dimensions. Avec l’avènement des GPUs intégrés dans les architectures embarquées telles un GPU servant à la fois pour les rendus graphiques mais aussi pour effectuer du calcul vectoriel en partageant un même espace mémoire. Ce choix stratégique explique le leadership d’Intel en terme de GPUs vendus. Cependant, ces unités, appelées Integrated Graphics Processor (IGP), sont optimisées pour une faible consommation énergétique au prix d’une puissance de calcul modérée. Afin de palier ce problème, la série de GPUs Iris Graphics est venue renforcer l’offre d’Intel. Il s’agit de la même base architecturale que la série Intel HD mais paramé- trée pour apporter une puissance de calcul supérieure. La série Iris Pro Graphics embarque en supplément une mémoire interne dont la taille est de l’ordre de 100MB. Enfin, en 2017, avec l’architecture Coffee Lake, la dénomination des IGP Intel HD a été modifiée par Ultra HD. Avec au plus un peu moins de 600 cœurs de calcul et une mémoire interne de 100MB, l’ensemble de ces solutions ne permet pas d’atteindre à génération égale le niveau de per- formance des GPUs dédiés de Nvidia ou d’AMD. Ce constat s’explique par le choix d’Intel d’utiliser une approche architecturale fondamentalement différente. Ce choix puise ses origines dans l’architecture Larrabee qui s’avèrera être un échec à cause de sa complexité de mise en œuvre. Elle permettra cependant de poser les bases de l’architecture Xeon Phi dédiée au calcul vectoriel haute performance. Cette architecture en concurrence avec les GPGPUs est en réalité une architecture manycores de type x86 basée sur une topologie en anneau et utilisant massivement des instructions de type SIMD comme l’AVX 512. Celle-ci est donc, en toute logique, fortement impactée par la problématique de coalescence dans ses accès aux données mémoire.