1 / 83

Stage au laboratoire Informatique Distribuée

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

marion
Download Presentation

Stage au laboratoire Informatique Distribuée

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Stage au laboratoireInformatique Distribuée Grenoble, été 2005 Parallelisation adaptativede programmes itératifs Charles Bouillaguet

  2. 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

  3. Le laboratoire ID-IMAG

  4. Le laboratoire ID-IMAG charles

  5. De l’autre côté de la rue

  6. De l’autre côté de la rue

  7. Le cadre

  8. Jean-Louis Roch :mon directeur de stage • Chef de MOAIS • L’homme le plus speed du monde

  9. Deux ou trois notions d’algorithmique parallèle

  10. Deux ou trois notions d’algorithmique parallèle • Qu’est-ce qu’un programme parallèle ?

  11. Deux ou trois notions d’algorithmique parallèle • Qu’est-ce qu’un programme parallèle ? • Qu’est-ce qu’une architecture parallèle ?

  12. 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 ?

  13. 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 ?

  14. Qu’est-ce qu’un programme parallèle ?

  15. Qu’est-ce qu’un programme parallèle ? C’est un programme qui crée plusieurs tâches (qui s’exécutent simultanément)

  16. 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

  17. 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!

  18. 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∞)

  19. 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

  20. 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) ?

  21. 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))

  22. 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

  23. 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))

  24. Qu’est-ce qu’un programme parallèle ? MAIS…

  25. Qu’est-ce qu’un programme parallèle ? MAIS… En fait, T1 = (n/2) TFork + n T* et TFork >> T*

  26. 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…)

  27. Qu’est-ce qu’une architecture parallèle ?

  28. 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

  29. Qu’est-ce qu’une architecture parallèle ? Architecture à mémoire partagée

  30. Qu’est-ce qu’une architecture parallèle ? Architecture à mémoire partagée

  31. 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

  32. 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

  33. Qu’est-ce qu’une architecture parallèle ? Architecture à mémoire distribuée

  34. Qu’est-ce qu’une architecture parallèle ? Architecture à mémoire distribuée

  35. 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)

  36. 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

  37. 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

  38. 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

  39. Comment ça se programme ?

  40. 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

  41. 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

  42. 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

  43. 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

  44. 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

  45. 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

  46. KAAPI Comment ça se programme ?

  47. KAAPI Comment ça se programme ?

  48. Comment organiser les calculs ?

  49. Comment organiser les calculs ? Le scheduling

  50. Comment organiser les calculs ? Le scheduling 2 processeursT2 = 9 (triche : Fork est plus long que *) Tp dépend de l’ordonnancement des calculs. Optimal ?

More Related