Module calcul parallèle

Slides:



Advertisements
Présentations similaires
Structures de données avancées : MLH (Multidimensional linear hashing)
Advertisements

GEF 435 Principes des systèmes d’exploitation
Placement de Motifs Architecture Application Contraintes: - Charge
La Couche Réseau.
Introduction à la tolérance aux défaillances
A NETWORK-AWARE DISTRIBUTED STORAGE CACHE FOR DATA INTENSIVE ENVIRONMENTS Brian L. TIERNEY, Jason LEE, Brian CROWLEY, Mason HOLDING Computing Sciences.
Serveur jeu Le serveur fait partie d'un logiciel de jeu en ligne multi joueur en architecture client serveur. Il répond à des demandes.
Types des systèmes d’exploitation
(Routing Information Protocol)
PLAN du COURS Introduction Structure des Systèmes Informatiques
LES TRANSMISSIONS DE DONNEES DANS LE SECTEUR INDUSTRIEL. ZOBRIST Julien TS1 ETA.
INTRODUCTION.
Architecture de machines Principes généraux
CALCUL PARALLELE PRODUIT : MATRICE – VECTEUR 10 pages Exposé par :
Systèmes distribués C. Delporte-Gallet (ESIEE-IGM)
UNIVERSITE DES SCIENCES ET DE LA TECHNOLOGIE D’ORAN
SECURITE DU SYSTEME D’INFORMATION (SSI)
Comment faire tourner plusieurs logiciels ou programmes à la fois ? « Le multitâche » par Bernard Maudhuit.
Le modèle O.S.I..
Algorithmes et résolution de problèmes FGE
Démarche de résolution de problèmes
Les Systèmes d’Exploitation
1 Sécurité Informatique : Proxy Présenter par : Mounir GRARI.
Parcours de formation SIN-7
TRANSMISSION DES DONNEES.
Le codage des nombres en informatique
Architecture des Ordinateurs
Le protocole FTP.
Algorithmes d ’approximation
Deux méthodes incrémentales pour le maintien dun arbre de connexion Nicolas Thibault Christian Laforest
Recherche Opérationnelle
Module 2 : Préparation de l'analyse des performances du serveur
Détection du meilleur format de compression pour une matrice creuse dans un environnement parallèle hétérogène Olfa HAMDI-LARBI.
Programmation dynamique
Analyse des Algorithmes
L’adaptativité pour un solveur de l’équation de Vlasov
Importance du réseau dans des architectures MIMD Tout échange entre les processeurs nécessite un transfert de données via le réseau.
Fondements de l’algorithmique des réseaux
INTRODUCTION.
8INF856 Programmation sur architectures parallèles
Exposée sur les réseau informatiques
Programmation linéaire en nombres entiers
Calcul parallèle => partitionner les données en sous-groupes associés aux processeurs. P0 P2 P1.
Le contenu est basé aux transparents du 7 ème édition de «Software Engineering» de Ian Sommerville«Software Engineering» de Ian Sommerville B.Shishedjiev.
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Performance de circuits.
Crawlers Parallèles Présentation faite par: Mélanie AMPRIMO
Séance 13 Internet.
2008/ Plan du cours 1.Introduction –Contenu du cours 2.Logique mathématique –Calcul propositionnel –Calcul des prédicats –Logique floue et aide à.
Introduction et Généralités sur l’Algorithmique
Introduction aux solutions Microsoft pour le HPC.
Couche limite atmosphérique
Optimisation pour la Conception de Systèmes Embarqués
2005/2006 Structures de Données Introduction à la complexité des algorithmes.
GPA-779 Application des systèmes experts et des réseaux de neurones.
Initiation aux SGBD Frédéric Gava (MCF)
Introduction aux architectures parallèles
Couche réseau du modèle OSI
Structures de données avancées : LH* D. E ZEGOUR Institut National d ’Informatique.
C’est quoi internet ??.
Architecture et technologie des ordinateurs II
Chapitre 4 La représentation des nombres.
INTRODUCTION AUX BASES DE DONNEES
Ordonnancement en présence d’agents individualistes
Algorithmes parallèles
Raison d'être de la structure de fichiers : Les premiers travaux : Début des années 1960 : En 1963 : Près de 10 ans plus tard... (à peu près 1973) : Durant.
Chap. 3 Récursion et induction. Les définitions par récurrence consistent à construire des objets finis, à partir d'autres, selon certaines règles. Les.
L'exécution d'un programme nécessite l'utilisation des ressources de l'ordinateur : temps de calcul pour exécuter les opérations, et l'occupation de la.
ARCHITECTURE MATERIELLE D’UN SYSTEME A MICROPROCESSEUR
Chapitre 12 Surveillance des ressources et des performances Module S41.
Processus ponctuels Caractéristiques et Modèles de répartitions spatiales.
Transcription de la présentation:

Module calcul parallèle بـسـم الله الرحــمــن الرحـــيــم 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 SD MD SI SISD SIMD MI MISD MIMD INSTRUCTION

Architecture SISD Elle définit la plupart des ordinateurs séquentiels existants d'aujourd'hui. Les instructions sont exécutées de façon séquentielle. Modèle de Von Neumann (1946)

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 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. P0 P1 P2 P3 P4 La structure n'est pas symétrique et pose des problèmes de communication, surtout si le nombre de processeurs est grand.

L'anneau C'est aussi une des architectures les plus simples. Chaque processeur est connecté à ses deux voisins. P0 P1 P2 P3 P4

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.

1 1 1 1 1

L'hypercube Hypercube de dimension 4

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.

L'accélération est généralement sous-linéaire (Spp) # processeurs

Accélération sur-linéaire Parfois on a des accélérations sur-linéaires (Sp>p). # processeurs 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(); 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.

Exemple : Supposons que : p = 5 T1 = 8 s T5 = 2 s alors, on a : Sp = 4 et Ep = 4/5 = 0,8 Les processeurs sont utilisés à 80%

Loi d’Amdahl Elle établit que l'accélération maximale d'un algorithme est limité par le nombre d'opérations, qui ne peuvent être effectuées que séquentiellement. Supposons que : Tseq = ts + tpar = aTseq + (1-a)Tseq 0a 1 ts est la partie séquentielle de l'algorithme tpar la partie qui se parallélise parfaitement.

On a donc: Tp  ts + tpar/p  Sp  (ts + tpar)/(ts + tpar/p)  Sp  1/(a + (1-a)/p) limp 1/(a + (1-a)/p) = 1/a Ceci veut dire que l'accélération borné supérieurement par 1/

Loi d’Amdahl La loi d'Amdahl interdit toute accélération sur-linéaire. Pour l'algorithme : pour i = 1 à 100 a[i] = 0; on peut faire la simulation suivante: i = 1 a[i] =0 … i = 100 Comme il faut 200 instructions, on a : S100 = 200/2 = 100

Hit-parade des 500 ordinateurs les plus puissants dans le monde Liste mise à jour tous les 6 mois par les Universités de Mannheim et de Tennessee http://www.top500.org Liste actuelle : 26ème liste, novembre 2005

Les communications dans les réseaux statiques Dans la parallélisation d'algorithmes, les communications des données entre processeurs sont des contraintes supplémentaires qui se rajoutent par rapport à l'algorithme séquentiel. Par conséquent, risquent de diminuer les performances des algorithmes parallèles. Pour cela, il nécessaire: soit de les couvrir par les calculs soit d'affecter les tâches aux processeurs efficacement pour diminuer les échanges entre processeurs.  

Les communications La communication de m données entre deux processeurs voisins est modélisée par : +m  : temps d'initialisation  : temps de transfert (envoie/réception) d'une donnée 1/ : le débit (aussi appelé bande passante), qui est le nombre de données à envoyer par secondes, exprimé en Mo/s.

Modèles de communication Modèle unidirectionnel : on ne peut pas effectuer simultanément l'envoi de Pi vers Pj et de Pj vers Pi sur le même canal. Modèle half-duplex Pi Pj canal de communication (lien physique)

Modèles de communication Modèle bidirectionnel : envoi et réception (simultanément) sur le même canal Modèle full-duplex Pi Pj

Communication entre deux processeurs quelconques But : envoyer un message M de taille m d'un processeur Pi vers Pj, distants de h (h est le nombre de liens entre Pi et Pj). Exemple: h=4 Pi Pj

Première solution: Envoyer le message M (complet) de proche en proche en passant par les processeurs intermédiaires (store-and-forward) : Pi Pj M Etape 1: Pi Pj M Etape 2: Pi Pj M Etape 3: Pi Pj M Etape 4:

au bout de h étapes, le message M arrive à sa destination.  le coût pour envoyer M est : h(b + mt) = hb + hmt

Deuxième solution : Utilisation du technique du pipeline : le message est découpé en q paquets, M1, …, Mq de même taille m/q. Exemple : M = q=3. M3 M2 M1

Etape 1: Etape 2: Etape 3: Etape 4: Etape 5: Etape 6: Pi Pj Pi Pj Pi M1 Etape 1: Pi Pj M1 Etape 2: M2 Pi Pj M1 Etape 3: M2 M3 Pi Pj M1 Etape 4: M2 M3 Pi Pj Etape 5: M2 M3 Pi Pj Etape 6: M3

tq = t = (h+q-1)(b + m/qt) = f(q) Le premier paquet M1 arrive à Pj au temps : t1 = h(b + m/qt) Le deuxième paquet M2 arrive à Pj au temps : t2 = t1 + (b + m/qt) Le message M arrive à Pj lorsque le dernier paquet Mq arrive à Pj tq = t(q-1) + (b + m/qt) Par récurrence : tq = t = (h+q-1)(b + m/qt) = f(q)

Question : Quel est le nombre de paquets qui minimise t? f(q) = (h+q-1)(b + m/qt) = (h-1)b + mt + (h-1)mt/q + qb f'(q) = b - (h-1)mt/q2 f'(q) = 0  f''(q)  0  q0 est un minimum global