Parallélisation Automatique



Documents pareils
Initiation au HPC - Généralités

Systèmes et traitement parallèles

Éléments de programmation et introduction à Java

Équilibrage Dynamique de Charge pour des Calculs Parallèles sur Cluster Linux - Une Évaluation de l Environnement AMPI.

Architecture des ordinateurs

Métriques de performance pour les algorithmes et programmes parallèles

Limitations of the Playstation 3 for High Performance Cluster Computing

Évaluation et implémentation des langages

INF6500 : Structures des ordinateurs. Sylvain Martel - INF6500 1

Une méthode de conception de systèmes sur puce

Quantification d incertitude et Tendances en HPC

1 Architecture du cœur ARM Cortex M3. Le cœur ARM Cortex M3 sera présenté en classe à partir des éléments suivants :

Sanity Check. bgcolor mgcolor fgcolor

Éléments d'architecture des ordinateurs

Architecture des calculateurs

Tout savoir sur le matériel informatique

UNIVERSITÉ D ORLÉANS ÉCOLE DOCTORALE MIPTIS MATHÉMATIQUES, INFORMATIQUE, PHYSIQUE THÉORIQUE ET INGÉNIEURIE DES SYSTÈMES. THÈSE présentée par :

Parallélisme et Répartition

Multiprogrammation parallèle générique des méthodes de décomposition de domaine

Informatique industrielle A Systèmes temps-réel J.F.Peyre. Partie I : Introduction

ELP 304 : Électronique Numérique. Cours 1 Introduction

Programmation parallèle et distribuée

Eléments d architecture des machines parallèles et distribuées

AXES DE RECHERCHE - DOMAINE D'INTERET MAJEUR LOGICIELS ET SYSTEMES COMPLEXES

Chapitre 1 - Langages de description d architectures matérielles hybrides

PROGRAMME DU CONCOURS DE RÉDACTEUR INFORMATICIEN

IV- Comment fonctionne un ordinateur?

Introduction aux systèmes temps réel. Iulian Ober IRIT

ÉdIteur officiel et fournisseur de ServIceS professionnels du LogIcIeL open Source ScILab

Hiérarchie matériel dans le monde informatique. Architecture d ordinateur : introduction. Hiérarchie matériel dans le monde informatique

2015 // des formations. programme. Retrouvez toutes ces informations sur enseirb-matmeca.bordeaux-inp.fr

CH.3 SYSTÈMES D'EXPLOITATION

THÈSE. Pour obtenir le grade de. Spécialité : Informatique. Arrêté ministériel : 7 août Présentée et soutenue publiquement par.

Potentiels de la technologie FPGA dans la conception des systèmes. Avantages des FPGAs pour la conception de systèmes optimisés

Programme de la 1ère année

Les environnements de calcul distribué

Exécution des instructions machine

Architecture matérielle des systèmes informatiques

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

T. Gasc 1,2,3, F. De Vuyst 1, R. Motte 3, M. Peybernes 4, R. Poncet 5

Quoi de neuf en LabVIEW FPGA 2010?

Cours n 12. Technologies WAN 2nd partie

Conception des systèmes répartis

Modules du DUT Informatique proposés pour des DCCE en 2014/2015

Fonctionnement et performance des processeurs

TABLE DES MATIÈRES CHAPITRE I. Les quanta s invitent

Pour obtenir le grade de. Arrêté ministériel : 7 août Sylvain Genevès

Cours 1 : La compilation

REALISATION d'un. ORDONNANCEUR à ECHEANCES

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Cours 1 : Qu est-ce que la programmation?

Quantification Scalaire et Prédictive

THÈSE. pour obtenir le grade de. Spécialité : "Informatique : Systèmes et Communications"

UNIVERSITÉ DE MONTRÉAL ANALYSE DE PERFORMANCE MULTI-NIVEAU ET PARTIONNEMENT D APPLICATION RADIO SUR UNE PLATEFORME MULTIPROCESSEUR

Plan du cours. Autres modèles pour les applications réparties Introduction. Mode de travail. Introduction

Une bibliothèque de templates pour CUDA

Eric Bertrand 08/11/06 Maître de conférence 1

Contributions à l expérimentation sur les systèmes distribués de grande taille

Programmation C. Apprendre à développer des programmes simples dans le langage C

Performances et optimisations

HISTORIQUE DES SYSTEMES D'EXPLOITATION (S.E.)

Tests de performance du matériel

GCOS 7 sur microprocesseur standard Diane Daniel POIRSON 14 octobre 2004 Matériels 64 / DPS 7 / DPS 7000 Architecture & Evolution - Daniel POIRSON 1

Introduction à la Programmation Parallèle: MPI

Catalogue des stages Ercom 2013

4.2 Unités d enseignement du M1

Conférence sur les microcontroleurs.

Optimisation de logiciels de modélisation sur centre de calcul

Systèmes d exploitation

Introduction à MATLAB R

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

La mémoire. Un ordinateur. L'octet. Le bit

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

<Insert Picture Here> Solaris pour la base de donnés Oracle

Université de La Rochelle. Réseaux TD n 6

11 Février 2014 Paris nidays.fr. france.ni.com

QUESTION 1 {2 points}

ANALYSTE PROGRAMMEUR DIPLÔME D ÉTABLISSEMENT

Cours Bases de données

Conception et Intégration de Systèmes Critiques

Le Collège de France crée une chaire pérenne d Informatique, Algorithmes, machines et langages, et nomme le Pr Gérard BERRY titulaire

1 Description générale de VISFIELD

Profil UML pour TLM: contribution à la formalisation et à l automatisation du flot de conception et vérification des systèmes-sur-puce.

I00 Éléments d architecture

Gestion de mémoire secondaire F. Boyer, Laboratoire Sardes

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Traduction des Langages : Le Compilateur Micro Java

Architecture des ordinateurs

Vers du matériel libre

MODULE I1. Plan. Introduction. Introduction. Historique. Historique avant R&T 1ère année. Sylvain MERCHEZ

Exécutif temps réel Pierre-Yves Duval (cppm)

Rapport d activité. Mathieu Souchaud Juin 2007

LA MESURE INDUSTRIELLE

Runtime. Gestion de la réactivité des communications réseau. François Trahay Runtime, LaBRI sous la direction d'alexandre Denis Université Bordeaux I

Thème 3 Conception et vérification d architectures de systèmes sur puce

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

La carte à puce. Jean-Philippe Babau

Représentation d un entier en base b

CQP 112 Introduc/on à la programma/on. Thème 2 : Architecture d un système informa/que. Département d informa/que

Transcription:

Parallélisation Automatique Paul Feautrier ENS de Lyon Paul.Feautrier@ens-lyon.fr 8 septembre 2008 1 / 23

Pourquoi la parallélisation automatique? Les gains de performances dus à la technologie s amenuisent pour des raisons physiques (effets quantiques, dissipation) Les applications nouvelles (3D et 4D, analyse et reconnaissance, sémantique) demandent de plus en plus de puissance Une seule solution, le parallélisme Pour se faciliter la vie : écrire un compilateur qui traduit un programme séquentiel en un programme parallèle. 2 / 23

Evolution de la technologie, I La loi de Moore n est plus ce qu elle était : densité doublement tous les 18 mois doublement tous les 2 ans doublement tous les 3 ans 2000 2008? La finesse de gravure se rapproche dangeureusement des tailles atomiques. Des effets quantiques et de courants de fuite apparaissent. La densité ne va plus augmenter à la même vitesse La distribution d horloge sur fils conducteurs devient de plus en plus difficle (biais) et de plus en plus gourmande en énergie (30% de la consommation sur un processeur moderne). La fréquence d horloge plafonne vers 3 Ghz. 3 / 23

Evolution de la technologie, II Par contre, il n y a pas d obstacle théorique à augmenter la taille du chip. Que faire de ces portes supplémentaires? Réaliser un processeur plus complexe, exploitant le parallélisme implicite. Il semble qu une limite soit atteinte (diminishing return) Implanter plusieurs processeurs simples sur une seule puce. Excellent pour la consommation électrique, mais difficile à programmer Ajouter des co-processeurs, parce que les processeurs généralistes sont peu efficaces (exemple : processeurs pour le traitement du signal, pour la cryptographie). 4 / 23

Evolution des Applications Plus de puissance applications plus complexes. Course à la performance (simulation physique, mathématique, sociale, sémantique, reconnaissance de la parole, des images...) Généralisation des systèmes embarqués : ordinateurs pas ou peu programmables, cachés à l intérieur d un produit grand public : minimiser la taille du programme et des données minimiser la consommation électrique (durée de vie des batteries) algorithmes figés, donc possibilité d utiliser des accélérateurs matériels et des méthodes de compilation coûteuses. 5 / 23

Critères de classification : Classification de Flynn : SISD, SIMD, MISD (n existe pas), MIMD Ma classification : deux critères une horloge / plusieurs horloges, synchrone / asynchrone, déterministe / non déterministe mémoire globale / mémoire distribuée la difficulté de programmation croit de gauche à droite ; la difficulté de réalisation décroit de gauche à droite! 6 / 23

Une horloge, une mémoire Processeur séquentiel Exploitation du parallélisme niveau instruction (ILP) Goulot d étranglement pour l accès à la mémoire (memory bottleneck), caches multiples. Processeur VLIW Processeur vectoriel Accélérateurs matériels (ASIC, FPGA) 7 / 23

Une horloge, plusieurs mémoires Single Instruction, Multiple Data, SIMD Plusieurs processeurs appliquent la même instruction à des données différentes Chaque processeur possède sa propre mémoire Le fonctionnement est synchrone Il faut prévoir un réseau de communication et un ordinateur hôte. Les applications doivent être très régulières (algèbre linéaire, traitement d image) Le nombre de processeurs n est pas en général égal à la taille de l objet, d où l introduction du concept de processeur virtuel, qui a donné ensuite naissance aux threads. 8 / 23

Plusieurs horloges, une mémoire SMP (Symetric MultiProcessor) : plusieurs processeurs sur une même carte mère Multicore : plusieurs processeurs sur une seule puce SMT (Simultaneous Multi threading) : un seul processeur capable de passer d un thread à un autre à chaque défaut de cache (typiquement en un cycle). Problème essentiel, la bande passante mémoire : Chaque processeur a un cache indépendant Problème de la cohérence Le nombre de processeurs est limité à quelques dizaines Il est cependant possible d aller très au delà (SGI Origin : 700 processeurs), à l aide de multiples niveaux de caches et de la mémoire virtuelle distribuée (SDM). 9 / 23

Plusieurs horloges, plusieurs mémoires Ordinateurs à mémoire distribuée. Processeurs complets interconnectés par un réseau. Exemple : un ensemble de PC connectés par Ethernet. Performances limitées par le débit du réseau : réalisation de réseaux plus performants qu Ethernet : Myrinet, Quadrics, SCI... Une (ou deux) tâche par processeur échangeant des messages avec les autres tâches. Assure à la fois les échanges de données et les synchronisation. Les échanges doivent être aussi rare que possible. Evolution vers les Grilles de Calcul. Il existe des bibliothèques d échange de messages (PVM, MPI, logiciels pour la grille). 10 / 23

Circuits spécialisés, I Il arrive que l on puisse intégrer toute une application sur un seul chip (exemple : un modem). Comme le nombre de transistors augmente, il est même possible de réaliser un système multiprocesseur sur un chip (SoC) parfois muni d un réseau (NoC) Il est plus fréquent que l on isole le noyau d une application et que l on réalise un accélérateur couplé plus ou moins étroitement à un processeur généraliste Exemple bien connu : la carte graphique Autres exemples : transformateur de Fourier, analyseur de séquences génétiques, etc Ces circuits se connectent en général au bus PCI, qui est souvent le goulot d étranglement de la configuration. (Une carte graphique se connecte sur un bus plus proche du processeur) 11 / 23

Circuits spécialisés, II Deux grand types : Circuits classiques : structure analogue à celle d un processeur : Un chemin de données où les calculs sont effectués : registres, accès à la mémoire, opérateurs arithmétiques et logiques, et les connexions nécessaires. Un contrôleur, qui est un automate fini, qui assure l enchaînement des opérations, configure le chemin de données et interprète les signaux d état. Circuits systoliques : un grand nombre d opérateurs identiques interconnectés régulièrement par une grille 1D ou 2D. Les opérateurs peuvent contenir des données propres et recevoir des signaux de contrôle. Les applications doivent être très régulières. Avantage : il existe des méthodes de synthèse automatique. Exemple : le filtrage. 12 / 23

Circuits spécialisés, III Quelques problèmes : La taille du circuit : le prix du circuit augmente avec sa taille. Ajouter de la mémoire ou augmenter le parallélisme fait augmenter la taille, mais améliore les performance. Il y a un compromis à trouver. La prédictabilité : beaucoup de circuits spécialisés travaillent en temps réél téléphonie, télévision, pilotage, etc. Certains dispositifs ont des comportements difficiles à prédire (caches, réseaux). Remplacer les caches par des mémoires scratchpad. Utiliser des réseaux à garantie de service, ou ordonnancer les communications. la consommation électrique : parce que les système embarqués sont souvents autonomes. Le parallélisme réduit la consommation, la localité réduit la consommation, etc. 13 / 23

La programmation parallèle Vue générale Fortran, C, Matlab Langages interprétés SGBD Java Python Perl Shell programmation parallèle directe parallélisation manuelle Programmes séquentiels nouveau "dusty decks" Langages parallèles Occam HPF Fortran95 OpenMP parallélisation automatique synthèse de haut niveau Interprète parallèle compilation vérification C + assembleur + bibliothèques (threads) + OS VHDL Asynchrone Passage de Message SoC SMP Multicore SMT SIMD Synchrone VLIW Vector ASIC FPGA 14 / 23

Programmation parallèle, I Programmation bas niveau : C (ou assembleur) + bibliothèque parallèle (ou système d exploitation). Exemples : C + primitives Unix (fork/wait) threads POSIX, threads Java C + MPI Un langage interprété peut avoir un interprète parallèle : Shell, SGBD, etc Il existe (ou il existera) des logiciels parallèlisés (jeux, tableurs, etc) Il existe de nombreux langages parallèles, en général extensions de langages séquentiels : Fortan 95 (vecteurs), HPF (Fortran + distribution) OpenMP (Fortran ou C + boucles parallèles), ADA. 15 / 23

Programmation parallèle Où se place la parallélisation automatique? Un nouvel algorithme est en général mis au point en séquentiel (exemple de l utilisation de Matlab en traitement du signal) Il faut ensuite le paralléliser, soit à la main, soit automatiquement Les compilateurs pour langage parallèles utilisent des techniques issues de la parallélisation automatique En l état de la recherche, ce n est possible que si le programme est régulier (voir plus loin) Directions de recherche : Augmenter la puissance des paralléliseurs automatiques Concevoir des compilateurs hybrides, qui font le maximum, et s en remettent au programmeur dans les cas difficiles. 16 / 23

: le produit matrice vecteur Il existe de multiples façons d écrire le produit matrice * vecteur. Version naïve : for(i=0; i<n; i++){ s = 0.0; for(j=0; j<n; j++) s += a[i][j]*b[j]; c[i] = s; } Il n y a pas de parallélisme, parce qu il n y a qu un seul accumulateur, s. Mais on peut accumuler directement dans c. 17 / 23

Produit matrice vecteur, II for(i=0; i<n; i++){ c[i] = 0.0; for(j=0; j<n; j++) c[i] += a[i][j]*b[j]; } Les deux programmes sont-ils équivalents? Pourquoi? La boucle sur i est parallèle. Pourquoi? 18 / 23

Produit matrice vecteur, III On peut faire toutes les initialisations en bloc On reconnait une opération vectorielle. c[0..n-1] = 0.0; for(i=0; i<n; i++) for(j=0; j<n; j++) c[i] += a[i][j]*b[j]; 19 / 23

Produit matrice vecteur, IV On devine que l on a le droit d échanger les deux boucles On reconnait une autre opération vectorielle c[0..n-1] = 0.0. for(j=0; j<n; j++) c[0..n-1] += a[0..n-1][j]*b[j]; 20 / 23

De quel droit? Pour que tout ceci soit légitime, il faut que le programme final donne les mêmes résultats (au bit près) que le programme initial. Il faut justifier la parallélisation (ici, la vectorisation). Deux idées : Procéder étape par étape Mettre les preuves en facteur Pour l exemple : Expansion de scalaire : montrer que le flot des données n est pas modifié Modification de la structure des boucles : montrer que l histoire des valeurs successives prise par l un des c[i] ne change pas Le passage au vectoriel n est que de la reconnaissance de forme. 21 / 23

provisoire La parallélisation d un programme se fait par succession de transformations. Avant d appliquer une transformation, il faut savoir si elle est légale ; c est l analyse de programme qui permet de répondre à la question. L information essentielle est la description du flot des données : quelle est la source de chaque valeur utilisée dans les calculs. Du flot des données on déduit les contraintes d ordre d exécution. La reconnaissance de forme (boucles parallèles, opérations vectorielles, détection de récurrences) joue un role important La programmation parallèle est un mal nécessaire La parallélisation automatique peut simplifier le travail, au moins partiellement. 22 / 23

Plan du Cours Introduction La géométrie des programmes Tests de dépendance Ordonnancement Techniques élémentaires de parallélisation Génération du code parallèle Au delà des programmes réguliers 23 / 23