Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
1
6GEN720 Réseaux d’ordinateurs
Chapitre 0 - Programmation parallèle - Daniel Audet -
2
Pourquoi un chapitre 0 ? Deux raisons : 1- Complète le cours d’architecture des ordinateurs que vous avez déjà suivi. 2- Excellent exercice pour se familiariser avec les protocoles de communication (objets du cours)
3
Sujets abordés (rapide survol du domaine)
Qu’est-ce que le calcul parallèle ? Domaines d’application Qu’est-ce qui limite le calcul parallèle ? Diversité des systèmes parallèles Les modèles de programmation MPI Exemples simples de programme
4
Qu’est-ce que le calcul parallèle ?
5
Qu’est-ce que le calcul parallèle ?
6
Domaines d’application
7
Qu’est-ce qui limite le calcul parallèle ?
???????
8
Qu’est-ce qui limite le calcul parallèle ?
La loi de Amdahl … Qui s’en rappelle ?...
9
Rappel de la loi de Amdahl
Soit une tâche requérant un temps T pour être exécutée sur un système uniprocesseur. Supposons qu'une fraction x (en pourcentage) de ce temps puissent être exécuté en parallèle par N processeurs. L'autre partie ne pouvant être exécutée que par un seul processeur (due une gestion très lourde, par exemple). Schéma :
10
Rappel de la loi de Amdahl
Le gain de performance S sera donc: On notera que si N tend vers l'infini, alors S -> 1/(1-x)
11
Rappel de la loi de Amdahl
Graphique :
12
Rappel de la loi de Amdahl
Le gain n'est donc intéressant que si x > 0.8 Note: On suppose ici que le programme ne change pas lorsqu'on augmente N (pas toujours vrai).
13
Diversité des systèmes parallèles
SIMD et MIMD (voir les différents systèmes commerciaux)
14
Les modèles de programmation
Plusieurs « méthodes » ont été développées pour les programmer ces ordinateurs « parallèles ». Programmation utilisant une mémoire partagée (sans “threads”) Programmation utilisant des “Threads” Programmation utilisant une mémoire distribuée Programmation utilisant des données parallèles (Combinaison de modèles => approche hybride) Pour plus de détails, voir
15
Les modèles de programmation
Avec le temps, on a élaboré deux approches plus générales qui peuvent s’appliquer à tous les modèles précédents : “Single Program Multiple Data” (SPMD) “Multiple Program Multiple Data” (MPMD)
16
MPI Afin de se familiariser à la programmation parallèle, nous allons élaborer des programmes pouvant être exécutés par des systèmes à mémoire distribuée (« message passing »). Très similaire aux échanges réalisés dans les protocoles de communication Connaissez-vous un système à mémoire distribuée ???
17
MPI Le local P2-1020… Un réseau d’ordinateurs est donc un exemple de système à mémoire distribuée. Les « grappes de serveurs » (« clusters ») font également partie de cette catégorie.
18
MPI Comment ça « fonctionne » ?
19
MPI Pour faire travailler plusieurs ordinateurs d’un réseau ensemble, on utilise généralement un API (« Application Programming Interface ») .
20
MPI Un API a particulièrement marqué son époque (1989) => PVM
Qui veut dire… Site officiel :
21
MPI Les développeurs de PVM ont fait en sorte que les deux méthodes de programmation vues précédemment puissent être utilisées: MPMD (« multiple program multiple data") programme maître programme(s) esclave(s) SPMD ("single program multiple data") programme spmd On passe rapidement On passe rapidement
22
MPI PVM a été supplanté par d’autres standards: MPICH Open MPI
Microsoft MPI (MS-MPI) …
23
MPI Dans le premier travail à remettre, vous utiliserez MS-MPI.
La documentation concernant les fonctions du « standard » MPI se retrouve sur Internet:
24
Exemples simples de programme
25
Exemples simples de programme
Les fonctions de MPI sont écrites en C … les utilisateurs désirent obtenir le maximum de performance ! Lorsqu’un programme parallèle est lancé à l’aide de MPI, voici ce qui se produit (pour cet exemple, 3 processus sont lancés)
26
Exemples simples de programme
1er exemple pratique: Hello_World.c int MPI_Send (const void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm) int MPI_Recv (void *buf, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm comm, MPI_Status *status) Pour exécuter le programme: C:\Temp\examples\mpiexec -n 2 hello_world.exe Nombre de processus devant être lancés. Si on ne le précise pas dans la commande, les processus sont lancés sur le même ordinateur => pas de gain de performance…
27
Exemples simples de programme
2e exemple: le calcul du nombre π Calcul de l’intégrale de 4/(1+x^2) de 0 à 1 (autre outil :
28
Exemples simples de programme
Programme: PI_Calc.c (calcul de pi avec send et recv...)
29
Exemples simples de programme
3e exemple: icpi.c (calcul de pi avec Bcast, Reduce,...) MPI_Bcast (le 2e paramètre indique le nombre d’éléments à transmettre) : MPI_Reduce :
30
Tout se corse lorsqu’on construit une séquence de communication complexe (introduction de barrières, échanges de messages sous certaines conditions,...)
31
Interviennent alors une paramètre additionnel (le temps…) avec lequel il faut composer. Ceci rend la conception et le déverminage beaucoup plus complexe, particulièrement dans le cas de systèmes hétérogènes (puissance de calcul différente pour chaque ordinateur).
32
Pour ceux et celles qui veulent en savoir plus sur les systèmes parallèles…
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.