Algorithmes Parallèles et Systèmes Réparties

Slides:



Advertisements
Présentations similaires
Gaétan Hains Laboratoire d’informatique fondamentale d’Orléans
Advertisements

L’INFORMATIQUE Mihalcea Cezar.
Module Systèmes d’exploitation
GEF 435 Principes des systèmes d’exploitation
GEF 435 Principes des systèmes dexploitation Les systèmes dexploitation en général (Tanenbaum 1.1 et 1.3)
Initiation aux technologies de l’information
Fabrice Lauri, François Charpillet, Daniel Szer
Architecture de machines Le microprocesseur
Frédéric Gava JFLA2006 Une implantation de la juxtaposition parallèle.
Access Frédéric Gava (MCF)
TECHNOLOGIE DES ORDINATEURS
Systèmes, algorithmes et applications: Efficacité du parallélisme. Gaétan Hains LIFO, Université d'Orléans Janvier 2001.
Calculs de complexité d'algorithmes
Introduction aux réseaux informatiques
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
GEF 435 Principes des systèmes dexploitation Structure des systèmes dexploitation (Tanenbaum 1.7)
Internet.
Le Grid Computing Par Frédéric ARLHAC & Jérôme MATTERA.
CLUSTERING Grappe d'ordinateurs.
Le Grid Computing et son utilisation dans les entreprises et les industries Laurent CANTONE Résoul UNAL.
Applications et Techniques
PLAN du COURS Introduction Structure des Systèmes Informatiques
Objectif de l’exposé.
Performances 1 Évolution : Performance. Performances 2 Évolution : Mémoire.
Modèle polyédrique: fondements et application à la parallélisation de programmes réguliers Tanguy Risset DIF 2001/2002.
CALCUL PARALLELE PRODUIT : MATRICE – VECTEUR 10 pages Exposé par :
Systèmes distribués C. Delporte-Gallet (ESIEE-IGM)
SECURITE DU SYSTEME D’INFORMATION (SSI)
Savoir partager Ecole de Lanta
MP2 - Mathématiques Ordinateurs et calculateurs Quand a-t-on construit le premier ordinateur ? Qui était Colossus ? Quest-ce aujourdhui un calculateur.
Réalisée par :Samira RAHALI
Les réseaux informatiques
Modèle 390 dIBM AS/400 dIBM Le traitement de données en 1970: Le PDP 11/20 de Digital.
Optimisation et parallélisation de code pour processeur à instructions SIMD multimedia François Ferrand.
Interoperabilité des SI - Urbanisation
Programmation concurrente
1 IFT 6800 Atelier en Technologies dinformation Chapitre 1 Introduction.
Les systèmes multiplateformes
Réalisé par Mr CALVO du Lycée Bon Secours à PERPIGNAN
Introduction IFT6800 – E2008 Pierre Poulin.
Analyse d’algorithmes
Management.
Informatique 1. Les applications de l’informatique
Lycée ELKHAWARIZMI De SAFI
Importance du réseau dans des architectures MIMD Tout échange entre les processeurs nécessite un transfert de données via le réseau.
Vue d'ensemble Surveillance des journaux d'événements
1 Notations Asymptotiques Et Complexité Notations asymptotiques : 0 et  Complexité des algorithmes Exemples de calcul de complexité.
Evaluation au baccalauréat
Fondements de l’algorithmique des réseaux
Présentation de CORBA et de IIOP
Algorithmes Parallèles et Systèmes Réparties
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Augmenter le débit d’un.
Michée KALONJI et Herber KALONDA
Management Définition: Le management est le processus par lequel le gestionnaire maximise l’utilisation des ressources de l’entreprise dans le but d’atteindre.
© OutilsInformatique, 2014 tous droits réservés 1.Définir des termes et concepts de la gestion de réseau. 2.Comprendre les avantages d’un réseau. 3.Comprendre.
8INF856 Programmation sur architectures parallèles
ALGORITHMIQUE IUT Vélizy – DUT Info - 1ère année Laurent Marsan
Université de Sherbrooke
AFPA CRETEIL 1-1 Windows NT Environnement Windows NT Chapitre 1.
Cours de Structure et Technologie des composants d’ordinateurs
Réalisé par : Mr IRZIM Hédi Mr JRAD Firas
Multiprécision.
Calcul parallèle => partitionner les données en sous-groupes associés aux processeurs. P0 P2 P1.
Le Traitement Informatique des Données Scientifiques Oleg LODYGENSKY Etienne URBAH LAL, Univ Paris-Sud, IN2P3/CNRS,
Programmation des systèmes réparties Frédéric Gava (MCF) LACL, bâtiment P2 du CMC, bureau 221 Université de Paris XII Val-de-Marne.
Introduction aux architectures parallèles
Algorithmes parallèles
Café In: A quoi ca sert la recherche sur la programmation? Comment peut on faire travailler des ordinateurs ensemble? Ludovic Henrio SCALE TeamSCALE Team.
Classification des archtecutres paralleles
Transcription de la présentation:

Algorithmes Parallèles et Systèmes Réparties Frédéric Gava (MCF) gava@u-pec.fr LACL, bâtiment P2 du CMC, bureau 221 Université de Paris-Est Créteil 61 avenue du Général de Gaulle 94010 Créteil cedex

Pour ce semestre 40 heures de cours et de TD et de TP 3 enseignants (remplacement de M. Hains) Frédéric Gava (moi) Sovanna Tan Julien Tesson Notation Petit projet Examen final CC (?) Pas le même contenu que l'année dernière

Le parallélisme ? On distribue les données sur p=4, 32, 5000 ordinateurs : Chacun calcule sur sa part des données On s’échange les résultats On recommence si nécessaire On espère que le calcul soit complété p fois plus vite : Mais: l’échange des données prend du temps … temps relatif inchangé depuis plus de 20 ans Échange 20, 100, 1000 x plus lent qu’un calcul … s’il n’y a pas de bouchon !

Architectures parallèles

Premières machines 1976 : Cray I: refroidi au « gaz liquide » 1981 : Cyber 205, 50 Mflops 1986 : Cray X-MP (713 MFlops) 1991 : Cray Y-MP (16 GFlops) 1995-2006 : Grappes de PC Super-ordinateurs parallèles et vectoriels Calcul globalisé ou grilles de calcul géographiquement distribuées 2006-2014 : Architectures hybrides Grappes de multi-cœurs Plusieurs racs avec GPU

Exemple grappe de PCs

Une grappe de l’INRIA

Super-ordinateurs Le earth-simulator au Japon, environ 5000 processeurs…Le Tera-10 du CEA (France) est classé par mis les 5 plus puissantes machines…

Comment mesurer ? Calcul Synchronisation (latence) Données Temps de G Temps de communication Synchronisation (latence) Données L Cela limite les performances…

Vitesse de calcul Loi de Moore : l’efficacité des processeurs double tout les 18 mois (normalement vrai jusqu’en 2017 mais après ?) Kilo Mega Giga Tera

Vitesse des communications CRAY T3E, haut de gamme circa 2002  Nb Processeurs Mflops/s 1/L M/s 1/g Mmots/s t3e-256(2) 2000 1,1 260 t3e-256(4) 4000 0,9 382 t3e-256(8) 7000 0,6 327 t3e-256(16) 15000 0,4 253 t3e-256(24) 2200 0,47 222 t3e-256(32) 28000 0,41 177 Même la fibre optique n’y peut rien car la vitesse de la lumière est finie et donc communiquer coûte cher…

Différentes architectures On peut classer les machines parallèles suivant leur efficacité, leur nombre de processeurs, le types des processeurs/réseaux/mémoires etc. On peut néanmoins et grossièrement classer les machines parallèles suivant 2 catégories : Les machines à mémoire partagées Les machines à mémoire distribuées Le modèle client/serveur

Mémoires partagées Mémoire Mémoire Réseau Bus Bus Les processeurs « multi-core » comme les « dual-core » : les processeurs accède directement à la mémoire vive ; très efficace mais encore coûteux et limité en nombre de processeurs (64 maxi dans le commerce) Processeur Mémoire Bus Ici, c’est l’apanage des grosses, commerciales et coûteuse (100k à 1M euros) machines massivement parallèles comme les Cray T3E, SGI Origin 2000, IBM SP avec 64, 128, 256 processeurs. Mais très efficaces. Les processeurs accèdent tous à une mémoire vive via un réseau => communications aussi efficaces que lecture mémoire Processeur Mémoire Bus Réseau

Mémoires distribués Réseau Réseaux Processeur Mémoire Machine esclave Les processeurs communiquent via le réseaux ; c’est le domaine des grappes de machines. Possibilité de machines peu cher avec un TRES grand nombre de processeurs mais néanmoins, encore aujourd’hui, des communications plus lentes que précédemment. Possibilité de construire pour pas cher sa propre machine parallèle… Processeur Mémoire Réseau Machine esclave Réseaux Machine maître Une machine maître (serveur) distribue les données et les calculs aux esclaves (client) et le maîtres récolte les résultats. Ce modèle de machine parallèles a été utilisé par exemple pour le Généthon, SETI@HOME etc. en utilisant les temps de calculs non-utilisé par les particuliers. On a donc une très grande capacité de calcul mais avec les problèmes suivant : il faut que le problème soit trivialement décomposable, il faut vérifier les données calculés pour éviter les pirates (on fait de la redondance de calcul puis on prend le résultat le plus rendu), communications parfois très coûteuses.

Différentes architectures On peut aussi classer les machines parallèles suivant les programmes qui y sont utilisés (classification de Flynn) Pour cela, on classe suivants les instructions et les données Single Instruction Multiple Instructions Single Data SISD MISD Multiple Data SIMD MIMD Machine Séquentielle Grappe de machines

SIMD Chaque instruction du processeur manipule parallèlement (dans les circuits imprimés) plusieurs données : on a donc plusieurs calculs à la fois pour chaque instruction On trouve ce type d’instructions dans les accélérateurs graphiques (du processeur ou de la carte graphique) : on souhaite manipuler plusieurs pixels/polygones à la fois les processeurs avec co-processeurs arithmétiques : on souhaite calculer plusieurs additions à la fois pour accélérer les gros calculs numériques etc.

MISD Plusieurs instructions manipulent parallèlement une seule et unique donnée !? En fait possible avec des programmes dis en « pipe-line » : des données circulent sur un circuits de processeurs (ou de processus, c’est à dire avec plusieurs processus sur un même processeur) et chaque processus ne fait qu’une seule et unique opération Exemple : Processus 1 calcul +1 Processus 2 calcul *2 Processus 3 calcul +3 ? 1, 5, 6 10, 23 Flux de données Données initiales Données finales

Moralité « Parallélisme », ambiguïté du terme : Calcul/archi parallèles (la « concurrence ») Multi-threading (serveurs web) Algorithmes PRAM Programmation GPU Programmation synchrone Calcul/archi distribués Grappes (cluster) d’ordinateurs Big-data Algorithmes distribuées Bien définir de quoi on parle  modèles théoriques

Notions d’algorithmes parallèles et distribués

Paralléliser c’est distribuer Données D es on né

C’est aussi accélérer C A L U C A U L L C

Mais aussi communiquer et synchroniser D é o n n e s D o é e s n n 3 cons. 4 voyel. (3,4) (3,4) (3,4) (3,4)

Le problème de l’efficacité Le but faire le total (addition) d’un ensemble de nombre donnée ; le nombre d’entiers à additionner sera toujours le même On va répartir ces nombres suivant deux nombres de processeurs (humains), 5 et 10 Pour cette expérience, je vais demander 10 volontaires Chacun des volontaires fait la somme des entiers qui lui sont alloués Dès que le volontaire a terminé, il se met près de moi Puis les volontaires se réunissent pour faire la somme total On analysera ensuite l’efficacité globale des volontaires

Exemple Volontaire : 1 2 3 4+8 5+9 2+1 Total : 12+14+3=29

Total avec 5 processeurs Volontaire : 1 2 3 4 5 4+8+7+3 5+9+6+1 2+1+9+8 3+4+5+1 6+7+4+1

Avec 10 processeurs Volontaire : 1 2 3 4 5 6 7 8 9 10 4+8 5+6 9+2 1+7 3+8 4+5 1+6 3+9 7+4 2+3

Moralité Les communications coûtent cher La synchronisation aussi Ce n’est pas parce que l’on a plus de processeur que le calcul sera plus rapide : on parle d’efficacité de l’algorithme parallèle En gros : plus on a de processeurs plus il faut de gros problèmes sinon on fait perdre du temps au processeurs (par rapport à une machine parallèle avec moins de processeurs)

Futurs du parallélisme ? (qui vivra verra…)

Les grilles de calcul Un « graal » (super)-ordinateur distribuées géographiquement Du calcul à la demande, comme de l’électricité Nombreux projets et réalisations : GRID’5000 Grille du CERN Globus etc.

Taxonomie Une machine parallèle=plusieurs processeurs Meta-computing = plusieurs machines parallèles Calcul pair-à-pair = chaque machines est relié à une ou plusieurs autres machines (échanges de fichiers) Modèle Clients-Serveurs = des serveurs répartissent les calculs à des clients ; ceux-ci se connectent, calculent, redonnent le résultats aux serveurs etc. Global-computing = toutes les machines du mondes vue comme une seule ENORME machine (le « graal ») Mobile-computing = un utilisateur veut lancer une application ; un agent informatique se « balade » sur le net pour trouver une machine suffisamment puissante pour exécuter cette application ; puis revient sur la machine de l’utilisateur pour lui fournir le résultat Hybride = différentes types d’architectures imbriquées etc.

Les problèmes Sécurité : Performance : applications détruisant les fichiers etc. autorisation sur quelles machines ? sûreté d’exécution : une application plantant la/les machine(s) pour gêner les autres applications etc. Performance : prédiction des communications… répartition des ressources physiques une petite application (calculette) a t’elle besoin d’autant de ressource ? sécurité : une application faisant des millions de calculs inutile pour gêner les autres Portabilité : grande hétérogénéité des machines Tolérance aux « pannes » : comment faire quand une machine se déconnecte (panne de courtant etc.) ? La recherche en informatique y travaille (voir site LACL par ex.)

Applications Analyse de la structure du web : Sécurité informatique : Qui parle de qui sur les pages perso ? Que peut-on savoir sur mon entreprise via le web et par regroupement d’information ? Quelles sont les réseaux pirates ? Sécurité informatique : ce protocole de commerce est-il vraiment sûr ? Quel effet aurait une panne sur des informations critiques ? Le protocole de vote électronique est-il fiable ? Un pirate peut-il tous casser dans le réseau de mon entreprise ? Et tellement d’autres choses… Intelligence artificiel (interaction homme-machine comme un e-vendeur ou apprentissage automatique pour la recherche de pétrole d’après des relevés topographiques et géologiques) Calcul formelle, démonstration automatiques, assistant de preuves (les sujets de Bac S peuvent être entièrement résolue par des machines) etc.

Différents modèles de programmation

Modèles de programmation Modèles de programmation et modèles d’exécution d’exécution Ordonnancement et placement

Modèles de programmation (2) D’exécution, une abstraction de l’architecture matérielle mémoire partagée vs mémoire distribuée SIMD/MIMD De programmation, une abstraction de la sources du parallélisme : données/contrôle

Modèles de prog : Djikstra/Flynn Parallélisme de contrôle Composition parallèle de processus séquentiels PAR(SEQ) MIMD pardo i = 1, n a(i) = b(i) +c(i) x(i) = y(i) + z(i) end do Parallélisme de données Composition séquentielle de processus parallèles SEQ(PAR) SIMD forall(||) i = 1, n a(i) = b(i) +c(i) x(i) = y(i) + z(i)

Modèles d’exécution Espaces d’adressage multiples p processus Communiquent par messagerie Le programmeur ou le compilateur doit définir le placement des données et l’ordonnancement des calculs Le placement des données peut définir celui des calculs Espaces d’adressage unique p threads Communiquent à travers des variables partagées Le programmeur ou le compilateur doit définir le placement et l’ordonnancement des calculs

Ordonnancement Programme = Graphe de tâches Une tâche est une unité de traitement séquentiel Un arc (T1, T2) correspond à un transfert d’information à la fin de T2 vers le début de T1 Un graphe de tâches sans cycle définit un ordre partiel T1 << T2 s’il existe un chemin de T1 vers T2 Ordre total : programme séquentiel Ordre partiel : programme parallélisable

Ordonnancement et modèle de programmation La définition de l’ordonnancement peut être : Réalisée dans un programme parallèle Extraite automatiquement d’une spécification plus ou moins contrainte : parallélisation automatique L’expression de l’ordonnancement dans les langages parallèles : Par structures de contrôle : SEQ(PAR) Par synchronisation : PAR(SEQ) Placement : L’ordonnancement ne prend pas en compte le nombre de processeurs disponibles Le placement replie le parallélisme illimité sur les ressources réelles Contrainte : minimisation des surcoûts Parallélisation = placement + ordonnancement

Placement statique Off-line, éventuellement paramétré par le nombre de processus et le numéro de processus Les temps de calcul doivent être connus : Cas régulier : Bloc, cyclique, cyclique (k), … Cas irrégulier : ad hoc (p. ex. bisection récursive)

Décalage, distribution bloc

Bisection récursive Les éléments de calcul sont caractérisés par une donnée nD souvent une position spatiale Applicable aussi à un maillage

Placement et ordonnancement dynamique Motivation: La durée des calculs n’est pas prévisible La puissance des machines n’est pas connue Placement/ordonnancement on-line : décidé à l’exécution Questions : Surcoûts : gestion des processus ou des threads, des échanges d’information Robustesse à l’irrégularité des temps d’exécution

Placement et ordonnancement dynamique Centralisé: Maître-Esclave Maître : Implémente un algorithme de partitionnement, par exemple bloc, avec possibilité de taille variable du bloc Taille fixe : équivalent à statique Guided self-scheduling: chaque esclave prend 1/p de ce qui reste Factoring: chaque esclave prend 1/P de la moitié du batch restant Effectue les opérations globales par exemple réduction p esclaves : Exécutent un bloc, et redemandent du travail dès que terminé

Placement et ordonnancement dynamique Répartition par vol de travail Un processus pousse sur la pile des travaux en attente les tâches les plus longues Les processus ou threads inactifs sélectionnent un autre processus auquel ils prennent du travail au fond de la pile Peut être prouvé optimal pour une large classe d’applications Implémentation délicate : gestion de verrous en espace d’adressage unique, protocole en espaces d’adressages multiples http://supertech.lcs.mit.edu/cilk/

Analyse de performances

Objectifs On veut résoudre un problème Choix de programmation Plusieurs algorithmes : naïfs ou non Puis, pour un algorithme, le programmer MAIS QUOI PARALLELISER ?

Objectifs (1) On veut résoudre un problème Choix de programmation Plusieurs algorithmes : naïfs ou non Pour un algorithme, choix/style de la parallélisation, distribution des données/calculs Paramètres de l’architectures nombre de processeurs et leurs caractéristiques Vitesse Mémoire cache Performances de la mémoire ou du réseau Paramètre de configuration (OS et I/O)

Objectifs (2) Définir des indicateurs objectifs qui mesurent le gain apporté par le parallélisme L’indicateur pertinent dépend du critère par rapport auquel on veut optimiser Extensibilité d’une architecture parallèle : capacité à améliorer la performance en augmentant les ressources Extensibilité d’un algorithme parallèle : capacité d’un algorithme à utiliser plus de ressources Latence ou débit Latence : temps d’exécution Débit : nombre de transactions, de calculs,... par unité de temps

À finir, donc on prend d'autres slides