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

Dimension: px
Commencer à balayer dès la page:

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

Transcription

1 Plan de la formation Calcul parallèle avec MPI Guy Moebs Parallélisation Présentation, environnement MPI Communications point à point Laboratoire de Mathématiques Jean Leray, CNRS, Université de Nantes, École Centrale de Nantes Mars 2010 Communications collectives Types de données dérivés Communicateurs et topologies Entrées / sorties collectives : MPI I/O Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221 Parallélisation Présentation, environnement MPI Communications point à point Communications collectives Types de données dérivés Communicateurs et topologies Entrées / sorties collectives : MPI I/O Exemple récapitulatif : équation de la Chaleur 1D Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221 Exemple récapitulatif : équation de la Chaleur 1D Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221 Pourquoi paralléliser? La première question à se poser, c est savoir si la parallélisation de l application est nécessaire Ecrire un programme séquentiel est déjà du travail, souvent difficile ; la parallélisation le rendra encore plus dur Il y a eu beaucoup de progrès technologique dans le matériel informatique (processeurs à 3 GHz, bus mémoire,...) mais il ne faut pas compter sur des avancées au même rythme Pourtant il existe toujours des applications scientifiques qui consomment trop de ressources en temps de processeur ou en mémoire Pour celles-ci, la seule solution, pour des raisons techniques ou économiques, reste la parallélisation Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221

2 But de la parallélisation Qu est-ce que la parallélisation? Ensemble de techniques logicielles et matérielles permettant l exécution simultanée de séquences d instructions indépendantes, sur des processeurs différents Bénéfice de la parallélisation? But de la parallélisation 1 processeur 4 processeurs Exécution plus rapide du programme (gain en temps de restitution) en distribuant le travail Résolution de problèmes plus gros (plus de ressource matérielle accessible, notamment la mémoire) Temps d'execution Diminution du temps d exécution le but (Faible) augmentation du temps CPU total - effet de bord Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221 Exemple : différences finies Problème de différences finies 1D On dispose du vecteur X (0) de taille N et on doit calculer X (T ) selon : 0 < i < N 1, 0 t < T : X (t+1) i = X (t) (t) i 1 + 2X i + X (t) i+1 4 N=8 X X X X X X X X gauche X i droite Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221 Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221 Exemple Algorithme parallèle : création de N tâches, une par valeur de X la tâche i dispose de X (0) i et doit calculer X (1) i, X (2) i,..., X (T ) i A chaque étape elle doit disposer de X (t) i 1 et X (t) i+1 en provenance des tâches i 1 et i + 1 (attention à i = 0 et i = N) Travail en 3 étapes pour la tâche i : 1. envoie sa donnée X (t) i à ces voisines, gauche et droite (si elles existent) 2. reçoit X (t) (t) i 1 et X i+1 en provenance des tâches i 1 et i + 1 (attention à i = 0 et i = N) 3. utilise ces données pour calculer X (t+1) i Les N tâches travaillent indépendamment Seule contrainte : synchronisation lors des réceptions pour effectuer l étape 3 Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221

3 Optimisation de la parallélisation Optimisation de la parallélisation Execution sur 1 processeur Execution sur 1 processeur Execution sur 4 processeurs Communications inter-processeurs Execution sur 4 processeurs Communications inter-processeurs Temps Temps Une parallélisation efficace minimise les communications Temps CPU total = + A additionner au temps CPU total Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221 Accélération et efficacité Les deux sont une mesure de la qualité de la parallélisation Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221 Accélération et efficacité Soit T(p) le temps d exécution sur p processeurs Accélération Courbe Efficacité L Accélération A(p) et l Efficacité E(p) sont définies comme étant : A(p) = T(1) / T(p) (p=1, 2, 3,...) E(p) = A(p) / p idéale En pratique Courbe idéale : 100% En pratique Pour une accélération parallèle parfaite on obtient : T(p) = T(1) / p A(p) = T(1) / T(p) = T(1) / ( T(1) / p) = p E(p) = A(p) / p = p / p = 100% Nombre de processeurs Nombre de processeurs Les programmes scalables demeurent efficaces pour un grand nombre de processeurs (scalables = passage à l échelle) Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221 Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221

4 Scalabilité Propriété d une application à être exécutée efficacement sur un très grand nombre de processeurs Raisons possibles d une faible scalabilité : La machine parallèle employée : architecture inadaptée, charge,... Le programme parallélisé : analyser le comportement, améliorer les performances un peu des deux... Loi d Amdahl Plus une règle qu une loi Principe : Loi d Amdahl Prenons un exemple avec une parallélisation de l ordre de 80% du code : T(1) = T(parallele) + T(séquentiel) = Sur p processeurs, on obtient : T(p) = 80 / p + 20 Quel que soit p, T(p) > 20 A(p) = T(1) / T(p) = 100 / ( 80 / p + 20 ) < 5 E(p) = ( A(p) / p ) < ( 5 / p ) p + 0! La partie non parallèle d un programme limite les performances et fixe une borne supérieure à la scalabilité Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221 Loi d Amdahl 8,0 Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221 Interconnexion Pour un programmeur, un point essentiel réside dans le type de mémoire de l architecture cible : mémoire partagée ou mémoire distribuée 7,0 Acceleration 6,0 5,0 4,0 3,0 2,0 P = 2 P = 4 P = 8 L interconnexion a un grand impact sur : - le choix de l implémentation de la parallélisation - la performance parallèle - la facilité d utilisation 1,0 0,0 20,0 40,0 60,0 80,0 100,0 Pourcentage de code parallelise L application elle-même, va influer sur la relative importance de ces facteurs Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221 Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221

5 Ordinateur à mémoire distribuée Le système est programmé en utilisant l échange de messages protocole réseau Ordinateur à mémoire partagée Le mouvement des données est transparent pour l utilisateur transfert mémoire envoie les données déplace les données interconnexion reçoit les données déplace les données interconnexion empaquète les données dépaquète les données S.M.P. = Symmetric Multi-Processor (tous les processeurs sont égaux) Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221 Types de parallélisme Parallélisme de tâches Plusieurs traitements Traitements indépendants Echanges de données, directives de contrôle Le parallélisme découle de la réalisation simultanée de différents traitements sur les données Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221 Modèles de programmation : passage de messages Les communications sont effectuées en envoyant et en recevant explicitement les messages Les synchronisations sont aussi gérées explicitement Parallélisme de données Données régulières et en grand nombre Traitement identique sur chaque donnée Programmation Data-parallèle Le parallélisme découle de l application simultanée du même traitement sur des données différentes Le programmeur est complètement responsable de l implémentation de la parallélisation Cela signifie prendre soin de : - la gestion des processus, - l envoi, la réception des messages, - les synchronisations (e.g. les barrières) Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221 Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221

6 Exemple de passage de messages B + C = A Exemple de passage de messages MAITRE création des esclaves ESCLAVE (partage B et C) + = + = pour chaque esclave envoi (B,C) fin boucle réception (B,C) + + Temps = = pour chaque esclave réception (A) fin boucle A = B + C envoi (A) (assemblage A) Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221 Passage de messages Il existe des bibliothèques pour implémenter le passage de messages : Message Passing Interface (MPI) (www.mpi-forum.org) Le standard de facto Parallel Virtual Machine (PVM) Etait la librairie la plus utilisée Que peut-on en dire? MPI et PVM sont disponibles gratuitement MPI évolue, PVM est figée Implémentation domaine public Les vendeurs de solutions HPC proposent souvent des versions optimisées De telles versions tirent partie des fonctionnalités des architectures Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221 Modèles de programmation : mémoire partagée Les communications sont effectuées de manière transparente Certaines synchronisations sont aussi gérées de manière transparente C est un très mauvais synonyme pour parallélisation automatique faite par le compilateur Le but est d utiliser le compilateur pour implémenter le parallélisme décrit à l aide de directives (encore fournies par le programmeur) Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221 Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221

7 Exemple pour mémoire partagée Un exemple trivial : DO I = 1, N A(I) = B(I) + C(I) END DO Le compilateur va effectuer le travail suivant (sur 4 processeurs) : N / 4 N / 4 N / 4 N / 4 B C A + = Processeur 1 Processeur 2 Processeur 3 Processeur 4 Mémoire partagée Ce n est pas non plus un monde parfait... Les compilateurs ont encore besoin de directives pour les aider mais aussi assurer la portabilité OpenMP est un effort pour définir un standard (www.openmp.org) En général les compilateurs parallélisent au niveau de la boucle Pour assurer des résultats corrects, une analyse fine des dépendances des données est requise Deux problèmes majeurs pour les compilateurs : - obtenir toujours la bonne valeur - toute l information n est pas connue à la compilation : considérer l hypothèse la plus défavorable Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221 Passage de messages ou mémoire partagée? Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221 Modèle de programmation hybride quelques observations... Passage de Messages Mémoire partagée noeud 1 noeud 2 Plus long à implémenter Plus facile à implémenter Performance noeud 1 noeud 2 noeud 3 noeud 4 Plus de détails à prendre en compte Augmente la taille du code Moins de détails à gérer Faible hausse de la taille du code noeud 3 noeud 4 passage de messages passage de messages + mémoire partagée Plus de maintenance Peu de maintenance séquentiel Complexe à déboguer et optimiser Augmente le volume mémoire Plus facile à déboguer et optimiser Usage efficace de la mémoire Modèle de programmation Offre une scalabilité optimale Scalable, mais... Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221 Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221

8 Modèle de programmation hybride Deux types de parallélisme : - parallélisme à gros grains (passage de messages) - parallélisme à grains fins (mémoire partagée) Parallélisation Présentation, environnement MPI Programmation parallèle à un niveau Programmation parallèle hybride Communications point à point Communications collectives mémoire partagée Types de données dérivés communications Communicateurs et topologies Entrées / sorties collectives : MPI I/O Exemple récapitulatif : équation de la Chaleur 1D Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221 Passage de messages : qu est-ce que c est? Plusieurs processus exécutent le même programme (mais pas forcément les mêmes parties) ; Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221 MPI : qu est-ce que c est? Message Passing Interface : bibliothèque de passage de messages Début des années 1990 : chaque constructeur dispose de sa propre implémentation de l échange de messages Besoin d unifier ces modèles pour parvenir à un ensemble de routines couvrant un large spectre de machines et efficacement implémentable Chaque processus dispose de ses propres données et n a pas d accès direct aux données des autres processus ; Les données du programme sont stockées dans la mémoire du processeur sur lequel s exécute le processus ; Une donnée est échangée entre deux ou plusieurs processus via un appel à des routines particulières et spécialisées Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221 Brouillon présenté en Novembre 1993 (Supercomputing 93)... Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221

9 MPI : qu est-ce que c est? L interface avec ces routines définit un standard pratique, portable, efficace, et flexible : utilisable par des programmes écrits en C et Fortran, gestion efficace : évite les recopies en mémoire et permet le recouvrement communications / calcul, interface supportée par les machines de nombreux constructeurs, interface proche de l existant (PVM,...), sémantique indépendante du langage, interface conçue pour être thread-safe Passage de messages avec MPI Il repose sur l échange de messages entre les processus pour le transfert de données, les synchronisations, les opérations globales La gestion de ces échanges est réalisée par MPI (Message Passing Interface) Cet ensemble repose sur le principe du SPMD (Single Program Multiple Data) Chaque processus dispose de ses propres données, sans accès direct à celles des autres Explicite, cette technique est entièrement à la charge du développeur Ces échanges qui impliquent deux ou plusieurs processus se font dans un communicateur Chaque processus est identifié par son rang, au sein du groupe Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221 Passage de messages avec MPI On classe les routines de la bibliothèque en plusieurs catégories, décrites par la suite ; celles qui traitent de 1. l environnement MPI ; 2. des communications point à point ; 3. des communications collectives ; 4. des types de données dérivés ; 5. des communicateurs ; 6. des entrées / sorties. Voyons cela en détails... Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221 Environnement MPI Initialisation en début de programme (MPI INIT) INTEGER :: ierr = 0 CALL MPI INIT (ierr) MPI crée alors un communicateur qui regroupe tous les processus actifs et va gérer leurs échanges de données. Le communicateur par défaut s appelle MPI COMM WORLD Finalisation en fin de programmme (MPI FINALIZE) INTEGER :: ierr = 0 CALL MPI FINALIZE (ierr) Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221 Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221

10 Environnement MPI Le nombre de processus gérés par un communicateur est connu avec la routine MPI COMM SIZE : INTEGER :: ierr = 0 INTEGER :: nbprocs CALL MPI COMM SIZE (MPI COMM WORLD, nbprocs, ierr) Chaque processus est identifié par son rang, un entier entre 0 et la valeur retournée par MPI COMM SIZE -1, fourni par la routine MPI COMM RANK : INTEGER :: ierr = 0 INTEGER :: monrang CALL MPI COMM RANK (MPI COMM WORLD, monrang, ierr) les routines suivantes sont ainsi présentes dans tous les programmes MPI : - MPI INIT ; - MPI FINALIZE ; - MPI COMM SIZE ; - MPI COMM RANK Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221 Environnement MPI : TP 1 PROGRAM hello USE mpi IMPLICIT NONE INTEGER :: nbprocs, monrang, ierr = 0 CALL MPI INIT (ierr) CALL MPI COMM SIZE (MPI COMM WORLD, nbprocs, ierr) CALL MPI COMM RANK (MPI COMM WORLD, monrang, ierr) Fichiers d en-tête Un fichier d entête est toujours nécessaire (mpif.h, mpi.h) La norme MPI 2 crée des interfaces pour le Fortran 95, le C/C++. En Fortran, on dispose dorénavant d un module qui encapsule : - la déclaration des constantes, - la définition des sous-programmes MPI. Ce module s utilise de manière analogue à tout module, avec l instruction USE : USE mpi Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221 Environnement MPI : TP 1 Compilation : (plate-forme dépendant!) ifort -O3 tp1.f90 -o tp1.out -lmpi Exécution : mpirun -np 3./tp1.out Bonjour, je suis le processus de rang 2 parmi 3 processus. Bonjour, je suis le processus de rang 0 parmi 3 processus. Bonjour, je suis le processus de rang 1 parmi 3 processus. WRITE (6,*) Bonjour, je suis le processus de rang, & monrang, parmi, nbprocs, processus. CALL MPI FINALIZE (ierr) END PROGRAM hello Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221 Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221

11 Communications Pour réaliser des opérations impliquant des données d autres processus, il est nécessaire d échanger ces informations aux travers de messages Ces messages se font sous la forme de communications impliquant au moins deux processus On peut faire une analogie avec le courrier électronique Parallélisation Présentation, environnement MPI Communications point à point Communications collectives 0 Types de données dérivés Expediteur 5 4 Communicateurs et topologies Collecte 1 Donnee 3 Entrées / sorties collectives : MPI I/O 2 Destinataire Exemple récapitulatif : équation de la Chaleur 1D Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221 Communications point à point La communication point à point est une communication entre deux processus : expéditeur et destinataire Elle comprend deux opérations élémentaires : l envoi et la réception Différents ingrédients sont nécessaires pour composer un message - le communicateur - l identifiant du processus expéditeur - l identifiant du processus destinataire - une étiquette (tag) qui permet au programme de distinguer différents messages ils forment l enveloppe du message Les données envoyées sont typées, le message contient aussi : - la donnée à transmettre, - son type, intrinsèque ou dérivé, - sa taille Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221 Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221 Communications point à point USE mpi INTEGER :: monrang, ierr = 0 CHARACTER(10) :: message INTEGER, DIMENSION(MPI STATUS SIZE) :: status CALL MPI INIT (ierr) CALL MPI COMM RANK (MPI COMM WORLD, monrang, ierr) IF (monrang == 0) THEN message = "Salut" CALL MPI SEND (message, len(message), MPI CHARACTER,& 1, 99, MPI COMM WORLD, ierr) ELSE CALL MPI RECV (message, len(message), MPI CHARACTER,& 0, 99, MPI COMM WORLD, status, ierr) WRITE (6, (A) ) message END IF Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221

12 Communications point à point Le processus 0 (monrang = 0) envoie un message au processus de rang 1 (monrang = 1) avec l opération d envoi : CALL MPI SEND (buf, count, datatype, dest, tag, & comm, ierr) buf, count et datatype constituent le message L enveloppe spécifie le destinataire et inclut des informations utilisables par le destinataire pour sélectionner un message particulier Ainsi c est l envoi : - d un message identifié par tag, - de longueur count, - de type datatype, - à partir de l adresse buf, - au processus dest, - dans le communicateur comm. Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221 CALL MPI SEND (buf, count, datatype, dest, tag, comm, ierr) buf IN au choix count IN entier non négatif datatype IN objet MPI dest IN entier tag IN entier comm IN objet MPI ierr OUT entier CALL MPI RECV (buf, count, datatype, src, tag, comm, status, ierr) buf OUT au choix count IN entier non négatif datatype IN objet MPI src IN entier tag IN entier comm IN objet MPI status OUT tableau d entiers ierr OUT entier Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221 Communications point à point Le processus 1 (monrang = 1) réceptionne un message avec l opération MPI RECV : CALL MPI RECV (buf, count, datatype, src, tag, comm, status, ierr) Les trois premiers arguments décrivent le buffer de réception Les trois suivants permettent de choisir le message voulu Le dernier (hors code d erreur) contient des informations sur le message juste reçu Important : l étiquette doit être la même pour les deux processus Ainsi c est la réception : - d un message identifié par tag, - de longueur count, - de type datatype, - à partir de l adresse buf, - en provenance du processus src, - dans le communicateur comm Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221 Communications point à point : TP 2 Taper le programme précédent Le compiler L exécuter sur 2 processus L exécuter sur 4 processus Remarques / Conclusions? Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221

13 Communications point à point : premier bilan MPI SEND (buf,count,datatype,dest,tag,comm,ierr) INTEGER, DIMENSION(MPI STATUS SIZE) :: status MPI RECV (buf, count, datatype, src, tag, comm, status, ierr) Envoi et réception d une donnée vers un destinataire avec attente de la fin de la communication avant de continuer l exécution Un message peut être reçu si on a la correspondance sur l enveloppe (source, tag, comm) Sécurité : on a la donnée envoyée ou reçue (resp.) avant de la modifier / l employer (resp.) Inconvénient : attente de la fin de l opération, voire de l opération elle-même pour continuer les calculs Autres possibilités... à suivre Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221 Principaux types de données intrinsèques : C Les types des données sont transmis à MPI au travers de constantes Type de données MPI Type de données C MPI CHAR signed char MPI SHORT signed short int MPI INT signed int MPI LONG signed long int MPI UNSIGNED CHAR unsigned char MPI UNSIGNED SHORT unsigned short int MPI UNSIGNED unsigned int MPI UNSIGNED LONG unsigned long int MPI FLOAT float MPI DOUBLE double MPI LONG DOUBLE long double Principaux types de données intrinsèques : Fortran Les types des données sont transmis à MPI au travers de constantes Type de données MPI Type de données Fortran MPI INTEGER INTEGER MPI REAL REAL MPI DOUBLE PRECISION DOUBLE PRECISION MPI COMPLEX COMPLEX MPI LOGICAL LOGICAL MPI CHARACTER CHARACTER(1) Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221 Communications point à point : autres possibilités On peut recevoir un message de n importe quelle source : MPI ANY SOURCE On ne connait pas forcément à la compilation le processus qui va envoyer le message On peut recevoir un message muni de n importe quelle étiquette : MPI ANY TAG On ne connait pas forcément à la compilation l ordre d arrivée des messages L argument status des réceptions contient la bonne étiquette et le rang de l expéditeur Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221 Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221

14 Communications point à point : autres possibilités On peut envoyer un message à un processus n existant pas : MPI PROC NULL Cela permet d éviter des tests fastidieux (conditions aux limites,...) On peut envoyer des messages dont le contenu n est pas une donnée de type intrinsèque, on utilise les types dérivés (voir plus loin) On peut effectuer un envoi et une réception en une seule communication : MPI SENDRECV On peut échanger des données en une seule communication : MPI SENDRECV REPLACE Communications point à point : échanges L échange combine l envoi d un message vers un processus et la réception d un autre message d un autre processus Ces deux processus peuvent être les mêmes Les buffers et les types peuvent être différents MPI SENDRECV ( & sendbuf, sendcount, sendtype, dest, sendtag, & recvbuf, recvcount, recvtype, src, recvtag, & comm, status, ierr) Fonction très utile pour des opérations dans une chaîne de processus Attention à l usage : envoi et réception bloquants Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221 Communications point à point : échanges Remplacement des contenus des buffers entre deux processus : MPI SENDRECV REPLACE ( & buf, count, datatype, dest, & sendtag, src, recvtag, & comm, status, ierr) Le même buffer est employé pour l envoi et la réception L implémentation gère le stockage intermédiaire additionnel Attention à l usage : envoi et réception bloquants Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221 Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221 Communications point à point : TP 3 USE mpi INTEGER, DIMENSION(MPI STATUS SIZE) :: status INTEGER, PARAMETER :: tag = 100 INTEGER :: ierr = 0 INTEGER :: u, v, monrang, nbprocs, suiv, prec CALL MPI INIT (ierr) CALL MPI COMM SIZE (MPI COMM WORLD, nbprocs, ierr) CALL MPI COMM RANK (MPI COMM WORLD, monrang, ierr) suiv = mod (monrang+1, nbprocs) prec = mod (nbprocs+monrang-1,nbprocs) v = 0 u = monrang CALL MPI SENDRECV (u, 1, MPI INTEGER, suiv, tag, & v, 1, MPI INTEGER, prec, tag, & MPI COMM WORLD, status, ierr) write (6,*) processus, monrang, u =, u, v =, v CALL MPI FINALIZE (ierr) Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221

15 Communications point à point : TP 3 Taper le programme précédent Communications point à point Toutes les communications se font simultanément Le compiler L exécuter sur 2 processus L exécuter sur 4 processus Remarques / Conclusions? Attention : tous les processus commencent par envoyer, aucun n est en réception! Risque de blocage (deadlock) selon l implémentation sous-jacente de MPI SEND! Selon les cas, on peut être amené à privilégier les routines MPI SEND et MPI RECV TP 4 : écrire un programme analogue au précédent à l aide des deux routines MPI SEND et MPI RECV sans risque de deadlock Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221 Optimisation des communications point à point Important d optimiser les communications : gain en perf. Minimiser le temps passé à faire autre chose que des calculs (i.e. l overhead) Différentes possibilités : - recouvrir les communications par des calculs - éviter la recopie du message dans une zone mémoire temporaire - minimiser les surcoûts dûs aux appels répétés aux routines de communications Différents types de communication : - communications standards - communications synchrones - communications bufférisées - communications persistantes. Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221 Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221 Communications standards CALL MPI SEND (buf, count, datatype, dest, tag, & comm, ierr) CALL MPI RECV (buf, count, datatype, src, tag, & comm, status, ierr) Communication telle que la réception n a lieu que si le message envoyé est arrivé (communication bloquante) Ceci est assuré (pour l expéditeur) soit : - par bufférisation : recopie du message dans un buffer ; - par synchronisation : avant de continuer le calcul après un envoi, on attend que la réception correspondante soit initialisée C est le cas des routines MPI SEND et MPI RECV Le MPI SEND devient bloquant lorsque le message est trop gros pour le buffériser. Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221

16 Communications synchrones Communication synchrone : avant de continuer le calcul après un envoi, on attend que la réception correspondante soit initialisée ; il n y a pas de bufférisation CALL MPI SSEND (buf, count, datatype, dest, tag,& comm, ierr) La complétion ne peut se faire que si la réception a été postée (i.e. prête) La complétion d un MPI SSEND indique donc que : - la donnée envoyée est à nouveau disponible (i.e. modifiable), - la réception a commencé Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221 Communications persistantes Dans le cas de boucles contenant des communications avec la même liste d arguments : répétition des communications Lier cette liste d arguments à une opération de communication une seule fois Utiliser et ré-utiliser cette opération pour initier et effectuer les communications Permet de réduire la latence (temps pris pour initialiser une communication) ; cela dépend de l implémentation et de l interconnexion sous-jacente Communications bufférisées Le message est recopié dans un buffer avant d être envoyé Cette opération peut être commencée (et terminée) sans que la réception correspondante ne soit prête CALL MPI BSEND (buf, count, datatype, dest, tag,& comm, ierr) Les allocations des buffers mémoire MPI sont gérées avec MPI BUFFER ATTACH (buffer, size, ierr) MPI BUFFER DETACH (buffer, size, ierr) Le buffer est alloué dans la mémoire locale du processus expéditeur Le buffer est uniquement utilisable pour les messages bufférisés Un seul buffer alloué à la fois par processus Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221 Communications persistantes Une routine pour initier l envoi : CALL MPI SEND INIT (buf, count, datatype, dest, & tag, comm, request, ierr) Une routine pour initier la réception : CALL MPI RECV INIT (buf, count, datatype, src, & tag, comm, request, ierr) L argument request identifie la communication INTEGER :: request Une routine pour effectuer l opération (dans la boucle) : CALL MPI START (request, ierr) Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221 Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221

17 Communications asynchrones Le programme continue avant l initialisation de la réception correspondante Cela permet de calculer pendant le transfert CALL MPI ISEND (buf, count, datatype, dest, tag,& comm, request, ierr) CALL MPI IRECV (buf, count, datatype, src, tag,& comm, request, ierr) L argument request permet d identifier les opérations de communications impliquées et de les faire correspondre Communications asynchrones Les commandes associées pour tester : CALL MPI WAIT (request, status, ierr) Attendre jusqu à la terminaison d une requête CALL MPI TEST (request, flag, status, ierr) Vérifier si une requête est terminée (flag =.TRUE.) CALL MPI PROBE (source, tag, status, comm, ierr) Contrôler avant réception si une requête est arrivée Version non bloquante : MPI IPROBE Il existe des variantes des communications précédentes en mode asynchrone Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221 Bilan des routines disponibles Communications usuelles Envois MPI SEND bloquant standard MPI ISEND non bloquant standard MPI SSEND bloquant synchrone MPI ISSEND non bloquant synchrone MPI BSEND bloquant bufférisé MPI IBSEND non bloquant bufférisé Réceptions MPI RECV bloquante standard MPI IRECV non bloquante standard Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221 Bilan des routines disponibles Communications persistantes Envois MPI SEND INIT bloquant standard MPI SSEND INIT bloquant non bufférisé MPI BSEND INIT bloquant bufférisé Réception MPI RECV INIT bloquante standard Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221 Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221

18 Communications point à point : TP 5 USE mpi INTEGER :: nprocs, rang, ierr = 0 INTEGER, DIMENSION(MPI STATUS SIZE) :: status INTEGER, PARAMETER :: na = 513, nb = 513 INTEGER, PARAMETER :: m = 2049, tag = 100 REAL*8, DIMENSION(na,na) :: a REAL*8, DIMENSION(nb,nb) :: b, d REAL*8, DIMENSION(na) :: pivota REAL*8, DIMENSION(nb) :: pivotb REAL*8, DIMENSION(m,m) :: c CALL MPI INIT (ierr) CALL MPI COMM SIZE (MPI COMM WORLD, nprocs, ierr) CALL MPI COMM RANK (MPI COMM WORLD, rang, ierr) CALL random number (a) CALL random number (b) CALL random number (c) Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221 Communications point à point : TP 5 ELSE IF (rang == 1) THEN! je calcule CALL DGETRF (na, na, a, na, pivota, ierr)! je recois le gros message CALL MPI RECV (c(1,1), m*m, MPI DOUBLE PRECISION,& 0, tag, MPI COMM WORLD, status, ierr)! ce calcul est independant du message CALL DGETRF (nb, nb, b, nb, pivotb, ierr) Communications point à point : TP 5 IF (rang == 0) THEN! j envoie un gros message CALL MPI SEND (c(1,1), m*m, MPI DOUBLE PRECISION,& 1, tag, MPI COMM WORLD, ierr)! je calcule la factorisation LU avec lapack CALL DGETRF (na, na, a, na, pivota, ierr)! ce calcul modifie le contenu du tableau c c(1:nb,1:nb) = matmul (a(1:nb,1:nb), b) Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221 Communications point à point : TP 5 Compiler le programme standard ifort -xs -O3 tp5.f90 -Vaxlib -lmpi -lmkl intel lp64 -lmkl sequential -lmkl core -o tp5.out L exécuter sur 2 processus Mettre des communications synchrones L exécuter sur 2 processus Mettre des communications asynchrones L exécuter sur 2 processus Remarques / Conclusions?! ce calcul depend du message precedent a(:,:) = transpose ( c(1:na,1:na) ) + a(:,:) END IF CALL MPI FINALIZE (ierr) Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221 Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221

19 Quelques règles simples... selon les situations Initier les réceptions avant les envois En cas d échange, mettre les appels à MPI IRECV avant les MPI SEND Eviter l usage de bufffers temporaires Utiliser les routines synchrones MPI SSEND Recouvrir les communications par des calculs Utiliser des communications non bloquantes MPI ISEND et MPI IRECV Minimiser les surcoûts liés à des appels répétés avec les mêmes arguments Utiliser des communications persistantes N.B. : les performances des différents types de communication point à point sont dépendantes des implémentations MPI. Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221 Communications collectives La communication collective est une communication qui implique un ensemble de processus, tous ceux du communicateur fourni en argument C est un argument essentiel En une seule opération, on effectue une série de communications point à point L ensemble des processus effectuent le même appel avec des arguments correspondants Parallélisation Présentation, environnement MPI Communications point à point Communications collectives Types de données dérivés Communicateurs et topologies Entrées / sorties collectives : MPI I/O Exemple récapitulatif : équation de la Chaleur 1D Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221 Communications collectives La sémantique et la syntaxe des opérations collectives sont analogues à celles des communications point à point Il n y a pas d étiquette dans les appels à ces routines Certaines routines ont un processus qui est seul expéditeur ou seul destinataire : il s appelle le processus root Certains arguments n ont alors de sens que pour le processus root Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221 Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221

20 Communications collectives Il existe différents types de communication collective : Opérations de diffusion / collecte de données Diffusion globale de données : MPI BCAST Distribution sélective de données : MPI SCATTER Collecte de données réparties : MPI GATHER Collecte, par tous les processus, de données réparties : MPI ALLGATHER Communications collectives Opérations préalables sur des données réparties Opération de réduction : MPI REDUCE Opération de réduction avec diffusion globale du résultat : MPI ALLREDUCE Barrières de synchronisation globale CALL MPI BARRIER (comm, ierr) Chaque processus appelant est bloqué jusqu à ce que tous les processus du communicateur font l appel Distribution sélective, par tous les processus, de données réparties : MPI ALLTOALL Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221 Diffusion globale de données CALL MPI BCAST(buf,count,datatype,root,comm,ierr) Le processus root envoie un message : à tous les processus du communicateur comm, de longueur count, de type datatype, à partir de l adresse buf P0 P0 A Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221 Diffusion globale de données PROGRAM bcast USE mpi IMPLICIT NONE INTEGER :: ierr = 0 INTEGER :: u, monrang, nbprocs CALL MPI INIT (ierr) CALL MPI COMM SIZE (MPI COMM WORLD, nbprocs, ierr) CALL MPI COMM RANK (MPI COMM WORLD, monrang, ierr) P1 P2 A MPI_BCAST P1 P2 A A IF (monrang == 0) READ (5,*) u CALL MPI BCAST(u, 1, MPI INTEGER, 0, MPI COMM WORLD,& ierr) P3 P3 A Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221 write (6,*) processus, monrang, u =, u call MPI FINALIZE (ierr) END PROGRAM bcast Guy Moebs (LMJL) Calcul parallèle avec MPI Mars / 221

Calcul parallèle Librairie MPI

Calcul parallèle Librairie MPI Plan Librairie MPI Calcul Haute Performance ONERA Mai-Juin 2007 Plan Plan 1 Environnement 2 Exemple : Anneau de communication Protocoles d envoi et de réception 3 4 Plan Plan 1 Environnement 2 Exemple

Plus en détail

Introduction à la Programmation Parallèle: MPI

Introduction à la Programmation Parallèle: MPI 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

Plus en détail

Introduction à la Programmation parallèle INFO 3. Camille Coti 1 camille.coti@lipn.univ-paris13.fr

Introduction à la Programmation parallèle INFO 3. Camille Coti 1 camille.coti@lipn.univ-paris13.fr Introduction à la Programmation parallèle Institut Galilée INFO 3 Camille Coti 1 camille.coti@lipn.univ-paris13.fr 1 Université de Paris XIII, CNRS UMR 7030, France 1 Camille Coti Introduction à la Programmation

Plus en détail

Introduction aux systèmes d exploitation

Introduction aux systèmes d exploitation Introduction aux systèmes d exploitation Le système d exploitation est un ensemble de logiciels qui pilotent la partie matérielle d un ordinateur. Les principales ressources gérées par un système d exploitation

Plus en détail

Plan du cours 2014-2015. Cours théoriques. 29 septembre 2014

Plan du cours 2014-2015. Cours théoriques. 29 septembre 2014 numériques et Institut d Astrophysique et de Géophysique (Bât. B5c) Bureau 0/13 email:.@ulg.ac.be Tél.: 04-3669771 29 septembre 2014 Plan du cours 2014-2015 Cours théoriques 16-09-2014 numériques pour

Plus en détail

Utilisation de MPI avec Python

Utilisation de MPI avec Python Laboratoire de mathématiques d'orsay 9 décembre 2010 Plan 1 Introduction 2 Principe de MPI 3 mpi4py 4 Ressources Introduction Plan 1 Introduction 2 Principe de MPI 3 mpi4py 4 Ressources Introduction Comment

Plus en détail

Message Passing Interface (MPI)

Message Passing Interface (MPI) Message Passing Interface (MPI) Isabelle Dupays Marie Flé Jérémie Gaidamour Dimitri Lecas MPI Plan I 1 Introduction... 6 1.1 Introduction... 7 1.2 Concepts de l échange de messages...8 1.3 Mémoire distribuée...

Plus en détail

Cours d Analyse, Algorithmique Elements de programmation

Cours d Analyse, Algorithmique Elements de programmation 1 de 33 Cours d Analyse, Algorithmique Elements de programmation Florent Hivert Mél : Florent.Hivert@lri.fr Adresse universelle : http://www.lri.fr/ hivert 2 de 33 Données et instructions Un programme

Plus en détail

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

MPI-1 2ème partie : Programmation «non bloquante» et communications de groupe 3A-SI Programmation parallèle MPI-1 2ème partie : Programmation «non bloquante» et communications de groupe Stéphane Vialle Stephane.Vialle@supelec.fr http://www.metz.supelec.fr/~vialle MPI-1 2ème partie

Plus en détail

Cluster de calcul, machine Beowulf, ferme de PC Principes, problématique et échanges d expérience

Cluster de calcul, machine Beowulf, ferme de PC Principes, problématique et échanges d expérience Cluster de calcul, machine Beowulf, ferme de PC Principes, problématique et échanges d expérience 29 mars 2002 Olivier BOEBION - Laboratoire de Mathématiques et de Physique Théorique - Tours 1 Principes

Plus en détail

Chap. 8 du livre de Foster: MPI

Chap. 8 du livre de Foster: MPI 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

Plus en détail

Présentation du PL/SQL

Présentation du PL/SQL I Présentation du PL/ Copyright Oracle Corporation, 1998. All rights reserved. Objectifs du Cours A la fin de ce chapitre, vous saurez : Décrire l intéret du PL/ Décrire l utilisation du PL/ pour le développeur

Plus en détail

Introduction au langage C - types et variables

Introduction au langage C - types et variables Chapitre 2 Introduction au langage C - types et variables 1 Le Langage C Le langage C est un langage de bas niveau dans le sens où il permet l accès à des données que manipulent les ordinateurs (bits,

Plus en détail

Architecture des ordinateurs. Optimisation : pipeline. Pipeline (I) Pipeline (II) Exemple simplifié : Instructions de type R

Architecture des ordinateurs. Optimisation : pipeline. Pipeline (I) Pipeline (II) Exemple simplifié : Instructions de type R Architecture des ordinateurs Licence Informatique - Université de Provence Jean-Marc Talbot Optimisation : pipeline jtalbot@cmi.univ-mrs.fr L3 Informatique - Université de Provence () Architecture des

Plus en détail

Calculs parallèles et Distribués. Benmoussa Yahia Université M hamed Bougara de Boumerdès yahia.benmoussa@gmail.com

Calculs parallèles et Distribués. Benmoussa Yahia Université M hamed Bougara de Boumerdès yahia.benmoussa@gmail.com Calculs parallèles et Distribués Benmoussa Yahia Université M hamed Bougara de Boumerdès yahia.benmoussa@gmail.com Calculs parallèles et Distribués Introduction Parallélisation sur mémoire distribuée.

Plus en détail

Soutenance de PFE. Evolution de l'outil EZTrace. Charles Aulagnon Inria Bordeaux (SED) Maître de stage : François Rué mars septembre 2011

Soutenance de PFE. Evolution de l'outil EZTrace. Charles Aulagnon Inria Bordeaux (SED) Maître de stage : François Rué mars septembre 2011 Soutenance de PFE Evolution de l'outil EZTrace Charles Aulagnon Inria Bordeaux (SED) Maître de stage : François Rué mars septembre 2011 ENSEIRB-MATMECA Tuteur : Corentin Travers Sommaire 1. EZTrace Contexte

Plus en détail

Introduction à Fortran 90

Introduction à Fortran 90 Introduction à Fortran 90 Nicolas Kielbasiewicz 19 mars 2008 Fortran pour FORmula TRANslator est comme son nom l indique dédié au calcul scientifique car très performant de ce point de vue. Fortran 77

Plus en détail

Programmation parallèle et distribuée

Programmation parallèle et distribuée ppd/mpassing p. 1/43 Programmation parallèle et distribuée Communications par messages Philippe MARQUET Philippe.Marquet@lifl.fr Laboratoire d informatique fondamentale de Lille Université des sciences

Plus en détail

Architectures Parallèles

Architectures Parallèles Architectures Parallèles Cours pour Ingénieur Préparé par Dr. Olfa Hamdi-Larbi ola_ola79@yahoo.fr Reçoit les signaux du contrôleur, cherche les données et les traite Instructions, Données à traiter et

Plus en détail

1. Eléments de base du langage C

1. Eléments de base du langage C 1 1. Eléments de base du langage C Généralités Programme et sous-programme Fonction C Structure d un programme C Vocabulaire de base et syntaxe Exemples 2 Généralités Crée en 1972 par D. Ritchie pour écrire

Plus en détail

Mise en œuvre des serveurs d application

Mise en œuvre des serveurs d application Nancy-Université Mise en œuvre des serveurs d application UE 203d Master 1 IST-IE Printemps 2008 Master 1 IST-IE : Mise en œuvre des serveurs d application 1/54 Ces transparents, ainsi que les énoncés

Plus en détail

U90 Ladder. Fonctions spéciales. Lionel Lecointe - Support technique Tel : 01.60.92.41.74 mail : lionel.lecointe@pl-systems.fr

U90 Ladder. Fonctions spéciales. Lionel Lecointe - Support technique Tel : 01.60.92.41.74 mail : lionel.lecointe@pl-systems.fr U90 Ladder Fonctions spéciales Lionel Lecointe - Support technique Tel : 01.60.92.41.74 mail : lionel.lecointe@pl-systems.fr 1 Plan du document Introductions fonctions spéciales Page 3 A*B/C Page 4 Communication

Plus en détail

1.1 Remote Procedure Call (RPC)

1.1 Remote Procedure Call (RPC) 1.1 Remote Procedure Call (RPC) Le modèle Client-Serveur est un modèle simple à utiliser pour la structuration des systèmes répartis. Mais ce modèle s appuie sur des communications de type entrée/sortie

Plus en détail

Travaux pratiques MPI Liste des exercices

Travaux pratiques MPI Liste des exercices Travaux pratiques MPI Liste des exercices 1 T.P. MPI Exercice 1 : Environnement MPI... 2 2 T.P. MPI Exercice 2 : Ping-pong... 3 3 T.P. MPI Exercice 3 : Communications collectives et réductions... 5 4 T.P.

Plus en détail

RAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005

RAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005 Oussama ELKACHOINDI Wajdi MEHENNI RAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005 Sommaire I. Préliminaire : Notice d exécution et mode opératoire...4 II. Architecture globale de l application...5

Plus en détail

Chapitre 5 : Les procédures stockées PL/SQL

Chapitre 5 : Les procédures stockées PL/SQL I. Introduction Une procédure ou une fonction stockée est un bloc PL/SQL nommé pouvant accepter des paramètres et être appelée. Généralement, on utilise une fonction pour calculer une valeur. Les procédures

Plus en détail

Rappels, SISD, SIMD. Calculateurs hybrides (GPU-OpenCL) Rappels, MIMD mémoire partagée. Rappels, MIMD mémoire partagée. Rappels... SISD,...

Rappels, SISD, SIMD. Calculateurs hybrides (GPU-OpenCL) Rappels, MIMD mémoire partagée. Rappels, MIMD mémoire partagée. Rappels... SISD,... Rappels, SISD, SIMD Calculateurs hybrides (GPU-OpenCL) Rappels... SISD,... SIMD Formation d Ingénieurs de l Institut Galiléee MACS 3 Philippe d Anfray Philippe.d-Anfray@cea.fr CEA DSM 2013-2014 SISD :

Plus en détail

Exemple : Lecture d un registre, à l offset 4, sur l équipement d ID 9, qui renvoie la valeur 5 :

Exemple : Lecture d un registre, à l offset 4, sur l équipement d ID 9, qui renvoie la valeur 5 : 1 Ethernet TCP/IP Protocole Modbus TCP 2 Ethernet TCP/IP - Protocole Modbus TCP Codage des Données Type de représentation des adresse et données utilisé par Modbus : big-endian, soit :lorsqu une quantité

Plus en détail

Parallélisme et Répartition

Parallélisme et Répartition Parallélisme et Répartition Master Info Françoise Baude Université de Nice Sophia-Antipolis UFR Sciences Département Informatique baude@unice.fr web du cours : deptinfo.unice.fr/~baude Septembre 2009 Chapitre

Plus en détail

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

Les communications collectives. Caractéristiques. Communications dans un groupe de processus. Dans un communicateur donné. 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

Plus en détail

Systèmes d exploitation. Introduction. (Operating Systems) http://www.sir.blois.univ-tours.fr/ mirian/

Systèmes d exploitation. Introduction. (Operating Systems) http://www.sir.blois.univ-tours.fr/ mirian/ Systèmes d exploitation (Operating Systems) Introduction SITE : http://www.sir.blois.univ-tours.fr/ mirian/ Systèmes d exploitation - Mírian Halfeld-Ferrari p. 1/2 Qu est-ce qu un SE? Ensemble de logiciels

Plus en détail

Systèmes d exploitation Gestion des processus

Systèmes d exploitation Gestion des processus Systèmes d exploitation Gestion des processus Didier Verna didier@lrde.epita.fr 5 décembre 2000 Table des matières Table des matières Généralités... 3 États d un processus... 4 Bloc de contrôle d un processus

Plus en détail

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

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C IN 102 - Cours 1 Qu on le veuille ou non, les systèmes informatisés sont désormais omniprésents. Même si ne vous destinez pas à l informatique, vous avez de très grandes chances d y être confrontés en

Plus en détail

GELE5343 Chapitre 2 : Révision de la programmation en C

GELE5343 Chapitre 2 : Révision de la programmation en C GELE5343 Chapitre 2 : Révision de la programmation en C Gabriel Cormier, Ph.D., ing. Université de Moncton Hiver 2013 Gabriel Cormier (UdeM) GELE5343 Chapitre 2 Hiver 2013 1 / 49 Introduction Contenu 1

Plus en détail

Eléments de syntaxe du langage Java

Eléments de syntaxe du langage Java c jan. 2014, v3.0 Java Eléments de syntaxe du langage Java Sébastien Jean Le but de ce document est de présenter es éléments de syntaxe du langage Java : les types primitifs, les opérateurs arithmétiques

Plus en détail

Architecture des ordinateurs TD 1

Architecture des ordinateurs TD 1 Architecture des ordinateurs TD 1 ENSIMAG 1 re année April 29, 2008 Imprimer pour chaque étudiant le listing des instructions (page 36 de la doc, ou page 2 du chapitre 7). Pas la peine de tout imprimer.

Plus en détail

Chapitre 4 : Exclusion mutuelle

Chapitre 4 : Exclusion mutuelle Chapitre 4 : Exclusion mutuelle Pierre Gançarski Juillet 2004 Ce support de cours comporte un certain nombre d erreurs : je décline toute responsabilité quant à leurs conséquences sur le déroulement des

Plus en détail

Cours client-serveur Web : Java et RMI (Remote Method Invocation)

Cours client-serveur Web : Java et RMI (Remote Method Invocation) Cours client-serveur Web : Java et RMI (Remote Method Invocation) 1 Java: Rappel sur les threads Cycle de vie d un thread (1) Né -> prêt appel de la méthode start du thread Prêt Exécution Distribution

Plus en détail

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE QCM Remarque : - A une question correspond au moins 1 réponse juste - Cocher la ou les bonnes réponses Barème : - Une bonne réponse = +1 - Pas de réponse = 0

Plus en détail

Organisation des données et structures de stockage

Organisation des données et structures de stockage ING2 - ING3 Nvx 2009-2010 Organisation des données et structures de stockage I. Stockage de l information en C Ce chapitre rappelle brièvement et complète certaines notions de base vues en première année

Plus en détail

Projet de cryptographie. Algorithme de cryptage de type Bluetooth

Projet de cryptographie. Algorithme de cryptage de type Bluetooth Projet de cryptographie Algorithme de cryptage de type Bluetooth Le but de ce projet est de créer une application qui crypte et décrypte des fichiers en utilisant le principe de cryptage du Bluetooth.

Plus en détail

TP : Gestion d une image au format PGM

TP : Gestion d une image au format PGM TP : Gestion d une image au format PGM Objectif : L objectif du sujet est de créer une classe de manipulation d images au format PGM (Portable GreyMap), et de programmer des opérations relativement simples

Plus en détail

Introduction au langage C

Introduction au langage C Organisation du cours Introduction au langage C Premier cours Notions générales Aurélien Max aurelien.max@limsi.fr 12 séances de cours de 1h: mercredi 16-17h, salle A203 12 séances de TD de 1h: mercredi

Plus en détail

Introduction au langage C

Introduction au langage C Introduction au langage C Cours 1: Opérations de base et premier programme Alexis Lechervy Alexis Lechervy (UNICAEN) Introduction au langage C 1 / 23 Les premiers pas Sommaire 1 Les premiers pas 2 Les

Plus en détail

Optimisation de requêtes. I3009 Licence d informatique 2015/2016. Traitement des requêtes

Optimisation de requêtes. I3009 Licence d informatique 2015/2016. Traitement des requêtes Optimisation de requêtes I3009 Licence d informatique 2015/2016 Cours 5 - Optimisation de requêtes Stéphane.Gançarski Stephane.Gancarski@lip6.fr Traitement et exécution de requêtes Implémentation des opérateurs

Plus en détail

Machines composées de (depuis 1940 env.) : http://cui.unige.ch/isi/cours/std/

Machines composées de (depuis 1940 env.) : http://cui.unige.ch/isi/cours/std/ données pr ogramme 11111101 11001101 01000101 b us disque ma gnétique processeur écran Structures de données et algorithmes Ordinateurs Gilles Falquet, printemps-été 2002 Machines composées de (depuis

Plus en détail

Le «thread local storage» et son utilisation

Le «thread local storage» et son utilisation Résumé Les allocations mémoire sont généralement plus coûteuses que d ordinaire en environnement multi-thread. En effet, la majorité des algorithmes d allocation en usage dans les systèmes d exploitation

Plus en détail

SOA et Services Web. 23 octobre 2011. SOA: Concepts de base

SOA et Services Web. 23 octobre 2011. SOA: Concepts de base SOA et Services Web 23 octobre 2011 1 SOA: Concepts de base 2 Du client serveur à la SOA N est Nest pas une démarche entièrement nouvelle: années 1990 avec les solutions C/S Besoins d ouverture et d interopérabilité

Plus en détail

Projet du cours d ARCHITECTURE Gestion distribué d un parking

Projet du cours d ARCHITECTURE Gestion distribué d un parking Projet du cours d ARCHITECTURE Gestion distribué d un parking 3 GI, INSA de Lyon Janvier 2004 1 Objectifs du projet Ce projet a pour but d apprendre à manipuler une application multitâche où les différentes

Plus en détail

Présentation du langage et premières fonctions

Présentation du langage et premières fonctions 1 Présentation de l interface logicielle Si les langages de haut niveau sont nombreux, nous allons travaillé cette année avec le langage Python, un langage de programmation très en vue sur internet en

Plus en détail

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

Programmation C. Apprendre à développer des programmes simples dans le langage C Programmation C Apprendre à développer des programmes simples dans le langage C Notes de cours sont disponibles sur http://astro.u-strasbg.fr/scyon/stusm (attention les majuscules sont importantes) Modalités

Plus en détail

Enoncé des travaux pratiques. du cours OpenMP

Enoncé des travaux pratiques. du cours OpenMP Enoncé des travaux pratiques Enoncé des travaux pratiques du cours OpenMP Enoncé des travaux pratiques : description Description Les travaux pratiques se dérouleront sur les nœuds vargas (grappes de 35

Plus en détail

Le problème des lecteurs et rédacteurs : La communication par envoi de messages. définition. Les processus lecteurs et rédacteurs

Le problème des lecteurs et rédacteurs : La communication par envoi de messages. définition. Les processus lecteurs et rédacteurs Le problème des lecteurs et rédacteurs définition Ce problème généralise celui de l exclusion mutuelle. On distingue deux types de processus : Les lecteurs (readers) qui lisent uniquement l information

Plus en détail

5 Moniteurs. Slide 1. Caractéristique majeure d un programme avec moniteurs = Composé de deux sortes de modules/processus: Slide 2

5 Moniteurs. Slide 1. Caractéristique majeure d un programme avec moniteurs = Composé de deux sortes de modules/processus: Slide 2 5 Moniteurs Motivation = les sémaphores peuvent être utilisés pour résoudre à peu près n importe quel problème d exclusion mutuelle ou synchronisation... mais, les sémaphores possèdent certains désavantages:

Plus en détail

Cours 6 : Principes de la représentation des nombres en

Cours 6 : Principes de la représentation des nombres en Cours 6 : Principes de la représentation des nombres en mémoire 2013/2014 Introduction Représentation des données en mémoire naturels signés Nous décrivons les principes de la représentation des nombres

Plus en détail

Norme de programmation pour le cours et les travaux pratiques

Norme de programmation pour le cours et les travaux pratiques Université du Québec École de technologie supérieure Service des enseignements généraux www.seg.etsmtl.ca INF130 Ordinateurs et programmation Norme de programmation pour le cours et les travaux pratiques

Plus en détail

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INTRODUCTION A JAVA. Fichier en langage machine Exécutable INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du

Plus en détail

SIN : Maquettage d une solution en réponse à un cahier des charges

SIN : Maquettage d une solution en réponse à un cahier des charges SIN : Maquettage d une solution en réponse à un cahier des charges Module SIN 1.1 : Concevoir un système local et permettre le dialogue entre l homme et la machine Activité : TP2 IOWarrior - Commande de

Plus en détail

TP Interface graphique et C++ numéro 1

TP Interface graphique et C++ numéro 1 TP Interface graphique et C++ numéro 1 Master IGC - 1 re année année 2010-2011 Ce premier TP a pour objectif de vous familiariser avec le compilateur C++, les entréessorties du langage et l utilisation

Plus en détail

WP2T23 «APPLICATION de de REFERENCE» Prototypage rapide d une application de traitement d images avec SynDEx EADS

WP2T23 «APPLICATION de de REFERENCE» Prototypage rapide d une application de traitement d images avec SynDEx EADS WP2T23 «APPLICATION de de REFERENCE» Prototypage rapide d une application de traitement d images avec SynDEx EADS Avec l appui de l INRIA www-rocq.inria.fr/syndex 1 PLAN I. Présentation du sujet II. Présentation

Plus en détail

Introduction au Makefile

Introduction au Makefile Introduction au Makefile Nicolas Kielbasiewicz 3 mars 2009 Le développement d un programme et plus généralement d un logiciel demande au(x) programmeur(s) de gérer plusieurs fichiers, voire plusieurs langages.

Plus en détail

Etude d Algorithmes Parallèles de Data Mining

Etude d Algorithmes Parallèles de Data Mining REPUBLIQUE TUNISIENNE MINISTERE DE L ENSEIGNEMENT SUPERIEUR, DE LA TECHNOLOGIE ET DE LA RECHERCHE SCIENTIFIQUE UNIVERSITE DE TUNIS ELMANAR FACULTE DES SCIENCES DE TUNIS DEPARTEMENT DES SCIENCES DE L INFORMATIQUE

Plus en détail

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf Introduction à Java Matthieu Herrb CNRS-LAAS http://homepages.laas.fr/matthieu/cours/java/java.pdf Mars 2014 Plan 1 Concepts 2 Éléments du langage 3 Classes et objets 4 Packages 2/28 Histoire et motivations

Plus en détail

Premiers pas en Fortran 95

Premiers pas en Fortran 95 1 Premiers pas en Fortran 95 Nicolas Depauw 26 septembre 2011 Dans ce petit exemple, nous écrivons un programme en Fortran 95 qui résoud les équations du second degré à coefficients réels. Nous détaillons

Plus en détail

Exécution des applications réparties

Exécution des applications réparties Exécution des applications réparties Programmation des Applications Réparties Olivier Flauzac URCA Master STIC-Informatique première année Olivier Flauzac (URCA) PAR : Exécution des applications réparties

Plus en détail

Chargement de processus Allocation contigüe Allocation fragmentée Gestion de pages. Gestion mémoire. Julien Forget

Chargement de processus Allocation contigüe Allocation fragmentée Gestion de pages. Gestion mémoire. Julien Forget Julien Forget Université Lille 1 École Polytechnique Universitaire de Lille Cité Scientifique 59655 Villeneuve d Ascq GIS 3 2011-2012 1 / 46 Rôle du gestionnaire de mémoire Le gestionnaire de mémoire a

Plus en détail

Moniteurs, Java, Threads et Processus

Moniteurs, Java, Threads et Processus Moniteurs, Java, Threads et Processus 1 Une vue orientée-objet de la mémoire partagée On peut voir un sémaphore comme un objet partagé accessible par deux méthodes : wait et signal. L idée du concept de

Plus en détail

Parallélisation du suivi de marqueurs sur une séquence vidéo

Parallélisation du suivi de marqueurs sur une séquence vidéo Parallélisation du suivi de marqueurs sur une séquence vidéo Faycal TOUHAMI, Jean-Marc TRÉMEAUX 11 mars 2005 Résumé Ce document présente une architecture de calcul parallèle permettant d effectuer le suivi

Plus en détail

Introduction à l Informatique

Introduction à l Informatique Introduction à l Informatique. Généralités : Etymologiquement, le mot informatique veut dire «traitement d information». Ceci signifie que l ordinateur n est capable de fonctionner que s il y a apport

Plus en détail

Présentation. Logistique. Résumé de la 1e Partie. Mise en place du système

Présentation. Logistique. Résumé de la 1e Partie. Mise en place du système Présentation Diapo01 Je m appelle Michel Canneddu. Je développe avec 4D depuis 1987 et j exerce en tant qu indépendant depuis 1990. Avant de commencer, je tiens à remercier mes parrains Jean-Pierre MILLIET,

Plus en détail

I. Introduction. Quelques définitions (qu est-ce qu une machine parallèle, un programme parallèle, pourquoi le parallélisme?)

I. Introduction. Quelques définitions (qu est-ce qu une machine parallèle, un programme parallèle, pourquoi le parallélisme?) I. Introduction Quelques définitions (qu est-ce qu une machine parallèle, un programme parallèle, pourquoi le parallélisme?) Différents types d architectures parallèles Programmation parallèle Mesure du

Plus en détail

Principes de la programmation impérative

Principes de la programmation impérative Séquence d instructions Variables et types Types élaborés Procédures, arguments Gestion de la mémoire Langage compilé, interprété Principes de la programmation impérative Séquence d instructions Variables

Plus en détail

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

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions Cours d introduction à l informatique Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions Qu est-ce qu un Une recette de cuisine algorithme? Protocole expérimental

Plus en détail

Mode d emploi pour la P-machine utilisée lors des TPs et des projets du cours INFO010 Théorie des langages et de la compilation.

Mode d emploi pour la P-machine utilisée lors des TPs et des projets du cours INFO010 Théorie des langages et de la compilation. Mode d emploi pour la P-machine utilisée lors des TPs et des projets du cours INFO010 Théorie des langages et de la compilation. Sébastien COLLETTE et Gilles GEERAERTS 1 Introduction Ce document décrit

Plus en détail

Système de Gestion de Fichiers

Système de Gestion de Fichiers Chapitre 2 Système de Gestion de Fichiers Le système de gestion de fichiers est un outil de manipulation des fichiers et de la structure d arborescence des fichiers sur disque et a aussi le rôle sous UNIX

Plus en détail

Initiation au HPC - Généralités

Initiation au HPC - Généralités Initiation au HPC - Généralités Éric Ramat et Julien Dehos Université du Littoral Côte d Opale M2 Informatique 2 septembre 2015 Éric Ramat et Julien Dehos Initiation au HPC - Généralités 1/49 Plan du cours

Plus en détail

Système. Introduction aux systèmes informatiques

Système. Introduction aux systèmes informatiques Introduction aux systèmes informatiques Système Un système est une collection organisée d'objets qui interagissent pour former un tout Objets = composants du système Des interconnexions (liens) entre les

Plus en détail

Analyse de performance et optimisation. David Geldreich (DREAM)

Analyse de performance et optimisation. David Geldreich (DREAM) Analyse de performance et optimisation David Geldreich (DREAM) Plan de l exposé Analyse de performance Outils Optimisation Démonstrations Analyse de performance Pas d optimisation sans analyse de performance

Plus en détail

Université Paris Diderot Master 1 II. Théorie et pratique de la concurrence

Université Paris Diderot Master 1 II. Théorie et pratique de la concurrence Université Paris Diderot Master 1 II Théorie et pratique de la concurrence Partiel du 30 avril 2009 Durée : 1h30. Tous les documents sont autorisés. Le barème est indicatif. Question 1 : Soit le programme

Plus en détail

Précis de vocabulaire Orienté Objet

Précis de vocabulaire Orienté Objet Dernière Mise à jour : Mars 2007 Précis de vocabulaire Orienté Objet 1 Questions Expliquer et donner un exemple pour chacun des concepts suivants 1. Qu'est-ce qu'un objet? 2. Qu'est-ce qu'une classe? 3.

Plus en détail

Communications performantes par passage de message entre machines virtuelles co-hébergées

Communications performantes par passage de message entre machines virtuelles co-hébergées Communications performantes par passage de message entre machines virtuelles co-hébergées François Diakhaté1,2 1 CEA/DAM Île de France 2 INRIA Bordeaux Sud Ouest, équipe RUNTIME Renpar 2009 1 Plan Introduction

Plus en détail

Systèmes d exploitation Gestion des fichiers. Catalin Dima

Systèmes d exploitation Gestion des fichiers. Catalin Dima Systèmes d exploitation Gestion des fichiers Catalin Dima 1 Problématique Certains processus doivent stocker/avoir accès à une très grande quantité de mémoire Parfois plusieurs ordres de grandeur par rapport

Plus en détail

Chapitre V : La gestion de la mémoire. Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping

Chapitre V : La gestion de la mémoire. Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping Chapitre V : La gestion de la mémoire Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping Introduction Plusieurs dizaines de processus doivent se partager

Plus en détail

GESTION DES PROCESSUS

GESTION DES PROCESSUS CHAPITRE 2 : GESTION DES PROCESSUS Objectifs spécifiques Connaître la notion de processus, Connaître les caractéristiques d un processus ainsi que son contexte Connaître la notion d interruptions et de

Plus en détail

Sujet Projets 2 nd Semestre

Sujet Projets 2 nd Semestre Sujet Projets 2 nd Semestre Seuls les appels systèmes vus en cours sont autorisés. L usage d autres fonctions doit impérativement être validé par l enseignant. La date d ouverture pour l assignation de

Plus en détail

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

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr 6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr Interface d un SGF Implémentation d un SGF Gestion de la correspondance entre la structure logique et la structure

Plus en détail

Notion d indirection (1) 1

Notion d indirection (1) 1 Notion d indirection (1) 1 Illustration 1: Pourquoi garder une copie des fichiers postscript du cours dans mon répertoire, si je sais où se trouve l original sur le web? pour accéder à l original au cas

Plus en détail

Cours de Systèmes d Exploitation

Cours de Systèmes d Exploitation Licence d informatique Synchronisation et Communication inter-processus Hafid Bourzoufi Université de Valenciennes - ISTV Introduction Les processus concurrents s exécutant dans le système d exploitation

Plus en détail

Quelques éléments de compilation en C et makefiles

Quelques éléments de compilation en C et makefiles Quelques éléments de compilation en C et makefiles Guillaume Feuillade 1 Compiler un programme C Le principe de la compilation consiste à passer d un ensemble de fichiers de code à un programme exécutable

Plus en détail

EP 1 931 091 A1 (19) (11) EP 1 931 091 A1 (12) DEMANDE DE BREVET EUROPEEN. (43) Date de publication: 11.06.2008 Bulletin 2008/24

EP 1 931 091 A1 (19) (11) EP 1 931 091 A1 (12) DEMANDE DE BREVET EUROPEEN. (43) Date de publication: 11.06.2008 Bulletin 2008/24 (19) (12) DEMANDE DE BREVET EUROPEEN (11) EP 1 931 091 A1 (43) Date de publication: 11.06.2008 Bulletin 2008/24 (51) Int Cl.: H04L 12/58 (2006.01) (21) Numéro de dépôt: 07291423.7 (22) Date de dépôt: 29.11.2007

Plus en détail

Langage C. Chapitre 2. 2.1 Le langage C, un langage non interprété. 2.1.1 L écriture du programme. 2.1.2 La compilation

Langage C. Chapitre 2. 2.1 Le langage C, un langage non interprété. 2.1.1 L écriture du programme. 2.1.2 La compilation Chapitre 2 Langage C 2.1 Le langage C, un langage non interprété Le C est un langage de programmation comme il en existe beaucoup d autres (C++, Fortran, Python, Matlab, IDL, ADA...). Il existe deux grandes

Plus en détail

CORBA haute performance

CORBA haute performance CORBA haute performance «CORBA à 730Mb/s!» Alexandre DENIS PARIS/IRISA, Rennes Alexandre.Denis@irisa.fr Plan Motivations : concept de grille de calcul CORBA : concepts fondamentaux Vers un ORB haute performance

Plus en détail

Le client/serveur repose sur une communication d égal à égal entre les applications.

Le client/serveur repose sur une communication d égal à égal entre les applications. Table des matières LES PRINCIPES DE BASE... 1 Présentation distribuée-revamping...2 Présentation distante...3 Traitements distribués...3 données distantes-rd...4 données distribuées-rda distribué...4 L'ARCHITECTURE

Plus en détail

Chap. III : Le système d exploitation

Chap. III : Le système d exploitation UMR 7030 - Université Paris 13 - Institut Galilée Cours Architecture et Système Le système d exploitation (ou O.S. de l anglais Operating System ) d un ordinateur est le programme qui permet d accéder

Plus en détail

Corrigé de l examen de systèmes opératoires Module Synchronisation des processus

Corrigé de l examen de systèmes opératoires Module Synchronisation des processus Corrigé de l examen de systèmes opératoires Module Synchronisation des processus 2ième Année Informatique et Mathématiques Appliquées 17 Novembre 1999 1 Les sémaphores 1. Donner la définition d un sémaphore

Plus en détail

Systèmes répartis : les Remote Procedure Calls p.1/25

Systèmes répartis : les Remote Procedure Calls p.1/25 Systèmes répartis : les Remote Procedure Calls Fabrice Rossi http://apiacoa.org/contact.html. Université Paris-IX Dauphine Systèmes répartis : les Remote Procedure Calls p.1/25 Les Remote Procedure Calls

Plus en détail

Dr. M.W. Youssef Systèmes d exploitation Avancées 1ING ISI - 2009

Dr. M.W. Youssef Systèmes d exploitation Avancées 1ING ISI - 2009 Institut Supérieur d Informatique Chapitre 02 Synchronisation des processus Dr. Mohamed-Wassim YOUSSEF 2009 [www.wassimyoussef.info] Systèmes d exploitation avancées 1 ING ISI 1 ére année Ingénieur en

Plus en détail

Les Outils. 1)Scanners.

Les Outils. 1)Scanners. Les Outils. 1)Scanners. Une série de programmes analyseurs forment les outils d analyse. Chacun traite un langage spécifique. L objectif est de : décomposer un langage particulier ; reconstituer les éléments,

Plus en détail

1 Pointeurs, références, alias et tableaux

1 Pointeurs, références, alias et tableaux 1 Pointeurs, références, alias et tableaux 1 1.1 Définitions Un pointeur est une variable contenant l'adresse d'un objet en mémoire. Un pointeur est déni par le couple (type, adresse) de l'objet pointé.

Plus en détail