Structures des projets . et .

Slides:



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

GEF 243B Programmation informatique appliquée Listes chaînées I – Tableaux de structures §15.1 – 15.2.
Structures de données avancées : Principales structures de fichiers
Structures de données avancées : Principales structures de données
Tris.
Chap. 4 Recherche en Table
Algorithmes et structures de données avancées Cours 7
Masters IIGLI et IGLII – Programmation générique et conception objet – – Claude Montacié 1 Cours n° 5 Structures de données abstraites.
Algorithmes et structures de données avancées Cours 4
Algorithmes et structures de données avancées Cours 6 Patrick Reuter
Portée des variables VBA & Excel
Simplification Out-of-Core des modèles polygonales complexes
Introduction à l’Algorithmique
Calculs de complexité d'algorithmes
1 UMLV 1. Introduction 2. Hachage ouvert 3. Hachage fermé 4. Implémentation des fonctions Méthodes de hachage.
Modélisation par le concept de graphe
Exercices Algorithmiques
Exposé GT 24/10/2002 Dimitri Lecas.
Chap. 1 INTRODUCTION Beaucoup de problèmes de la vie courante, tels la gestion de réseaux de communication ou l'ordonnancement de tâches, correspondent.
Chap. 1 Structures séquentielles : listes linéaires
Calcul numérique (avec Maple)
Plus rapide chemin bicritère : un problème d’aménagement du territoire
Initiation à la programmation et algorithmique cours 3
Nombre de chaînes de longueur r
ALGORITHMES RECURSIFS
Structures de données linéaires
Récursivité.
Vue générale de Sharpdesk
II. Chaînage, SDD séquentielles
Les algorithmes: complexité et notation asymptotique
Ecole Supérieure Privée de ingénierie et de technologie année universitaire :2013/2014 Cross-Plateform Cours JavaScript.
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()
II. Chaînage, SDD séquentielles
Définition d’un maillon de liste
O UTILS DE P ROGRAMMATION Mr. BENDIB. I MAA, LAMIS Laboratory, Université de Tébessa.
IFT-2000: Structures de Données Listes chaînées Dominic Genest, 2009.
Les tris.
Chapitre 21 Collections Partie I Introduction Une collection : est un objet qui regroupe multiple éléments dans une unité. Une collection est.
Indexation 1. Concepts de base 2. Arbre B 3. Indexes secondaires.
L’utilisation des bases de données
Les fichiers indexés (Les B-arbres)
IFT-2000: Structures de données Les graphes Dominic Genest, 2009.
Modèles d’implantation
Structures de données IFT-2000 Abder Alikacem Standard Template library Édition Septembre 2009 Département dinformatique et de génie logiciel.
Une nouvelle structure de données : les tableaux
Courbes de Bézier.

Parallel Programming in C with MPI and OpenMP
8PRO100 Éléments de programmation Les types composés.
COURS DE PROGRAMMATION ORIENTEE OBJET :
IFT-2000: Structures de données Piles et files Dominic Genest, 2009.
Atelier de formation : MAT optimisation II (les graphes).
Structures de données IFT Abder Alikacem Linéarisation des matrices Département dinformatique et de génie logiciel Édition septembre 2009.
Structures des données
Le langage C Structures de données
Ch. PAUL - Piles et Files à l'aide de listes chainées
LES PILES ET FILES.
Méthodes de tri.
Ceci est un graphe valué Des arcs : 1-2, 1-4, 7-10,…..
Modèles Mathématiques et représentation discrètes pour la description des images couleur Luc Brun.
ETNA – 1ème année Guillaume Belmas –
Les types composés Les enregistrements.
1 1 Huitième journée Quelques algorithmes. 2 Définition Description des tâches pour que celles-ci soient aisément programmables Différent d’une méthode.
Classe 1 CSI2572 Autres modificateurs de déclaration de variables: & volatile & register & static & auto & extern & const volatile Indique au compilateur.
B.Shishedjiev - Modèle relationnel
Structures de données avancées : Principales structures de fichiers
 Chaînage et LSC : motivation et principe Manipuler la LSC : exemples Variantes : LDC, liste circulaire, … Etude de cas : réalisation d’un buffer clavier.
Présentation de Séminaire
Matlab (Matrix Laboratory) Langage de programmation évolué. Traitement direct d’opérations matricielles, dont l’inversion et l’analyse d’opérateurs ou.
Transcription de la présentation:

Structures des projets . et . Les brevets logiciels en Europe 26/03/2017 Structures des projets . et . François PELLEGRINI INRIA Futurs & LaBRI, UMR CNRS 5800 François PELLEGRINI -- © 2000-2002 Eurolinux

Le projet Scotch Débuté en 1992 (thèse de F. Pellegrini) Appliquer des méthodes de type « diviser pour résoudre » à des problèmes d’algorithmique de graphes utilisés pour la résolution parallèle de grands systèmes linéaires creux : Partitionnement de graphes Placement statique Renumérotation de matrices creuses Algorithmes basés uniquement sur la topologie Étude de versions parallèles de ces algorithmes © 2002 ScAlApplix

Le projet PaStiX Débuté en 1997 (thèses de P. Ramet, D. Goudin, P. Hénon) Réalisation d’une chaîne complète de résolution parallèle par méthode directe par blocs de grands systèmes linéaires creux symétriques définis positifs Renumérotation (Scotch) Factorisation symbolique Distribution des blocs (1D et/ou 2D) Factorisation numérique Descente/remontée © 2002 ScAlApplix

Structure de graphe

Cahier des charges (1) Possibilité de valuer les sommets et les arêtes Mais pas obligation ! Structures séparées pour les valuations Nécessité de connaître rapidement tous les voisins d’un sommet donné Liste de voisins pour chaque sommet Structure symétrique (graphes symétriques) Facilement modifiable Possibilité d’ajouter, de supprimer des sommets, des arêtes, … i  adj(j)  j  adj(i) i j © 2002 ScAlApplix

Stockage des adjacences (1) Nombre de sommets vertnbr et nombre d’arcs edgenbr Tableaux donnant l’indice de début verttab et l’indice de fin vendtab dans le tableau des extrémités d’arcs edgetab de taille maximale donnée edgemax Plage des numéros de sommets dense Tableau edgetab non nécessairement dense Sommets non nécessairement ordonnés dans edgetab Listes d’adjacence non triées dans edgetab (vendtab[i] – verttab[i]) est le degré du sommet i © 2002 ScAlApplix

Stockage des adjacences (2) On parcourt la structure de la façon suivante : for (vertnum = 0; vertnum < vertnbr; vertnum ++) { for (edgenum = verttab[vertnum]; edgenum < vendtab[vertnum]; edgenum ++) { vertend = edgetab[edgenum]; … } 2 3 1 4 verttab edgetab 2 3 . 1 4 10 5 8 vendtab 13 14 4 edgemax edgenbr vertnbr 10 © 2002 ScAlApplix

Stockage compact des sommets Si toutes les adjacences sont stockées de façon dense et ordonnée dans edgetab, on n’a plus besoin d’allouer qu’un seul tableau d’index, de taille (vertnbr + 1) vendtab pointe sur (verttab + 1) 2 3 1 4 verttab 11 1 3 6 9 vendtab edgetab 2 4 10 4 edgemax edgenbr vertnbr © 2002 ScAlApplix

Valeur de base des index (1) Selon que l’on adresse les tableaux à partir de C ou de FORTRAN, les valeurs d’index diffèrent Commencent à zéro en C Commencent à un en FORTRAN Problème d’indexation double, du type : edgetab[verttab[vertnum]] Parcours en C d’un graphe créé en FORTRAN : for (vertnum = 0; vertnum < vertnbr; vertnum ++) { for (edgenum = verttab[vertnum]; // Valide edgenum < vendtab[vertnum]; edgenum ++) { vertend = edgetab[edgenum]; // Invalide ! … } © 2002 ScAlApplix

Valeur de base des index (2) La structure de graphe conserve la valeur de base des index de ses tableaux, baseval Les accès basés se font à travers des références basées aux tableaux verttax, vendtax, edgetax verttax vaut (verttab - baseval) vendtax vaut (vendtab - baseval) edgetax vaut (edgetab - baseval) La valeur vertnnd vaut (vertnbr + baseval) © 2002 ScAlApplix

Valeur de base des index (3) for (vertnum = 0; vertnum < vertnbr; vertnum ++) { // Non basé for (edgenum = verttab[vertnum]; edgenum < vendtab[vertnum]; edgenum ++) { // Non basé vertend = edgetax[edgenum]; // Basé … for (vertnum = baseval; vertnum < vertnnd; vertnum ++) { // Basé for (edgenum = verttax[vertnum]; edgenum < vendtax[vertnum]; edgenum ++) { // Basé vertend = edgetax[edgenum]; // Basé … vendtab 2 3 1 4 vendtax baseval 1 verttax vertnbr 4 1 3 6 9 11 verttab vertnnd 5 edgenbr 10 2 3 3 4 1 1 2 4 3 2 edgemax 10 edgetab © 2002 ScAlApplix

Structure de données typedef struct Graph_ { INT baseval; // Base value for numberings INT vertnbr; // Number of vertices INT edgenbr; // Number of edges (arcs) INT edgemax; // Size of edgetab INT * restrict verttab; // Array of neighbor indexes INT * restrict verttax; // Based access to verttab INT * restrict vendtab; // Array of neighbor indexes INT * restrict vendtax; // Based access to vendtab INT * restrict velotab; // Array of vertex loads INT * restrict velotax; // Based access to velotab INT veloval; // Vertex load if (velotab == NULL) INT * restrict edgetab; // Array of adjacency lists INT * restrict edgetax; // Based access to edgetab INT * restrict edlotab; // Array of edge loads INT * restrict edlotax; // Based access to edlotab INT degrmax; // Maximum degree of graph vertices } Graph; © 2002 ScAlApplix

Permutation par blocs

Cahier des charges Spécifier de façon compacte une permutation par blocs des sommets d’un graphe, représentant la renumérotation de ses sommets Numérotation dépendant de l’index de base du graphe La permutation inverse est plus intéressante que la permutation directe Zone continue d’indices pour tout sous-graphe à renuméroter Favorise donc la localité des données et le cache Permet d’exprimer les blocs de la renumérotation comme des plages continues d’indices © 2002 ScAlApplix

Permutation par blocs La permutation inverse est contenue dans un tableau basé, peritax On peut en déduire la permutation directe, permtax Les rangnbr plages de numérotation sont stockées au moyen du tableau compact rangtax, de taille (rangnbr + 1), contenant les indices de début de chaque plage, et terminé par vertnnd (rangtax[i+1] – rangtax[i]) est la taille de la plage i © 2002 ScAlApplix

Structure de données typedef struct Order_ { INT baseval; // Base value for numberings INT rangnbr; // Number of permuted vertex ranges INT * restrict rangtax; // Array of permuted vertex ranges INT * restrict peritax; // Inverse permutation INT * restrict permtax; // Direct permutation } Order; © 2002 ScAlApplix

Matrice symétrique factorisée symboliquement par blocs

Cahier des charges Représenter de façon compacte une matrice symétrique factorisée symboliquement par blocs Numérotation dépendant de l’index de base du graphe Structure servant de support à la structure distribuée de matrice factorisée numériquement par blocs © 2002 ScAlApplix

Blocs colonnes et blocs (1) Les plages de la renumérotation définissent des blocs colonnes cblknbr est le nombre de blocs colonnes Stockage compact dans un tableau unique (cblktab) de taille (cblknbr + 1) Les bornes de la colonne sont (fcolnum, lcolnum) (cblktax[i+1].bloknum – cblktax[i].bloknum) est le nombre de blocs contenus dans le bloc colonne i © 2002 ScAlApplix

Blocs colonnes et blocs (2) Dans chaque bloc colonne, les blocs sont définis par leurs indices de ligne (frownum, lrownum) et le numéro global du bloc colonne en regard (cblknum) bloknbr est le nombre de blocs colonnes Stockage compact dans un tableau unique (bloktab) de taille bloknbr © 2002 ScAlApplix

Structure de données typedef struct SymbolCblk_ { INT fcolnum; // First column index INT lcolnum; // Last column index (inclusive) INT bloknum; // First block in column (diag.) } SymbolCblk; typedef struct SymbolBlok_ { INT frownum; // First row index INT lrownum; // Last row index (inclusive) INT cblknum; // Facing column block INT levfval; // Level-of-fill value } SymbolBlok; typedef struct SymbolMatrix_ { INT baseval; // Base value for numberings INT cblknbr; // Number of column blocks INT bloknbr; // Number of blocks SymbolCblk * restrict cblktab; // Array of column blocks SymbolBlok * restrict bloktab; // Array of blocks INT nodenbr; // Number of nodes in matrix } SymbolMatrix; © 2002 ScAlApplix