Parallel Programming with MPI and OpenMP Michael J. Quinn.

Slides:



Advertisements
Présentations similaires
Introduction à la Théorie des graphes
Advertisements

GEF 243B Programmation informatique appliquée
Théorie des graphes.
Rappels C.
Applications de GdX Coordinateur thématique : Christophe Cérin
Algorithmes et structures de données avancées Cours 6 Patrick Reuter

Introduction à l’Algorithmique
Introduction à la Théorie des graphes
GEF 243B Programmation informatique appliquée
UMLV 1 Problème G = (S, A) graphe (orienté) Calculer H = (S, B) où B est la clôture réflexive et transitive de A. Note : (s,t) B ssi il existe un chemin.
Simplification et abstraction de dessins au trait
A.Faÿ 1 Recherche opérationnelle Résumé de cours.
IN302 – Chapitre 1 Notions de base, connexité. Rappels sur la complexité
IN302 – Chapitre 3 Plus courts chemins. Existence De à : pas de chemin pas de plus court chemin.
FLSI602 Génie Informatique et Réseaux
FLSI602 Génie Informatique et Réseaux
Plus rapide chemin bicritère : un problème d’aménagement du territoire
Module 6 : Programmation dynamique
Parallel Programming in C with MPI and OpenMP
Plus courts chemins On présente dans ce chapitre un problème typique de cheminement dans les graphes : la recherche d'un plus court chemin entre deux sommets.
Structures de données et algorithmes – TP2
Module 5 : Algorithmes de graphes
8PRO100 Éléments de programmation Allocation dynamique de la mémoire.
La fonction alloue un bloc de taille size. Il faut indiquer la taille du bloc que lon veut allouer. Le premier exemple: #include void main()
Travail Pratique – Conception et analyse d’algorithmes
Détection de co-évolution de gènes Master 2 : Informatique à Finalité Professionnelle et Recherche Unifiée (IFPRU) Parcours Ingénierie de lIntelligence.
TRAITEMENT DE STRUCTURES
IFT-2000: Structures de Données Introduction à lanalyse dalgorithmes Dominic Genest, 2009.
Chapitre 6 Les fonctions linéaires 6.1 La pente dune droite.
Algorithme de Bellman-Ford
IFT-2000: Structures de données Les graphes Dominic Genest, 2009.
Structures de données IFT-2000
Structures de données IFT-2000
Modèles d’implantation
Structures de données IFT-2000
Structures de données IFT-2000
1 Test : Hiver 2001 graphe graphe addArc (int S1,int S2, graphe g); Bool arcExiste (int S1, int S2, graphe g); graphe gCopy(graphe g); graphe sousGraph(graphe.
Gestion de Fichiers Tri Interne Efficace et Tri Externe.
CSI2520 Représentation: g([Noeud,...],[arc(Noeud1,Noeud2,Valeur),...]). arc(g(Ns,Arcs),N1,N2,Valeur):- member(arc(N1,N2,Valeur),Arcs). % pour un graphe.

Cours 6 Paires attribut-valeur Structures de traits Unification.
Programmation linéaire et Recherche opérationnelle
Parallel Programming in C with MPI and OpenMP
Parallel Programming in C with MPI and OpenMP
Efficacité des algorithmes
21 février 2006Cours de graphes 2 - Intranet1 Cours de graphes Les plus courts chemins, les chemins les plus légers : à laide de la vague, à laide de la.
Programmation dynamique
Structures de données IFT Abder Alikacem Linéarisation des matrices Département dinformatique et de génie logiciel Édition septembre 2009.
Pour le chemin le plus court pour tous les couples
Algorithme de DIJKSTRA Recherche d’un chemin minimal.
Graphes 1. Introduction 2. Définition 3. Représentation mémoire
Le langage C Rappel Pointeurs & Allocation de mémoire.
Les Pointeurs et les Tableaux Statiques et Tableaux Dynamiques
Programmation dynamique
Notions premières. x a b c d y z t G = (V,E) V sommets ou nœuds E arêtes ou liens.
Tutorat 7 - Introduction au Routage et OSPF
La fonction alloue un bloc de taille size. Il faut indiquer la taille du bloc que l’on veut allouer. Le premier exemple: #include void main()
ETNA – 1ème année Guillaume Belmas –
TABLEAUX des POINTEURS TRAITEMENT DE STRUCTURES
Classe 1 CSI2572 Autres modificateurs de déclaration de variables: & volatile & register & static & auto & extern & const volatile Indique au compilateur.
Structures de données élémentaires
Helen KASSEL (amphi), Herve BARBOT (TD, TP)
Traversées (Parcours ) de graphes
LES SYSTÈMES DYNAMIQUES.
Université Abou Bakr Belkaid Faculté des Sciences Département d’informatique Algorithmique Avancée et Complexité Chap7: Les méthodes de résolution exactes.
Plan Introduction Parcours de Graphe Optimisation et Graphes
CSI 3505 / Automne 2005: Conception et Analyse des Algorithmes I.
Int 10. Int 6.
IN302 – Chapitre 3 Plus courts chemins.
Transcription de la présentation:

Parallel Programming with MPI and OpenMP Michael J. Quinn

Chapitre 6 Lalgorithme de Floyd

Sujets couverts Chemin le plus court entre toutes les paires de noeuds Tableau 2-D dynamique Communication entre deux noeuds

Le problème du chemin le plus court entre toutes les paires de noeuds dun graphe A E B C D A B C D E ABCD E Matrice dadjacence

Algorithme de Floyd for k 0 to n-1 for i 0 to n-1 for j 0 to n-1 a[i,j] min (a[i,j], a[i,k] + a[k,j]) endfor

Création dynamique dun tableau 1-D A Heap Run-time Stack

Création dynamique dun tableau 2-D Heap Run-time Stack BstorageB

Création dynamique dun tableau 2-D int **B, i; Bstorage = (int*) malloc (M*n*sizeof(int)); B=(int**) malloc (m*sizeof(int*)); for (i=0; i<m; i++) B[i] = &Bstorage[i*n];

Conception dun algorithme parallèle Partition Communication Répartition du travail

Partition Doit-on décomposer les données ou le code? On peut facilement extraire du parallélisme de données La même instruction doit être exécutée n 3 fois Pas de parallélisme de tâche On peut voir le problème comme n 2 applications de la même tâche à effectuer en parallèle sur des données différentes.

Communication Tâches primitives Mise-à-jour de a[3,4] lorsque k = 1 Iteration k: Chaque tâche de la ligne k diffuse sa valeur aux tâches de la même colonne Iteration k: chaque tâche de la colonne k diffuse sa valeur aux tâches de la même ligne

Répartition du travail p processeurs n 2 valeurs de sortie On associe environ n 2 /2 valeurs à chaque processeur

2 méthodes possibles On regroupe par lignesOn regroupe par colonnes

Comnparaison Regroupement par colonne On élimine la diffusion entre les lignes On élimine la diffusion entres les colonnes dun même groupe Regroupement par ligne On élimine la diffusion entre les colonnes On élimine la diffusion entres les lignes dun même groupe On choisi le regroupement par ligne puisque sur la plupart des systèmes les matrices sont représentées ligne par ligne.

Fichier dentrée Fichier Un processus est chargé de lire le fichier dentrée et de distribuer son contenu aux autres

Communication entre deux noeuds Deux processus veulent communiquer Un processus envoie un message Lautre processus reçoit le message En opposition avec une diffusion ou un processus envoie un message à tous les autres.

Send/Receive

Function MPI_Send int MPI_Send ( void *message, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm )

MPI_Datatype MPI_CHAR MPI_DOUBLE MPI_FLOAT MPI_INT MPI_LONG MPI_LONG_DOUBLE MPI_SHORT MPI_UNSIGNED_CHAR MPI_UNSIGNED MPI_UNSIGNED_LONG MPI_UNSIGNED_SHORT

Function MPI_Recv int MPI_Recv ( void *message, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm comm, MPI_Status *status )

MPI_status 3 champs: MPI_SOURCE: id du processus envoyant le message MPI_TAG: le tag du message MPI_ERROR: code derreur

Utilisation de Send/Receive … if (ID == j) { … Receive from I … } … if (ID == i) { … Send to j … } …

Implémentation de MPI_Send et MPI_Recv Processus expéditeurProcessus récepteur Tampon du programme Tampon du système Tampon de la mémoire MPI_Send MPI_Recv

Retour deMPI_Send Le processus expéditeur est bloqué tant que la mémoire nest pas libéré La mémoire est libéré lorsque Le message est copié dans le tampon, ou Le message est transmis Scénario typique: Le message est copié dans le tampon La transmission seffectue pendant que lexpéditeur poursuit son exécution

Retour de MPI_Recv Le processus récepteur jusquà ce que le message soit copié dans le tampon Si le message narrive jamais alors le processus ne débloquera jamais

Interblocage Lorsquun processus attend un événement qui ne se produira jamais Les appels send/receive sont une cause importante dinterblocage Deux processus: Les deux reçoivent avant denvoyer Aucun send ne correspond à un receive Un processus envoie un message à un mauvais destinataire.