8INF856 Programmation sur architectures parallèles

Slides:



Advertisements
Présentations similaires
L’INFORMATIQUE Mihalcea Cezar.
Advertisements

Architecture de machines Le microprocesseur
Frédéric Gava JFLA2006 Une implantation de la juxtaposition parallèle.
Architecture de machines Principes généraux
Initiation à la programmation et algorithmique cours 2
Systèmes, algorithmes et applications: Efficacité du parallélisme. Gaétan Hains LIFO, Université d'Orléans Janvier 2001.
Calculs de complexité d'algorithmes
Module Systèmes dexploitation Chapitre 6 Communication Interprocessus Partie III École Normale Supérieure Tétouan Département Informatique
Types des systèmes d’exploitation
GEF 435 Principes des systèmes dexploitation Communication Interprocessus (CIP) III (Tanenbaum 2.3)
Le Grid Computing et son utilisation dans les entreprises et les industries Laurent CANTONE Résoul UNAL.
PLAN du COURS Introduction Structure des Systèmes Informatiques
Les jeux persistants massivement Multijoueurs : problèmes techniques Vincent Roudaut MASTER M2 ESTC/CAM
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.
Architecture de machines Principes généraux
Cours Visual Basic pour Application
CALCUL PARALLELE PRODUIT : MATRICE – VECTEUR 10 pages Exposé par :
ARCHITECTURE DES ORDINATEURS
Initiation à la programmation et algorithmique
Algorithmique et Programmation
Optimisation et parallélisation de code pour processeur à instructions SIMD multimedia François Ferrand.
CYCLE 1 : Saisir – Afficher – Données Déclarer des Constantes dans un programme 1- Rôle de la déclaration de constante 2- Syntaxe de la déclaration de.
Introduction Objectifs du cours Évaluation Références
Systèmes Superscalaires et VLIW
Amorçage des compilateurs Un compilateur est un programme écrit dans un langage Peut-il être écrit dans le langage cible ? dans le langage source ? comment.
IFT 6800 Atelier en Technologies d’information
Les systèmes multiplateformes
Parallel Programming in C with MPI and OpenMP
8INF856 Algorithmes parallèles. Le langage parallèle Cilk Trois nouveaux mots clés: 1.spawn 2.sync 3.Parallel Si on enlève ces mots clés, on obtient un.
Détection du meilleur format de compression pour une matrice creuse dans un environnement parallèle hétérogène Olfa HAMDI-LARBI.
Projet CONSULTING SA : GSA ( Gestion du suivi d’activités)
L’adaptativité pour un solveur de l’équation de Vlasov
IFT Complexité et NP-complétude Chapitre 0 Rappels.
Analyse d’algorithmes
Qu’est-ce qu’un système d’exploitation ?
RAPPEL Qu’est ce qu’une structure de contrôle itérative ?
Informatique 1. Les applications de l’informatique
Efficacité des algorithmes
Importance du réseau dans des architectures MIMD Tout échange entre les processeurs nécessite un transfert de données via le réseau.
Systèmes d’exploitation
Logique programmée & Microprocesseurs
Cours Architecture des Systèmes Informatiques
Agents intelligents.  L’IA peut être envisagée de différentes manières. Les deux questions essentielles qu’ il convient de se poser sont: Vous intéressez-vous.
Optimisation des performances
Présentation rapide d’
ALGORITHMIQUE IUT Vélizy – DUT Info - 1ère année Laurent Marsan
TD0 - Rappels. Acquis du programme 1 ère année Analyser et modéliser : un problème, une situation ; Imaginer et concevoir : une solution algorithmique.
Cours d’ Algorithmique 2012 Algorithmique. Cours d’ Algorithmique 2012 Qu’est ce que l’Algorithmique ? Avez-vous déjà suivi une recette ? Avez-vous déjà.
Algorithmes et Programmation
Langages de programmation Ordinateurs = Machines à exécution.  D’où la nécessité d’outils de communication qui s’adaptent le mieux aux utilisateurs. Comment.
Crawlers Parallèles Présentation faite par: Mélanie AMPRIMO
Programmation parallèle
La programmation.
PARALLÉLISATION AUTOMATIQUE D’ALGORITHMES
Programmation Système et Réseau
OS/2. Introduction OS/2 est un système d’exploitation pour ordinateur personnel x86. Mais il fut aussi utilisé pendant des années dans les grosses entreprises.
Construction d'une hiérarchie mémoire faible consommation
1 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Jean-Jacques Girardot
Introduction et Généralités sur l’Algorithmique
PROJET CAPS Compilation, Architecture, Processeurs Superscalaires et Spécialisées.
Intelligence artificielle : présentation du cours
UE MAREP Cours 12 : Révisions
Introduction aux architectures parallèles
Calcul mental.
IFT209 – Programmation Système
1 Grid, Virtualisation, et HPC Bernard Ourghanlian CTO & CSO – Microsoft France.
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.
Ecole Informatique 2010 La Programmation des Architectures Multi-cœurs Cécile Barbier Fatih Bellachia Alain Masserot.
Transcription de la présentation:

8INF856 Programmation sur architectures parallèles

Contenu Motivations Notions élémentaires Méthode scientifique moderne Évolution des supercalculateurs Où trouver le parallélisme? Programmer un système parallèle

Qu’est-ce que le calcul parallèle? Résoudre un problème plus rapidement en utilisant plusieurs processeurs E.g. Multiplication matricielle: C = A X B Maintenant considéré comme une façon standard de résoudre des problèmes nécessitant une grande puissance de calcul.

Qu’est-ce qu’un ordinateur parallèle? Système informatique avec plusieurs processeurs supportant la programmation parallèle. 2 modèles possibles: Multiprocesseur centralisé: Mémoire partagée par tous les processeurs Multi-ordinateur: Mémoire locale à chaque processeurs Réseau d’interconnection

Qu’est-ce que la programmation parallèle? Programmation dans un langage permettant d’indiquer que certaines instructions peuvent être exécutées de façon simultanée sur différents processeurs. Problématiques: Partition du problème Synchronisation des processeurs Dépendences entre les tâches à réaliser Répartition du travail entre les processeurs

La programmation parallèle est-elle vraiment nécessaire? Alternative: Compilateur permettant d’extraire le parallélisme d’un programme conventionnel. La construction d’un tel compilateur pose des défis d’une très grande difficulté. L’accent est surtout mis sur la parallélisation des boucles Analyse de la dépendance Analyse du gain de performance

La programmation parallèle est-elle vraiment nécessaire? Exemple 1: int S=0; for (int i=0; i<N; i++) S = S + T[i]; Exemple 2: T[0]=0; T[1]=1; for (int i=2; i<=N; i++) T[i] = T[i-1] + T[i-2];

La programmation parallèle est-elle vraiment nécessaire? Conclusion: Il est souvent préférable d’utiliser un algorithme indiquant comment extraire le parallélisme d’un problème La programmation parallèle sert à exprimer un tel algorithme.

Langages parallèles Sur les machines à mémoire partagée, la programmation multithread est la méthode la plus utilisée. Problème: Difficile et sujet à erreurs. Alternatives: Langages ou API permettant d’utiliser le multithreading de façon transparente: Ex. Cilk et openMP

Langages parallèles Sur les machines à mémoire distribuée, on utilise généralement des langages permettant la transmission de message d’un processeur à un autre. MPI (Message Passing Interface) est une norme définissant une bibliothèque permettant le passage de message. Elle est utilisable avec C, C++, Java et Fortran.

Langages parallèles Cartes graphiques: de plus en plus utilisées pour effectuer du calcul GPGPU (General-purpose computing on graphics processing units) Cuda: extension des langages C, C++ et Fortran permettant de programmer des cartes NVIDIA seulement. OpenCL: Permet de programmer des systèmes parallèles hétérogènes.

Méthode scientifique classique Nature Observation Expérimentation physique Théorie

Méthode scientifique moderne Nature Observation Simulation numérique Experimentation physique Théorie

Quelques problèmes fondamentaux posant un défi à l’informatique Calcul de la structure électronique pour la fabrication de nouveaux matériaux Dynamique des fluides Prédiction météorologique Récupération efficace de l’huile Calcul pour comprendre la nature fondamentale de la matière Séquençage du génome humain Vision et reconnaissance de la parole Traitement de données massives (Big Data)

Évolution des supercalculateurs Supercalculateurs: Ce sont les ordinateurs les plus puissant qui existent Typiquement, ils coutent environs 10 millions de dollars US ou plus.

Évolution des supercalculateurs Deuxième guerre mondiale ENIAC: 350 multiplications par secondes Calcul balistique Guerre froide. Supercalculateurs utilisés pour: Conception des armes nucléaires Cryptanalyse

Eniac (350 op/s) 1946 - (U.S. Army photo)

Évolution des supercalculateurs Premier supercalculateur(1976): Cray-1 (architecture vectorielle) 100 millions d’opf par seconde Initialement utilisé uniquement par les gouvernement, puis par les grandes compagnies: Compagnies pétrolières Constructeurs automobiles Compagnies pharmaceutiques

Évolution des supercalculateurs Cosmic Cube (1981) 64 Intel 8086 5 à 10 Mega flops (Mega=million) 2 fois moins cher que le VAX 11/780 et 10 fois plus rapide. Développé par des chercheurs de Caltech nCube (1985) Une vingtaine de compagnies dans les années 80s presque toutes disparues à la fin des années 90s

Tianhe-2 : le plus puissant des supercalculateurs actuels (2014) 125 cabinets; 4 cases par cabinets; 16 panneaux par case; 2 nœuds par panneau; 195 cœurs par nœud.

Tianhe-2 : le plus puissant des supercalculateurs actuels Fabriqué en Chine par la National University of Defense Technology (NUDT) 33,86 pétaflops 16000 nœuds Chaque nœud possède 2 processeurs de 12 cœurs chacun et 3 co-processeurs de 57 cœurs chacun. Nombre total de cœurs: 3 120 000 Système d’exploitation: Linux Mega flops = 106 flops Giga = 109 = milliard (billion) Tera = 1012 = billion (trillion) Peta = 1015 = billiard (quadrillion) Top 500

IBM Sequoia: Le plus puissant des supercalculateurs actuels (2012)

IBM Sequoia: Le plus puissant des supercalculateurs actuels Fabriqué par la compagnie IBM 16,32 pétaflops 98304 processeurs de 8 ou 16 cœurs Nombre total de cœurs: 1 572 864 Système d’exploitation: Linux Mega flops = 106 flops Giga = 109 = milliard (billion) Tera = 1012 = billion (trillion) Peta = 1015 = billiard (quadrillion) Top 500

Où trouver le parallélisme? Parallélisme de données Parallélisme fonctionnel Pipelining

Parallélisme de données La même opération est effectuée en parallèle sur différentes données. La même opération (addition) est effectuée sur les 100 premiers éléments des tableaux b et c. Les additions peuvent être faites en parallèle. For i = 0 to 99 do a[i] = b[i] + c[i]

Parallélisme fonctionnel Différentes tâches appliquées à différentes données. Les lignes 3 et 4 peuvent être exécutées simultanément sur différents processeurs. a = 2 b = 3 x = f(a,b) y = g(a,b) m = max(x,y)

Pipelining Une tâche est divisée en plusieurs paliers Chaque palier est un processus obtenant son entrée du palier précédent Exemple en Unix: cat fichier | grep *.txt | sort | lpr Similaire à une ligne d’assemblage industrielle

Exemple: Cycle d’instructions utilisant la technique du pipeline

Programmer un système parallèle 4 alternatives: Compilateur étendu: traduire un programme séquentiel en programme parallèle Langage étendu: Ajouter des opération parallèles Ajouter une couche au dessus d’un langage séquentiel Définir un nouveau langage parallèle

Stratégie 1: Compilateur étendu (Avantages) Sauve du temps Ne requiert aucune formation pour les programmeurs Il est plus facile de programmer de façon séquentielle

Stratégie 1: Compilateur étendu (Désavantages) L’aide du programmeur est nécessaire pour extraire un maximum de parallélisme d’un problème La technologie actuelle ne fonctionne que dans des situations simple: boucle, etc. Le code résultant peut devenir complexe

Stratégie 2: Langage étendu On ajoute des fonctionalité à un langage existant Créer et terminer des processus parallèles Synchronisation nécessaire On doit permettre aux processus de communiquer Ex. MPI, PVM, Processus/thread, OpenMP

Statégie 2: Langage étendu (Avantages) Les compilateurs sont faciles à implémenter Grande flexibilité dû à l’accès à des fonctions de bas niveau Méthode très populaire donc portable

Statégie 2: Langage étendu (Désavantages) Aucune aide de la part du compilateur Programmes difficiles à déboguer

Stratégie 3: Ajouter une couche Couche inférieure Manipule sa part des données et sa partie des sorties Couche supérieure Création et synchronisation des processus Répartition des données entre les processus Le compilateur est responsable de traduire ces deux niveaux en code exécutable. Quelques prototypes existent. Par exemple: Computationally Oriented Display Environment (CODE). On peut classer OpenCL dans cette catégorie.

Stratégie 4: Nouveau langage Développer un langage entièrement nouveau Il en existe des dizaines Ajouter de nouvelles instructions à un langage existant: Fortran 90 High Performance Fortran C* Cilk

Stratégie 4: Nouveau langage Avantages Permet au programmeur d’indiquer au compilateur où se trouve le parallélisme Permet d’améliorer les performances Désavantages Requiert un nouveau compilateur Pas de standard Réticence des programmeurs.