systèmes parallèles et distribués · introduction systèmesdistribués miseencommunderesources...

58
Systèmes parallèles et distribués Grégory Mounié 2013-12 Grégory Mounié Systèmes parallèles et distribués 2013-12 1 / 58

Upload: others

Post on 20-Jan-2021

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Systèmes parallèles et distribués · Introduction Systèmesdistribués Miseencommunderesources matérielles: CPU,mémoire, logiciels,données Grégory Mounié Systèmes parallèles

Systèmes parallèles et distribués

Grégory Mounié

2013-12

Grégory Mounié Systèmes parallèles et distribués 2013-12 1 / 58

Page 2: Systèmes parallèles et distribués · Introduction Systèmesdistribués Miseencommunderesources matérielles: CPU,mémoire, logiciels,données Grégory Mounié Systèmes parallèles

Outline

1 Introduction

2 Performances

3 Problèmes du calcul parallèle

4 Intergiciels

Grégory Mounié Systèmes parallèles et distribués 2013-12 2 / 58

Page 3: Systèmes parallèles et distribués · Introduction Systèmesdistribués Miseencommunderesources matérielles: CPU,mémoire, logiciels,données Grégory Mounié Systèmes parallèles

Introduction

Systèmes distribués

Mise en commun de resourcesmatérielles : CPU, mémoire,logiciels, données

Grégory Mounié Systèmes parallèles et distribués 2013-12 3 / 58

Page 4: Systèmes parallèles et distribués · Introduction Systèmesdistribués Miseencommunderesources matérielles: CPU,mémoire, logiciels,données Grégory Mounié Systèmes parallèles

Introduction

Tolérance aux pannes

Stockage pérenneOnly wimps use tape backup: real men just upload their important stuff onftp, and let the rest of the world mirror it. L.T.

Définition de LamportA distributed system is one that stops you from getting any work donewhen a machine you’ve never heard of, crashes.

Grégory Mounié Systèmes parallèles et distribués 2013-12 4 / 58

Page 5: Systèmes parallèles et distribués · Introduction Systèmesdistribués Miseencommunderesources matérielles: CPU,mémoire, logiciels,données Grégory Mounié Systèmes parallèles

Introduction

Systèmes distribués

AttentionUn programme distribué présente de nombreux désavantages! D’unemanière générale il vaut mieux éviter le recours aux programmes distribués.

Grégory Mounié Systèmes parallèles et distribués 2013-12 5 / 58

Page 6: Systèmes parallèles et distribués · Introduction Systèmesdistribués Miseencommunderesources matérielles: CPU,mémoire, logiciels,données Grégory Mounié Systèmes parallèles

Introduction

Dans ce cours

Objectif⇒ vers des systèmes à très grand échelle

réseaux pair-à-pair: edonkey, freenet, gnutellacalcul distribué orienté performance: boinc, mpi, charm++, kaapi

OutilsIntergiciels, dépend de la plateforme viséeAlgorithmes, dépend du type d’intergiciel, de l’échelle visé, et bien sûrdu problème.

Grégory Mounié Systèmes parallèles et distribués 2013-12 6 / 58

Page 7: Systèmes parallèles et distribués · Introduction Systèmesdistribués Miseencommunderesources matérielles: CPU,mémoire, logiciels,données Grégory Mounié Systèmes parallèles

Introduction

Exemple d’intergiciel: BOINC

issu de SETI@HOMEinfrastructure de calculnombreux projets: radioactive@home, docking@home, milkyway@home

Le 2 décembre 2013Actifs: 243883 volunteers, 509743 computers. 24-hour average: 8.11PetaFLOPS. (rang 5.5 au top500)

Grégory Mounié Systèmes parallèles et distribués 2013-12 7 / 58

Page 8: Systèmes parallèles et distribués · Introduction Systèmesdistribués Miseencommunderesources matérielles: CPU,mémoire, logiciels,données Grégory Mounié Systèmes parallèles

Introduction

Déroulement des séances

1 cours: Speedup, Amdahl, Graham, équilibrage, MPI2 cours: tolérance aux pannes/opérations de communication3 TP: lancé de rayon distribué (MPI)4 TP: lancé de rayon (MPI)5 TP: simgrid / déploiement d’applications6 cours: présentation de votre projet devant les autres étudiants (10

min)

Grégory Mounié Systèmes parallèles et distribués 2013-12 8 / 58

Page 9: Systèmes parallèles et distribués · Introduction Systèmesdistribués Miseencommunderesources matérielles: CPU,mémoire, logiciels,données Grégory Mounié Systèmes parallèles

Introduction

Projet

trinome (10 min de présentation+5min question)implantation des techniques du courslangagues / bibliothèques parmi 20 choix arbitraire (transparentsuivant)make distribué

I compilationI blender

analyse de performances : jusqu’à 80 coeurs sur 40 PCs

Grégory Mounié Systèmes parallèles et distribués 2013-12 9 / 58

Page 10: Systèmes parallèles et distribués · Introduction Systèmesdistribués Miseencommunderesources matérielles: CPU,mémoire, logiciels,données Grégory Mounié Systèmes parallèles

Introduction

Les environnements et bibliothèques possiblesChaque groupe choisira un enviromment différents parmi les 20 suivants:

1 Les environnement de programmations parallèles distribuées:I MPI (Communication Asynchrone); MPI (Communication

uni-directionnelles Read/Write); MPI (Communication Collectives);MPI (avec l’interface fichier de MPI);

I Charm++ (Bibliothèque C++)I Python PPI Hadoop (Map-Reduce de Apache)I Python + Disco (map reduce en python)

2 Les languages dédiésI Julia (http://julialang.org); Erlang (http://erlang.org);

Chapel (http://chapel.cray.com)3 Les objets distribués

I Java-RMI; DO de Objective-C (gnustep); Distributed ADA (polyorb);Python + Pyro; RPC Go (http://golang.org); RPC C; Corba;

4 AutresI Zero-MQ (bibliothèque réseau de haut niveaux)I Simgrid (simulation)

Grégory Mounié Systèmes parallèles et distribués 2013-12 10 / 58

Page 11: Systèmes parallèles et distribués · Introduction Systèmesdistribués Miseencommunderesources matérielles: CPU,mémoire, logiciels,données Grégory Mounié Systèmes parallèles

Introduction

Lanceurs parallèles

Pour lancer vos applications, il faudra être capable de déployer les instancessur les PCs

Lanceurs parallèlesIl faut éviter la boucle for séquentielle de ssh qui ne passe pas à l’échelle:

taktuk est le lanceur conseilléssh-add et taktuk -c "ssh -A"

Grégory Mounié Systèmes parallèles et distribués 2013-12 11 / 58

Page 12: Systèmes parallèles et distribués · Introduction Systèmesdistribués Miseencommunderesources matérielles: CPU,mémoire, logiciels,données Grégory Mounié Systèmes parallèles

Performances

Évaluation de performance

La mesure du tempsLa mesure précise du temps est un problème dès qu’il y a plusieurs horloges

déjà sur un multi-coeur, pour avoir des temps à la nanosecondeen distribuée

POSIXclock_gettime() de <time.h>.

Grégory Mounié Systèmes parallèles et distribués 2013-12 12 / 58

Page 13: Systèmes parallèles et distribués · Introduction Systèmesdistribués Miseencommunderesources matérielles: CPU,mémoire, logiciels,données Grégory Mounié Systèmes parallèles

Performances

Accélération

Definition (L’accélération (Speedup))C’est le temps du meilleur calcul séquentiel divisé par le temps de calculparallèle sur m processeurs ( T1/Tm )

Grégory Mounié Systèmes parallèles et distribués 2013-12 13 / 58

Page 14: Systèmes parallèles et distribués · Introduction Systèmesdistribués Miseencommunderesources matérielles: CPU,mémoire, logiciels,données Grégory Mounié Systèmes parallèles

Performances

L’efficacité

L’efficacité (Efficiency)C’est l’accélération multiplié par l’inverse du nombre m de ressources decalculs ( T1/(m ∗ Tm) ).

Accélération superlinéaire et super efficacitéNormalement l’accélération est plus petite que m et lefficacité plus petiteque 1. Ce n’est pas toujours vrai (cache, algorithme non déterministe).

Grégory Mounié Systèmes parallèles et distribués 2013-12 14 / 58

Page 15: Systèmes parallèles et distribués · Introduction Systèmesdistribués Miseencommunderesources matérielles: CPU,mémoire, logiciels,données Grégory Mounié Systèmes parallèles

Performances

Algorithme 1: l’Addition

QuestionComment additionne-t-on deux entiers ? Quelle est le problème dans uneparallélisation de cet algorithme ? Comment faire ?

Grégory Mounié Systèmes parallèles et distribués 2013-12 15 / 58

Page 16: Systèmes parallèles et distribués · Introduction Systèmesdistribués Miseencommunderesources matérielles: CPU,mémoire, logiciels,données Grégory Mounié Systèmes parallèles

Performances

Algo 2: Tri PRAM

QuestionQuelle est l’opération de base d’un tri ? Comment la paralléliser ?Pourquoi la compléxité d’un tri devient alors N2 ?.

Grégory Mounié Systèmes parallèles et distribués 2013-12 16 / 58

Page 17: Systèmes parallèles et distribués · Introduction Systèmesdistribués Miseencommunderesources matérielles: CPU,mémoire, logiciels,données Grégory Mounié Systèmes parallèles

Performances

Algo 3: Tri MCSTL

QuestionComment améliorer le surcoût du tri ?

Idée du merge-sort parallèle (mémoire partagée)1 merge-sort local2 échange de pivots, tri et échanges des chunks correspondants3 fusion des chunks

Grégory Mounié Systèmes parallèles et distribués 2013-12 17 / 58

Page 18: Systèmes parallèles et distribués · Introduction Systèmesdistribués Miseencommunderesources matérielles: CPU,mémoire, logiciels,données Grégory Mounié Systèmes parallèles

Performances

Tri rapide

Grégory Mounié Systèmes parallèles et distribués 2013-12 18 / 58

Page 19: Systèmes parallèles et distribués · Introduction Systèmesdistribués Miseencommunderesources matérielles: CPU,mémoire, logiciels,données Grégory Mounié Systèmes parallèles

Performances

Merge

Accélération de l’exécution

0

1

2

3

4

5

6

7

8

9

0 50000 100000 150000 200000 250000

T STL

/ T L

ibra

ry

Size

STL min element on 8 threads

X-KaapiKaSTL

PaSTeLTBBCilk

Comment commenter ces courbes rapidement?!

jeudi 3 septembre 2009Grégory Mounié Systèmes parallèles et distribués 2013-12 19 / 58

Page 20: Systèmes parallèles et distribués · Introduction Systèmesdistribués Miseencommunderesources matérielles: CPU,mémoire, logiciels,données Grégory Mounié Systèmes parallèles

Performances

Loi d’Amdahl

Dans chaque code on trouve une partie parallèle et une partieséquentielle

modèle du temps d’exécution : Tm = T1 × (1− f ) + T1×fm

limm→∞ Tm = T1 × (1− f )

Exemples :code parallèle à 50 % : T∞ = T1/2code parallèle à 80 % : T10 = 0.28T1

Grégory Mounié Systèmes parallèles et distribués 2013-12 20 / 58

Page 21: Systèmes parallèles et distribués · Introduction Systèmesdistribués Miseencommunderesources matérielles: CPU,mémoire, logiciels,données Grégory Mounié Systèmes parallèles

Performances

Heuristiques à performance garantie

Problèmes NP-DifficilesUne exécution parallèle efficace demande la résolution des problèmesd’optimisation classiques: partition, ordonnancement, sac-à-dos, etc.Ils sont (tous) NP-Difficile. On ne cherche pas l’optimal, mais juste unebonne solution.

Definition (Une heuristique a une garantie de performance de q)si pour toute instance I d’un problème et σ∗I la valeur la solution optimale,l’heuristique produit une solution de valeur σI tel que ∀I , σI < q∗I

Grégory Mounié Systèmes parallèles et distribués 2013-12 21 / 58

Page 22: Systèmes parallèles et distribués · Introduction Systèmesdistribués Miseencommunderesources matérielles: CPU,mémoire, logiciels,données Grégory Mounié Systèmes parallèles

Performances

Graham

Definition (Algorithme de liste)Les tâches à ordonnancer sont rangées dans une liste de prioritéLorsqu’une ressource de calcul est disponible, on y démarre le calcul dela tâche prête (ou qui démarrera le plus tôt) la plus prioritaire.

Grégory Mounié Systèmes parallèles et distribués 2013-12 22 / 58

Page 23: Systèmes parallèles et distribués · Introduction Systèmesdistribués Miseencommunderesources matérielles: CPU,mémoire, logiciels,données Grégory Mounié Systèmes parallèles

Performances

Garantie des algorithmes de listes

Theorem (Tâches indépendantes séquentielles)Un algorithme de liste a une garantie de performance de 2 sur mprocesseurs homogènes.

Theorem (Graphe de tâches séquentielles)Un algorithme de liste a une garantie de performance de 2 sur mprocesseurs homogènes.

Theorem (Tâches indépendantes parallèles rigides)Un algorithme de liste a une garantie de performance de 2 sur mprocesseurs homogènes.

Grégory Mounié Systèmes parallèles et distribués 2013-12 23 / 58

Page 24: Systèmes parallèles et distribués · Introduction Systèmesdistribués Miseencommunderesources matérielles: CPU,mémoire, logiciels,données Grégory Mounié Systèmes parallèles

Performances

Bornes inférieures

On ne peut pas comparer avec la solution optimale, mais on peut secomparer avec deux bornes inférieures.

Le chemin critique du grapheLa plus longue tâche pour les tâches indépendantes

La somme du coût des noeuds divisée par le nombre de processeursLe travail total divisé par le nombre de processeurs

Grégory Mounié Systèmes parallèles et distribués 2013-12 24 / 58

Page 25: Systèmes parallèles et distribués · Introduction Systèmesdistribués Miseencommunderesources matérielles: CPU,mémoire, logiciels,données Grégory Mounié Systèmes parallèles

Performances

Preuve pour les tâches indépendantes

Montrer le 2 en utilisant les bornes inférieures de la solution optimale.

Grégory Mounié Systèmes parallèles et distribués 2013-12 25 / 58

Page 26: Systèmes parallèles et distribués · Introduction Systèmesdistribués Miseencommunderesources matérielles: CPU,mémoire, logiciels,données Grégory Mounié Systèmes parallèles

Performances

Preuve des graphes

Illustrer l’importance du 1 + 1

Grégory Mounié Systèmes parallèles et distribués 2013-12 26 / 58

Page 27: Systèmes parallèles et distribués · Introduction Systèmesdistribués Miseencommunderesources matérielles: CPU,mémoire, logiciels,données Grégory Mounié Systèmes parallèles

Performances

Approximation duale

Comment répartir les calculssi l’on a deux types de processeurs et donc des vitesses différentes pour lestâches.

l’approximation duale au sens de Schmoys permet d’obtenir unegarantie de 2 facilement.

Grégory Mounié Systèmes parallèles et distribués 2013-12 27 / 58

Page 28: Systèmes parallèles et distribués · Introduction Systèmesdistribués Miseencommunderesources matérielles: CPU,mémoire, logiciels,données Grégory Mounié Systèmes parallèles

Problèmes du calcul parallèle

Équilibrage de la charge

4 grandes stratégies:Découpe statiqueMaître-esclaveVol de travailAdaptatif

Grégory Mounié Systèmes parallèles et distribués 2013-12 28 / 58

Page 29: Systèmes parallèles et distribués · Introduction Systèmesdistribués Miseencommunderesources matérielles: CPU,mémoire, logiciels,données Grégory Mounié Systèmes parallèles

Problèmes du calcul parallèle

Découpage statique

Répartition efficaceLe but est de minimiser les communications et les synchronisations.

"Owner compute rule"Les calculs sont effectués là où sont rangées les données.

Découpage automatique efficace avec des partitionneurs de graphes(Scotch et Metis)

Grégory Mounié Systèmes parallèles et distribués 2013-12 29 / 58

Page 30: Systèmes parallèles et distribués · Introduction Systèmesdistribués Miseencommunderesources matérielles: CPU,mémoire, logiciels,données Grégory Mounié Systèmes parallèles

Problèmes du calcul parallèle

Maître-esclave (Master-Worker)

Découpage du travail en petit morceau indépendant: les tâches (jobs,tasks)La liste des tâches est conservé par le maîtreLes esclaves viennent demander du travail au maître lorsqu’ils n’ontplus de travail

Grégory Mounié Systèmes parallèles et distribués 2013-12 30 / 58

Page 31: Systèmes parallèles et distribués · Introduction Systèmesdistribués Miseencommunderesources matérielles: CPU,mémoire, logiciels,données Grégory Mounié Systèmes parallèles

Problèmes du calcul parallèle

Vol de travail

Variante distribuée du maître-esclaveTous les noeuds ont une liste locale de tâchesLorsque sa liste locale est vide, le noeud vole du travail dans la listed’une victime tirée au hasard

Variations sur les volsProbabilité du choix de la victimevols multiples si temps de vols très différents.

Grégory Mounié Systèmes parallèles et distribués 2013-12 31 / 58

Page 32: Systèmes parallèles et distribués · Introduction Systèmesdistribués Miseencommunderesources matérielles: CPU,mémoire, logiciels,données Grégory Mounié Systèmes parallèles

Problèmes du calcul parallèle

Adaptatif

Le travail n’est découpé que lorsqu’une demande de vol arrivepeu de surcoût par rapport au séquentiel: plus efficace pour lesproblèmes de petites tailles.

Grégory Mounié Systèmes parallèles et distribués 2013-12 32 / 58

Page 33: Systèmes parallèles et distribués · Introduction Systèmesdistribués Miseencommunderesources matérielles: CPU,mémoire, logiciels,données Grégory Mounié Systèmes parallèles

Problèmes du calcul parallèle

Autres problèmes

DonnéesDéploiementTolérance aux pannesHétérogénéité

Grégory Mounié Systèmes parallèles et distribués 2013-12 33 / 58

Page 34: Systèmes parallèles et distribués · Introduction Systèmesdistribués Miseencommunderesources matérielles: CPU,mémoire, logiciels,données Grégory Mounié Systèmes parallèles

Intergiciels

Programmation distribuée

Le point difficile lors de la programmation, est la gestion de la distributionet des communications. Des bibliothèques/API comme MPI permettent deprogrammer les applications avec le paradigme simple à comprendre dupassage de message.D’autres abstractions sont possibles (OpenMP, OpenMP avec des tâches,RMI+J2EE, DO, DCOM, etc.).

Grégory Mounié Systèmes parallèles et distribués 2013-12 34 / 58

Page 35: Systèmes parallèles et distribués · Introduction Systèmesdistribués Miseencommunderesources matérielles: CPU,mémoire, logiciels,données Grégory Mounié Systèmes parallèles

Intergiciels

Le passage de message

Le paradigme consiste à écrire dans le code séquentiel exécuté par chaquenoeuds, les communications (envoi ou réception) qu’il doit réaliser pourfaire correctement le calcul.Exemple:

sur le noeud 0

1 int tableau[3] = {1,2,3};2 int destinataire=3;34 Calcul(tableau, 3);5 Envoi(tableau, 3, INT, destinataire);

Grégory Mounié Systèmes parallèles et distribués 2013-12 35 / 58

Page 36: Systèmes parallèles et distribués · Introduction Systèmesdistribués Miseencommunderesources matérielles: CPU,mémoire, logiciels,données Grégory Mounié Systèmes parallèles

Intergiciels

Le passage de message (suite)

sur le noeud 3

1 int tableauCalcule[3] = {};2 int emetteur=0;34 Recevoir(tableauCalcule, 3, INT, emetteur);5 ContinuerCalcul(tableauCalcule, 3);

Grégory Mounié Systèmes parallèles et distribués 2013-12 36 / 58

Page 37: Systèmes parallèles et distribués · Introduction Systèmesdistribués Miseencommunderesources matérielles: CPU,mémoire, logiciels,données Grégory Mounié Systèmes parallèles

Intergiciels

MPI

MPI est un standard définissant l’API de fonctions permettant

d’implanter des applications parallèles avec passage de message.

Le standard ne définit pas les opérations de gestion (lancement del’application parallèle). Elles peuvent varier d’une implantation àl’autre.Implantations couramment utilisées: http://www.open-mpi.org (exLAM-mpi) et MPICH

Grégory Mounié Systèmes parallèles et distribués 2013-12 37 / 58

Page 38: Systèmes parallèles et distribués · Introduction Systèmesdistribués Miseencommunderesources matérielles: CPU,mémoire, logiciels,données Grégory Mounié Systèmes parallèles

Intergiciels

Histoire

L’API est défini pour C, C++ et Fortran.Elle est la somme de l’expertise des concepteurs autour de l’écriture debibliothèques d’échange de message (1980-1994, 1996 pour MPI-2).Elle permet ou fournit:

I la portabilité (standard),I l’exploitation des performances au plus près du matériel,I elle fournit de nombreuses fonctionnalité et est disponible presque

partout.

Grégory Mounié Systèmes parallèles et distribués 2013-12 38 / 58

Page 39: Systèmes parallèles et distribués · Introduction Systèmesdistribués Miseencommunderesources matérielles: CPU,mémoire, logiciels,données Grégory Mounié Systèmes parallèles

Intergiciels

Mémoire distribuée

MPI a été conçu pour des architectures à mémoire distribuée avec unseul CPU.Elle a évolué pour faciliter l’exploitation de multi-coeursinter-connectés.Elle supporte l’hétérogénéité (verbeux) et la dynamicité (dépend del’implantation)

Grégory Mounié Systèmes parallèles et distribués 2013-12 39 / 58

Page 40: Systèmes parallèles et distribués · Introduction Systèmesdistribués Miseencommunderesources matérielles: CPU,mémoire, logiciels,données Grégory Mounié Systèmes parallèles

Intergiciels

Hello world en MPI

1 #include <mpi.h>23 int main(int argc, char **argv) {4 MPI_Init(& argc, &argv);5 printf("Hello world !\n");6 MPI_Finalize();7 }

Grégory Mounié Systèmes parallèles et distribués 2013-12 40 / 58

Page 41: Systèmes parallèles et distribués · Introduction Systèmesdistribués Miseencommunderesources matérielles: CPU,mémoire, logiciels,données Grégory Mounié Systèmes parallèles

Intergiciels

Compilation

1 mpicc -o hello hello.c2 mpirun -np 100 ./hello # et hop ! 100 Hello !3 mpirun -np 100 --hostfile listedemachines ./hello

Grégory Mounié Systèmes parallèles et distribués 2013-12 41 / 58

Page 42: Systèmes parallèles et distribués · Introduction Systèmesdistribués Miseencommunderesources matérielles: CPU,mémoire, logiciels,données Grégory Mounié Systèmes parallèles

Intergiciels

Nommage des processus

Pour pouvoir différencier les calculs des noeuds, il faut pouvoir lesnommer.Tous les processus lancés ensemble appartiennent à un même groupe(Communicateur). Le communicateur par défaut est MPI_COMM_WORLDDeux fonctions permettent d’obtenir la taille et le rang dans lecommunicateur.

Grégory Mounié Systèmes parallèles et distribués 2013-12 42 / 58

Page 43: Systèmes parallèles et distribués · Introduction Systèmesdistribués Miseencommunderesources matérielles: CPU,mémoire, logiciels,données Grégory Mounié Systèmes parallèles

Intergiciels

Hello world et nommage

1 #include <mpi.h>2 #include <stdio.h>34 int main(int argc, char **argv) {5 int taille, rang, len;6 char hostname[MPI_MAX_PROCESSOR_NAME]={};7 MPI_Init(& argc, &argv);8 MPI_Comm_size(MPI_COMM_WORLD, &taille);9 MPI_Comm_rank(MPI_COMM_WORLD, &rang);

10 MPI_Get_processor_name(hostname, &len);11 printf("Hello world %d parmi %d sur %s!\n", rang, taille, hostname);12 MPI_Finalize();13 }

L’affichage est dans le désordre. Il dépend de l’ordonnancement desprocessus lancés.

Grégory Mounié Systèmes parallèles et distribués 2013-12 43 / 58

Page 44: Systèmes parallèles et distribués · Introduction Systèmesdistribués Miseencommunderesources matérielles: CPU,mémoire, logiciels,données Grégory Mounié Systèmes parallèles

Intergiciels

Mesure du temps écoulé

1 double MPI_Wtime();23 double debut = MPI_Wtime();4 ...5 double fin = MPI_Wtime();6 printf("Temps ecoule %g\n", fin - debut);78 double MPI_Wtick(); (tick)

La précision de la mesure est disponible en utilisant la fonction de la lignetick.

Grégory Mounié Systèmes parallèles et distribués 2013-12 44 / 58

Page 45: Systèmes parallèles et distribués · Introduction Systèmesdistribués Miseencommunderesources matérielles: CPU,mémoire, logiciels,données Grégory Mounié Systèmes parallèles

Intergiciels

Communications

MPI propose de nombreuses variantes pour les communicationspoint-à-point (un processus emetteur et un processus récepteur).

Grégory Mounié Systèmes parallèles et distribués 2013-12 45 / 58

Page 46: Systèmes parallèles et distribués · Introduction Systèmesdistribués Miseencommunderesources matérielles: CPU,mémoire, logiciels,données Grégory Mounié Systèmes parallèles

Intergiciels

MPI_Send / MPI_Recv

1 float tableau[10];2 int recepteur; int TAG=123456;3 ...4 MPI_Send(tableau, 10, MPI_FLOAT,5 recepteur, TAG,6 MPI_COMM_WORLD);

1 float tableauR[10];2 MPI_Status status; int emetteur;3 ...4 MPI_Recv( tableauR, 10, MPI_FLOAT,5 emetteur, TAG,6 MPI_COMM_WORLD, &status);

Grégory Mounié Systèmes parallèles et distribués 2013-12 46 / 58

Page 47: Systèmes parallèles et distribués · Introduction Systèmesdistribués Miseencommunderesources matérielles: CPU,mémoire, logiciels,données Grégory Mounié Systèmes parallèles

Intergiciels

Sémantique

MPI_Send() et MPI_Recv() sont bloquants jusqu’à ce que les

données puissent être réutilisé,MPI_Recv() est donc bloquant jusqu’à la réception du message,MPI_Send() est bloquant jusqu’à ce que l’envoi ou la copie desdonnées.

Grégory Mounié Systèmes parallèles et distribués 2013-12 47 / 58

Page 48: Systèmes parallèles et distribués · Introduction Systèmesdistribués Miseencommunderesources matérielles: CPU,mémoire, logiciels,données Grégory Mounié Systèmes parallèles

Intergiciels

Exercice

Anneau à jetonLe premier processus envoie un entier au processus numéro 2. Chaqueautre processus passe un entier au processus suivant. Le dernier repassel’entier au premier.

Grégory Mounié Systèmes parallèles et distribués 2013-12 48 / 58

Page 49: Systèmes parallèles et distribués · Introduction Systèmesdistribués Miseencommunderesources matérielles: CPU,mémoire, logiciels,données Grégory Mounié Systèmes parallèles

Intergiciels

Joker en réception

1 MPI_Recv( tableauR, 10, MPI_FLOAT,2 MPI_ANY_SOURCE, MPI_ANY_TAG, // jokers3 MPI_COMM_WORLD, &status);

Grégory Mounié Systèmes parallèles et distribués 2013-12 49 / 58

Page 50: Systèmes parallèles et distribués · Introduction Systèmesdistribués Miseencommunderesources matérielles: CPU,mémoire, logiciels,données Grégory Mounié Systèmes parallèles

Intergiciels

Pourquoi avoir plusieurs type de communicationsExemple: tous les processus échangent avec le processus 0

if (rang != 0) {MPI_Send(donnees, nb, MPI_DOUBLE, 0, TAG, MPI_COMM_WORLD);MPI_Recv(donnees, nbR, MPI_DOUBLE, 0, TAG, MPI_COMM_WORLD, & status);

} else {for(int dest =1; dest < taille; dest++, donnees += nbR) {

MPI_Send(donnees, nb, MPI_DOUBLE, dest, TAG, MPI_COMM_WORLD);MPI_Recv(donnees, nb, MPI_DOUBLE, dest, TAG, MPI_COMM_WORLD, & status);

}}

Si Send envoie les données lorsque la réception est prête, quel est leproblème ?

Si Send envoie les données dès qu’il commence, quel est le problème ?

Grégory Mounié Systèmes parallèles et distribués 2013-12 50 / 58

Page 51: Systèmes parallèles et distribués · Introduction Systèmesdistribués Miseencommunderesources matérielles: CPU,mémoire, logiciels,données Grégory Mounié Systèmes parallèles

Intergiciels

Envoi et Réception Asynchrone

MPI permet de démarrer des communications puis d’attendre plus tard leurfin.

MPI_Request req;MPI_Status status;

MPI_IRecv(donnees, nb, MPI_INT,emetteur, TGA, MPI_COMM_WORLD, &req);

...MPI_Wait(&req, &status);

mais aussi MPI_Test(), MPI_Testall(), MPI_Testany(),MPI_Testsome(), MPI_Waitall(), MPI_Waitany(), MPI_Waitsome()

Grégory Mounié Systèmes parallèles et distribués 2013-12 51 / 58

Page 52: Systèmes parallèles et distribués · Introduction Systèmesdistribués Miseencommunderesources matérielles: CPU,mémoire, logiciels,données Grégory Mounié Systèmes parallèles

Intergiciels

Envoi synchrone

L’envoi terminera après le début de la réception

MPI_Ssend(donnees, nb, MPI_INT,destinataire, TAG, MPI_COMM_WORLD);

Grégory Mounié Systèmes parallèles et distribués 2013-12 52 / 58

Page 53: Systèmes parallèles et distribués · Introduction Systèmesdistribués Miseencommunderesources matérielles: CPU,mémoire, logiciels,données Grégory Mounié Systèmes parallèles

Intergiciels

Envoi tamponné

Les données seront copiées dans un tampon intermédiaire

MPI_Buffer_attach(& buffer, taille);MPI_Bsend(donnees, nb, MPI_INT,

destinataire, TAG, MPI_COMM_WORLD);MPI_Buffer_detach(& buffer, taille);

Cela à un coût non négligeable par rapport à une transmission avec 0 copie.

Grégory Mounié Systèmes parallèles et distribués 2013-12 53 / 58

Page 54: Systèmes parallèles et distribués · Introduction Systèmesdistribués Miseencommunderesources matérielles: CPU,mémoire, logiciels,données Grégory Mounié Systèmes parallèles

Intergiciels

Envoi et réception simultanée

Le code d’échange précédent mais avec deux tampons différents.

if (rang != 0) {MPI_Sendrecv(donnees, nb, MPI_DOUBLE, 0, STAG

donnees2, nb2, MPI_DOUBLE, 0, RTAG,MPI_COMM_WORLD, & status);

} else {for(int dest =1; dest < taille; dest++, donnees += nbR) {

MPI_Sendrecv(donnees, nb, MPI_DOUBLE, dest, STAG,donnees2, nb2, MPI_DOUBLE, dest, RTAG,MPI_COMM_WORLD, & status);}

}

Grégory Mounié Systèmes parallèles et distribués 2013-12 54 / 58

Page 55: Systèmes parallèles et distribués · Introduction Systèmesdistribués Miseencommunderesources matérielles: CPU,mémoire, logiciels,données Grégory Mounié Systèmes parallèles

Intergiciels

Envoi prêt (ready) à être reçu

Le programmeur indique que la réception est déjà place.

MPI_Rsend(donnees, nb, MPI_INT,destinataire, TAG, MPI_COMM_WORLD);

Grégory Mounié Systèmes parallèles et distribués 2013-12 55 / 58

Page 56: Systèmes parallèles et distribués · Introduction Systèmesdistribués Miseencommunderesources matérielles: CPU,mémoire, logiciels,données Grégory Mounié Systèmes parallèles

Intergiciels

Et encore MPI_Waitall(), MPI_Waitany(),

MPI_Waitsome()

Attente mais sans faire vraiment la réception : MPI_ProbeVersion incomplète des envois

Grégory Mounié Systèmes parallèles et distribués 2013-12 56 / 58

Page 57: Systèmes parallèles et distribués · Introduction Systèmesdistribués Miseencommunderesources matérielles: CPU,mémoire, logiciels,données Grégory Mounié Systèmes parallèles

Intergiciels

Communication collective

1 MPI_Barrier(MPI_COMM_WORLD);2 MPI_Bcast( donnees, 20, MPI_INT, root, MPI_COMM_WORLD );3 MPI_Scatter( donnees, 20, MPI_INT,4 donneesR, 20, MPI_INT,5 root, MPI_COMM_WORLD);6 MPI_Gather( donnees, 20, MPI_INT,7 donneesR, 20, MPI_INT,8 root, MPI_COMM_WORLD);9 MPI_Allgather( donnees, 20, MPI_INT,

10 donneesR, 20, MPI_INT,11 root, MPI_COMM_WORLD);12 MPI_Reduce( donnees, donneesR, 20, MPI_INT,13 OP, root, MPI_COMM_WORLD);14 // OP: MPI_MAX, MPI_SUM, MPI_PROD, etc.

Grégory Mounié Systèmes parallèles et distribués 2013-12 57 / 58

Page 58: Systèmes parallèles et distribués · Introduction Systèmesdistribués Miseencommunderesources matérielles: CPU,mémoire, logiciels,données Grégory Mounié Systèmes parallèles

Intergiciels

Construction de type dérivé

les types de basesMPI_CHAR, MPI_WCHAR, MPI_SHORT, MPI_INT, MPI_LONG,MPI_FLOAT, MPI_DOUBLE, MPI_BYTE, etc.

Pour une structure1 struct T { int a; float b; };2 T tmp;3 int nb=2;4 int len[2] = {1, 1};5 MPI_Aint indices[2] = { (&tmp.a) - (&tmp), (&tmp.b) - (&tmp) };6 MPI_Datatype old[2] = { MPI_INT, MPI_FLOAT };7 MPI_Datatype new;8 MPI_Type_struct( nb, len, indices, old, & new );

Grégory Mounié Systèmes parallèles et distribués 2013-12 58 / 58