700 likes | 890 Views
بـس ـ م الله الرحــمــن الرحـــيــم. Module calcul parallèle. Cours DESA ANITS 2005/2006. Abdelhak LAKHOUAJA عبد الحق لخـواجـــة Bureau m10 E-mail : lakhouaja@sciences.univ-oujda.ac.ma. Introduction. Nous allons donner une introduction au calcul parallèle et aux machines parallèles.
E N D
بـسـم الله الرحــمــن الرحـــيــم Module calcul parallèle Cours DESA ANITS 2005/2006 Abdelhak LAKHOUAJA عبد الحق لخـواجـــة Bureau m10 E-mail : lakhouaja@sciences.univ-oujda.ac.ma
Introduction • Nous allons donner une introduction au calcul parallèle et aux machines parallèles. • Pour commencer, nous allons traiter un exemple réel pour faire une analogie avec le calcul parallèle.
Organisation d'une bibliothèque. • Supposons que les livres sont organisés en plusieurs rayons. • Un employé fait le travail dans un certain temps. • Pour gagner du temps, on peut utiliser plusieurs employés. • Meilleur stratégie de travail? • La manière la plus simple est de diviser tous les livres de façon équitable aux employés. Chaque employé doit parcourir la bibliothèque pour stocker les livres. • A chaque employé est affecté le même nombre de rayons et le même nombre de livres de façon arbitraire. Chaque employé, soit stocke les livres, soit les passe a un autre employé.
L'exemple précédent montre comment une tâche peut être accomplie rapidement en la divisant en plusieurs sous-tâches affectées à plusieurs employés. • Il n'y a pas une seule façon d'affecter les tâches aux employés. • L'affectation des livres aux employés est un partage de tâches. Passer les livres est un exemple de communication entre les tâches.
Pour certains problèmes, affecter le travail à plusieurs employés peut demandé plus de temps que s'il est fait par un seul employé. • Certains problèmes s'exécutent complètement en série (creuser un trou).
Exemple: Prédiction du temps • 1000 x 1000 km², sur 10 km de hauteur • Méthode : EDP, éléments finis • Élément de 0,1 km de côté => ~ 1010 éléments • Prédiction à 4 jours / 10 min => ~600 étapes • Un calcul d’élément nécessite 150 flop.
Exemple: Prédiction du temps (suite) • Vitesse d’un processeur : 1 Gflop/s (109 flops/s) • Nombre total de Flop : 1010 x 150 x 600 = ~ 1015 • 1 processeur mettrait au minimum 106 s, soit 280 h. • Avec 100 processeurs, on peut faire le même calcul en 3h. • Certains ordinateurs atteignent aujourd’hui le Tflop/s
Définition • Une machine parallèle (appelée aussi système multiprocesseur) est un système composé de plusieurs processeurs. • Les processeurs travaillent d'une manière indépendante et peuvent communiquer entre eux pour échanger les données ou partager une mémoire commune. • Les processeurs fonctionnent, soit en mode asynchrone (chaque processeur a sa propre unité de contrôle), soit en mode synchrone (tous les processeurs sont dirigés par la même unité de contrôle).
Cette nouvelle conception a entraînée de nouvelles contraintes qui se rajoutent par rapport aux architectures séquentielles : • combien de processeurs? à quelle puissance? • comment relier les processeurs? • comment distribuer les charges aux processeurs? • comment diminuer les communications? • comment concevoir des algorithmes efficaces?
L'introduction du parallélisme a nécessitée d'adapter l'informatique à tout les niveaux: • concepts • environnements • modèles • algorithmique • langages • …
Pour quelles applications ? • Calcul scientifique intensif (High Performance Computing ou HPC) • Prédiction météo, climat • simulation de crash • chimie/physique moléculaire • Modèles de pollution, thermique • ...
Pour quelles applications ? (suite) • Serveurs à grand nombre de transactions/s • banques, finance • internet, web • ... • Applications critiques temps-réel • contrôle aérien • aéronautique, spatial, ferroviaire • ...
Classification des architectures parallèles • La classification la plus connue est celle de Flynn (1966), qui classifie les architectures parallèles suivant les flux d'instructions et ceux de données : • Single Instruction (SI) • Multiple Instruction (MI) • Single Data (SD) • Multiple Data (MD)
Classification des architectures parallèles DONNEE INSTRUCTION
Architecture SISD Modèle de Von Neumann (1946) • Elle définit la plupart des ordinateurs séquentiels existants d'aujourd'hui. • Les instructions sont exécutées de façon séquentielle.
Architecture SIMD • Ce système est composé de plusieurs processeurs identiques, qui ne sont en fait que des unités arithmétiques et logiques programmables et non de véritables processeurs.
Les instructions sont émises par la même unité de contrôle (unité de contrôle centralisée). • C'est une architecture multiprocesseurs synchrone
La difficulté essentielle de telles machines, est la diffusion synchrone de la même unité de contrôle d'une instruction à plusieurs milliers de processeurs qui est un problème technique complexe. • Ces machines sont utilisées pour résoudre des problèmes qui ont une structure régulière
Architecture MISD • Plusieurs instructions successives traitent la même donnée! • Architecture non réalisable!
Architecture MIMD • Les processeurs exécutent des instructions différentes (Multiple Instruction) sur des données différentes (Multiple Data). • Chaque processeur possède sa propre unité de contrôle et sa mémoire locale (de taille petite ou grande).
Les communications entre les processeurs sont effectuées, soit : • via une mémoire globale (architecture à mémoire partagée). • via l'intermédiaire d'un réseau d'interconnexion (architecture à mémoire distribuée) qui relie physiquement les processeurs entre eux.
Architecture des machines parallèles à mémoire partagée • L'architecture de base est composée d'une mémoire globale et de plusieurs processeurs.
Les processeurs communiquent entre eux via la mémoire globale et par conséquent le temps de communication entre deux processeurs différents ne dépend pas de la position du processeur dans le réseau. • Chaque processeur peut avoir une mémoire locale suffisamment grande pour le traitement local et le stockage temporaire. • Le point sensible des architectures à mémoire partagée et la difficulté d'accès à la mémoire (conflits d'accès à la mémoire) qui limite le nombre processeurs. • Au delà de quelque dizaine de processeurs les performances commencent à ce dégrader.
Architecture des machines parallèles à mémoire distribuée • Pour pouvoir connecter un nombre important de processeurs, entre eux et éviter le problème du conflit d'accès à la mémoire dans le cas des mémoires partagées, on a recours à des architectures à mémoire distribuée. • Chaque processeur à sa propre mémoire, et communique avec les autres processeurs via un réseau d'interconnexion qui relie physiquement les processeurs entre eux.
Le coût de communication entre deux processeurs différents dépend de la position de ces deux processeurs dans le réseau. • Plusieurs façons de connecter les processeurs entre eux ont été étudiées. • Plusieurs machines parallèles à mémoire distribuée existent et diffèrent suivant la topologie du réseau d'interconnexion.
Réseaux d'interconnexion • Un réseau d'interconnexion permet de connecter physiquement les processeurs entre eux. • On distingue deux types de réseaux : • les réseaux statiques : la topologie est définie une fois pour toute lors de la construction de la machine parallèle. • les réseaux dynamiques : la topologie peut varier en cours d’exécution d'un programme. Ce type de réseau est programmable.
Le réseau Complet • La façon la plus idéale de connecter les processeurs entre eux est celle qui connecte chaque processeur à tous les autres: réseau complet.
Le nombre de connexions entre processeurs rend impossible la réalisation d'une telle architecture pour un grand nombre de processeurs. • Pour un réseau composé de p processeurs, le nombre de liens pour chacun est p‑1, et ceci n'est pas réalisable pour p grand.
Le réseau linéaire P0 P1 P2 P3 P4 • C'est l'une des architectures les plus simples. • Les processeurs internes ont deux voisins, et ceux des extrémités ont un seul voisin. La structure n'est pas symétrique et pose des problèmes de communication, surtout si le nombre de processeurs est grand.
L'anneau P0 P1 P2 P3 P4 • C'est aussi une des architectures les plus simples. • Chaque processeur est connecté à ses deux voisins.
L'anneau • Ce système est efficace, surtout, si les communications sont faites entre processeurs voisins, mais ne convient pas dans le cas contraire.
La grille 2D • C'est aussi une architecture simple pour laquelle, chaque processeur est relié à quatre autres processeurs au maximum.
La grille 2D • Un des inconvénients de la grille est le manque de symétrie; les processeurs de bord nécessitent des programmes particuliers. • Pour avoir la symétrie, une solution simple consiste à relier les processeurs de bord entre eux. • On obtient ainsi un tore 2D.
Tore 2D • Chaque processeur a exactement quatre voisins.
L'hypercube • C'est une topologie qui possède plusieurs propriétés très intéressantes. • Elle permet l'utilisation de plusieurs processeurs avec un nombre de connexions petit. • Un hypercube de dimension d (appelé aussi d‑cube), est composé de 2d processeurs numérotés de 0 à 2d‑1 (en représentation binaire). • La connexion de deux processeurs est réalisée, seulement si leurs numéros respectifs (toujours en représentation binaire) diffèrent d'un seul bit. • Par conséquent chaque processeur a exactement d liens (d voisins).
L'hypercube Hypercube de dimension 3
L'hypercube • La construction de l'hypercube est faite par récurrence : • 0‑cube est un seul processeur • (d+1)‑cube est obtenu à partir de deux d‑cube en reliant les processeurs de même numéro.
0 0 0 1 0 0 1 0 0 1 1 0 0 1 0 0 1 1 1 1 1 1 0 1
L'hypercube Hypercube de dimension 4
L'hypercube • Plusieurs topologies peuvent être immergées dans l'hypercube : l'anneau, la grille, ... • Construction d'un anneau à 8 processeurs à partir d'un hypercube de dimension 3 :
Grandeurs des réseaux d'interconnexion • Le diamètre : c'est la distance maximale (nombre de liens) entre deux processeurs quelconque • dmini,j = min(d(Pi,Pj)) • diamètre = maxi,j (dmini,j) • La connectivité : indique de combien de manières différentes deux processeurs peuvent être connectés. Plus la connectivité est grande, plus le réseau est tolérant aux pannes et autorise la communication à un grand nombre de processeurs. • Le coût : plusieurs critères peuvent être utilisé pour mesurer le coût d'un réseau. Une façon de définir le coût, est le nombre de liens total du réseau.
sommaire des caractéristiques des réseaux étudiés • Réseau diamètre connectivité coût • complet 1 p-1 p(p-1)/2 • linéaire p-1 1 p-1 • anneau p/2 2 p • grille 2(p - 1) 2 2(p - p ) • tore 2 p/2 4 2p • hypercube log2(p) log2(p) p log2(p)/2
Mesure des performances • Accélération : • Elle évalue le gain apporté par l'utilisation d'une machine parallèle. Elle est définie par le rapport : • Sp = T1 / TP • T1 : temps d'exécution du meilleur algorithme séquentiel (implémenté sur un seul processeur) • Tp : temps d'exécution parallèle du même algorithme en utilisant p processeurs.
Exemple : • Supposons que : • p = 5 • T1 = 8 s • T5 = 2 s • alors, on a : Sp = 8/2 = 4 • Ceci montre que l'algorithme parallèle est 4 fois plus rapide que l'algorithme séquentiel avec utilisation de 5 processeurs.
# processeurs • L'accélération est généralement sous-linéaire (Spp)
Accélération sur-linéaire # processeurs • Parfois on a des accélérations sur-linéaires (Sp>p). ceci peut s'expliquer par le fait que l'algorithme parallèle : • tire profit des caractéristiques matériels (temps d'accès à la mémoire). • peut économiser des instructions.
Exemple • Considérons l'algorithme suivant : • pour i = 1 à 100 • a[i] = 0; • ceci nécessite ~ 300 instructions (incrémentation, test et affectation). • Supposons que nous disposons d'une machine composée de 100 processeurs, alors chaque processeur exécutera l'algorithme suivant: • i = indice_processeur(); • a[i] = 0; • Comme chaque processeur exécute 2 instructions: • S100 = 300/2 = 150 > 100
Efficacité • Elle mesure l'accélération moyenne par processeur. Elle est définie par : • Ep = Sp / p • Ep est comprise entre 0 et 1. • Ep = 1, veut dire que les processeurs consacrent 100% de leurs temps à faire du calcul.