Le parallélisme Du superordinateur au processeur graphique

publicité
Le parallélisme
Du superordinateur au processeur graphique
Concept de base :
La simultanéité d’exécution :
Le parallélisme en informatique réfère au concept de diviser un problème à résoudre en
plusieurs morceaux plus petits qu’on peut faire en même temps. Le parallélisme existe à
presque tous les niveaux en informatique : de « bit-level » jusqu’au parallélisme de tâche
dans une fonction. De plus, nous pouvons distinguer les différents types de parallélisme qui
est supporté baser sur le nombre de machines sur lequel on effectue des calculs en
simultanée. D’une machine de bureau bien ordinaire, nous pouvons ensuite passer aux
superordinateurs qui prennent souvent l’espace d’un étage au complet pour ensuite nous
retrouver avec des grilles informatiques ou même un programme massivement parallèle, qui
compte sur des milliers d’ordinateurs à travers la planète pour effectuer des calculs
extrêmement complexes.
Efficience et Limites :
Dans un monde idéal, l’accélération du programme due à la parallélisation devrait être de
façon linéaire c.-à-d. 2 fois plus de processeurs pour une tâche coupent le temps d’exécution
de moitié. Mais malheureusement, peu de programmes peuvent espérer d’être proches
d’atteindre ce niveau de performance. La loi suivante explique en partie ce qui empêche un
programme d’être résolu en 0 seconde s’il avait accès à un nombre infini de processeurs.
Loi d’Amdahl :
La loi d’Amdahl, nommé après l’architecte informatique Gene Amdahl, est un modèle
mathématique servant à décrire l’augmentation de vitesse qui est attendue lorsqu’on essaye
de paralléliser un programme. Cette loi fonctionne sous la supposition que la taille du
problème à résoudre reste pareille même après la parallélisation du programme cible. La loi
stipule que l’accélération d’un programme informatique est limitée par le temps nécessaire à
l’exécution de la partie séquentielle (donc non parallélisable) du programme. Par exemple, si
un programme nécessite 20 heures pour être exécuté avec un processeur à simple cœur et
que la partie séquentielle du programme prend 1 heure à exécuter, et que les 19 heures
restantes sont divisibles pour être ensuite traité en parallèle, alors le temps d’exécution du
programme est de minimum 1 heure et ce, peu importe le nombre de processeurs que l’on
ajoute pour le programme. L’accélération est donc de 20 fois, comme l’indique l’image cidessous :
Cette loi n’est pas une référence absolue pour prévoir l’efficacité de la parallélisation d’un
programme, car elle ne tient pas en compte les autres systèmes complémentaires qui
peuvent contribuer à accélérer les calculs des processeurs existants tels que la RAM ou les
disques durs.
Parallélisme :
De processeur à multiples modules à des processeurs multiples cœurs :
Dans le marché des microprocesseurs, l’amélioration de la performance est arrivée à une
limite vers les années 2000. Les 2 plus grandes corporations de ce domaine, Intel et AMD,
ont alors passé à la prochaine étape logique, qui consiste à introduire des microprocesseurs
à cœur multiples sur le marché des PCs. La route favorisée par les 2 entreprises pour en
arriver là s’est séparée à ce stade.
Pour Intel, avec ses énormes capacités de manufactures, les changements drastiques comme
ceux-ci doivent être échelonnés dans le temps et bien planifier. Ils ont donc commencé par
adapter un produit qui était déjà en production. Le microprocesseur Pentium D est le
premier résultat de cette approche. Il s’agit d’un processeur composé de puces séparées,
joint par la suite pour en faire un processeur à double cœur. En même temps, Intel annule la
microarchitecture qui allait remplacer celle du Pentium 4 puisqu’elle suivait encore l’ancienne
philosophie d’augmentation des performances avec la montée de la fréquence du CPU.
Avec l’introduction de la série Intel Core, le géant américain a mis le premier pas vers le futur
que nous connaissons aujourd’hui.
En ce qui concerne AMD, ils ont pris un chemin différent pour avoir un processeur à 4 cœurs.
Au lieu de livrer un processeur composé de modules séparés, ils ont préféré attendre et
retarder le lancement du nouveau produit. La stratégie n’a pas était très profitable pour
l’entreprise, car le produit final n’a pas était aussi rapide que ceux d’Intel.
Motivations technologiques :
La limite de l’augmentation de la fréquence des CPUs :
Avec la montée graduelle de la quantité d’information à traiter, les processeurs avaient
besoin d’être de plus en plus rapides avec le temps. Mais la physique des matériaux nous
empêche de continuellement faire croitre la fréquence d’exécution d’un processeur, car en
augmentant la fréquence, la consommation électrique augmente aussi, souvent au détriment
de la génération de chaleur qu’il faut alors évacuer. Intel avait avec eux un exemple gênant
de ce phénomène avec le processeur Pentium 4 des années 2000. Les fréquences de cette
série de processeurs, certes élevés, ne servaient pas vraiment à l’accélération des calculs due
à l’architecture de ce processeur. De plus, la technologie de Hyper-Threading avait été
nouvellement introduite comme étant une caractéristique qui révolutionnera le marché des
processeurs en utilisant les cycles inutilisés du processeur. Elle n’a pas eu l’effet escompté et
est même reprochée pour ralentir les logiciels de l’époque puisqu’elles n’étaient pas
optimisées pour profiter de cette nouvelle technologie.
Applications diverses :
Processeur multicoeur/ Technologie Hyper-Threading :
« die shot » d’un CPU moderne (Intel Haswell)
Dans la plupart des ordinateurs personnels récents, le processeur central est composé de
plusieurs cœurs, de 2 à 6, permettant au système d’exploitation d’effectuer les multiples
tâches qui lui seront demandées en simultané. De plus, avec le système de Hyper-Threading
d’Intel, le système d’exploitation reconnait le processeur comme s’il contenait 2 fois le
nombre de cœurs, puisqu’il est capable de communiquer avec 2 cœurs logiques à la fois.
Cette technologique permet de passer 2 fils d’exécution (thread) dans un cœur puisqu’il
duplique le registre de données et de contrôle du cœur simple. Avec l’ajout d’un contrôleur
d’interruption, il permet l’exécution de 2 threads en simultané, donnant une impression de
rapidité à l’usager.
Processeur graphique (GPU) :
Schéma de l’architecture d’un processeur graphique moderne (Nvidia GK110)
Dans la génération des images en temps réel sur un PC, les calculs à effectués ne sont
généralement pas très complexe, mais requière qu’ils soient calculés rapidement et en très
grandes quantités. Pour afficher les pixels à l’écran, il faut que des shaders soient utilisés pour
effectuer les calculs nécessaires. Au début, un processeur graphique possédait 3 types
différents de shader : les vertex shaders font les calculs au niveau des transformations et des
éclairages, les geometry shaders font les calculs au niveau des polygones et de leurs
transformations et les pixels shaders font les calculs de la couleur du pixel individuel. Au fil du
temps, les avancées technologiques ont permis que les fabricants de GPUs, comme Ati et
Nvidia, de créer des shaders unifier qui sont capable de faire le travail des 3 différentes sortes
de shaders, selon les besoins d’un programme. Avec la loi de Moore, le nombre de
transistors qui est possibles de placer sur une puce a explosé et avec cela, la demande du
niveau de fidélité en animation par ordinateur aussi. De plus, avec l’augmentation
progressive de la résolution d’un écran (et donc du nombre de pixels à calculer), les GPUs se
font de plus en plus puissants et la quantité de shaders unifié ne cesse que d’augmenter.
Folding@Home :
Une simulation d’une protéine en repliement
Les projets de calcul réparti, tel que Folding@Home, permettent à des gens ordinaires de
contribuer leur puissance de calcul non utilisé pour des causes scientifiques. Lorsque nous
utilisons notre PC à la maison, il est rare que nous ayons besoin de toute la puissance du
poste. Il est donc possible d’utiliser cette « ressource » pour des projets qui en ont besoin,
comme Folding@Home, qui utilise les ordinateurs pour simuler les différentes façons qu’une
protéine puisse se replier. En sachant comment une protéine se replie, les chercheurs sont
alors capables de guérir certaines maladies comme la maladie d’Alzheimer.
Fonctionnement de Folding@Home
Pour se joindre au programme, il nécessaire premièrement de choisir quel client de calcul
nous voulons utiliser. Nous pouvons utiliser le client qui est dédié pour GPU, créé pour utiliser
à pleine capacité l’architecture massivement parallèle d’un GPU. Sinon, il existe aussi le client
de base, conçu pour être raisonnablement efficace sur un processeur moderne. Lorsque le
choix est fait et que le client choisi est téléchargé et installé, le client se connecte alors aux
serveurs basés à l’Université de Stanford pour télécharger une unité de travail (work unit) qui
sera calcul pour les prochaines heures. Après la fin du calcul, le « work unit » sera téléchargé
vers les serveurs pour être examiné par les chercheurs du projet. Le client répètera alors les
étapes précédentes.
En fonctionnant sur ce principe, les chercheurs ont été capables de simuler des centaines de
milliers de repliements de protéines pour faire avancer la recherche sur certaines maladies.
Prédiction de la météo :
Simulation des vents dans l’océan atlantique
Avec l’avance de la puissance de calcul des superordinateurs, il est possible de nos jours de
faire des prédictions météorologiques assez fiables pour plusieurs journées dans le futur. Ces
prédictions se font grâce à des superordinateurs qui exécutent des modèles de simulation de
climats sur une période de temps définie. Ce genre de prédiction est très demandant en
puissance de calcul pour avoir des résultats utiles, car le nombre de variables (ici le nombre
de molécules d’air dans la région à calculer) qui peuvent changer est astronomique. De plus,
à cause du grand nombre de molécules à simuler, il y a une encore plus grande quantité de
probabilité à chaque mouvement d’une molécule. Compte tenu de la limite de calcul des
superordinateurs actuels, nous ne sommes pas capables de prédire la météo avec une
grande précision plus de 2 à 3 jours. Des chercheurs pensent que grâce à l’augmentation de
rapide de la puissance dans les superordinateurs, nous serions capables de simuler avec
précision la météo pour une période d’une semaine à la fois.
Simulations diverses :
Simulation d’une explosion nucléaire
Depuis plusieurs dizaines d’années, les superordinateurs ont servi à simuler des scénarios qui
sont soit impossible à réaliser en laboratoire, parce qu’ils sont entièrement imaginés (par
exemple des scénarios de physique théorique), soit qu’il est rendu impraticable d’essayer de
reproduire dans notre monde (par exemple les tests d’ogives nucléaires). En créant des
modèles informatiques qui sont capables de simulé ces scénarios, nous pouvons compter sur
ces superordinateurs de donner aux ingénieurs et aux chercheurs une bonne idée sur
comment leurs projets se comporte sans avoir à tester une ogive nucléaire par exemple. De
plus, en expérimentant certains aspects d’une théorie en physique par exemple, on peut
infirmer ou confirmer la validité de ladite théorie. Bien entendu, pour faire fonctionner un
modèle informatique sur un superordinateur nécessite des données. Ces données peuvent
atteindre une taille gigantesque lorsqu’il est question de simuler un modèle complexe, tel
que le climat futur de la planète en entier.
Infonuagique (informatique en nuage) :
Siri, Google Voice search
Avec la démocratisation de l’accès internet pour la majorité de la population, il est devenu de
plus en plus intéressant de créé une plate-forme de logiciel qui serait accessible par le web.
De plus, en enlevant le besoin de la puissance de calcul sur les bras de l’usager, les
concepteurs de logiciel ont pu imaginer une nouvelle gamme de logiciel qui n’aurait pas était
possible auparavant, simplement parce qu’il était impossible d’avoir accès à une telle
puissance de calcul pour chaque utilisateur. Selon la définition du National Institute of
Standards and Technology (NIST), le « Cloud computing », l’informatique en nuage, est
l'accès via un réseau de télécommunications, à la demande et en libre-service, à des
ressources informatiques partagées et configurables. Un exemple très simple de ce
phénomène serait le traitement du langage naturel (oral) pour remplacer le clavier dans le
cadre de l’écriture d’une requête. Il n’était pas envisageable il y a 20 ans qu’un simple
rectangle dans nos mains soit capable de nous comprendre, mais tel est la réalité
d’aujourd’hui. Avec les systèmes de compréhension de langage naturel, telle que l’assistant
virtuel « Siri » d’Apple ou la recherche par conversation de Google, notre requête auditive
n’est pas traitée sur place, mais bien dans des centres gigantesques où l’application aura
l’énorme puissance de calcul nécessaire pour la comparaison et le déchiffrement de notre
demande.
Centre de traitement de donnée de Facebook en Iowa, États-Unis
Dans un autre ordre d’idées, la popularité des sites de réseau social a aussi nécessité de l’aide
au domaine du parallélisme. Le site de Facebook, par exemple, doit gérer environ 100
milliards de requêtes de ressources diverses dans le cadre d’une seule journée. Le site est
capable de supporter ce régime d'enfer, car il est supporté par plusieurs centres de
traitement de données à travers la planète. Tous ces centres sont équipés d’un grand
nombre de serveurs qui sera capable de répondre dans un délai raisonnable les requêtes
dirigées vers elles
Le futur du parallélisme
Réseau de neurones artificiels :
Ce modèle de calcul est conçu pour ressembler de très près au réseau de neurones dans un
cerveau. Il est intéressant puisqu’il représente une direction très probable de développement
dans le domaine de l’intelligence artificielle. Pour l’instant, les réseaux sont créés en reliant
des postes entre eux et en les programmant de sorte qu’ils puissent « apprendre » de leur
erreur.
Distribution des calculs :
Grâce à l’augmentation continue de la vitesse des transferts de données sur une distance, il
est plus en plus question de centraliser les processeurs de grande puissance et de partager le
temps d’utilisation de ces miniserveurs. Nvidia et Intel essayent de commercialiser ces
produits en ce moment même, courtisant les petites entreprises qui ne sont pas capables de
fournir un poste de 10000$ par designer juste pour calculer des rendues d’images par
exemple. Cette approche ressemble étonnamment au partage de temps de calcul d’un
superordinateur.
La Xbox One de Microsoft
Dans le même ordre d’idée, le domaine du jeu vidéo s’est aussi joint à la frénésie du « cloud
computing ». Dans la nouvelle version de la Xbox, il a était question que certains calculs, qui
seront pas liés à la latence du jeu, pourront être calculé à distance dans des centres de
traitement de données conçu à cet effet, permettant ainsi à la console d’offrir une meilleure
expérience de jeu sans avoir à posséder une puissance de calcul énorme.
Téléchargement