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

Slides:



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

Module Systèmes d’exploitation
GEF 435 Principes des systèmes d’exploitation
Chap. 4 Recherche en Table
TECHNOLOGIE DES ORDINATEURS
Regroupement (clustering)
Les écritures fractionnaires
GEF 435 Principes des systèmes dexploitation Structure des systèmes dexploitation (Tanenbaum 1.7)
Guillaume KRUMULA présente Exposés Système et Réseaux IR3 Mardi 5 Février 2008.
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
Le jeu d ’instructions Introduction Un jeu d ’instruction classique
Introduction à MPI 13 – 16 Décembre 2005 Laurence Viry.
Outils de développements
Introduction à MPI Types dérivés MPI Décembre 2005
Programmation Orientée Objet (POO)
Plan de formation Chapitre 1 : Présentation de SAP
INTRODUCTION.
FLSI602 Génie Informatique et Réseaux
TRANSMISSION DES DONNEES INFORMATIQUES
Détermination des processus
Introduction à la POO: Les classes vs les objets
Parallel Programming in C with MPI and OpenMP
Page 1 Introduction à ATEasy 3.0 Page 2 Quest ce quATEasy 3.0? n Ensemble de développement très simple demploi n Conçu pour développer des bancs de test.
Principes de la technologie orientée objets
Mémoire périphérique Stockage primaire: Mémoire principale (RAM)
Section XI Traitement de fichiers
Administration de SharePoint
CSI3525: Concepts des Langages de Programmation Notes # 12: Implementation des Sous-Programmes ( Lire Chapitre 9 )
Principes de persistance dans les applications orienté objet
TP Fichiers et Tableaux Avril Un fichier Permet le stockage de données sur des supports de mémoire externes (donc les données ne seront pas perdues.
Solution e-Media Présentation Générale Direction du Système d’Information Opérateur Informatique ERDF Mars 2012.
Méthode des k plus proches voisins
Bases de données lexicales
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.
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
FICHIERS : Définition : Algorithme général:
Les écritures fractionnaires
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
Programmation concurrente
Gestion de Fichiers Tri Interne Efficace et Tri Externe.
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é.
Le diagramme de séquences
Christine Bonnet SOURCES : « Samples » dOracle, « Oracle 8 » R. Chapuis PRO*C – C ++
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 Gestion des transactions SQLServer.
NORMALISATION DES LANGAGES DE PROGRAMMATION des Automates Programmables Industriels CEI
‘‘Open Data base Connectivity‘‘
INTRODUCTION.
Module 8 : Surveillance des performances de SQL Server
Mémoire périphérique Stockage primaire: Mémoire principale (RAM)
Potentiel électrostatique
Institut Supérieur des Sciences Appliquées et de Technologie Sousse
Algorithmique et programmation (1)‏
Chapitre 6.2 Les curseurs Cours SGBD 3A Mme hkimi Jihène
Créer des packages.
Un survol du language C.
Les modules. Modules Un module est un ensemble de définitions de constantes, de variables et de fonctions réutilisables de projet en projet. Le langage.
Le contenu est basé aux transparents du 7 ème édition de «Software Engineering» de Ian Sommerville«Software Engineering» de Ian Sommerville B.Shishedjiev.
1 Extension du modèle de composants CORBA avec accès concurrent à des données partagées Travail réalisé par : Landry BREUIL PFE, ISIMA Encadrants : Gabriel.
D. E ZEGOUR Institut National d ’Informatique
Les variables fichiers. Le type fichier On manipule les fichiers par l’intermédiaire de structures FILE décrites dans stdio.h FILE *monFichier; –Nom physique.
Simulation de traces réelles d’E/S disque de PC. Jalil Boukhobza, Claude Timsit Perpignan le 06/10/2006.
1 Structure en MC Principes Stockage des données dans la mémoire volatile d’un ordinateur Problèmes Stockage temporaire «Petits» volumes de données Langages.
Architecture Client/Serveur
Visualisation des flots optiques en 3D
Module 3 : Gestion des fichiers de base de données
INTRODUCTION AUX BASES DE DONNEES
1 UNIX AVANCE Yves PAGNOTTE – Janvier – LES PROCESSUS SOUS UNIX.
1 UNIX AVANCE Yves PAGNOTTE – Janvier – COMMUNICATION INTER PROCESSUS : TUBES.
Transcription de la présentation:

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

13 – 16 Octobre 2005 Laurence Viry Ce qui manque à MPI-1 Gestion dynamique des processus Entrées/sorties parallèles Interfaçage Fortran90 et C++ Extention des communications collectives aux intercommunicateurs Les communications mémoire à mémoire Possibilité de définir des interfaces externes (gstion des processus légers…) Possibilité de gérer des applications temps réels multiprocesseurs MPI-2 offre les 6 premières possibilités (voir IDRIS)

13 – 16 Octobre 2005 Laurence Viry Implémentation de MPI-2 LAMMPICHFujitsuNECIBM Gestion dynamique INIII Copie mém à mém PINIIII Interfaçage F90 C++ NIPIIINI MPI-IO PI III Types dérivés PI III I : implémenté NI: non implémenté PI: partiellement implémenté Ce transparent est tiré du cours de lIDRIS, voir cours MPI-2

13 – 16 Octobre 2005 Laurence Viry E/S Parallèles- MPI-IO Introduction Les applications qui font des calculs volumineux font en général également de nombreuses entrées- sorties. Le traitement de ces entrées-sorties ont une part importante dans le temps globale lapplication Loptimisation des E/S dune application parallèle se fait: Par leur parallèlisation Et /ou leur recouvrement par des calculs Et/ou par des opérations spécifiques prises en charge par le système

13 – 16 Octobre 2005 Laurence Viry MPI-IO: Lectures/Ecriture Appels explicites à des sous-programmes Trois propriétés des accès aux fichiers: Positionnement: Explicite: par ex, nb octets depuis le début du fichier Implicite :pointeur Individuel à chaque processus Commun à tous les processus Synchronisation: bloquant ou non-bloquant Regroupement: collectif ou propre à un ou plusieurs processus

13 – 16 Octobre 2005 Laurence Viry E/S parallèles Quest ce ? E/S effectuées par plusieurs tâches ou processus À partir dun même espace mémoire (calculateur mémoire distribuée) À partir despaces mémoire séparés ( cluster) Avantages Éviter de créer des goulets détranglement Techniques au niveau de la programmation permettant de gérer les lectures/écritures asynchrones Performances: opérations spécifiques prises en charge par le système

13 – 16 Octobre 2005 Laurence Viry E/S parallèles:interface MPI-2 Basée sur deux concepts de MPI Communicateur Type dérivé MPI Fermeture et ouverture de fichier sont des opérations collectives associées à un communicateur Chaque opération de transfert est associée à un type de donnée Type de base MPI Type dérivé MPI: transfert dun zone discontinue de la mémoire vers un stockage continu sur fichier ou inversement

13 – 16 Octobre 2005 Laurence Viry MPI-2: quelques définitions Type élémentaire de données: unité de données pour calculer les positionnements permettant d accéder aux données, type MPI de base ou type dérivé MPI Motif: masque qui constitue la base du partitionnement dun fichier entre processus Vue: ensemble des données visibles dun fichier. Ensemble ordonné de types élémentaires Position(offset): position dans le fichier exprimée en nombre de type élémentaires, relativement à la vue courante.

13 – 16 Octobre 2005 Laurence Viry MPI-2: quelques définitions Descripteur(file handle): objet caché créé à louverture et détruit à la fermeture du fichier Pointeurs tenu à jour automatiquement par MPI (associé à chaque file handle) Individuel : propre à chaque processus ayant ouvert le fichier Partagé : commun à chaque processus ayant ouvert le fichier

13 – 16 Octobre 2005 Laurence Viry MPI-2: lectures / écritures Appels explicites à des sous-programmes Accès définis par 3 propriétés Positionnement: Explicite: par exemple, nombre doctets depuis le début du fichier Implicite: pointeur géré par le système Individuel à chaque processus Partagé par tous les processus du communicateur Synchronisation: accès bloquants ou non bloquants Regroupement: collectifs ou propres à un ou plusieurs processus

13 – 16 Octobre 2005 Laurence Viry MPI-2: fonctions de base MPI_FILE_OPEN(): associe un descripteur à un fichier MPI_FILE_SEEK(): déplace le pointeur de fichier vers une position donnée MPI_FILE_READ(): lit à partir de la position courante une quantité de données(pointeur individuel) MPI_FILE_WRITE(): écrit une quantité de données à partir de la position courante (pointeur individuel) MPI_FILE_CLOSE(): élimine le descripteur MPI_FILE_SYNC(): force lécriture sur disque des buffers associés à un descripteur …

13 – 16 Octobre 2005 Laurence Viry Lectures/ Écritures individuelles Propres à un ou plusieurs processus du communicateur dans lequel a été ouvert le fichier Via un déplacement explicite MPI_FILE_READ_AT,MPI_FILE_WRITE_AT Via un déplacement implicite: pointeur Individuel : propre à chaque processus MPI_FILE_READ,MPI_FILE_WRITE Partagé: commun à tous les processus du communicateur dans lequel le fichier a été ouvert MPI_FILE_READ_SHARED,MPI_FILE_WRITE_SHARED

13 – 16 Octobre 2005 Laurence Viry E/S individuelles Déplacements implicites individuels Un pointeur individuel par fichier et par processus est géré automatiquement par le système Les pointeurs partagés ne sont pas modifiés Pour un processus et un fichier donné, à chaque accès, le pointeur est positionné sur le type élémentaire suivant

13 – 16 Octobre 2005 Laurence Viry E/S individuelles Déplacements implicites partagés Il existe un et un seul pointeur partagé par fichier Il est commun à tous les processus du communicateur dans lequel a été ouvert le fichier Tous les processus, utilisant le pointeur partagé dun fichier doivent utiliser la même vue du fichier Dans le cas dE/S individuelles, il faut gérer explicitement lordonnancement des processus Les pointeurs individuels ne sont jamais modifiés Après chaque accès, le pointeur est positionné sur le type élémentaire suivant

13 – 16 Octobre 2005 Laurence Viry Lectures/ Écritures collectives Tous les processus du communicateur dans lequel un fichier est ouvert participent aux opérations collectives les opérations collectives sont généralement plus performantes car elles permettent davantage doptimisation automatiques Les opérations collectives sont effectuées dans lordre des rangs des processus. Le traitement est déterministe

13 – 16 Octobre 2005 Laurence Viry MPI-IO: les vues Mécanismes permettant de décrire les zones accédées dans un fichier Construites à partir des types dérivés MPI Chaque processus a sa propre vue dun fichier définit par: Déplacement initial Type élémentaire de données Motif : une vue est une suite de motifs Il est possible de définir des trous dans la vue de façon à ne pas tenir compte de certaines parties Des processus peuvent avoir des vues différentes du fichier de façon à accéder à des parties complémentaires (E/S individuelles)

13 – 16 Octobre 2005 Laurence Viry MPI-IO: définition dune vue Type élémentaire motif trous Déplacement initialDonnées accessibles

program vue … ! Ouverture du fichier call MPI_FILE_OPEN(MPI_COMM_WORLD, ˝ donnees.dat ˝,& MPI_RDONLY,descripteur,ier) …. ! Definition dune vue deplacement(1)=1 deplacement(2)=4 deplacement(3)=0 longueur(1)=1 longueur(2)=2 longueur(3)=3 call MPI_TYPE_INDEXED(3,longueur,deplacement,MPI_INTEGER,& motif,ier) call MPI_COMMIT(motif,ier)

deplacement_initial=2*nb_octets_entier call MPI_FILE_SET_VIEW(descripteur,deplacement_initial,& MPI_INTEGER,˝ native ˝,MPI_INFO_NULL, motif,ier) call MPI_FILE_GET_VIEW(descripteur,deplacement_initial,& type-elem,motif,representation,ier) call MPI_FILE_READ(descripteur,valeurs,nb_valeurs,& MPI_INTEGER,statut,ier) call MPI_FILE_CLOSE(descripteur,ier) …

13 – 16 Octobre 2005 Laurence Viry MPI-IO: définition dune vue Type élémentaire Motif proc 0 Motif proc1 fichier Déplacement initial Motifs différents suivant les processus

program vues_multiples … ! Ouverture du fichier call MPI_FILE_OPEN (MPI_COMM_WORLD, ˝ donnees.dat ˝,& MPI_RDONLY,descripteur,ier) ! Definition des vues if (rang == 0) then deplacement(1)=0 deplacement(2)=4 longueur(1)=2 longueur(2)=0 else deplacement(1)=2 deplacement(2)=0 longueur(1)=2 longueur(2)=0 endif call MPI_TYPE_INDEXED(2,longueur,deplacement,MPI_INTEGER,& motif,ier) call MPI_COMMIT(motif,ier)

deplacement_initial=0 call MPI_FILE_SET_VIEW(descripteur,deplacement_initial,& MPI_INTEGER,˝ native ˝,MPI_INFO_NULL, motif,ier) call MPI_FILE_READ(descripteur,valeurs,nb_valeurs,& MPI_INTEGER,statut,ier) call MPI_FILE_CLOSE(descripteur,ier) …

Type élémentaire : MPI_INTEGER motif proc 0 motif proc 1 0 Déplacement initial Motifs employés dans le programme ˝vues_multiples˝

fichfich fichier Processus 0 Processus 1 % %mpirun –np 2 vues_multiples Lecture processus 0: Lecture processus 1:

13 – 16 Octobre 2005 Laurence Viry Positionnement des pointeurs dans un fichier Connaître la valeur courante du pointeur Individuel: MPI_FILE_GET_POSITION() Partagé: MPI_FILE_GET_POSITION_SHARED() Positionner explicitement le pointeur: Individuel: MPI_FILE_ SEEK() Partagé: MPI_FILE_SEEK_SHARED () Trois modes pour fixer la valeur dun pointeur Une valeur absolue: MPI_SEEK_SET Une valeur relative : MPI_SEEK_CUR À la fin dun fichier: MPI_SEEK_END

13 – 16 Octobre 2005 Laurence Viry E/S non bloquantes Implémentées suivant le modèle utilisé pour les communications Un accès asynchrone doit donner lieu à un test de complétude explicite ultérieur (MPI_TEST,MPI_WAIT,…)

13 – 16 Octobre 2005 Laurence Viry MPI-2 : conclusion et conseils Linterface MPI-IO permet de masquer aux utilisateurs des opérations complexes et dimplémenter de façon transparente des optimisations particulières aux machines cibles Quelques conseils: Il faut privilégier la forme collective des opérations Lutilisation implicite de pointeurs individuels ou collectifs offre une interface de plus haut niveau Comme pour les messages, lasynchronisme est une voie privilégiée doptimisation (sassurer de la validation de lalgorithme en mode synchrone) …

13 – 16 Octobre 2005 Laurence Viry Quelques références