850 likes | 1.03k Views
Stage au laboratoire Informatique Distribuée. Grenoble, été 2005. Parallelisation adaptative de programmes itératifs. Charles Bouillaguet. Le laboratoire ID-IMAG. Commun CNRS-INRIA Fait partie de l’ I nstitut de M ath. A ppliquées de G renoble
E N D
Stage au laboratoireInformatique Distribuée Grenoble, été 2005 Parallelisation adaptativede programmes itératifs Charles Bouillaguet
Le laboratoire ID-IMAG • Commun CNRS-INRIA • Fait partie de l’Institut de Math. Appliquées de Grenoble • Deux équipes de recherche : MESCAL et MOAIS • MOAIS = Multi-programmation et Ordonnancement sur ressources distribuées pour les Applications Interactives de Simulation • Equipe jeune, beaucoup de stagiaires et de thésards
Le laboratoire ID-IMAG charles
Jean-Louis Roch :mon directeur de stage • Chef de MOAIS • L’homme le plus speed du monde
Deux ou trois notions d’algorithmique parallèle • Qu’est-ce qu’un programme parallèle ?
Deux ou trois notions d’algorithmique parallèle • Qu’est-ce qu’un programme parallèle ? • Qu’est-ce qu’une architecture parallèle ?
Deux ou trois notions d’algorithmique parallèle • Qu’est-ce qu’un programme parallèle ? • Qu’est-ce qu’une architecture parallèle ? • Comment ça se programme ?
Deux ou trois notions d’algorithmique parallèle • Qu’est-ce qu’un programme parallèle ? • Qu’est-ce qu’une architecture parallèle ? • Comment ça se programme ? • Comment organiser les calculs ?
Qu’est-ce qu’un programme parallèle ? C’est un programme qui crée plusieurs tâches (qui s’exécutent simultanément)
Qu’est-ce qu’un programme parallèle ? C’est un programme qui crée plusieurs tâches (qui s’exécutent simultanément) On peut le voir comme un graphe orienté acyclique
Qu’est-ce qu’un programme parallèle ? • Chaque noeud représente une opération • Une opération ne peut s’exécuter que lorsque tous ses parents ont terminé Exemple : calcul de 10!
Qu’est-ce qu’un programme parallèle ? • nombre de noeuds du graphe = nombre total d’opérations (noté T1) • plus long chemin dans le graphe = temps critique (noté T∞)
Qu’est-ce qu’un programme parallèle ? • nombre de noeuds du graphe = nombre total d’opérations (noté T1) • plus long chemin dans le graphe = temps critique (noté T∞) Chemin critique
Qu’est-ce qu’un programme parallèle ? • nombre de noeuds du graphe = nombre total d’opérations (noté T1) • plus long chemin dans le graphe = temps critique (noté T∞) Temps d’exécution sur p processeurs (Tp) ?
Qu’est-ce qu’un programme parallèle ? Théorie de la factorielle parallèle Let rec produit fromto =match (to - from) with | 0 -> from | 1 -> from * to | n -> let i = (to-n/2) in (Fork (produit from i)) * (Fork (produit (i+1) to))
Fork * Qu’est-ce qu’un programme parallèle ? Théorie de la factorielle parallèle Let rec produit fromto =match (to - from) with | 0 -> from | 1 -> from * to | n -> let i = (to-n/2) in (Fork (produit from i)) * (Fork (produit (i+1) to)) A.B.C. à n/2-1 noeuds A.B.C. à n-1 noeuds
Fork T1 = O(n) T∞ = O(log n) * Qu’est-ce qu’un programme parallèle ? Théorie de la factorielle parallèle Let rec produit fromto =match (to - from) with | 0 -> from | 1 -> from * to | n -> let i = (to-n/2) in (Fork (produit from i)) * (Fork (produit (i+1) to))
Qu’est-ce qu’un programme parallèle ? MAIS… En fait, T1 = (n/2) TFork + n T* et TFork >> T*
Qu’est-ce qu’un programme parallèle ? Exemple avec 2 processeurs : 9 étapes de calcul sur 2 processeurs 10 étapes sur un seul processeur (et encore…)
Qu’est-ce qu’une architecture parallèle ? • Deux types de base • Les machines à mémoire partagée • Les machines à mémoire distribuée Et un mélange des deux • Les clusters de machines SMP
Qu’est-ce qu’une architecture parallèle ? Architecture à mémoire partagée
Qu’est-ce qu’une architecture parallèle ? Architecture à mémoire partagée
Qu’est-ce qu’une architecture parallèle ? Architecture à mémoire partagée • Que des avantages : • Possibilité d’avoir des variables globales • Communication entre les tâches très simple et très rapide • Synchronisation des tâches peu coûteuse
Qu’est-ce qu’une architecture parallèle ? Architecture à mémoire partagée • Que des avantages : • Possibilité d’avoir des variables globales • Communication entre les tâches très simple et très rapide • Synchronisation des tâches peu coûteuse • Un inconvénient : • Le prix (et la complexité) de la machine est exponentiel en le nombre de processeurs
Qu’est-ce qu’une architecture parallèle ? Architecture à mémoire distribuée
Qu’est-ce qu’une architecture parallèle ? Architecture à mémoire distribuée
Qu’est-ce qu’une architecture parallèle ? Architecture à mémoire distribuée • Que des inconvénients : • Communication inter-processus lente et problématique (machines non-homogènes) • Pas de variables globales…(dommage, c’était bien pratique)
Qu’est-ce qu’une architecture parallèle ? Architecture à mémoire distribuée • Que des inconvénients : • Communication inter-processus lente et problématique (machines non-homogènes) • Pas de variables globales…(dommage, c’était bien pratique) • Mais bon… • Coût linéaire, possibilité d’avoir une grosse puissance de calcul : 100, 400, 1000 machines
Qu’est-ce qu’une architecture parallèle ? • En pratique… • On a souvent des clusters de machines SMP (seuil critique à 2) • Problème : • Certaines tâches communiquent entre elles par le réseau, d’autres par une mémoire centrale • La création d’une tâche “locale” et d’une tâche distante ne mettent pas en jeu les mêmes mécanismes
Qu’est-ce qu’une architecture parallèle ? En pratique… On a souvent des clusters de machines SMP (seuil critique à 2) Problème : C’est le cauchemar du programmeur
Comment ça se programme ? • Pour garantir un minimum de portabilité, on aimerait que le programme soit indépendant… • Du nombre de processeurs • Du type d’architecture
Comment ça se programme ? • Pour garantir un minimum de portabilité, on aimerait que le programme soit indépendant… • Du nombre de processeurs • Du type d’architecture Langages parallèlesLibrairies parallèles pour langages séquentiels
KAAPI Comment ça se programme ? Kernel for Adaptative, Asynchronous Parallel and Interactive programming • Librairie C++ developpée à ID • Gère la création de tâches de manière transparente • Gère la communication entre les tâches et la synchronisation • Majoration de Tp • Tolérance aux panne • Ajout/suppression de ressources en ligne
KAAPI Comment ça se programme ? Kernel for Adaptative, Asynchronous Parallel and Interactive programming • Librairie C++ developpée à ID • Gère la création de tâches de manière transparente • Gère la communication entre les tâches et la synchronisation • Majoration de Tp • Tolérance aux panne • Ajout/suppression de ressources en ligne • Un peu lourdingue à utiliser • API de haut niveau déficiente
KAAPI Comment ça se programme ? • Le programme : graphe de flot de données (“dataflow”) • Graphe bi-partite • Noeuds ronds : données • Noeuds carrés : fonctions • Flèches : dépendances
KAAPI Comment ça se programme ? • KAAPI calcule le graphe lors de l’exécution. Cela permet : • De gérer la synchronisation entre les tâches • De déplacer les données sur la bonne machine pour exécuter une cloture donnée
KAAPI Comment ça se programme ?
KAAPI Comment ça se programme ?
Comment organiser les calculs ? Le scheduling
Comment organiser les calculs ? Le scheduling 2 processeursT2 = 9 (triche : Fork est plus long que *) Tp dépend de l’ordonnancement des calculs. Optimal ?