Introduction à la Programmation Parallèle: MPI



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

Programmation parallèle et distribuée

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

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

Introduction to Parallel Programming with MPI

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

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

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

Parallélisme et Répartition


Introduction au langage C

Cours Programmation Système

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

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

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

INF6500 : Structures des ordinateurs. Sylvain Martel - INF6500 1

Initiation au HPC - Généralités

Logiciel Libre Cours 3 Fondements: Génie Logiciel

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

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

4. Outils pour la synchronisation F. Boyer, Laboratoire Lig

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)

PVM 1 PVM. Parallel Virtual Machine

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

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

Evaluation des performances de programmes parallèles haut niveau à base de squelettes algorithmiques

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

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

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

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

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

Chapitre 4 : Exclusion mutuelle

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

TP1 : Initiation à Java et Eclipse

Plan du cours. Historique du langage Nouveautés de Java 7

TP : Gestion d une image au format PGM

Systèmes parallèles et distribués

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

Algorithmique et Programmation, IMA

Programmation système de commandes en C

Équilibrage Dynamique de Charge pour des Calculs Parallèles sur Cluster Linux - Une Évaluation de l Environnement AMPI.

D2.2 Définition des mécanismes minimaux d un runtime tolérant aux pannes dans les infrastructures Petascale

Cours 1: Java et les objets

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

Une bibliothèque de templates pour CUDA

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

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

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

Utilisation d objets : String et ArrayList

Cours d Algorithmique et de Langage C v 3.0

Remote Method Invocation Les classes implémentant Serializable

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation

Introduction à la programmation concurrente

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Cours d initiation à la programmation en C++ Johann Cuenin

Limitations of the Playstation 3 for High Performance Cluster Computing

GESTION DES FICHIERS C/UNIX

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Chap III : Les tableaux

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Structurer ses données : les tableaux. Introduction à la programmation

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Cours de Systèmes d Exploitation

Les chaînes de caractères

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

I. Introduction aux fonctions : les fonctions standards

Algorithmique des Systèmes Répartis Protocoles de Communications

Initiation. àl algorithmique et à la programmation. en C

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

OS Réseaux et Programmation Système - C5

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Chapitre I Notions de base et outils de travail

REALISATION d'un. ORDONNANCEUR à ECHEANCES

NFP 121. Java et les Threads. Présentation : Thierry Escalarasse Mai 2007

Etude d Algorithmes Parallèles de Data Mining

PROJET ALGORITHMIQUE ET PROGRAMMATION II

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

Runtime. Gestion de la réactivité des communications réseau. François Trahay Runtime, LaBRI sous la direction d'alexandre Denis Université Bordeaux I

Network musical jammin

Introduction aux Systèmes et aux Réseaux

STAGE IREM 0- Premiers pas en Python

Rapport d activité. Mathieu Souchaud Juin 2007

Mise en œuvre des serveurs d application

Classe ClInfoCGI. Fonctions membres principales. Gestion des erreurs

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

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

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

Conventions d écriture et outils de mise au point

Langage C. Patrick Corde. 22 juin Patrick Corde ( Patrick.Corde@idris.fr ) Langage C 22 juin / 289

École Polytechnique de Montréal. Département de Génie Informatique et Génie Logiciel. Cours INF2610. Contrôle périodique.

La couche réseau Le protocole X.25

Problèmes liés à la concurrence

Analyse de sécurité de logiciels système par typage statique

Quelques éléments de compilation en C et makefiles

Plan. École Supérieure d Économie Électronique. Plan. Chap 9: Composants et systèmes de sécurité. Rhouma Rhouma. 21 Juillet 2014

Messagerie asynchrone et Services Web

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Architecture des ordinateurs

Transcription:

Introduction à la Programmation Parallèle: MPI Frédéric Gava et Gaétan Hains L.A.C.L Laboratoire d Algorithmique, Complexité et Logique Cours du M2 SSI option PSSR

Plan 1 Modèle de programmation 2 3 4

Plan 1 Modèle de programmation 2 3 4

Plan 1 Modèle de programmation 2 3 4

Plan 1 Modèle de programmation 2 3 4

Avant Solution 1 Modèle de programmation Avant Solution 2 3 4 Introduction à la Programmation Parallèle: MPI 3 / 38

Mémoire répartie Modèle de programmation Avant Solution Peu de systèmes informatiques offrent une véritable mémoire partagée. Même si c est le cas (par ex. SGI Origin 2000 ou les Core Duo etc.) plusieurs facteurs technologiques et physiques font qu un système multi-processeur a un temps d accès à la mémoire qui est variable (Non-uniform memory access ou NUMA). Il vaut alors mieux construire, modéliser ou programmer le système comme un ensemble de blocs controle-processeur-mémoire, ce qui revient à répartir la mémoire sur un réseau d ordinateurs séquentiels. Introduction à la Programmation Parallèle: MPI 4 / 38

Mémoire répartie Modèle de programmation Avant Solution Peu de systèmes informatiques offrent une véritable mémoire partagée. Même si c est le cas (par ex. SGI Origin 2000 ou les Core Duo etc.) plusieurs facteurs technologiques et physiques font qu un système multi-processeur a un temps d accès à la mémoire qui est variable (Non-uniform memory access ou NUMA). Il vaut alors mieux construire, modéliser ou programmer le système comme un ensemble de blocs controle-processeur-mémoire, ce qui revient à répartir la mémoire sur un réseau d ordinateurs séquentiels. Introduction à la Programmation Parallèle: MPI 4 / 38

Envoi de messages Modèle de programmation Avant Solution Une méthode Le modèle de programmation est alors appelé envoi de messages (message passing en anglais). Il consiste à faire exécuter à chaque processeur (c est-à-dire chaque bloc controle-processeur-mémoire) un programme séquentiel faisant appel à des opérations d envoi et de réception de messages. On suppose (pour simplifier) un unique processus par processeur et on utilise donc les termes processeur ou processus sans distinction a L exécution des processus ne se synchronise qu à travers les opérations d envoi et réception de messages. Les données sont partagées via des messages qui les transmettent. a En réalité, on peut faire exécuter plus d un processus par processeur physique; ce qui ne change pas la sémantique des programmes mais leur performance. Introduction à la Programmation Parallèle: MPI 5 / 38

Envoi de messages Modèle de programmation Avant Solution Avantage Portabilité et extensibilité: programmes valables sur 1, 2 ou des milliers de processeurs. Inconvénient Le programmeur doit raisonner en fonction d une mémoire à deux niveaux: global vs local. Si par exemple on programme un algorithme qui agit sur une matrice de grande taille, il faudra la découper en P blocs et coordonner l effet global des opérations sur la matrice. Introduction à la Programmation Parallèle: MPI 6 / 38

Envoi de messages Modèle de programmation Avant Solution Avantage Portabilité et extensibilité: programmes valables sur 1, 2 ou des milliers de processeurs. Inconvénient Le programmeur doit raisonner en fonction d une mémoire à deux niveaux: global vs local. Si par exemple on programme un algorithme qui agit sur une matrice de grande taille, il faudra la découper en P blocs et coordonner l effet global des opérations sur la matrice. Introduction à la Programmation Parallèle: MPI 6 / 38

Plus précisement Premier pas 1 Modèle de programmation 2 Plus précisement Premier pas 3 4 Introduction à la Programmation Parallèle: MPI 7 / 38

MPI : Message Passing Interface Plus précisement Premier pas Kesako? Un standard de bibliothèque d envoi de messages. Défini par un forum de chercheurs et d industriels du calcul haute performance. Plusieurs implantations gratuites, toutes portables. Plus d info sur : http://www.mpi-forum.org/ http: //en.wikipedia.org/wiki/message Passing Interface Deux implantations courament utilisées : http://www.mcs.anl.gov/mpi/ http://www.lam-mpi.org/ Introduction à la Programmation Parallèle: MPI 8 / 38

MPI : Message Passing Interface Plus précisement Premier pas Kesako? Un standard de bibliothèque d envoi de messages. Défini par un forum de chercheurs et d industriels du calcul haute performance. Plusieurs implantations gratuites, toutes portables. Plus d info sur : http://www.mpi-forum.org/ http: //en.wikipedia.org/wiki/message Passing Interface Deux implantations courament utilisées : http://www.mcs.anl.gov/mpi/ http://www.lam-mpi.org/ Introduction à la Programmation Parallèle: MPI 8 / 38

MPI : Message Passing Interface Plus précisement Premier pas Kesako? Un standard de bibliothèque d envoi de messages. Défini par un forum de chercheurs et d industriels du calcul haute performance. Plusieurs implantations gratuites, toutes portables. Plus d info sur : http://www.mpi-forum.org/ http: //en.wikipedia.org/wiki/message Passing Interface Deux implantations courament utilisées : http://www.mcs.anl.gov/mpi/ http://www.lam-mpi.org/ Introduction à la Programmation Parallèle: MPI 8 / 38

MPI : Message Passing Interface Plus précisement Premier pas Pourquoi MPI? Faciliter la programmation par envoi de message Portabilité des programmes parallèles Utilisable avec une architecture hétérogène Cible stable pour des outils/langages de plus haut niveau Que contient MPI? Constantes, types et fonctions pour C et F77 Opérations de communications point-à-point Opérations de communications collectives Groupes de processus Interface de suivi des performances Fonctions d E/S parallèles (version 2) Introduction à la Programmation Parallèle: MPI 9 / 38

MPI : Message Passing Interface Plus précisement Premier pas Pourquoi MPI? Faciliter la programmation par envoi de message Portabilité des programmes parallèles Utilisable avec une architecture hétérogène Cible stable pour des outils/langages de plus haut niveau Que contient MPI? Constantes, types et fonctions pour C et F77 Opérations de communications point-à-point Opérations de communications collectives Groupes de processus Interface de suivi des performances Fonctions d E/S parallèles (version 2) Introduction à la Programmation Parallèle: MPI 9 / 38

MPI : Message Passing Interface Plus précisement Premier pas Pourquoi MPI? Faciliter la programmation par envoi de message Portabilité des programmes parallèles Utilisable avec une architecture hétérogène Cible stable pour des outils/langages de plus haut niveau Que contient MPI? Constantes, types et fonctions pour C et F77 Opérations de communications point-à-point Opérations de communications collectives Groupes de processus Interface de suivi des performances Fonctions d E/S parallèles (version 2) Introduction à la Programmation Parallèle: MPI 9 / 38

MPI : Message Passing Interface Plus précisement Premier pas Pourquoi MPI? Faciliter la programmation par envoi de message Portabilité des programmes parallèles Utilisable avec une architecture hétérogène Cible stable pour des outils/langages de plus haut niveau Que contient MPI? Constantes, types et fonctions pour C et F77 Opérations de communications point-à-point Opérations de communications collectives Groupes de processus Interface de suivi des performances Fonctions d E/S parallèles (version 2) Introduction à la Programmation Parallèle: MPI 9 / 38

MPI : Message Passing Interface Plus précisement Premier pas Pourquoi MPI? Faciliter la programmation par envoi de message Portabilité des programmes parallèles Utilisable avec une architecture hétérogène Cible stable pour des outils/langages de plus haut niveau Que contient MPI? Constantes, types et fonctions pour C et F77 Opérations de communications point-à-point Opérations de communications collectives Groupes de processus Interface de suivi des performances Fonctions d E/S parallèles (version 2) Introduction à la Programmation Parallèle: MPI 9 / 38

MPI : Message Passing Interface Plus précisement Premier pas Pourquoi MPI? Faciliter la programmation par envoi de message Portabilité des programmes parallèles Utilisable avec une architecture hétérogène Cible stable pour des outils/langages de plus haut niveau Que contient MPI? Constantes, types et fonctions pour C et F77 Opérations de communications point-à-point Opérations de communications collectives Groupes de processus Interface de suivi des performances Fonctions d E/S parallèles (version 2) Introduction à la Programmation Parallèle: MPI 9 / 38

MPI : Message Passing Interface Plus précisement Premier pas Pourquoi MPI? Faciliter la programmation par envoi de message Portabilité des programmes parallèles Utilisable avec une architecture hétérogène Cible stable pour des outils/langages de plus haut niveau Que contient MPI? Constantes, types et fonctions pour C et F77 Opérations de communications point-à-point Opérations de communications collectives Groupes de processus Interface de suivi des performances Fonctions d E/S parallèles (version 2) Introduction à la Programmation Parallèle: MPI 9 / 38

MPI : Message Passing Interface Plus précisement Premier pas Pourquoi MPI? Faciliter la programmation par envoi de message Portabilité des programmes parallèles Utilisable avec une architecture hétérogène Cible stable pour des outils/langages de plus haut niveau Que contient MPI? Constantes, types et fonctions pour C et F77 Opérations de communications point-à-point Opérations de communications collectives Groupes de processus Interface de suivi des performances Fonctions d E/S parallèles (version 2) Introduction à la Programmation Parallèle: MPI 9 / 38

MPI : Message Passing Interface Plus précisement Premier pas Pourquoi MPI? Faciliter la programmation par envoi de message Portabilité des programmes parallèles Utilisable avec une architecture hétérogène Cible stable pour des outils/langages de plus haut niveau Que contient MPI? Constantes, types et fonctions pour C et F77 Opérations de communications point-à-point Opérations de communications collectives Groupes de processus Interface de suivi des performances Fonctions d E/S parallèles (version 2) Introduction à la Programmation Parallèle: MPI 9 / 38

MPI : Message Passing Interface Plus précisement Premier pas Pourquoi MPI? Faciliter la programmation par envoi de message Portabilité des programmes parallèles Utilisable avec une architecture hétérogène Cible stable pour des outils/langages de plus haut niveau Que contient MPI? Constantes, types et fonctions pour C et F77 Opérations de communications point-à-point Opérations de communications collectives Groupes de processus Interface de suivi des performances Fonctions d E/S parallèles (version 2) Introduction à la Programmation Parallèle: MPI 9 / 38

MPI : Message Passing Interface Plus précisement Premier pas Pourquoi MPI? Faciliter la programmation par envoi de message Portabilité des programmes parallèles Utilisable avec une architecture hétérogène Cible stable pour des outils/langages de plus haut niveau Que contient MPI? Constantes, types et fonctions pour C et F77 Opérations de communications point-à-point Opérations de communications collectives Groupes de processus Interface de suivi des performances Fonctions d E/S parallèles (version 2) Introduction à la Programmation Parallèle: MPI 9 / 38

MPI : Message Passing Interface Plus précisement Premier pas Pourquoi MPI? Faciliter la programmation par envoi de message Portabilité des programmes parallèles Utilisable avec une architecture hétérogène Cible stable pour des outils/langages de plus haut niveau Que contient MPI? Constantes, types et fonctions pour C et F77 Opérations de communications point-à-point Opérations de communications collectives Groupes de processus Interface de suivi des performances Fonctions d E/S parallèles (version 2) Introduction à la Programmation Parallèle: MPI 9 / 38

MPI : Message Passing Interface Plus précisement Premier pas Ce que ne contient pas MPI Opérations de mémoire partagée (donc chaque processus a son propre espace d adressage) Outils de programmation, débogueur Gestion des processus RPC ou Remote procedure call Processus légers (en fait, certaines implantations de MPI ne sont pas thread safe ) Introduction à la Programmation Parallèle: MPI 10 / 38

MPI : Message Passing Interface Plus précisement Premier pas Ce que ne contient pas MPI Opérations de mémoire partagée (donc chaque processus a son propre espace d adressage) Outils de programmation, débogueur Gestion des processus RPC ou Remote procedure call Processus légers (en fait, certaines implantations de MPI ne sont pas thread safe ) Introduction à la Programmation Parallèle: MPI 10 / 38

MPI : Message Passing Interface Plus précisement Premier pas Ce que ne contient pas MPI Opérations de mémoire partagée (donc chaque processus a son propre espace d adressage) Outils de programmation, débogueur Gestion des processus RPC ou Remote procedure call Processus légers (en fait, certaines implantations de MPI ne sont pas thread safe ) Introduction à la Programmation Parallèle: MPI 10 / 38

MPI : Message Passing Interface Plus précisement Premier pas Ce que ne contient pas MPI Opérations de mémoire partagée (donc chaque processus a son propre espace d adressage) Outils de programmation, débogueur Gestion des processus RPC ou Remote procedure call Processus légers (en fait, certaines implantations de MPI ne sont pas thread safe ) Introduction à la Programmation Parallèle: MPI 10 / 38

MPI : Message Passing Interface Plus précisement Premier pas Ce que ne contient pas MPI Opérations de mémoire partagée (donc chaque processus a son propre espace d adressage) Outils de programmation, débogueur Gestion des processus RPC ou Remote procedure call Processus légers (en fait, certaines implantations de MPI ne sont pas thread safe ) Introduction à la Programmation Parallèle: MPI 10 / 38

MPI : Message Passing Interface Plus précisement Premier pas Ce que ne contient pas MPI Opérations de mémoire partagée (donc chaque processus a son propre espace d adressage) Outils de programmation, débogueur Gestion des processus RPC ou Remote procedure call Processus légers (en fait, certaines implantations de MPI ne sont pas thread safe ) Introduction à la Programmation Parallèle: MPI 10 / 38

Programmation en mode SPMD Plus précisement Premier pas SPMD? SPMD = Single Program Multiple Data. Fonctionnement? 1 On écrit un programme C avec des opérations MPI pour les communications 2 On le compile et le lance avec mpirun -np n où n est le nombre de processus voulu. 3 n copies de l exécutable sont créées avec pour numéros de processus 0, 1,..., n 1. 4 Les processus s exécutent en mode asynchrone et se synchronisent lors d échanges de messages. 5 Les processus se terminent tous (s il n y a pas eu blocage). Introduction à la Programmation Parallèle: MPI 11 / 38

Programmation en mode SPMD Plus précisement Premier pas SPMD? SPMD = Single Program Multiple Data. Fonctionnement? 1 On écrit un programme C avec des opérations MPI pour les communications 2 On le compile et le lance avec mpirun -np n où n est le nombre de processus voulu. 3 n copies de l exécutable sont créées avec pour numéros de processus 0, 1,..., n 1. 4 Les processus s exécutent en mode asynchrone et se synchronisent lors d échanges de messages. 5 Les processus se terminent tous (s il n y a pas eu blocage). Introduction à la Programmation Parallèle: MPI 11 / 38

Programmation en mode SPMD Plus précisement Premier pas SPMD? SPMD = Single Program Multiple Data. Fonctionnement? 1 On écrit un programme C avec des opérations MPI pour les communications 2 On le compile et le lance avec mpirun -np n où n est le nombre de processus voulu. 3 n copies de l exécutable sont créées avec pour numéros de processus 0, 1,..., n 1. 4 Les processus s exécutent en mode asynchrone et se synchronisent lors d échanges de messages. 5 Les processus se terminent tous (s il n y a pas eu blocage). Introduction à la Programmation Parallèle: MPI 11 / 38

Programmation en mode SPMD Plus précisement Premier pas SPMD? SPMD = Single Program Multiple Data. Fonctionnement? 1 On écrit un programme C avec des opérations MPI pour les communications 2 On le compile et le lance avec mpirun -np n où n est le nombre de processus voulu. 3 n copies de l exécutable sont créées avec pour numéros de processus 0, 1,..., n 1. 4 Les processus s exécutent en mode asynchrone et se synchronisent lors d échanges de messages. 5 Les processus se terminent tous (s il n y a pas eu blocage). Introduction à la Programmation Parallèle: MPI 11 / 38

Programmation en mode SPMD Plus précisement Premier pas SPMD? SPMD = Single Program Multiple Data. Fonctionnement? 1 On écrit un programme C avec des opérations MPI pour les communications 2 On le compile et le lance avec mpirun -np n où n est le nombre de processus voulu. 3 n copies de l exécutable sont créées avec pour numéros de processus 0, 1,..., n 1. 4 Les processus s exécutent en mode asynchrone et se synchronisent lors d échanges de messages. 5 Les processus se terminent tous (s il n y a pas eu blocage). Introduction à la Programmation Parallèle: MPI 11 / 38

Programmation en mode SPMD Plus précisement Premier pas SPMD? SPMD = Single Program Multiple Data. Fonctionnement? 1 On écrit un programme C avec des opérations MPI pour les communications 2 On le compile et le lance avec mpirun -np n où n est le nombre de processus voulu. 3 n copies de l exécutable sont créées avec pour numéros de processus 0, 1,..., n 1. 4 Les processus s exécutent en mode asynchrone et se synchronisent lors d échanges de messages. 5 Les processus se terminent tous (s il n y a pas eu blocage). Introduction à la Programmation Parallèle: MPI 11 / 38

Programmation en mode SPMD Plus précisement Premier pas SPMD? SPMD = Single Program Multiple Data. Fonctionnement? 1 On écrit un programme C avec des opérations MPI pour les communications 2 On le compile et le lance avec mpirun -np n où n est le nombre de processus voulu. 3 n copies de l exécutable sont créées avec pour numéros de processus 0, 1,..., n 1. 4 Les processus s exécutent en mode asynchrone et se synchronisent lors d échanges de messages. 5 Les processus se terminent tous (s il n y a pas eu blocage). Introduction à la Programmation Parallèle: MPI 11 / 38

Types d appels de fonctions MPI Plus précisement Premier pas Local, bloquant ou non 1 Local : ne nécessite aucune communication. Par ex. pour générer un objet MPI local. 2 Non-local : nécessite l exécution d une procédure MPI sur un autre processus. Par ex. un envoi de message (nécessite réception). 3 Bloquant : à la fin d un tel appel, le programme appelant peut réutiliser les ressources utilisées dans l appel: par ex. un buffer. 4 Non-bloquant : à la fin d un tel appel, le programme doit attendre que l opération se termine avant de réutiliser les ressources utilisées. Par ex: un envoi de message non-bloquant peut libérer le processus émetteur avant que le message ne soit envoyé. Introduction à la Programmation Parallèle: MPI 12 / 38

Types d appels de fonctions MPI Plus précisement Premier pas Local, bloquant ou non 1 Local : ne nécessite aucune communication. Par ex. pour générer un objet MPI local. 2 Non-local : nécessite l exécution d une procédure MPI sur un autre processus. Par ex. un envoi de message (nécessite réception). 3 Bloquant : à la fin d un tel appel, le programme appelant peut réutiliser les ressources utilisées dans l appel: par ex. un buffer. 4 Non-bloquant : à la fin d un tel appel, le programme doit attendre que l opération se termine avant de réutiliser les ressources utilisées. Par ex: un envoi de message non-bloquant peut libérer le processus émetteur avant que le message ne soit envoyé. Introduction à la Programmation Parallèle: MPI 12 / 38

Types d appels de fonctions MPI Plus précisement Premier pas Local, bloquant ou non 1 Local : ne nécessite aucune communication. Par ex. pour générer un objet MPI local. 2 Non-local : nécessite l exécution d une procédure MPI sur un autre processus. Par ex. un envoi de message (nécessite réception). 3 Bloquant : à la fin d un tel appel, le programme appelant peut réutiliser les ressources utilisées dans l appel: par ex. un buffer. 4 Non-bloquant : à la fin d un tel appel, le programme doit attendre que l opération se termine avant de réutiliser les ressources utilisées. Par ex: un envoi de message non-bloquant peut libérer le processus émetteur avant que le message ne soit envoyé. Introduction à la Programmation Parallèle: MPI 12 / 38

Types d appels de fonctions MPI Plus précisement Premier pas Local, bloquant ou non 1 Local : ne nécessite aucune communication. Par ex. pour générer un objet MPI local. 2 Non-local : nécessite l exécution d une procédure MPI sur un autre processus. Par ex. un envoi de message (nécessite réception). 3 Bloquant : à la fin d un tel appel, le programme appelant peut réutiliser les ressources utilisées dans l appel: par ex. un buffer. 4 Non-bloquant : à la fin d un tel appel, le programme doit attendre que l opération se termine avant de réutiliser les ressources utilisées. Par ex: un envoi de message non-bloquant peut libérer le processus émetteur avant que le message ne soit envoyé. Introduction à la Programmation Parallèle: MPI 12 / 38

Types d appels de fonctions MPI Plus précisement Premier pas Local, bloquant ou non 1 Local : ne nécessite aucune communication. Par ex. pour générer un objet MPI local. 2 Non-local : nécessite l exécution d une procédure MPI sur un autre processus. Par ex. un envoi de message (nécessite réception). 3 Bloquant : à la fin d un tel appel, le programme appelant peut réutiliser les ressources utilisées dans l appel: par ex. un buffer. 4 Non-bloquant : à la fin d un tel appel, le programme doit attendre que l opération se termine avant de réutiliser les ressources utilisées. Par ex: un envoi de message non-bloquant peut libérer le processus émetteur avant que le message ne soit envoyé. Introduction à la Programmation Parallèle: MPI 12 / 38

Types d appels de fonctions MPI Plus précisement Premier pas Collectif et groupes 1 Collectif Nécessite l appel de la même fonction par tous les processus (d un même groupe de processus). Par ex: broadcast, diffusion d une valeur d un processus à tous les autres. 2 Pour simplifier, dans ce qui suit il n y a qu un seul groupe de processus communicants: situation par défaut Introduction à la Programmation Parallèle: MPI 13 / 38

Types d appels de fonctions MPI Plus précisement Premier pas Collectif et groupes 1 Collectif Nécessite l appel de la même fonction par tous les processus (d un même groupe de processus). Par ex: broadcast, diffusion d une valeur d un processus à tous les autres. 2 Pour simplifier, dans ce qui suit il n y a qu un seul groupe de processus communicants: situation par défaut Introduction à la Programmation Parallèle: MPI 13 / 38

Types d appels de fonctions MPI Plus précisement Premier pas Collectif et groupes 1 Collectif Nécessite l appel de la même fonction par tous les processus (d un même groupe de processus). Par ex: broadcast, diffusion d une valeur d un processus à tous les autres. 2 Pour simplifier, dans ce qui suit il n y a qu un seul groupe de processus communicants: situation par défaut Introduction à la Programmation Parallèle: MPI 13 / 38

C et MPI Modèle de programmation Plus précisement Premier pas Les noms MPI ont pour préfixe MPI : à éviter pour le reste du programme. Les fonctions rendent un code d erreur. En cas de succès: MPI SUCCESS Arguments tableaux indexés à partir de 0. Arguments Flags : entiers encodant un booléen. 0=faux, non-zéro=vrai. Arguments de types union: pointeurs de type void*. Arguments-adresses: type défini MPI comme MPI Aint. C est un entier de taille suffisante pour une adresse de l architecture cible. Les constantes MPI peuvent être affectées à des variables C. Introduction à la Programmation Parallèle: MPI 14 / 38

Programmer en C+MPI Plus précisement Premier pas Inialisation Pour utiliser MPI, un programme doit inclure le header de MPI #include "mpi.h" On compile avec mpicc On initialise avec MPI Init(argc,argv) 2 constantes très utiles Avoir la taille du groupe int MPI Comm size(mpi Comm, int *size) et donc pour l ensemble des processeurs MPI Comm size(mpi COMM WORLD,&nprocs) idem pour le pid du processeur dans un groupe int MPI Comm rank(mpi Comm, int *rank) Introduction à la Programmation Parallèle: MPI 15 / 38

Programmer en C+MPI Plus précisement Premier pas Inialisation Pour utiliser MPI, un programme doit inclure le header de MPI #include "mpi.h" On compile avec mpicc On initialise avec MPI Init(argc,argv) 2 constantes très utiles Avoir la taille du groupe int MPI Comm size(mpi Comm, int *size) et donc pour l ensemble des processeurs MPI Comm size(mpi COMM WORLD,&nprocs) idem pour le pid du processeur dans un groupe int MPI Comm rank(mpi Comm, int *rank) Introduction à la Programmation Parallèle: MPI 15 / 38

Programmer en C+MPI Plus précisement Premier pas Terminaison et exécution On termine avec MPI Finalize(void) On lance avec mpirun option "prog" "arguments du programme" et : 1 -np 6 pour avoir 6 processus 2 -nolocal pour n avoir des processus que sur les noeuds 3 -machinefile "machine" un fichier contenant le nom des noeuds 4 -arch LINUX pour préciser le type d architecture (ici LINUX) 5 etc. (faire man mpirun pour plus d options) En général, plus de détails sur http://www.idris.fr/data/cours/parallel/mpi/choix doc.html (programmes en Fortran mais aisés à traduire en C) http://ph.ris.free.fr/cours/mpi.html http://www.cines.fr/img/pdf/cours mpi mtp 051206.pdf Introduction à la Programmation Parallèle: MPI 16 / 38

Programmer en C+MPI Plus précisement Premier pas Terminaison et exécution On termine avec MPI Finalize(void) On lance avec mpirun option "prog" "arguments du programme" et : 1 -np 6 pour avoir 6 processus 2 -nolocal pour n avoir des processus que sur les noeuds 3 -machinefile "machine" un fichier contenant le nom des noeuds 4 -arch LINUX pour préciser le type d architecture (ici LINUX) 5 etc. (faire man mpirun pour plus d options) En général, plus de détails sur http://www.idris.fr/data/cours/parallel/mpi/choix doc.html (programmes en Fortran mais aisés à traduire en C) http://ph.ris.free.fr/cours/mpi.html http://www.cines.fr/img/pdf/cours mpi mtp 051206.pdf Introduction à la Programmation Parallèle: MPI 16 / 38

Primitives bloquantes La combinaison 1 Modèle de programmation 2 3 Primitives bloquantes La combinaison 4 Introduction à la Programmation Parallèle: MPI 17 / 38

Envoi bloquant Modèle de programmation Primitives bloquantes La combinaison Type int MPI Send(void* buf, int count, MPI Datatype datatype, int dest, int tag, MPI Comm comm) Arguments Les arguments sont tous des paramètres d entrée à la fonction : buf adresse du début du buffer count nombre de valeurs à envoyer datatype type de chaque valeur dest rang du processus de destination tag étiquette pour identifier le message comm communicator: groupe de processus Introduction à la Programmation Parallèle: MPI 18 / 38

Envoi bloquant Modèle de programmation Primitives bloquantes La combinaison Type int MPI Send(void* buf, int count, MPI Datatype datatype, int dest, int tag, MPI Comm comm) Arguments Les arguments sont tous des paramètres d entrée à la fonction : buf adresse du début du buffer count nombre de valeurs à envoyer datatype type de chaque valeur dest rang du processus de destination tag étiquette pour identifier le message comm communicator: groupe de processus Introduction à la Programmation Parallèle: MPI 18 / 38

Envoi bloquant Modèle de programmation Primitives bloquantes La combinaison Remarques 1 Dans le cas le plus simple, on fixe comm à MPI COMM WORLD 2 Comme un processus peut recevoir plusieurs messages (et éventuellement plusieurs d un même émetteur), tag peut servir à les identifier. Si leur identité est connue (par le contexte du programme), on peut fixer tag à n importe quelle valeur lors de l émission et à MPI ANY TAG lors de la réception. 3 L émetteur place les valeurs à émettre dans des lieux successifs de la mémoire locale avant d appeler MPI Send 4 Si on fixe count=0, le message ne contiendra que ses informations de controle source, destination, tag et communicateur et pourra servir à une synchronisation ou à signifier un événement. Introduction à la Programmation Parallèle: MPI 19 / 38

Envoi bloquant Modèle de programmation Primitives bloquantes La combinaison Remarques 1 Dans le cas le plus simple, on fixe comm à MPI COMM WORLD 2 Comme un processus peut recevoir plusieurs messages (et éventuellement plusieurs d un même émetteur), tag peut servir à les identifier. Si leur identité est connue (par le contexte du programme), on peut fixer tag à n importe quelle valeur lors de l émission et à MPI ANY TAG lors de la réception. 3 L émetteur place les valeurs à émettre dans des lieux successifs de la mémoire locale avant d appeler MPI Send 4 Si on fixe count=0, le message ne contiendra que ses informations de controle source, destination, tag et communicateur et pourra servir à une synchronisation ou à signifier un événement. Introduction à la Programmation Parallèle: MPI 19 / 38

Envoi bloquant Modèle de programmation Primitives bloquantes La combinaison Remarques 1 Dans le cas le plus simple, on fixe comm à MPI COMM WORLD 2 Comme un processus peut recevoir plusieurs messages (et éventuellement plusieurs d un même émetteur), tag peut servir à les identifier. Si leur identité est connue (par le contexte du programme), on peut fixer tag à n importe quelle valeur lors de l émission et à MPI ANY TAG lors de la réception. 3 L émetteur place les valeurs à émettre dans des lieux successifs de la mémoire locale avant d appeler MPI Send 4 Si on fixe count=0, le message ne contiendra que ses informations de controle source, destination, tag et communicateur et pourra servir à une synchronisation ou à signifier un événement. Introduction à la Programmation Parallèle: MPI 19 / 38

Envoi bloquant Modèle de programmation Primitives bloquantes La combinaison Remarques 1 Dans le cas le plus simple, on fixe comm à MPI COMM WORLD 2 Comme un processus peut recevoir plusieurs messages (et éventuellement plusieurs d un même émetteur), tag peut servir à les identifier. Si leur identité est connue (par le contexte du programme), on peut fixer tag à n importe quelle valeur lors de l émission et à MPI ANY TAG lors de la réception. 3 L émetteur place les valeurs à émettre dans des lieux successifs de la mémoire locale avant d appeler MPI Send 4 Si on fixe count=0, le message ne contiendra que ses informations de controle source, destination, tag et communicateur et pourra servir à une synchronisation ou à signifier un événement. Introduction à la Programmation Parallèle: MPI 19 / 38