Chap. 8 du livre de Foster: MPI

Documents pareils
Introduction à la Programmation Parallèle: MPI

Introduction to Parallel Programming with MPI

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

Systèmes parallèles et distribués

Argument-fetching dataflow machine de G.R. Gao et J.B. Dennis (McGill, 1988) = machine dataflow sans flux de données

Programmation système de commandes en C

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Le prototype de la fonction main()

PVM 1 PVM. Parallel Virtual Machine

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

Lier Erlang avec d autres langages de programmation

PROJET ALGORITHMIQUE ET PROGRAMMATION II

Programmation C. Apprendre à développer des programmes simples dans le langage C

Introduction au langage C

Rappels Entrées -Sorties

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

IRL : Simulation distribuée pour les systèmes embarqués

Algorithmique et Programmation, IMA

Grid Computing. Plan du cours. Plan. Composants d une Grille. Nouredine.Melab@lifl.fr. Besoin d intergiciels robustes

OS Réseaux et Programmation Système - C5

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Chap III : Les tableaux

Introduction aux Systèmes et aux Réseaux

Développement d un logiciel de messagerie instantanée avec Dotnet (version simplifiée)

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année

Architecture des ordinateurs

Brefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs

Java Licence Professionnelle CISII,

UE Programmation Impérative Licence 2ème Année

TP : Gestion d une image au format PGM

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

INFO-F-404 : Techniques avancées de systèmes d exploitation

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

Une introduction à Java

Programmation parallèle et distribuée

Projet Active Object

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

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

Premiers Pas en Programmation Objet : les Classes et les Objets

TP1 : Initiation à Java et Eclipse

Cours Programmation Système

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

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

COMPARAISONDESLANGAGESC, C++, JAVA ET

Exercice sur les Dockers

PROJET 1 : BASE DE DONNÉES REPARTIES

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Programmation système I Les entrées/sorties

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

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

Programmation système en C/C++

Programmation client-serveur sockets - RPC

Dans le chapitre 1, nous associions aux fichiers ouverts des descripteurs de fichiers par lesquels nous accédions aux fichiers.

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

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

INITIATION AU LANGAGE JAVA

Les chaînes de caractères


Cours de Programmation Impérative: Zones de mémoires et pointeurs

Programmation C. J.-F. Lalande. 15 novembre 2012

Initiation au HPC - Généralités

I. Introduction aux fonctions : les fonctions standards

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Les processus légers : threads. Système L3, /31

Le langage C. Introduction, guide de reference

Le langage C. Séance n 4

3IS - Système d'exploitation linux - Programmation système

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

IV- Comment fonctionne un ordinateur?

Atelier C TIA Portal CTIA04 : Programmation des automates S7-300 Opérations numériques

Gestion de la mémoire

SQL Historique

Les structures de données. Rajae El Ouazzani

SYSTÈME DE GESTION DE FICHIERS

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

ALGORITHMIQUE ET PROGRAMMATION En C

Intelligence Artificielle Distribuée. Dossier technique. IAD TeamZ

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

Simulation d un système de paiement par carte bancaire

GESTION DES FICHIERS C/UNIX

Cours 6 : Tubes anonymes et nommés

SYSTÈME DE GESTION DE FICHIERS SGF - DISQUE

Algorithmique des Systèmes Répartis Protocoles de Communications

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

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

Cours de Système : Gestion de Fichiers

Introduction au calcul parallèle avec OpenCL

Licence Sciences et Technologies Examen janvier 2010

Programmation Classique en langage C

DNS Server RPC Interface buffer overflow. Céline COLLUMEAU Nicolas BODIN

Qu'est-ce qu'un processus: Définitions

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Dis papa, c est quoi un bus logiciel réparti?

Conventions d écriture et outils de mise au point

OUTIL DE TRAVAIL COLLABORATIF

Transcription:

Chap. 8 du livre de Foster: MPI Librairie pour échanges de messages = Message Passing Interface Disponibles dans différents langages: Fortran, C, Java Devenu, depuis quelques années, une standard de facto Relativement complexe: 129 fonctions Slide 1 8.1 Le modèle de programmation MPI Allocation statique des processus: un nombre fixe de processus est créé au début de l exécution du programme La façon dont les processus et les threads sont créés n est pas décrite dans le standard Les processus communiquent entre eux en utilisant les fonctions de la librairie: Communication point-à-point (entre deux processus) Communication collective (entre plusieurs processus) 8.2 Éléments de base de MPI Les six (6) fonctions de base de MPI: MPI Init: Initialise l utilisation de MPI MPI Finalize: Termine l utilisation de MPI Slide 2 MPI Comm size: Nombre de processus impliqués MPI Comm rank: Numéro d identification du processus MPI Send: Envoyer un message MPI Receive: Recevoir un message Description détaillée des 6 fonctions de base: Fig. 8.1 (p. 277)

Toutes les communications se font relative à un communicateur Communicateur espace de communication dans lequel participe un certain nombre de processus Communicateur de base = MPI Comm world = tous les processus Exemple: Slide 3 int main( int argc, char *argv[] ); { } MPI_Init( &argc, &argv ); MPI_Comm_size(MPI_COMM_WORLD, &count); MPI_Comm_rank(MPI_COMM_WORLD, &myid); printf( "Processeur %d parmi %d\n", myid, count ); MPI_Finalize(); Stratégie typique pour création d un programme avec maître/esclaves: Slide 4 int main( int argc, char *argv[] ) { } MPI_Init(&argc, &argv);... MPI_Comm_rank(MPI_COMM_WORLD, &myrank); if (myrank == 0) maitre(); else esclave();... MPI_Finalize(); Autre exemple de programme: Programme 8.1 (p. 280)

8.2.1 Les différents langages supportant MPI MPI défini de façon indépendante de tout langage de prog. Différentes interfaces ont été développées pour différents langages: Fortran (encore trés utilisé pour la programmation scientifique) C Java (récent) Slide 5 Convention en C pour les identificateurs et interfaces des opérations: MPI ajouté devant les identificateurs Constantes en MAJUSCULES Nom d opérations avec première lettre en Majuscule Résultats (OUT) retournés par l intermédiaire de pointeurs Types de base pré-définis: MPI CHAR, MPI INT, MPI FLOAT, etc. Exemple: Programme 8.2 (p. 281): Programme SPMD avec organisation en anneau 8.2.2 Déterminisme Ordre de réception des messages: Si deux processus A et B envoient un message à un autre processus C, l ordre d arrivée des messages n est pas déterminé Si un processus A envoie un message m1, puis un message m2 à un autre processus C, le message m1 sera reçue et obtenue par C avant m2 Slide 6 Les communications ne se font pas par l intermédiaire de canaux, mais directement d un processus à un autre Mais... un canal peut être simulé en spécifiant l enveloppe d un message: La source du message (numéro de processeur ou MPI ANY SOURCE) Une étiquette (tag) associée au message (entier ou MPI ANY TAG) Un contexte (un communicateur: voir Section 8.5)

8.3 Opérations globales de communication En théorie: tout pourrait se faire avec MPI Send/Receive En pratique: les opérations de communications collectives (impliquant plusieurs processus) peuvent être mis en oeuvre de façon plus efficace par la librairie que par le programmeur Principales opérations de communication collective = Figure 8.2 (p. 285) Slide 7 Barrière de synchronisation Diffusion d une donnée spécifique aux autres processus Distribution d un ensemble de données à l ensemble des processus Collecte des données provenant des divers processus Application d une opération de réduction (somme, max, etc.) 8.3.1 Barrière Opération relative à un communicateur, c est-à-dire, un groupe de processus = assure qu aucun processus ne pourra poursuivre tant que tous les processus du groupe ne sont pas rendus à la barrière MPI_Barrier( communicator ); Slide 8 8.3.2 Déplacement de données Trois principales opérations permettent à un groupe de processus d interagir avec un processus racine pour déplacer, de façon collective, des données: Voir Figure 8.3 (p. 286) 1. MPI Bcast(tamp, nb elems, t elem, racine, comm): envoie nb elems (de type t elem) provenant de tamp (processus racine) vers chacun des autres processus. Communication un vers plusieurs

2. MPI Gather(tamp in, nb elems in, t elem in, tamp out, nb elems out, t elem out, racine, comm): racine reçoit dans tamp out les copies des données contenues dans tamp in de chaque processus. Les items du processus i sont mis devant ceux de i+1. Note: tamp out n est modifié que sur racine et sa taille doit être tamp in. fois la taille de Communication plusieurs vers un Slide 9 3. MPI Scatter(tamp in, nb elems in, t elem in, tamp out, nb elems out, t elem out, racine, comm): inverse de MPI Gather = racine envoie la ième portion des données provenant de tamp in au processus i Communication un vers plusieurs Différence entre MPI Bcast et MPI Scatter: MPI Bcast: même valeur envoyée à chaque processus MPI Scatter: morceaux différents envoyés à chaque processus 8.3.3 Opérations de réduction Une opération de réduction permet de combiner (avec une opération binaire appropriée) les valeurs contenus dans les tampons des différents processus. Deux formes de base: Slide 10 MPI Reduce: laisse le résultat uniquement dans le tampon de sortie du processeur racine MPI Allreduce: laisse le résultat dans le tampon de sortie de chacun des processeurs Exemple: 4 processeurs avec des tampons de deux éléments Processeur inbuf outbuf 0 2 4?? 1 5 7?? 2 0 3?? 3 6 2??

MPI Reduce(inbuf, outbuf, 2, MPI INT, MPI SUM, 3, MPI COMM WORLD) Processeur inbuf outbuf 0 2 4?? 1 5 7?? 2 0 3?? 3 6 2 13 16 MPI Allreduce(inbuf, outbuf, 2, MPI INT, MPI MIN, 0, MPI COMM WORLD) Slide 11 Processeur inbuf outbuf 0 2 4 0 2 1 5 7 0 2 2 0 3 0 2 3 6 2 0 2 Autres exemples: Figure 8.4 (p. 288) 8.4 Communications asynchrones Diverses opérations de communication asynchrone sont disponibles: MPI Iprobe: vérifie si des messages ont été reçus et pas encore traités, mais sans les recevoir MPI Probe: bloque jusqu à ce qu un message ayant l enveloppe spécifiée ait été reçu. Slide 12 Ne lit pas/reçoit pas le message mais fait simplement retourner un statut MPI Count: permet de déterminer la longueur d un message identifié avec MPI Probe Exemple = réception de messages de longueur variable: MPI_Probe( MPI_ANY_SOURCE, 0, comm, &status ); /* Bloque... */ source = status.mpi_source; MPI_Get_count(status, MPI_INT, &count); /* Taille =? */ buf = malloc(count * sizeof(int)); /* Allocation. */ MPI_Recv( buf, count, MPI_INT, source, 0, comm, &status );

8.5 Modularité Modularité supportée à l aide des communicateurs Un communicateur permet de définir un espace limité de communication local, privé à un groupe de processus Quatre (4) principales fonctions pour définir des communicateurs: Slide 13 1. MPI Comm dup: Duplique un communicateur existant même groupe de processus, mais dans un contexte distinct 2. MPI Comm split: Crée un nouveau communicateur en sélectionnant un certain nombre de processus à l intérieur d un groupe existant 3. MPI Intercomm create: Crée un communicateur qui relie des processus provenant de deux groupes indépendants 4. MPI Comm free: Détruit un communicateur 8.5.1 Création de communicateurs Les étiquettes de messages (tags) permettent de distinguer entre différentes communications à l intérieur d un certain contexte, mais ne permettent pas créer un contexte complètement indépendant, d où le rôle des communicateurs Exemple = appel d une procédure de librairie (parallèle): Slide 14 MPI_Comm_dup(comm, &newcomm, &ierr); transpose(a, newcomm); /* Procedure appelee avec un contexte independant. */ MPI_Comm_free(&newcomm, &ierr); Les communications faites durant l exécution de transpose se font alors dans un contexte indépendant du contexte initial d appel, assurant qu il n y aura pas d interactions indésirées entre le contexte initial et le contexte de la librairie

8.5.2 Partitionnement de processus Dans plusieurs langages, il est possible de créer de façon dynamique de nouveaux processus, de nouvelles tâches, mais pas en MPI! Solution style MPI: Les processus existants se transforment en nouvelles tâches Ces processus transformés utilisent des communicateurs indépendants, pour éviter les interactions indésirées avec les autres tâches Slide 15 MPI Comm split(comm, couleur, cle, &newcomm): Doit être exécutée par tous les processus Crée un ou plusieurs nouveaux communicateurs (en fonction des couleurs ayant été spécifiées) Les processus qui ont indiqués la même couleur se retrouvent dans le même groupe Le numéro du processeur dans le nouveau groupe est déterminé par l ordre des valeurs cle L opération suivante crée trois communicateurs, donc trois sous-groupes (Voir Figure 8.10, p. 298): MPI_Comm_rank( comm, &myid ) MPI_Comm_split( comm, myid % 3, myid, &newcomm ); Slide 16 Exemple: les deux opérations suivantes ont le même effet, parce que tous les processus spécifient la même couleur et cle: MPI_Comm_split( comm, 0, 0, &newcomm ); MPI_Comm_dup( comm, &newcomm );

8.6 Autres caractéristiques de MPI Types dérivés: nouveaux types définis par le programmeur qui permettent de transférer, dans un seul message, des éléments arbitraires, possiblement non-contigus Exemple: l opération MPI Send suivante transmet les 10 nombres points-flottants data[0], data[32], data[64], etc., et ce en un seul message: Slide 17 float data[1024]; MPI_Datatype floattype; MPI_Type_vector(10, 1, 32, MPI_FLOAT, &floattype); /* 10: nombre total d items a transmettre 1: nombre d items a partir de chaque position 32: intervalle entre les items */ MPI_Type_commit(&floattype); MPI_Send(data, 1, floattype, dest, tag, MPI_COMM_WORLD); Opérations pour examiner les paramètres de l environnement d exécution Autres opérations globales de communication, y compris des opérations de réduction utilisant une opération spécifiée par l usager Modes spéciaux de communication MPI-2 = Nouvelle version en développement Slide 18 Création dynamique de processus: MPI Spawn Communication unidirectionnelle: MPI Put/Get Interface C++ Communication collective non-bloquante Message handlers En tout: 120 nouvelles fonctions ( total de 249 fonctions!)