Les communications collectives. Caractéristiques. Communications dans un groupe de processus. Dans un communicateur donné.



Documents pareils
Introduction à la Programmation Parallèle: MPI

MPI-1 2ème partie : Programmation «non bloquante» et communications de groupe

Plan de la formation. Calcul parallèle avec MPI. Pourquoi paralléliser? Parallélisation. Présentation, environnement MPI. Communications point à point

Problèmes liés à la concurrence

Grid Computing. Mihaela JUGANARU-MATHIEU École Nationale Supérieure des Mines de St Etienne

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Calcul matriciel. Définition 1 Une matrice de format (m,n) est un tableau rectangulaire de mn éléments, rangés en m lignes et n colonnes.

M2-Images. Rendu Temps Réel - OpenGL 4 et compute shaders. J.C. Iehl. December 18, 2013

Algorithmique I. Algorithmique I p.1/??

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

PVM 1 PVM. Parallel Virtual Machine

Introduction to Parallel Programming with MPI

Une bibliothèque de templates pour CUDA

Programmation parallèle et distribuée

Bases de programmation. Cours 5. Structurer les données

Baccalauréat ES Polynésie (spécialité) 10 septembre 2014 Corrigé

Corrigé des TD 1 à 5

Chaînes de Markov au lycée

Java Licence Professionnelle CISII,

Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12

Examen Médian - 1 heure 30

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Architecture des ordinateurs

Algorithmique répartie

Conception des systèmes répartis


TBI et mathématique. Pour vous soutenir dans votre enseignement des mathématiques. Les outils du logiciel Notebook. les ressources internet

Application 1- VBA : Test de comportements d'investissements

V- Manipulations de nombres en binaire

1. Structure d'un programme FORTRAN 95

Les arbres binaires de recherche

Introduction à la programmation concurrente

Introduction à MATLAB R

Programmation Orientée Objet Java

Gestion de gros fichiers binaires (images) en APL*PLUS III

Conventions d écriture et outils de mise au point

La classification automatique de données quantitatives

Statistique : Résumé de cours et méthodes

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

de calibration Master 2: Calibration de modèles: présentation et simulation d

Algorithme. Table des matières

Soit la fonction affine qui, pour représentant le nombre de mois écoulés, renvoie la somme économisée.

Création du projet : 1 sur 13

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Cours de numérisation sur Epson Perfection

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

TP : Gestion d une image au format PGM

LES DÉTERMINANTS DE MATRICES

Résolution de systèmes linéaires par des méthodes directes

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Simulation de variables aléatoires

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

Transmission d informations sur le réseau électrique

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

Cours Programmation Système

Chapitre VI- La validation de la composition.

Programmer en JAVA. par Tama

Logistique. My Post Business Mode d emploi

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

Recherche dans un tableau

Introduction aux Machines Virtuelles avec VMKit

Baccalauréat ES/L Métropole La Réunion 13 septembre 2013 Corrigé

Cours Informatique Master STEP

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Limitations of the Playstation 3 for High Performance Cluster Computing

Partie 7 : Gestion de la mémoire

IMAGES NUMÉRIQUES MATRICIELLES EN SCILAB

Définitions. Numéro à préciser. (Durée : )

Cours de Systèmes d Exploitation

Compléments de documentation Scilab : affichage de texte et formatage de nombres

TP base de données SQLite. 1 Différents choix possibles et choix de SQLite : 2 Définir une base de donnée avec SQLite Manager

Le Data Mining au service du Scoring ou notation statistique des emprunteurs!

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Package Java.util Classe générique

Manière de manipuler le générateur de numéros de transaction TAN

Initiation à LabView : Les exemples d applications :

Chap III : Les tableaux

I Stabilité, Commandabilité et Observabilité Introduction Un exemple emprunté à la robotique Le plan Problème...

RE SOLUTIONS CHAPITRE 1

CH.6 Propriétés des langages non contextuels

Q6 : Comment calcule t-on l intensité sonore à partir du niveau d intensité?

Modélisation et simulation des performances de nœuds de routage optique dans les réseaux dorsaux hybrides

Texte Agrégation limitée par diffusion interne

Rappels sur les suites - Algorithme

Processus! programme. DIMA, Systèmes Centralisés (Ph. Mauran) " Processus = suite d'actions = suite d'états obtenus = trace

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Initiation à la programmation OEF pour Wims (exercices).

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Services bancaires par Internet aux entreprises. Guide pratique pour : Rapports de solde Version

Parallélisme et Répartition

UE C avancé cours 1: introduction et révisions

Maîtriser les fonctionnalités d un traitement de texte (Word OpenOffice)

Initiation au HPC - Généralités

L informatique en BCPST

Exo7. Matrice d une application linéaire. Corrections d Arnaud Bodin.

Développement Logiciel

1 Recherche en table par balayage

Correction du baccalauréat ES/L Métropole 20 juin 2014

Transcription:

Les communications collectives Communications dans un groupe de processus. Dans un communicateur donné. Trois sortes : Synchronisation globale MI_Barrier() Transferts de données : diffusion/collecte globale/sélective (Broadcast, scatter, gather) Opérations de réduction : somme globale, maximum global, etc. suivies éventuellement d une diffusion du résultat à tous les participants ermettent à l utilisateur de faire une série de communications point à point en utilisant une seule fonction Hugues Leroy Cours de DE CH 3.5 / Hugues Leroy Cours de DE CH 3.5 / Caractéristiques C est une action collective dans un communicateur Tous les processus de ce communicateur doivent participer Une synchronisation peut avoir lieu (ce n est pas toujours le cas) Toutes ces opérations sont bloquantes On ne spécifie pas d étiquette (cette gestion est à la charge du système, il n y aura pas d interférences avec les autres communications) Les tampons de réception doivent avoir exactement la même taille Les types de données doivent évidemment être les mêmes ttention : tous les processus du communicateur doivent participer. Le nom des primitives est assez ambigü car pour MI_Bcast par exemple (broadcast) un processus fera la diffusion et les autres écouterons (recv). Mais pour tous la primitive se nomme Bcast! Hugues Leroy Cours de DE CH 3.5 / 3 Hugues Leroy Cours de DE CH 3.5 / 4

Barrière de synchronisation C: int MI_Barrier (MI_Comm comm) Fortran: MI_BRRIER (COMM, IERROR) INTEGER COMM, IERROR Hugues Leroy Cours de DE CH 3.5 / 5 Hugues Leroy Cours de DE CH 3.5 / 6 Diffusion générale C: int MI_Bcast ( Fortran: void *buffer, int count, MI_Datatype datatype, int root, MI_Comm comm) MI_BCST (BUFFER, COUNT, DTTYE, ROOT, COMM, IERROR) <type> BUFFER(*) INTEGER COUNT, DTTYE, ROOT, COMM, IERROR Il n y a pas de multicast : un broadcast effectué par le processus root ne peut pas être reçu par un MI_Recv() par les autres processus du communicateur (tous les processus DOIVENT faire Bcast) Hugues Leroy Cours de DE CH 3.5 / 7 Hugues Leroy Cours de DE CH 3.5 / 8

ar abus de notation on a rajouté une flèche de vers sur le dessin, juste pour rappeler que participe bien au Bcast 3 MI_Bcast(&valeur,,MI_INT,,MI_COMM_WORLD) MI_Bcast 3 3 Hugues Leroy Cours de DE CH 3.5 / 9 Hugues Leroy Cours de DE CH 3.5 / Diffusion sélective : MI_Scatter BCDE On distribue dans l ordre croissant des numéros de processus. Les processus reçoivent tous le même nombre d éléments : sendcnt divisé par le nb de processus du communicateur. BCDE Le paramètre recvcnt est en fait le sizeof(recvbuf) B C D E MI_Scatter ( void *sendbuf, int sendcnt, MI_Datatype sendtype, void *recvbuf, int recvcnt, MI_Datatype recvtype, int root, MI_Comm comm ) (on traite dans l ordre croissant des numéros de processus) Hugues Leroy Cours de DE CH 3.5 / Hugues Leroy Cours de DE CH 3.5 /

Collecte : MI_Gather La remarque sur sendcnt est à retenir... B C D E Le Gather est l opération symétrique du Scatter. On ne peut pas avec Gather recevoir des contributions de tailles diverses. BCDE B C D E MI_Gather ( void *sendbuf, int sendcnt, MI_Datatype sendtype, void *recvbuf, int recvcnt, MI_Datatype recvtype, int root, MI_Comm comm ) ttention : recvcnt doit être égal à sendcnt, et non pas égal à la somme S de tous les sendcnt. Le tampon de reception recvbuf devra bien entendu avoir une taille d au moins S. Hugues Leroy Cours de DE CH 3.5 / 3 Hugues Leroy Cours de DE CH 3.5 / 4 Opérations de réduction Opérations sur des valeurs distribuées dans un groupe de processus Exemples : C somme ou produit global maximum ou minimum global opération globale définie par l utilisateur int MI_Reduce ( void *sendbuf,void *recvbuf, int count, MI_Datatype datatype, MI_Op op, int root, MI_Comm comm ) Hugues Leroy Cours de DE CH 3.5 / 5 Hugues Leroy Cours de DE CH 3.5 / 6

Réductions prédéfinies MI_Op MI_MX MI_MIN MI_SUM MI_ROD MI_LND MI_BND MI_LOR MI_BOR MI_LXOR MI_BXOR MI_MXLOC MI_MINLOC Fonction Maximum Minimum Somme roduit ET Logique ET Bit à bit OU Logique OU Bit à bit OU Exclusif Logique OU Exclusif Bit à bit Maximum et indice du maximum Minimum et indice du minimum Hugues Leroy Cours de DE CH 3.5 / 7 Hugues Leroy Cours de DE CH 3.5 / 8 MI_Reduce RNK B C D B C D o est l opérateur de réduction. On traite dans l ordre croissant des numéros de processus. ROOT MI_REDUCE 3 4 oeoiomoq Hugues Leroy Cours de DE CH 3.5 / 9 Hugues Leroy Cours de DE CH 3.5 /

C: Exemple de réduction : Une somme globale d entiers MI_Reduce(&x, &result,, MI_INT, MI_SUM,, MI_COMM_WORLD) ; Fortran: CLL MI_REDUCE( x, result,, MI_INTEGER, MI_SUM,, MI_COMM_WORLD, IERROR) Somme les x de chaque processus et range dans result Le résultat est ici disponible uniquement pour le processus (root) INTEGER MXHT, GLOBMX, IERROR, MYID utre exemple C On a une simulation de croissance d arbres dans une forêt. On a parallélisé C en attribuant à chaque processus une partie de la forêt. C u bout d un certain temps on veut savoir quel est l arbre le plus grand... C Le processus sera celui qui connaitra la taille max de tous les arbres de la forêt C C Chaque processus trouve l arbre le plus haut de son coin de forêt...ici un calcul... C CLL MI_REDUCE ( MXHT, GLOBMX,, MI_INTEGER, MI_MX, *,MI_COMM_WORLD, IERROR) C IF (MYID.EQ.) THEN... ENDIF Hugues Leroy Cours de DE CH 3.5 / Hugues Leroy Cours de DE CH 3.5 / Opération de réduction définie par l utilisateur Dans la suite on note par o l opérateur de réduction C - la fonction est du type MI_User_function : Remarque : on n utilisera pas lors de cette formation cette possibilité de définir nos propres opérateurs de réduction. void my_operator ( void *invec, void *inoutvec, int *len, MI_Datatype *datatype) Fortran FUNCTION MY_OERTOR ( INVEC(*), INOUTVEC(*), LEN, DTTYE ) <type> INVEC(LEN), INOUTVEC(LEN) INTEGER LEN, DTTYE Hugues Leroy Cours de DE CH 3.5 / 3 Hugues Leroy Cours de DE CH 3.5 / 4

Définition de l opérateur de réduction la fonction associée à cet opérateur o s applique aux éléments des vecteurs d entrée et sortie comme suit : for (i = ; i < len ; i++ ) inoutvec(i) = inoutvec(i) o invec(i) l opérator o n est pas forcément commutatif il y a associativité, mais cette propriété n est pas forcément vérifiée avec les nombres réels (troncatures...). rofitons de cette occasion pour rappeler qu un bon algorithme doit toujours se préoccuper de la précision des calculs et de la validité des résultats... Hugues Leroy Cours de DE CH 3.5 / 5 Hugues Leroy Cours de DE CH 3.5 / 6 Enregistrer un opérateur de réduction Son type doit être MI_Op ( C ) ou INTEGER ( Fortran ) C : int MI_Op_create ( MI_User_function *function, int commute, MI_Op *op ) Fortran : MI_O_CRETE ( FUNC, COMMUTE, O, IERROR ) EXTERNL FUNC LOGICL COMMUTE INTEGER O, IERROR Hugues Leroy Cours de DE CH 3.5 / 7 Hugues Leroy Cours de DE CH 3.5 / 8

Variantes de MI_Reduce MI_LLREDUCE : pas de processus root ( tous ont le résultat final ) int MI_llreduce ( void *sendbuf, void *recvbuf, int count, MI_Datatype datatype, MI_Op op, MI_Comm comm ) MI_REDUCE_SCTTER : les processus choissisent de recevoir une certaine partie du résultat. Ces parties sont distribuées dans l ordre des numéros (rangs) de processus. int MI_Reduce_scatter ( void *sendbuf, void *recvbuf, int *recvcnts, MI_Datatype datatype, MI_Op op, MI_Comm comm ) MI_SCN : les processus reçoivent un résultat partiel int MI_Scan ( void *sendbuf, void *recvbuf, int count, MI_Datatype datatype, MI_Op op, MI_Comm comm ) Hugues Leroy Cours de DE CH 3.5 / 9 Hugues Leroy Cours de DE CH 3.5 / 3 MI_llreduce RNK B C D B C D MI_LLREDUCE 3 4 oeoiomoq Hugues Leroy Cours de DE CH 3.5 / 3 Hugues Leroy Cours de DE CH 3.5 / 3

MI_Reduce_scatter RNK recvcounts B C D B C D On traite toujours dans l ordre croissant des numéros de processus. MI_REDUCE_SCTTER 3 4 oeoiomoq Hugues Leroy Cours de DE CH 3.5 / 33 Hugues Leroy Cours de DE CH 3.5 / 34 MI_Scan RNK B C D B C D oe MI_SCN oeoi 3 oeoiom 4 oeoiomoq Hugues Leroy Cours de DE CH 3.5 / 35 Hugues Leroy Cours de DE CH 3.5 / 36

Exercice 5 (Scatter/Gather) Un produit de matrices carrées (à faire en C ou Fortran) C= x B les matrices à multiplier ( et B) sont sur le processus. Celui-ci distribue une tranche horizontale de la matrice et une tranche verticale de B à chacun des processus. Chacun calcule alors un bloc diagonal de C. our le calcul des blocs non diagonaux chaque processus doit envoyer aux autres la tranche de qu il possède. près quoi le processus peut collecter les résultats et les imprimer. Faire l étude de mise à l échelle (scalability) correspondante. Essayez aussi pour le produit matrice vecteur. Que peut-on en déduire? Insister sur le calcul de mise à l échelle. Bien noter les volumes de calcul et les volumes échangés, puis évaluer le ratio Tcomm / Tcalc. Si on a n processus on utilisera une matrice carrée d ordre multiple de n. N oubliez pas de vérifier que vous avez bien le bon résultat!............................ B C Hugues Leroy Cours de DE CH 3.5 / 37 Hugues Leroy Cours de DE CH 3.5 / 38 Exercice 6 En tirant à pile ou face sur chacun des processus, boucler jusqu à ce que tous les processus fassent le même choix ou bien jusqu à ce qu on atteigne un nombre - fixé à priori - d essais. (utiliser MI_llreduce) Exercice 7 Transformer le programme de l anneau : pour calculer la somme, utiliser une opération de réduction globale. Ensuite transformer le programme pour que chaque processus calcule une somme partielle. Enfin chaque processus doit imprimer sa somme partielle, mais dans le bon ordre : processus, puis processus, etc. Hugues Leroy Cours de DE CH 3.5 / 39 Hugues Leroy Cours de DE CH 3.5 / 4