Plan de la formation. Calcul parallèle avec MPI. Pourquoi paralléliser? Parallélisation. Présentation, environnement MPI. Communications point à point
|
|
- Olivier Coutu
- il y a 9 ans
- Total affichages :
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) ( 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 ( 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
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étailMPI-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étailPlan 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étailPVM 1 PVM. Parallel Virtual Machine
PVM 1 PVM Parallel Virtual Machine Jalel Chergui Messagerie : Jalel.Chergui@idris.fr Jean-Michel Dupays Messagerie : dupays@idris.fr PVM Plan 2 1 Introduction................. 5 1.1 Concepts de l échange
Plus en détailProgrammation 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étailInitiation 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étailLes 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étailGrid Computing. Mihaela JUGANARU-MATHIEU mathieu@emse.fr 2014-2015. École Nationale Supérieure des Mines de St Etienne
Mihaela JUGANARU-MATHIEU mathieu@emse.fr École Nationale Supérieure des Mines de St Etienne 2014-2015 Bibliographie (livres et revues) : Frédéric Magoulès, Jie Pan, Kiat-An, Tan Abhinit Kumar Introduction
Plus en détailUE Programmation Impérative Licence 2ème Année 2014 2015
UE Programmation Impérative Licence 2 ème Année 2014 2015 Informations pratiques Équipe Pédagogique Florence Cloppet Neilze Dorta Nicolas Loménie prenom.nom@mi.parisdescartes.fr 2 Programmation Impérative
Plus en détailParallé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étailINITIATION AU LANGAGE C SUR PIC DE MICROSHIP
COURS PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 1 / 7 INITIATION AU LANGAGE C SUR PIC DE MICROSHIP I. Historique du langage C 1972 : naissance du C dans les laboratoires BELL par
Plus en détailCours Informatique Master STEP
Cours Informatique Master STEP Bases de la programmation: Compilateurs/logiciels Algorithmique et structure d'un programme Programmation en langage structuré (Fortran 90) Variables, expressions, instructions
Plus en détailTP : 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étailIntroduction 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étailIN 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étailCours d initiation à la programmation en C++ Johann Cuenin
Cours d initiation à la programmation en C++ Johann Cuenin 11 octobre 2014 2 Table des matières 1 Introduction 5 2 Bases de la programmation en C++ 7 3 Les types composés 9 3.1 Les tableaux.............................
Plus en détailLicence ST Université Claude Bernard Lyon I LIF1 : Algorithmique et Programmation C Bases du langage C 1 Conclusion de la dernière fois Introduction de l algorithmique générale pour permettre de traiter
Plus en détailIntroduction à MATLAB R
Introduction à MATLAB R Romain Tavenard 10 septembre 2009 MATLAB R est un environnement de calcul numérique propriétaire orienté vers le calcul matriciel. Il se compose d un langage de programmation, d
Plus en détailTP1 : Initiation à Java et Eclipse
TP1 : Initiation à Java et Eclipse 1 TP1 : Initiation à Java et Eclipse Systèmes d Exploitation Avancés I. Objectifs du TP Ce TP est une introduction au langage Java. Il vous permettra de comprendre les
Plus en détailIntroduction to Parallel Programming with MPI
Introduction to Parallel Programming with MPI Master Modélisation et Simulation - ENSTA cours A1-2 Pierre Kestener pierre.kestener@cea.fr CEA-Saclay, DSM, France Maison de la Simulation MDLS, September,
Plus en détailINTRODUCTION 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étailRuntime. Gestion de la réactivité des communications réseau. François Trahay Runtime, LaBRI sous la direction d'alexandre Denis Université Bordeaux I
Runtime Gestion de la réactivité des communications réseau François Trahay Runtime, LaBRI sous la direction d'alexandre Denis Université Bordeaux I 1 Le calcul hautes performances La tendance actuelle
Plus en détailas Architecture des Systèmes d Information
Plan Plan Programmation - Introduction - Nicolas Malandain March 14, 2005 Introduction à Java 1 Introduction Présentation Caractéristiques Le langage Java 2 Types et Variables Types simples Types complexes
Plus en détailProgrammer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr)
Programmer en JAVA par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Plan 1. Présentation de Java 2. Les bases du langage 3. Concepts avancés 4. Documentation 5. Index des mots-clés 6. Les erreurs fréquentes
Plus en détailExclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011
Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr Université de Provence 9 février 2011 Arnaud Labourel (Université de Provence) Exclusion Mutuelle 9 février 2011 1 / 53 Contexte Epistémologique
Plus en détailMétriques de performance pour les algorithmes et programmes parallèles
Métriques de performance pour les algorithmes et programmes parallèles 11 18 nov. 2002 Cette section est basée tout d abord sur la référence suivante (manuel suggéré mais non obligatoire) : R. Miller and
Plus en détailCompilation (INF 564)
Présentation du cours Le processeur MIPS Programmation du MIPS 1 Compilation (INF 564) Introduction & architecture MIPS François Pottier 10 décembre 2014 Présentation du cours Le processeur MIPS Programmation
Plus en détailCentre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :
Algorithmique et programmation : STRUCTURES DE DONNÉES A. Structure et enregistrement 1) Définition et rôle des structures de données en programmation 1.1) Définition : En informatique, une structure de
Plus en détailEPREUVE 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étailPré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étailProjet Active Object
Projet Active Object TAO Livrable de conception et validation Romain GAIDIER Enseignant : M. Noël PLOUZEAU, ISTIC / IRISA Pierre-François LEFRANC Master 2 Informatique parcours MIAGE Méthodes Informatiques
Plus en détailCorrigé des TD 1 à 5
Corrigé des TD 1 à 5 1 Premier Contact 1.1 Somme des n premiers entiers 1 (* Somme des n premiers entiers *) 2 program somme_entiers; n, i, somme: integer; 8 (* saisie du nombre n *) write( Saisissez un
Plus en détailGestion de mémoire secondaire F. Boyer, Laboratoire Sardes Fabienne.Boyer@imag.fr
Gestion de mémoire secondaire F. Boyer, Laboratoire Sardes Fabienne.Boyer@imag.fr 1- Structure d un disque 2- Ordonnancement des requêtes 3- Gestion du disque - formatage - bloc d amorçage - récupération
Plus en détailChap III : Les tableaux
Chap III : Les tableaux Dans cette partie, on va étudier quelques structures de données de base tels que : Les tableaux (vecteur et matrice) Les chaînes de caractères LA STRUCTURE DE TABLEAU Introduction
Plus en détailEvaluation des performances de programmes parallèles haut niveau à base de squelettes algorithmiques
Evaluation des performances de programmes parallèles haut niveau à base de squelettes algorithmiques (bourse EPSRC numéro GR/S21717/01) Enhancing the Perf. Predictability of Grid Appli. with Patterns and
Plus en détailDE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51
DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51 PLAN DU COURS Introduction au langage C Notions de compilation Variables, types, constantes, tableaux, opérateurs Entrées sorties de base Structures de
Plus en détailIntroduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr
Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr Mars 2002 Pour Irène et Marie Legal Notice Copyright c 2002 Patrick Cégielski Université
Plus en détailTechniques de stockage. Techniques de stockage, P. Rigaux p.1/43
Techniques de stockage Techniques de stockage, P. Rigaux p.1/43 Techniques de stockage Contenu de ce cours : 1. Stockage de données. Supports, fonctionnement d un disque, technologie RAID 2. Organisation
Plus en détailIntroduction à la programmation Travaux pratiques: séance d introduction INFO0201-1
Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1 B. Baert & F. Ludewig Bruno.Baert@ulg.ac.be - F.Ludewig@ulg.ac.be Qu est-ce que la programmation? Programmer Ecrire un
Plus en détailCours 1 : La compilation
/38 Interprétation des programmes Cours 1 : La compilation Yann Régis-Gianas yrg@pps.univ-paris-diderot.fr PPS - Université Denis Diderot Paris 7 2/38 Qu est-ce que la compilation? Vous avez tous déjà
Plus en détailCours 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étailArgument-fetching dataflow machine de G.R. Gao et J.B. Dennis (McGill, 1988) = machine dataflow sans flux de données
EARTH et Threaded-C: Éléments clés du manuel de références de Threaded-C Bref historique de EARTH et Threaded-C Ancêtres de l architecture EARTH: Slide 1 Machine à flux de données statique de J.B. Dennis
Plus en détailChapitre 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étailIntroduction à 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étailLES TYPES DE DONNÉES DU LANGAGE PASCAL
LES TYPES DE DONNÉES DU LANGAGE PASCAL 75 LES TYPES DE DONNÉES DU LANGAGE PASCAL CHAPITRE 4 OBJECTIFS PRÉSENTER LES NOTIONS D ÉTIQUETTE, DE CONS- TANTE ET DE IABLE DANS LE CONTEXTE DU LAN- GAGE PASCAL.
Plus en détailEvaluation des performances de programmes parallèles haut niveau à base de squelettes
Evaluation des performances de programmes parallèles haut niveau à base de squelettes Enhancing the Performance Predictability of Grid Applications with Patterns and Process Algebras A. Benoit, M. Cole,
Plus en détailCORBA 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étailTable des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction
PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS Depuis SAS 9.2 TS2M3, SAS propose un nouveau langage de programmation permettant de créer et gérer des tables SAS : le DS2 («Data Step 2»). Ces nouveautés
Plus en détailEtude 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Équilibrage Dynamique de Charge pour des Calculs Parallèles sur Cluster Linux - Une Évaluation de l Environnement AMPI.
Facultés Universitaires Notre-Dame de la Paix, Namur Institut d Informatique Année académique 2003-2004 Équilibrage Dynamique de Charge pour des Calculs Parallèles sur Cluster Linux - Une Évaluation de
Plus en détailCours 1: Java et les objets
Ressources Les interface homme-machine et le langage Java DUT première année Henri Garreta, Faculté des Sciences (Luminy) Cyril Pain-Barre & Sébastien Nedjar, IUT d Aix-Marseille (Aix) Cours 1: infodoc.iut.univ-aix.fr/~ihm/
Plus en détail1. Structure d'un programme FORTRAN 95
FORTRAN se caractérise par la nécessité de compiler les scripts, c'est à dire transformer du texte en binaire.(transforme un fichier de texte en.f95 en un executable (non lisible par un éditeur) en.exe.)
Plus en détailProcessus! programme. DIMA, Systèmes Centralisés (Ph. Mauran) " Processus = suite d'actions = suite d'états obtenus = trace
Processus 1) Contexte 2) Modèles de Notion de Points de vue Modèle fourni par le SX Opérations sur les 3) Gestion des Représentation des Opérations 4) Ordonnancement des Niveaux d ordonnancement Ordonnancement
Plus en détail6 - 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étailSystèmes parallèles et distribués
Systèmes parallèles et distribués Grégory Mounié 2013-12 Grégory Mounié Systèmes parallèles et distribués 2013-12 1 / 58 Outline 1 Introduction 2 Performances 3 Problèmes du calcul parallèle 4 Intergiciels
Plus en détailCours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. Enrica.Duchi@liafa.jussieu.fr
. Cours intensif Java 1er cours: de C à Java Septembre 2009 Enrica DUCHI LIAFA, Paris 7 Enrica.Duchi@liafa.jussieu.fr LANGAGES DE PROGRAMMATION Pour exécuter un algorithme sur un ordinateur il faut le
Plus en détail03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing
3/4/27 Programmation Avancée Multimédia Multithreading Benoît Piranda Équipe SISAR Université de Marne La Vallée Besoin Programmes à traitements simultanés Réseau Réseau Afficher une animation en temps
Plus en détailGénie Logiciel avec Ada. 4 février 2013
Génie Logiciel 4 février 2013 Plan I. Généralités II. Structures linéaires III. Exceptions IV. Structures arborescentes V. Dictionnaires I. Principes II. Notions propres à la POO I. Principes Chapitre
Plus en détailPROJET ALGORITHMIQUE ET PROGRAMMATION II
PROJET 1 ALGORITHMIQUE ET PROGRAMMATION II CONTENU DU RAPPORT A RENDRE : o Fiche signalétique du binôme o Listing des différents fichiers sources o CD sources o Il sera tenu compte de la présentation du
Plus en détailCours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples
Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation impérative et structures de données simples Introduction au langage C Sandrine Blazy - 1ère année 24 octobre 2007 Cours d Algorithmique-Programmation
Plus en détailARDUINO DOSSIER RESSOURCE POUR LA CLASSE
ARDUINO DOSSIER RESSOURCE POUR LA CLASSE Sommaire 1. Présentation 2. Exemple d apprentissage 3. Lexique de termes anglais 4. Reconnaître les composants 5. Rendre Arduino autonome 6. Les signaux d entrée
Plus en détailCahier des charges. driver WIFI pour chipset Ralink RT2571W. sur hardware ARM7
Cahier des charges driver WIFI pour chipset Ralink RT2571W sur hardware ARM7 RevA 13/03/2006 Création du document Sylvain Huet RevB 16/03/2006 Fusion des fonctions ARP et IP. SH Modification des milestones
Plus en détailLimitations of the Playstation 3 for High Performance Cluster Computing
Introduction Plan Limitations of the Playstation 3 for High Performance Cluster Computing July 2007 Introduction Plan Introduction Intérêts de la PS3 : rapide et puissante bon marché L utiliser pour faire
Plus en détailLicence Bio Informatique Année 2004-2005. Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...
Université Paris 7 Programmation Objet Licence Bio Informatique Année 2004-2005 TD n 1 - Correction Premiers pas Exercice 1 Hello World parce qu il faut bien commencer par quelque chose... 1. Enregistrez
Plus en détailD2.2 Définition des mécanismes minimaux d un runtime tolérant aux pannes dans les infrastructures Petascale
D2.2 Définition des mécanismes minimaux d un runtime tolérant aux pannes dans les infrastructures Petascale VERSION 1.0 DATE 2010 EDITORIAL MANAGER Sylvain Peyronnet AUTHORS STAFF Ala Rezmerita, Camille
Plus en détailTP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile
TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile Dans ce TP, vous apprendrez à définir le type abstrait Pile, à le programmer en Java à l aide d une interface
Plus en détailCours Bases de données
Informations sur le cours Cours Bases de données 9 (10) séances de 3h Polycopié (Cours + TD/TP) 3 année (MISI) Antoine Cornuéjols www.lri.fr/~antoine antoine.cornuejols@agroparistech.fr Transparents Disponibles
Plus en détailÉléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if
Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if Pierre Boudes 28 septembre 2011 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike
Plus en détailUtilisation d objets : String et ArrayList
Chapitre 6 Utilisation d objets : String et ArrayList Dans ce chapitre, nous allons aborder l utilisation d objets de deux classes prédéfinies de Java d usage très courant. La première, nous l utilisons
Plus en détailCours 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étailDéfinitions. Numéro à préciser. (Durée : )
Numéro à préciser (Durée : ) On étudie dans ce problème l ordre lexicographique pour les mots sur un alphabet fini et plusieurs constructions des cycles de De Bruijn. Les trois parties sont largement indépendantes.
Plus en détailI. Introduction aux fonctions : les fonctions standards
Chapitre 3 : Les fonctions en C++ I. Introduction aux fonctions : les fonctions standards A. Notion de Fonction Imaginons que dans un programme, vous ayez besoin de calculer une racine carrée. Rappelons
Plus en détail1 Mesure de la performance d un système temps réel : la gigue
TP TR ENSPS et MSTER 1 Travaux Pratiques Systèmes temps réel et embarqués ENSPS ISV et Master TP1 - Ordonnancement et communication inter-processus (IPC) Environnement de travail Un ordinateur dual-core
Plus en détailREALISATION d'un. ORDONNANCEUR à ECHEANCES
REALISATION d'un ORDONNANCEUR à ECHEANCES I- PRÉSENTATION... 3 II. DESCRIPTION DU NOYAU ORIGINEL... 4 II.1- ARCHITECTURE... 4 II.2 - SERVICES... 4 III. IMPLÉMENTATION DE L'ORDONNANCEUR À ÉCHÉANCES... 6
Plus en détailRappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme
Rappel Ralf Treinen Université Paris Diderot UFR Informatique Laboratoire Preuves, Programmes et Systèmes treinen@pps.univ-paris-diderot.fr 6 mai 2015 Jusqu'à maintenant : un petit langage de programmation
Plus en détailCours 1 : Qu est-ce que la programmation?
1/65 Introduction à la programmation Cours 1 : Qu est-ce que la programmation? Yann Régis-Gianas yrg@pps.univ-paris-diderot.fr Université Paris Diderot Paris 7 2/65 1. Sortez un appareil qui peut se rendre
Plus en détailPré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étailExamen Médian - 1 heure 30
NF01 - Automne 2014 Examen Médian - 1 heure 30 Polycopié papier autorisé, autres documents interdits Calculatrices, téléphones, traducteurs et ordinateurs interdits! Utilisez trois copies séparées, une
Plus en détailJulien MATHEVET Alexandre BOISSY GSID 4. Rapport RE09. Load Balancing et migration
Julien MATHEVET Alexandre BOISSY GSID 4 Rapport Load Balancing et migration Printemps 2001 SOMMAIRE INTRODUCTION... 3 SYNTHESE CONCERNANT LE LOAD BALANCING ET LA MIGRATION... 4 POURQUOI FAIRE DU LOAD BALANCING?...
Plus en détailInfo0804. Cours 6. Optimisation combinatoire : Applications et compléments
Recherche Opérationnelle Optimisation combinatoire : Applications et compléments Pierre Delisle Université de Reims Champagne-Ardenne Département de Mathématiques et Informatique 17 février 2014 Plan de
Plus en détailRappels d architecture
Assembleur Rappels d architecture Un ordinateur se compose principalement d un processeur, de mémoire. On y attache ensuite des périphériques, mais ils sont optionnels. données : disque dur, etc entrée
Plus en détailMise 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étailAlgorithmique et Programmation, IMA
Algorithmique et Programmation, IMA Cours 2 : C Premier Niveau / Algorithmique Université Lille 1 - Polytech Lille Notations, identificateurs Variables et Types de base Expressions Constantes Instructions
Plus en détailJava Licence Professionnelle CISII, 2009-10
Java Licence Professionnelle CISII, 2009-10 Cours 4 : Programmation structurée (c) http://www.loria.fr/~tabbone/cours.html 1 Principe - Les méthodes sont structurées en blocs par les structures de la programmation
Plus en détail2. MAQUETTAGE DES SOLUTIONS CONSTRUCTIVES. 2.2 Architecture fonctionnelle d un système communicant. http://robert.cireddu.free.
2. MAQUETTAGE DES SOLUTIONS CONSTRUCTIVES 2.2 Architecture fonctionnelle d un système communicant Page:1/11 http://robert.cireddu.free.fr/sin LES DÉFENSES Objectifs du COURS : Ce cours traitera essentiellement
Plus en détailUE C avancé cours 1: introduction et révisions
Introduction Types Structures de contrôle Exemple UE C avancé cours 1: introduction et révisions Jean-Lou Desbarbieux et Stéphane Doncieux UMPC 2004/2005 Introduction Types Structures de contrôle Exemple
Plus en détailCompléments de documentation Scilab : affichage de texte et formatage de nombres
Université des Sciences et Technologies de Lille U.F.R. de Mathématiques Pures et Appliquées Agrégation externe Année 2002-2003 Compléments de documentation Scilab : affichage de texte et formatage de
Plus en détailINF6500 : Structures des ordinateurs. Sylvain Martel - INF6500 1
INF6500 : Structures des ordinateurs Sylvain Martel - INF6500 1 Cours 4 : Multiprocesseurs Sylvain Martel - INF6500 2 Multiprocesseurs Type SISD SIMD MIMD Communication Shared memory Message-passing Groupe
Plus en détailCours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java
Langages objets Introduction M2 Pro CCI, Informatique Emmanuel Waller, LRI, Orsay présentation du module logistique 12 blocs de 4h + 1 bloc 2h = 50h 1h15 cours, 45mn exercices table, 2h TD machine page
Plus en détail1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.
1. Structure d un programme C Un programme est un ensemble de fonctions. La fonction "main" constitue le point d entrée pour l exécution. Un exemple simple : #include int main() { printf ( this
Plus en détailProgrammation 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étailTP 1. Prise en main du langage Python
TP. Prise en main du langage Python Cette année nous travaillerons avec le langage Python version 3. ; nous utiliserons l environnement de développement IDLE. Étape 0. Dans votre espace personnel, créer
Plus en détailDétection d'intrusions en environnement haute performance
Symposium sur la Sécurité des Technologies de l'information et des Communications '05 Détection d'intrusions en environnement haute performance Clusters HPC Fabrice Gadaud (fabrice.gadaud@cea.fr) 1 Sommaire
Plus en détailSTS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi 802.11 module
François SCHNEIDER Lycée Victor-Hugo BESANÇON. STS SE FreeRTOS Programmation réseau WIFI Programmation réseau Socket Tcp FlyPort smart Wi-Fi 802.11 module Prérequis : langage C, connaissance réseau : Ip,
Plus en détailJ2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation
J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation Cycle Ingénierie 2e année SIGL Dernière mise à jour : 19/10/2006 Christophe Porteneuve Threads Principes Cycle de vie Création java.lang.thread
Plus en détailGestion de clusters de calcul avec Rocks
Gestion de clusters de calcul avec Laboratoire de Chimie et Physique Quantiques / IRSAMC, Toulouse scemama@irsamc.ups-tlse.fr 26 Avril 2012 Gestion de clusters de calcul avec Outline Contexte 1 Contexte
Plus en détailFiche technique CPU 315SN/PN (315-4PN33)
Fiche technique CPU 315SN/PN (315-4PN33) Données techniques N de commande 315-4PN33 Information générale Note - Caractéristiques SPEED-Bus - Données techniques de l'alimentation Alimentation (valeur nominale)
Plus en détailStructure fonctionnelle d un SGBD
Fichiers et Disques Structure fonctionnelle d un SGBD Requetes Optimiseur de requetes Operateurs relationnels Methodes d acces Gestion de tampon Gestion de disque BD 1 Fichiers et Disques Lecture : Transfert
Plus en détailSYSTÈME DE GESTION DE FICHIERS
SYSTÈME DE GESTION DE FICHIERS - DISQUE 1 Les couches logiciels réponse requête Requêtes E/S Système E/S Pilote E/S Interruptions utilisateur traitement S.E. commandes S.E. S.E. matériel Contrôleur E/S
Plus en détailRapport d activité. Mathieu Souchaud Juin 2007
Rapport d activité Mathieu Souchaud Juin 2007 Ce document fait la synthèse des réalisations accomplies durant les sept premiers mois de ma mission (de novembre 2006 à juin 2007) au sein de l équipe ScAlApplix
Plus en détail