Télécharger la présentation
Publié parEudes Duquesne Modifié depuis plus de 9 années
1
8INF856 Programmation sur architectures parallèles
2
Contenu Motivations Notions élémentaires Méthode scientifique moderne
Évolution des supercalculateurs Où trouver le parallélisme? Programmer un système parallèle
3
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.
4
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
5
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
6
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
7
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];
8
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.
9
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
10
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.
11
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.
12
Méthode scientifique classique
Nature Observation Expérimentation physique Théorie
13
Méthode scientifique moderne
Nature Observation Simulation numérique Experimentation physique Théorie
14
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)
15
Évolution des supercalculateurs
Supercalculateurs: Ce sont les ordinateurs les plus puissant qui existent Typiquement, ils coutent environs 10 millions de dollars US ou plus.
16
É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
17
Eniac (350 op/s) 1946 - (U.S. Army photo)
18
É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
19
É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
20
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.
21
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: Système d’exploitation: Linux Mega flops = 106 flops Giga = 109 = milliard (billion) Tera = 1012 = billion (trillion) Peta = 1015 = billiard (quadrillion) Top 500
22
IBM Sequoia: Le plus puissant des supercalculateurs actuels (2012)
23
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: Système d’exploitation: Linux Mega flops = 106 flops Giga = 109 = milliard (billion) Tera = 1012 = billion (trillion) Peta = 1015 = billiard (quadrillion) Top 500
24
Où trouver le parallélisme?
Parallélisme de données Parallélisme fonctionnel Pipelining
25
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]
26
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)
27
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
28
Exemple: Cycle d’instructions utilisant la technique du pipeline
29
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
30
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
31
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
32
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
33
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
34
Statégie 2: Langage étendu (Désavantages)
Aucune aide de la part du compilateur Programmes difficiles à déboguer
35
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.
36
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
37
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.
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.