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รฉ. Des applications moins futuristes, comme la reconnaissance optique de caractรจres ou le post-traitement dโimagerie mรฉdicale, sont dรฉjร utilisรฉes ร lโheure actuelle. par exemple ร partir dโune image issue dโun radar automatique. Couplรฉe ร un systรจme de reconnaissance de caractรจres et ร la base de donnรฉes adรฉquate, cette application permet dโenvoyer directement et automatiquement les amendes pour excรจs de vitesse ร lโadresse du propriรฉtaire du vรฉhicule contrevenant et, par consรฉquent, contribue ร la sรฉcuritรฉ routiรจre.
La compilation, entre applications, bibliothรจques et matรฉriel
La compilation consiste ร convertir un langage de programmation en un autre. Les compilateurs standards, par exemple GCC [109] ou LLVM [84], transforment des applications ou des bibliothรจques รฉcrites ร la main dans des langages de programmation de haut niveau, comme C ou C++, vers des langages de programmation de plus bas niveau, comme lโassembleur ou le langage machine. Les compilateurs sont capables dโoptimiser le code machine gรฉnรฉrรฉ pour diffรฉrentes cibles matรฉrielles, en sโappuyant sur des reprรฉsentations internes performantes. Cependant, lโespace dโoptimisation se montre habituellement trop vaste pour รชtre complรจtement parcouru, et le contrรดle laissรฉ aux dรฉveloppeurs par les langages de la famille du C empรชche parfois certaines optimisations. Les langages spรฉcifiques ร un domaine, en anglais DSLs (ยซ Domain-Specific Languages ยป), sont des langages de haut niveau censรฉment faciles ร utiliser pour dรฉvelopper rapidement des applications dans un domaine donnรฉ, en limitant les connaissances nรฉcessaires sur les architectures cibles. Les concepteurs de DSLs font le lien avec les cibles matรฉrielles grรขce au compilateur, qui va pouvoir implรฉmenter des optimisations spรฉcifiques au domaine et des optimisations spรฉcifiques aux matรฉriels. Certains DSLs reprennent la syntaxe dโun langage de programmation plus gรฉnรฉraliste. On les qualifie alors de DSLs embarquรฉs ou embedded DSLs (e-DSLs). Les interfaces de programmation de FREIA et de SMIL sโapparentent ainsi ร des DSLs embarquรฉs, le langage hรดte รฉtant C dans le cas de FREIA, et C++ ou Python pour SMIL.
|
Table des matiรจres
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
7 Conclusion