Introduction à MPI 13 – 16 Décembre 2005 Laurence Viry.

Slides:



Advertisements
Présentations similaires
Module Systèmes d’exploitation
Advertisements

GEF 435 Principes des systèmes d’exploitation
Hiver 2010JGA Beaulieu GEF 243B Programmation informatique appliquée Structure de base des programmes en C.
GEF 243B Programmation informatique appliquée
Communications point à point Communications collectives Optimisations
1 HPC et Windows 2003 CCS pour les développeurs Visual Studio 2005.
Introduction au langage C++
A propos de java Sun, fin 1995 C++ nettoyé semi-interprété
Synchronisation des processus père - fils
GEF 435 Principes des systèmes d’exploitations
GEF 435 Principes des systèmes dexploitation Structure des systèmes dexploitation (Tanenbaum 1.7)
Groupe France Télécom Projet Cilia : collaboration LIG Adèle – Orange Labs/MAPS/MEP slide 1 Cilia, un framework de médiation ouvert, léger, multi-personnalités.
Cours n° 8 Conception et Programmation à Objets
Introduction à Java - les paquetages -
C.
Mémoire & Processus Cours SE - SRC
13 – 16 Décembre 2005 Laurence Viry Introduction à MPI MPI_2.
Bibliothèques Scientifiques
Communicateurs - Topologie
Introduction à MPI Types dérivés MPI Décembre 2005
LICENCE MIAGE Introduction Programmation Orientée Objet JAVA philippe
TD 1 IJA Introduction Objet, méthode, attribut Classe, instance
Programmation Orientée Objet (POO)
TP 3-4 BD21.
INTRODUCTION.
FLSI602 Génie Informatique et Réseaux
Leçon 3 : Héritage IUP 2 Génie Informatique
Parallel Programming in C with MPI and OpenMP
MPI et programmation par passage de messages
Etude des Technologies du Web services
XML-Family Web Services Description Language W.S.D.L.
ADR Active and Dynamic Routing. Plan Introduction au routage Les réseaux actifs Les agents Mise à jour des matrices de routage Architecture du routage.
MPI (Message Passing Interface)
Réalisée par :Samira RAHALI
Bibliothèque standard du C++
Les Classes les structures en C (struct) regroupent des variables : structuration de l'analyse mais problèmes de cohérence problèmes de sécurité d'accès.
77 Utilisation des classes (suite). 7-2 Objectifs A la fin de ce cours, vous serez capables de : Définir des méthodes surchargées dans une classe Fournir.
5.1 URDL22005 Systèmes dexploitation Threads Vue dEnsemble Modèles de Multithreading Problèmes des Threads Pthreads Threads Windows XP Threads Linux Threads.
Franck Cappello CNRS, LRI, Université Paris-sud
Programmation concurrente
Une brève introduction à MPI Destinée à l usage des utilisateurs de CIMENT Laurent Desbat juin 2002.
Module 2 : Préparation de l'analyse des performances du serveur
Parallel Programming in C with MPI and OpenMP
Parallel Programming in C with MPI and OpenMP
Chapitre 9 Les sous-programmes.
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
Document élaboré à Centrale Paris par Pascal Morenton LES TECHNOLOGIES DU WEB 1. LES PHASES D UN DEPLOIEMENT DE RESEAUX 2. LE LANGAGE HTML 3. LE LANGAGE.
Masters IIGLI et IGLII – Programmation générique et conception objet – – Claude Montacié 1 Cours n° 4 Polymorphisme II.
Importance du réseau dans des architectures MIMD Tout échange entre les processeurs nécessite un transfert de données via le réseau.
Programmer en langage c
Programmation Système et Réseau (sous Linux)
Présentation de CORBA et de IIOP
1 Architecture orientée service SOA Architecture orientée service SOA (Service Oriented Architecture)
La notion de type revisitée en POO
Créer des packages.
Yonel GRUSSON1 Installation d'une imprimante sous Windows 200x Server.
Calcul parallèle => partitionner les données en sous-groupes associés aux processeurs. P0 P2 P1.
Le contenu est basé aux transparents du 7 ème édition de «Software Engineering» de Ian Sommerville«Software Engineering» de Ian Sommerville B.Shishedjiev.
Enterprise Java Beans 3.0 Cours INF Bases de Données Hiver 2005, groupe 10 Stefan MARTINESCU.
Programmation parallèle
La programmation système
Programmation Système et Réseau
L’Audio sur PC Comparaison Numérique vs Analogique Comparaison Audio sur PC vs Hardware dédié (DSP) Rmq: beaucoup de simulitudes avec la vidéo, mais débit.
PaCO++ André Ribes Réunion Hydrogrid Rennes 15/09/03.
Interface de communication pour les réseaux InfiniBand
Introduction aux architectures parallèles
Architecture Client/Serveur
Algorithmes parallèles
Gestion des Tâches Les Processus. Un système multitâches La carte mère comporte Le Processeur (calcul et attente) Les jeux de composants spécialisés (entrées-sorties.
1 UNIX AVANCE Yves PAGNOTTE – Janvier – LES PROCESSUS SOUS UNIX.
Transcription de la présentation:

Introduction à MPI 13 – 16 Décembre 2005 Laurence Viry

Bibliothèque MPI Quelques rappels sur le parallélisme Qu’est ce que MPI? Pourquoi utiliser MPI? Bibliothèque MPI Routines de base Mode et type de communications Complétion Programme MPI 13-16 Décembre 2005 Laurence Viry

Quelques rappels Architectures parallèles Modèle de programmation séquentiel Modèle de programmation par échange de messages Modèle d’exécution SPMD, MPMD Objectifs de la programmation parallèle Nous aborderons dans ce chapître : Les principes de bases des architectures parallèles La différence entre la décomposition de domaine et la décomposition fonctionnelle Les différences entre le « data parallel » et le modèle d’échange de messages Les objectfs de la parallélisation 13-16 Décembre 2005 Laurence Viry

Architectures parallèles Deux types d’architecture Calculateur à mémoire distribuée: Chaque nœud a un accès rapide à sa propre mémoire locale Chaque nœud accède à la mémoire des autres nœuds par des appels à des routines de communications Calculateur à mémoire partagée: plusieurs processeurs partagent un même espace mémoire global via un bus mémoire rapide Architecture mixe: plusieurs calculateurs à mémoire partagée reliés par un réseau rapide 13-16 Décembre 2005 Laurence Viry

Modèle séquentiel Le programme est exécuté par un seul processeur Toutes les variables et constantes du programme sont allouées dans la mémoire centrale du processeur Mémoire Programme P

Modèle par échange de messages Principes Plusieurs processus travaillant sur des données locales. Chaque processus a ses propres variables et il n’a pas accès directement aux variables des autres processus Le partage des données entre processus se fait par envoi et réception explicites de messages Les processus peuvent s’exécuter sur des processeurs différents ou identiques. 13-16 Décembre 2005 Laurence Viry

5 1 3 Modèle à échange de messages (MPMD) Mémoires Processus Réseau 1 3 Réseau Programme

Modèle par échange de messages SPMD Single Program Multiple Data Le même programme s’exécute pour tous les processus Toutes les machines supportent ce modèle de programmation Cas particulier du modèle MPMD 13-16 Décembre 2005 Laurence Viry

5 1 3 Modèle à échange de messages (SPMD) Mémoires Processus Réseau 1 3 Réseau Programme

Modèle par échange de messages Avantages Peut être implémenter sur une grande variété de plates-formes Calculateur à mémoire distribuée Calculateur à mémoire partagée Réseau de stations mono ou multi-processeurs Station mono-processeur Permet en général un plus grand contrôle de la localisation des données et par conséquent une meilleure performance des accès aux données. 13-16 Décembre 2005 Laurence Viry

Objectifs de la programmation parallèle Obtenir de meilleures performances que la version séquentielle Traiter de façon performante un volume de données plus important Quelques critères de performance: Équilibrer les charges sur chaque processus Minimiser les communications Recouvrir les communications par des calculs (attention à la synchronisation…) Minimiser les communications: Trois composantes constituent le temps d’exécution d’un programme parallèle. Le temps de calcul Le temps « idle » Le temps de communication: temps passé à envoyer et à recevoir des messages. Ce temps dépend de la latence et de la bande passante du réseau. La latence est le temps mis pour positionner l’enveloppe du message, la bande passante est la vitesse de transmission. Il est impératif de minimiser ce temps pour optimiser l’implémentation parallèle. Superposer les calculs et les communication pour minimiser le temps « idle » des processus. Une utilisation preudente des communications on-bloquantes permet de faire cette superposition. En pratique, cette superpoition n’est as facile à gérer de façon fiable. 13-16 Décembre 2005 Laurence Viry

Facteurs de performances communications Elles dépendent de deux types de critères: Le mode de transfert Avec recopie ou sans recopie des données transferrées Bloquant et non bloquant Synchrone et non synchrone Les performances du réseau Latence: temps mis pour envoyer un message de taille nulle Débit ou bande passante le choix d’un mode de transfert adapté et le recouvrement des communications par les calculs sont les deux voies à privilégier 13-16 Décembre 2005 Laurence Viry

Qu’est ce que MPI ? Bibliothèque standard de l’implémentation du modèle d’échange de messages MPI-1 (version définie en 1994) Portabilité Implémentation (souvent optimisée) laissée à l’initiative des constructeur Valide sur la plupart des plates-formes MPI-2: MPI_IO, process management, interface avec C++ et f90 … Objectifs de MPI Ce que ne fait pas partie de MPI 13-16 Décembre 2005 Laurence Viry

Principaux objectifs de MPI Écrire des codes parallèles portables Fournir des implémentations performantes sur une grande variété de plates-formes Fournir un grand nombre de fonctionnalités Être capable de s’adapter à une architecture parallèle hétérogène Développement d’outils : Débogueur (Totalview…) Analyseur de performance (Trace Collector, TraceAnalyser…) 13-16 Décembre 2005 Laurence Viry

Apport de MPI-2 à MPI-1 Gestion dynamique des processus E/S parallèles Possibilité de développer des codes MPMD Support multi plates-formes Démarrage et arrêt dynamique des sous-tâches Gestion des signaux système E/S parallèles Communication de mémoire à mémoire (put/get) accès direct à la mémoire d’un processus distant (Remote Memory Access) 13-16 Décembre 2005 Laurence Viry

Apport de MPI-2 à MPI-1 Autres améliorations Interopérabilité C et Fortran Interfaçage avec C++ et Fortran90 Extensions concernant: Les intracommunicateurs Les intercommunicateurs: sous-programmes collectifs Changement de dénominations MPI_TYPE_HVECTOR, MPI_TYPE_HINDEXED, MPI_TYPE_STRUCT MPI_ADDRESS MPI_TYPE_EXTENT, MPI_TYPE_LB, MPI_TYPE_UB MPI_LB, MPI_UB 13-16 Décembre 2005 Laurence Viry

Pourquoi utiliser (ou ne pas) MPI Écrire un code parallèle portable Écrire une application parallèle performante (localisation des données, bibliothèque //…) Traiter un problème irrégulier qui ne peut être traité avec un modèle « data-parallel » Ne pas l’utiliser: on obtient des performances avec un modèle « data-parallel » (OpenMp) => plus simple On peut utiliser une bibliothèque parallèle existante Pas besoin de parallélisme (type de problème, taille,….) 13-16 Décembre 2005 Laurence Viry

Bibliothèque MPI: Bibliographie Les spécifications de la norme MPI: ftp://ftp.irisa.fr/pub/netlib/mpi/drafts/draft_final.ps Quelques ouvrages: MPI : The complete reference M. Snir, S. Otto, S. Huss-Lederman, D. Walker, J. Dongarra Using MPI: Portable Parallel Programming with the Message-Passing Interface (second edition) W. Gropp, Ewing Lusk and Anthony Skjellum Using MPI-2: Advanced Features of the Message-Passing Interface W. Gropp, Ewing Lusk and Anthony Skjellum Parallel Programming with MPI : Peter S. Pacheco 13-16 Décembre 2005 Laurence Viry

Bibliothèque MPI: Bibliographie Documentations complémentaires et descriptions de différentes implémentations http://www.mcs.anl.gov/mpi http://www.mpi-forum.org/index.html Formations: Tutoriaux: www-unix.mcs.anl.gov/mpi/tutorial/gropp/talk.html Cours: www.idris.fr/data/cours/cours-IDRIS.html foxtrot.ncsa.uiuc.edu:8900/webct/public/home.pl 13-16 Décembre 2005 Laurence Viry

Routines de base de MPI Plusieurs types de routines dans MPI: Gestion des communications Initialisation et fin des communications Création de groupe, de communicateur et de topologie virtuelle Routines de communications entre deux processus Routines de communications collectives Création de types dérivés 13-16 Décembre 2005 Laurence Viry

Modes et types de communication Critères de complétion Modes de communications Standard Synchrone Bufferisé « Ready » Communication Bloquantes Non-bloquantes 13-16 Décembre 2005 Laurence Viry

Programme MPI Fichier entête Convention des noms dans MPI Codes définis et utilisés par MPI Type de données MPI Communicateurs Informations sur un communicateur Exemple de programme MPI 13-16 Décembre 2005 Laurence Viry

Structure d’un programme MPI include « fichier entête MPI » En C: #include <mpi.h> En fortran : include ‘mpif.h’ Déclarations des variables Initialisation de MPI (par chaque processus) … Calculs, communications et impressions Fermeture de MPI (par chaque processus) 13-16 Décembre 2005 Laurence Viry

Conventions sur les noms dans MPI Sous programmes: Fonctions en C: MPI_Xxxxx(parametres,…) Ierr=MPI_Init(&argc,&argv) Routines en Fortran: MPI_XXXXX(parametres,…) call MPI_INIT(IERR) Constantes MPI En majuscules en C et en Fortran: MPI_COMM_WORLD, MPI_REAL,… En C, des types sont prédéfinis Type des communicateurs: MPI_Comm … 13-16 Décembre 2005 Laurence Viry

Types et « handles » MPI MPI handles: référence aux structures de données MPI En C: pointeur sur des objets de type MPI prédéfini En Fortran: entier ou tableau d’entiers Exemple: MPI_COMM_WORLD: entier(fortran), objet de type MPI_Comm en C Types de données MPI : Masque l’hétérogénéité de l’implémentation des types Variables déclarées en C et Fortran Utilisation des types MPI correspondants dans les appels aux routines MPI MPI permet de définir ses propres types de données 13-16 Décembre 2005 Laurence Viry

Communicateurs Un communicateur est un code MPI désignant un ensemble de processus succeptibles de communiquer entre eux MPI_COMM_WORLD est le communicateur par défaut constitué de tous les processus de l’application: il est créé par MPI à l’initialisation de MPI(MPI_INIT) Les processus peuvent communiquer uniquement si ils partagent un même communicateur Pour réduire la portée des communications à un sous-ensemble de processus, on devra créer un nouveau communicateur par un appel à une routine MPI Un processus : Peut appartenir à plusieurs communicateurs Possède un rang dans chaque communicateur 13-16 Décembre 2005 Laurence Viry

Informations sur le communicateur Taille: nombre de processus En C: int MPI_Comm_size(MPI_Comm comm,int *size) En Fortran: integer :: COMM,size,ier call MPI_COMM_SIZE(COMM,size,ier) Rang d’un processus dans un commutateur En C: int MPI_Comm_rank(MPI_Comm comm,int * rang) integer :: COMM,rang,ier call MPI_COMM_RANK(COMM, rang,ier) 13-16 Décembre 2005 Laurence Viry

Initialisation MPI Initialisation Informations sur le communicateur En C: ierr = MPI_Init(&argc,argv) En Fortran: call MPI_INIT(ierr) Informations sur le communicateur Rang du processus En C : int MPI_Comm_rank(MPI_Comm comm,int *rang) En Fortran: call MPI_COMM_RANK(comm,rang,ierr) La taille du communicateur En C : int MPI_Comm_size(MPI_Comm comm,int *size) En Fortran : call MPI_COMM_SIZE(comm,size,ierr) Fin MPI En C: ierr = MPI_Finalize() En Fortran: call MPI_FINALIZE(ierr) 13-16 Décembre 2005 Laurence Viry

Premier programme MPI program premier_mpi include ‘mpif.h’ ! Declarations integer :: monrang,taille,ier ! Initialisation de MPI call MPI_INIT(ier) ! Récupère mon rang dans le communicateur par défaut call MPI_COMM_RANK(MPI_COMM_WORLD, monrang,ier) ! Récupère le nombre total de processus call MPI_COMM_SIZE(MPI_COMM_WORLD,taille,ier) print*, ‘processeur ‘,monrang,’ parmi ‘,taille, ‘ processus’ ! Fin de MPI call MPI_FINALIZE(ier) end program premier_mpi

Bibliothèque MPI Les sous-programmes peuvent être classés dans les catégories suivantes: Environnement Communication point à point Communications collectives Types de données dérivés Topologies Groupe et communicateurs 13-16 Décembre 2005 Laurence Viry

Concept de l’échange de message Si un message est envoyé a un processus, celui-ci doit le recevoir Processus 0 Processus 1 source cible Je reçois dans la cible J’envoie source 13-16 Décembre 2005 Laurence Viry