Microprocesseurs : vers la fin de l’évolution exponentielle ?

Microprocesseurs : vers la fin de l’évolution exponentielle ?

Le développement de l’informatique a mené à une révolution sociétale. Des mainframes aux smartphones et tablettes actuelles, en passant par les ordinateurs de bureau puis les ordinateurs portables, les progrès constants dans les performances des unités de calcul et les communications en réseau ont pavé la voie vers une explosion des usages numériques dans notre société. La loi de Moore [90], qui prédit le doublement du nombre de transistors tous les deux ans, est entrée dans la culture populaire et les évolutions récentes dans l’Internet des objets, les véhicules autonomes et autres wearables ne font que renforcer la croyance populaire en cette prédiction. Pourtant, augmenter la fréquence des calculs dans les processeurs, comme ce fut le cas jusqu’au milieu des années 2000, provoque des pertes d’énergie sous forme de chaleur qu’il faut évacuer, sous peine de faire fondre le matériel. En outre, il est impossible d’augmenter indéfiniment la finesse de gravure des transistors : dès que leur taille devient inférieure à quelques atomes, des phénomènes quantiques interfèrent avec leur fonctionnement normal. Pour contourner ces phénomènes physiques, les fabricants de processeurs se doivent d’innover. C’est ainsi que les processeurs multicœurs ont été introduits au début du millénaire, comme solution à la course à la puissance de calcul. Ces derniers sont aujourd’hui présents dans tous les ordinateurs grand public actuels. L’émergence des processeurs graphiques a également permis de décharger le processeur principal des calculs simples et répétitifs. L’augmentation de la bande passante réseau a également rendu possible l’élaboration de superordinateurs, formés de plusieurs milliers voire millions de processeurs [117]. Toutes ces solutions ont  l’inconvénient d’augmenter la complexité des architectures matérielles et, par conséquent, l’expérience nécessaire pour en tirer parti. Pour écrire des applications performantes, il est désormais nécessaire de connaître les caractéristiques des architectures sur lesquelles elles seront exécutées. Malheureusement, les innovations en matière d’architectures matérielles exotiques [111] n’arrangent en rien cette évolution. De plus, le développement de nouveaux processeurs semble ralentir à mesure que la finesse de gravure tend à s’approcher du mur quantique : le fabricant Intel a fait évoluer sa stratégie « Tick-Tock » qu’il suivait depuis 2007 pour développer ses processeurs en introduisant une étape supplémentaire, pour laisser le temps à ses équipes de contourner les problèmes induits par la finesse de gravure. La fin de la loi de Moore semble proche. En parallèle, d’autres métriques, comme la consommation énergétique, concurrencent la performance brute des unités de calcul, entre autres pour les usages mobiles, où l’autonomieest un facteur  critique, ou bien dans les datacenters et les superordinateurs, où la facture d’électricité devient un coût substantiel. L’apparition de nouvelles architectures plus complexes et le ralentissement de la loi de Moore rendent plus ardu le travail des développeurs d’applications, qui ne peuvent plus se reposer sur l’augmentation continue des performances mais doivent optimiser leurs applications sur différentes configurations architecturales. Les processeurs manycore, évolution logique des processeurs multicœurs modernes, rassemblent ainsi des dizaines voire des centaines d’unités de calculs sur une même puce.

À titre d’exemple, le processeur MPPA Manycore [7, 43], conçu par la société française Kalray, compte ainsi 256 cœurs de calculs, regroupés en seize nœuds de seize cœurs, qui communiquent à travers un réseau sur puce. Ce type d’architecture nouvelle présente différents niveaux de parallélisme — nœuds de calcul à mémoire partagée, mémoire distribuée à l’échelle de la puce, utilisation comme accélérateur matériel aux côtés d’une machine hôte — et des contraintes fortes — mémoire répartie de taille très faible, entrées/sorties complexes — qui rendent son utilisation difficile. La complexité de l’architecture de ce processeur manycore est néanmoins le prix à payer pour sa faible consommation énergétique. Fort heureusement, des modèles de programmation permettent de tirer parti d’une telle architecture, en facilitant la programmation et en rendant le code applicatif plus portable. Ces modèles laissent un contrôle plus ou moins avancé et explicite au développeur, qui devra alors choisir entre réaliser des optimisations spécifiques aux cibles matérielles, qui génèrent de meilleures performances, ou bien se cantonner à une implémentation générique portable mais moins performante.

Des applications et des usages toujours plus gourmands en performance 

L’évolution des architectures matérielles, l’augmentation des performances dans les calculs et les accès mémoire et la réduction de la consommation énergétique ont permis le développement de nouveaux usages. La révolution des smartphones depuis l’introduction en 2007 du premier iPhone a apporté au public et concentré téléphone, accès Internet, écran tactile, localisation GPS et appareil photo dans un même objet capable de tenir dans la poche. Des applications innovantes sont apparues, profitant du modèle économique de ces nouveaux appareils, fondés sur des marchés d’applications payantes. Ces applications ont parfois transformé certains usages sociaux, à l’exemple de Twitter et Periscope, qui ont bouleversé le partage d’informations et d’actualités, ou Tinder, qui a révolutionné le monde des rencontres en ligne. À la suite du succès de l’iPhone, Apple a introduit l’iPad en 2011, tablette tactile à michemin du smartphone et de l’ordinateur portable. Dédiées principalement au divertissement et à la consommation de contenus, les tablettes tactiles ont également connu un large succès, quoique moindre, principalement dû au grand nombre d’applications compatibles. Depuis, les smartwatches et les bracelets fitness ont annoncé l’émergence de l’Internet des objets. Les objets du quotidien, connectés, se piloteront désormais depuis le téléphone ou la tablette. Les performances des téléphones et des tablettes tactiles ont évolué en parallèle du matériel qui les compose. Les puces graphiques des téléphones actuels ont ainsi des capacités similaires à celles des consoles de salon d’il y a dix ans. Les jeux vidéos, comme Angry Birds, Candy Crush ou plus récemment Clash of Clans, se sont développés sur ces nouveaux supports. Caractérisés par leur contenu monétisé et la forte attractivité de leurs parties rapides, ces jeux ont rapporté un grand profit à leurs créateurs. Toutefois, l’usage vidéo-ludique tend à réduire l’autonomie des appareils, facteur critique de la mobilité. En réponse, les récents développements dans les processeurs centraux et graphiques évoluent vers une réduction de la consommation énergétique, et donc vers une meilleure efficacité. Aujourd’hui, les puces graphiques des téléphones portables sont suffisamment puissantes pour proposer la réalité virtuelle (au travers par exemple du Samsung Gear VR) ou la réalité augmentée à tous. L’application phare au moment de l’écriture de ces lignes est en effet Pokémon Go, un jeu pour smartphone liant géolocalisation et réalité augmentée. Là encore, ces fonctionnalités nécessitent beaucoup d’énergie et nuisent à l’autonomie. En parallèle de ces applications grand public, les systèmes embarqués présents dans la plupart des véhicules actuels, des voitures aux sondes spatiales en passant par les avions, régissent un grand nombre de fonctions, de la fusion de capteurs aux systèmes multimédia. Dans ces systèmes, la consommation énergétique joue en général un rôle critique.

À l’autre bout du spectre, certaines disciplines scientifiques nécessitent une grande puissance de calcul afin de résoudre les équations de la chromodynamique quantique ou de la météorologie, par exemple, afin de déterminer l’impact du changement climatique. Les GAFAM (Google, Apple, Facebook, Amazon et Microsoft, grands acteurs du monde numérique actuel), les NATU (les nouveaux challengers que sont Netflix, Airbnb, Telsa et Uber) et les BATX (Baidu, Alibaba, Tencent et Xiaomi, les concurrents chinois) ont, pour gérer l’ensemble des données à leur disposition, fait construire des centres de données partout dans le monde : c’est l’informatique en nuage. Les serveurs contenus dans ces datacenters fonctionnent en continu et dégagent de la chaleur, qui doit être évacuée en permanence. Une diminution de quelques pour cent de la consommation énergétique de ces serveurs peut économiser beaucoup d’argent.

Domaine actuellement en plein essor, l’apprentissage artificiel requiert également une grande puissance de calcul, afin d’entraîner des réseaux de neurones de plus en plus profonds. Les processeurs graphiques haut de gamme ciblent désormais ce domaine d’applications dans lequel ils excellent [38]. Les crypto-monnaies virtuelles, comme le Bitcoin [17], nécessitent, elles aussi, du matériel spécifique et de fortes quantité d’énergie pour valider les transactions et créer de la monnaie ex nihilo à travers le « minage ».

Le traitement d’images, un domaine applicatif en plein essor

L’émergence des smartphones a mis une caméra dans toutes les poches. De nombreuses applications s’appuient sur cette fonctionnalité ubiquitaire pour proposer, par exemple, des filtres Instagram ou de la reconnaissance faciale pour « tagger » ses amis sur Facebook. Les avancées modernes dans le champ de la vision par ordinateur reposent principalement sur les techniques modernes d’apprentissage artificiel et, notamment, sur les réseaux de neurones profonds, champ d’étude exacerbant la concurrence entre les grandes entités du monde numérique — Google, Microsoft et Amazon ayant récemment ouvert au public leurs logiciels de deep learning. Ces techniques de traitement d’images permettent notamment de reconnaître des objets automatiquement, voire de proposer une description à partir d’une image. Ces travaux sont clés dans le développement des véhicules autonomes, afin notamment de pouvoir déchiffrer la signalisation routière et repérer correctement les usagers à proximité.

Le rapport de stage ou le pfe est un document d’analyse, de synthèse et d’évaluation de votre apprentissage, c’est pour cela rapport-gratuit.com propose le téléchargement des modèles complet de projet de fin d’étude, rapport de stage, mémoire, pfe, thèse, pour connaître la méthodologie à avoir et savoir comment construire les parties d’un projet de fin d’étude.

Table des matières

Résumé
Abstract
À propos de l’auteur
Remerciements !
Table des matières
Table des figures
Liste des tableaux
Liste des extraits de code
Liste des algorithmes
1 Introduction
1.1 Microprocesseurs : vers la fin de l’évolution exponentielle ?
1.2 Des applications et des usages toujours plus gourmands en performance
1.3 Le traitement d’images, un domaine applicatif en plein essor
1.4 La compilation, entre applications, bibliothèques et matériel
1.5 Sujet
1.6 Contributions
1.7 Structure de la thèse
2 Évolutions matérielles et modèles de programmation
2.1 Des architectures innovantes
2.1.1 Les processeurs multicœurs et l’évolution vers la mobilité
2.1.2 Les processeurs graphiques : toujours plus de complexité
2.1.3 L’avènement des processeurs manycore
2.2 Modèles de programmation et architectures matérielles
2.2.1 Processeurs multicœurs et programmation parallèle explicite
2.2.2 Passage de messages et mémoire unifiée dans les architectures distribuées
2.2.3 Le flot de données : le parallélisme de tâches explicite
2.2.4 La délocalisation des calculs dans les architectures hétérogènes
2.2.5 Les interfaces de haut niveau : le confort au détriment de la flexibilité ?
2.3 Conclusion
3 Traitement d’images et bibliothèques logicielles
3.1 Le traitement d’images aujourd’hui
3.2 La morphologie mathématique, une branche du traitement d’images
3.3 Des bibliothèques pour le traitement d’images
3.3.1 FREIA, un framework pour l’analyse d’images
3.3.2 SMIL, une bibliothèque moderne d’analyse d’images
3.3.3 Des ponts entre SMIL et FREIA
3.4 Conclusion
4 Compilation d’un langage dynamique vers un langage statique
4.1 Concilier programmabilité et portabilité : le cas du traitement d’images
4.2 Application à SMIL et FREIA
4.2.1 SMIL, une bibliothèque avec une interface Python
4.2.2 FREIA, un framework pour les accélérateurs matériels
4.2.3 Comment combler le fossé ?
4.3 Manipulation et accélération de code Python
4.3.1 RedBaron, un outil pour le refactoring de code Python
4.3.2 Cython, un compilateur de Python vers C
4.4 De SMIL à FREIA
4.4.1 Génération de code C avec Cython
4.4.2 D’une API à l’autre
4.5 Évaluation de l’approche
4.6 Conclusion
5 Parallélisme multiprocesseur à mémoire partagée
5.1 Programmation parallèle sur architecture à mémoire partagée
5.1.1 Les threads, briques de base du parallélisme de bas niveau
5.1.2 Le parallélisme dans les unités de calcul
5.2 SMIL, des traitements d’images nativement parallèles
5.2.1 Le parallélisme dans le traitement d’images
5.2.2 SMIL, un parallélisme natif
5.3 Des applications SMIL parallèles sur un cluster de calcul du MPPA
5.3.1 MPPA et OpenMP
5.3.2 Compilation croisée de SMIL vers un cluster de calcul
5.3.3 Gestion des transferts d’images
5.3.4 Tests de performance
5.4 Conclusion
6 Le modèle flot de données
6.1 Le modèle
6.2 Deux exemples de langages flot de données
6.2.1 StreamIt
6.2.2 Sigma-C
6.3 Une nouvelle cible pour FREIA
6.3.1 Opérateurs de traitement d’images en Sigma-C
6.3.2 Génération source-à-source de subgraphs applicatifs
6.3.3 Contrôle d’exécution
6.3.4 Limitations
6.4 Conclusion
7 Conclusion

Rapport PFE, mémoire et thèse PDFTélécharger le rapport complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *