Spelling suggestions: "subject:"programmation génétique"" "subject:"programmations génétique""
1 |
Expérience de programmation générique sur des structures non-séquentielles : les automatesLe Maout, Vincent 01 July 2003 (has links) (PDF)
Cette thèse constitue une contribution au génie logiciel appliqué à la programmation d'automates. Elle est née d'abord du simple besoin concret d'une bonne librairie de manipulation d'automate ouverte, efficace, extensible et simple d'utilisation. A priori, la programmation générique en C++ semblant la plus adaptée à ces besoins (son originalité par rapport à la programmation purement objets, vient de ce qu'elle impose des contraintes sur les temps de calcul des opérations), le but était d'étendre ces techniques de programmation et leurs domaines d'application aux automates puis aux machines à états en général tout en rendant la librairie plus abordable grâce à la programmation générative et des composants actifs. Ce travail couvre de plus un besoin d'étude sur la programmation par patron en C++ : faisabilité, pouvoir d'expression et efficacité. Cette thèse espère apporter une solution viable à la programmation générique d'automates avec des concepts novateurs, une implémentation sous forme de librairie C++ ouverte et une expérimentation de programmation générative généralisant les résultats obtenus à l'ensemble des machines dont la structure est basée sur celle d'un graphe.
|
2 |
Towards a software architecture for generic image processing / Vers une architecture logicielle pour le traitement d'images génériqueLevillain, Roland 15 November 2011 (has links)
Dans le cadre du génie logiciel en traitement d'images (TDI), nous nous intéressons à la notion de réutilisabilité des algorithmes. Dans de nombreux outils logiciels, l'implémentation d'un algorithme est souvent dépendante du type des données traitées. Au sens le plus général, les formes que peuvent prendre les images numériques discrètes sont nombreuses (image 2D classiques, volumes 3D, graphes non réguliers, complexes cellulaires, etc.) conduisant à une explosion combinatoire du nombre théorique d'implémentations. La programmation générique (PG) est un cadre adapté au développement d'outils logiciels réutilisables. Nous présentons un paradigme de programmation basé sur la PG conçu pour la création de logiciels scientifiques tels ceux dédiés au TDI. Cette approche concilie réutilisabilité, puissance d'expression, extensibilité et performance. Nous proposons ensuite une architecture logicielle pour le TDI basée sur ce paradigme de programmation, s'appuyant sur une bibliothèque générique de TDI. Les fondations de ce cadre définissent des concepts fondamentaux du TDI, qui permettent l'écriture d'algorithmes réutilisables sur de nombreux types d'images. Nous présentons enfin une stratégie pour construire des outils haut niveau au dessus de cette bibliothèque tels que des ponts vers des langages dynamiques ou des interfaces graphiques. Ce mécanisme est conçu pour préserver la généricité et la performance des outils logiciels sous-jacents, tout en permettant un usage plus simple et plus flexible de ceux-ci / In the context of software engineering for image processing (IP), we consider the notion of reusability of algorithms. In many software tools, an algorithm's implementation often depends on the type of processed data. In a broad definition, discrete digital images may have various forms : classical 2D images, 3D volumes, non-regular graphs, cell complexes, and so on : thus leading to a combinatorial explosion of the theoretical number of implementations. Generic programming (GP) is a framework suited to the development of reusable software tools. We present a programming paradigm based on GP designed for the creation of scientific software such as IP tools. This approach combines the benefits of reusability, expressive power, extensibility, and efficiency. We then propose a software architecture for IP using this programming paradigm based on a generic IP library. The foundations of this framework define essential IP concepts, enabling the development of algorithms compatible with many image types. We finally present a strategy to build high-level tools on top of this library, such as bridges to dynamic languages or graphical user interfaces. This mechanism has been designed to preserve the genericity and efficiency of the underlying software tools, while making them simpler to use and more flexible
|
3 |
Squelettes algorithmiques asynchrones : application aux langages orientés domaine / Asynchronous algorithmic skeletons : application to domain specific languagesTran tan, Antoine 08 October 2015 (has links)
Dans cette thèse, nous présentons des développements de l'approche utilisée dans l'équipe « ParSys » du LRI pour traduire automatiquement des codes scientifiques écrits dans un langage dédié inspiré de Matlab en codes de production haute performance. Pour garantir cette performance, nous mettons à profit d'une part la méta-programmation par templates C++ afin d'analyser chaque expression pour détecter les opportunités de parallélisme, et d'autre part la programmation parallèle asynchrone pour utiliser au mieux les ressources disponibles des machines multi-cœurs. Pour faire le lien entre ces deux étapes du processus de génération de code, des squelettes algorithmiques multi-niveaux sont implémentés. Nos outils ont été implantés dans la bibliothèque NT2 et évalués sur des applications scientifiques du monde réel. / In this thesis, we present developments to the approach used by the LRI Parsys team to automatically translate MATLAB-like scientific codes into high performance production codes. To reach a high level of performance, we have combined C++ template meta-programming and asynchronous parallel programming to analyze each expression and detect parallelism opportunities first, and then to ensure near-optimal use of the available resources of multi-core machines. To link these two stages of the code generation process, we have implemented a solution based on multi-level algorithmic skeletons. We have implemented our tools in the NT2 library and evaluated them with several significant scientific benchmarks.
|
4 |
Multi-Architectural Support : A Generic and Generative Approach / Support multi-architectural : une approche générique et générativeEstérie, Pierre 20 June 2014 (has links)
Le besoin constant de puissance de calcul a poussé les développeurs à concevoir de nouvelles architectures: les architectures parallèles. Le calcul scientifique dépend fortement des performances de ces dernières afin de fournir des résultats dans un temps optimal. Les applications scientifiques exécutées sur de tels systèmes doivent alors tirer partie des spécificités de ces nouvelles architectures pour être efficaces.Cette thèse présente une nouvelle approche pour la conception de logiciels embarquant des optimisations relatives aux architectures : l'approche AADEMRAL (Architecture Aware DEMRAL). Cette méthodologie a pour but de simplifier le développement de bibliothèques de calcul parallèle avec un support multi-Architectural grâce à une approche générique et générative.Cette nouvelle méthodologie est ensuite intégrée dans trois bibliothèques. La première d'entre elles, Boost.Dispatch, permet de concevoir des logiciels basés sur l'approche AADEMRAL. Boost.Dispatch est une bibliothèque C++fournissant une interface générique pour réaliser de la surcharge de fonction avisée de l'architecture sous-Jacente. Ensuite nous présentons deux bibliothèques C++ implémentées en tant que langages orientés domaine : Boost.SIMD et NT2. Leurs conceptions mettent en œuvre la méthodologie AADEMRAL et leurs implémentations sont basées sur Boost.Dispatch. Boost.SIMD propose une interface de haut niveau pour la programmation des unités vectorielles.NT2 se base sur une interface similaire à celle de Matlab et fournie un support pour les systèmes multi-Cœurs et les unités vectorielles. Enfin, nous validons les performances de ces deux outils ainsi que la robustesse de notre nouvelle approche en présentant une série de résultats obtenus sur des applications de référence. / The constant increasing need for computing power has pushed the development of parallel architectures. Scientific computing relies on the performance of such architectures to produce scientific results. Programming efficient applications that takes advantage of these computing systems remains a non trivial task. In this thesis, we present a new methodology to design architecture aware software: the AA-DEMRAL methodology. This methodology aims at simplifying the development of parallel programming tools with multi-Architectural support through a generic and generative approach. We then present three high level programming tools that rely on this approach. First, we introduce the Boost.Dispatch library that provides a way to develop software based on the AA-DEMRAL methodology. The Boost.Dispatch library is a C++ generic framework for architecture aware function dispatching. Then, we present two C++ template libraries implemented as Architecture Aware DSELs which assess the AA-DEMRAL methodology through the use of Boost.Dispatch: Boost.SIMD, that provides a high level API for SIMD extensions and NT2 , which propose a Matlab like interface with support for multi-Core and SIMD based systems. We assess the performance of these libraries and the validity of our new methodology through benchmarks.
|
5 |
Arithmétique et algorithmique en algèbre linéaire exacte pour la bibliothèque LinBoxPascal, Giorgi 20 December 2004 (has links) (PDF)
L'algèbre linéaire numérique a connu depuis quelques décennies des développements intensifs <br />autant au niveau mathématique qu'informatique qui ont permis d'aboutir à de véritable standard <br />logiciel comme BLAS ou LAPACK.<br />Dans le cadre du calcul exact ou formel, la situation n'est pas aussi avancée, en particulier<br />à cause de la diversité des problématiques et de la jeunesse des progrès théoriques.<br />Cette thèse s'inscrit dans une tendance récente qui vise à fédérer des codes performants<br />provenant de bibliothèques spécialisées au sein d'une unique plateforme de calcul.<br />En particulier, l'émergence de bibliothèques robustes et portables comme GMP ou NTL pour le calcul exact <br />s'avére être un réel atout pour le développement d'applications en algèbre linéaire exacte.<br />Dans cette thèse, nous étudions la faisabilité et la pertinence de la réutilisation de codes spécialisés pour <br />développer une bibliothèque d'algèbre linéaire exacte performante, à savoir la bibliothèque LinBox.<br />Nous nous appuyons sur les mécanismes C++ de programmation générique (classes abtraites, classes templates)<br /> pour fournir une abstraction des composantes mathématiques et ainsi permettre le plugin de composants externes.<br />Notre objectif est alors de concevoir et de valider des boîtes à outils génériques haut niveau dans LinBox pour <br />l'implantation d'algorithmes en algèbre linéaire exacte. <br />En particulier, nous proposons des routines de calcul hybride "exact/numérique" pour des matrices denses sur un corps finis permettant d'approcher les performances obtenues par des bibliothèques numériques comme LAPACK.<br />À un plus haut niveau, ces routines nous permettent de valider la réutilisation de codes spécifiques sur un problème <br />classique du calcul formel: la résolution de systèmes linéaires diophantiens.<br />La bibliothèque LinBox est disponible à www.linalg.org.
|
6 |
Multiprogrammation parallèle générique des méthodes de décomposition de domaineSchwertner-Charão, Andréa 20 September 2001 (has links) (PDF)
Les applications de simulation numérique nécessitant la résolution de problèmes d'Équations aux Dérivées Partielles (EDP) sont souvent parallélisées à l'aide d'une méthode de décomposition de domaine. Ces méthodes mathématiques sont naturellement ouvertes au parallélisme, cependant leur exploitation efficace sur les machines parallèles devient difficile lorsque les applications ont un comportement irrégulier. C'est le cas par exemple lorsque les problèmes mathématiques sont résolus dans des domaines géométriques complexes ou lorsque l'on utilise des techniques d'adaptation de maillage. Une technique de programmation se prêtant bien à la mise en oeuvre d'applications irrégulières est la multiprogrammation basée sur des réseaux de processus légers communicants. Dans cette thèse nous réalisons une étude approfondie de l'apport de ce paradigme de programmation à la résolution de problèmes d'EDP par des méthodes de décomposition de domaine et nous montrons qu'il existe une écriture algorithmique générique de celles-ci. Une de nos principales contributions réside dans la conception et réalisation d'un harnais informatique, appelé Ahpik, permettant une programmation aisée d'applications reposant sur les méthodes de décomposition de domaine. Ce harnais fournit un support générique adaptable à de nombreuses méthodes mathématiques, qu'elles soient synchrones ou asynchrones, avec ou sans recouvrement. Une conception orientée objet permet d'encapsuler les détails de gestion des processus légers et des communications, ce qui facilite l'implantation de nouvelles méthodes. Nous avons utilisé l'environnement Ahpik dans le cadre de la résolution de problèmes d'EDP classiques et notamment pour un problème en mécanique de fluides de grande taille.
|
7 |
Modélisation et optimisation de problèmes de synchronisation dans les documents hypermédiaBachelet, Bruno 24 February 2003 (has links) (PDF)
Les formats actuels de diffusion de documents sur Internet apportent sans conteste de nouvelles possibilités par rapport aux supports traditionnels. Mais les exigences deviennent toujours plus grandes et de nouveaux langages font régulièrement leur apparition pour tenter d'améliorer encore la structure et l'interactivité des documents. Parmi ces langages, certains offrent la possibilité d'animer et synchroniser des composants multimédia. Mais la variété de ces composants (audio, vidéo, texte, image...) font de l'animation un problème compliqué. L'auteur d'un document synchronisé fournit une liste de contraintes temporelles sur les composants de manière à décrire le déroulement de la présentation. Ces composants ont chacun une durée de présentation qui est flexible dans une certaine limite. Tout le problème consiste à trouver un bon ajustement des durées pour que la présentation se déroule au plus proche de ce que souhaite l'auteur tout en évitant les pauses. <br /><br />Le problème peut se modéliser, après quelques restrictions, comme un problème de tension de coût minimal dans un graphe. Pour le résoudre avec des coûts convexes linéaires par morceaux, nous avons étudié différentes approches (programmation linéaire, mise à conformité - out-of-kilter, mise à l'échelle du dual - cost-scaling). Nous proposons également une adaptation de la mise à conformité pour des coûts convexes dérivables. Toutes ces méthodes sont comparées sur des aspects théoriques et pratiques, en considérant des graphes quelconques. <br /><br />Les graphes représentant les contraintes temporelles sont en réalité très structurés et très proches de la classe des graphes appelés série-parallèles, et les méthodes élaborées pour une structure de graphe quelconque ne s'avèrent pas toujours très efficaces. Nous proposons une méthode polynômiale, en opérations, plus adaptée pour résoudre le problème sur des graphes série-parallèles, et que nous appelons agrégation. Mais ces graphes, bien que très proches de la réalité, restent encore une idéalisation. Nous proposons de mesurer l'aspect série-parallèle d'un graphe en définissant la notion de graphe presque série-parallèle, basée sur la décomposition du graphe en composantes série-parallèles. En exploitant l'efficacité de la méthode d'agrégation sur cette décomposition, nous proposons une méthode dite de reconstruction permettant de résoudre le problème pour des graphes presque série-parallèles plus efficacement que les méthodes étudiées précédemment. <br /><br />Lors de cette étude, nous avons développé une bibliothèque de composants réutilisables pour les problèmes de graphes. Nous expliquons en quoi ce type de développement ne peut pas toujours suivre les règles classiques du génie logiciel. Nous montrons comment le paradigme objet peut néanmoins être employé pour la création d'outils efficaces de recherche opérationnelle. Et nous proposons des patrons de conception pour élaborer des composants logiciels (algorithmes et structures de données) génériques, c'est-à-dire indépendants des structures de données qu'ils manipulent et des algorithmes qu'ils emploient, tout en étant fortement extensibles, et cela avec une perte d'efficacité minimale.
|
8 |
Outils génériques de preuve et théorie des groupes finisGarillot, François 05 December 2011 (has links) (PDF)
Cette thèse présente des avancées dans l'utilisation des Structures Canoniques, un mécanisme du langage de programmation de l'assistant de preuve Coq, équivalent à la notion de classes de types. Elle fournit un nouveau modèle pour le développement de hiérarchies mathématiques à l'aide d'enregistrements dépendants, et, en guise d'illustration, fournit une reformulation de la preuve formelle de correction du cryptosystème RSA, offrant des méthodes de raisonnement algébrique ainsi que la représentation en théorie des types des notions mathématiques nécessaires (incluant les groupes cycliques, les groupes d'automorphisme, les isomorphismes de groupe). Nous produisons une extension du mécanisme d'inférence de Structures Canoniques à l'aide de types fantômes, et l'appliquons au traitement de fonctions partielles. Ensuite, nous considérons un traitement générique de plusieurs formes de définitions de sous-groupes rencontrées au long de la preuve du théorème de Feit-Thomspon, une large librairie d'algèbre formelle développée au sein de l'équipe Mathematical Components au laboratoire commun MSR-INRIA. Nous montrons qu'un traitement unifié de ces 16 sous-groupes nous permet de raccourcir la preuve de leur propriétés élémentaires, et d'obtenir des définitions offrant une meilleure compositionnalité. Nous formalisons une correspondance entre l'étude de ces fonctorielles, et des propriété de théorie des groupes usuelles, telles que représentées par la classe des groupes qui les vérifie. Nous concluons en explorant les possibilités d'analyse de la fonctorialité de ces définitions par l'inspection de leur type, et suggérons une voie d'approche vers l'obtention d'instances d'un résultat de paramétricité en Coq.
|
9 |
The problem of tuning metaheuristics as seen from a machine learning perspectiveBirattari, Mauro 20 December 2004 (has links)
<p>A metaheuristic is a generic algorithmic template that, once properly instantiated, can be used for finding high quality solutions of combinatorial optimization problems.<p>For obtaining a fully functioning algorithm, a metaheuristic needs to be configured: typically some modules need to be instantiated and some parameters need to be tuned. For the sake of precision, we use the expression <em>parametric tuning</em> for referring to the tuning of numerical parameters, either continuous or discrete but in any case ordinal. <p>On the other hand, we use the expression <em>structural tuning</em> for referring to the problem of defining which modules should be included and, in general, to the problem of tuning parameters that are either boolean or categorical. Finally, with <em>tuning</em> we refer to the composite <em>structural and parametric tuning</em>.</p><p><p><p>Tuning metaheuristics is a very sensitive issue both in practical applications and in academic studies. Nevertheless, a precise definition of the tuning problem is missing in the literature. In this thesis, we argue that the problem of tuning a metaheuristic can be profitably described and solved as a machine learning problem.</p><p><p><p>Indeed, looking at the problem of tuning metaheuristics from a machine learning perspective, we are in the position of giving a formal statement of the tuning problem and to propose an algorithm, called F-Race, for tackling the problem itself. Moreover, always from this standpoint, we are able to highlight and discuss some catches and faults in the current research methodology in the metaheuristics field, and to propose some guidelines.</p><p><p><p>The thesis contains experimental results on the use of F-Race and some examples of practical applications. Among others, we present a feasibility study carried out by the German-based software company <em>SAP</em>, that concerned the possible use of F-Race for tuning a commercial computer program for vehicle routing and scheduling problems. Moreover, we discuss the successful use of F-Race for tuning the best performing algorithm submitted to the <em>International Timetabling Competition</em> organized in 2003 by the <em>Metaheuristics Network</em> and sponsored by <em>PATAT</em>, the international series of conferences on the <em>Practice and Theory of Automated Timetabling</em>.</p> / Doctorat en sciences appliquées / info:eu-repo/semantics/nonPublished
|
10 |
Méthodes de génération automatique de code appliquées à l’algèbre linéaire numérique dans le calcul haute performance / Automatic code generation methods applied to numerical linear algebra in high performance computingMasliah, Ian 26 September 2016 (has links)
Les architectures parallèles sont aujourd'hui présentes dans tous les systèmes informatiques, allant des smartphones aux supercalculateurs en passant par les ordinateurs de bureau. Programmer efficacement ces architectures en fonction des applications requiert un effort pluridisciplinaire portant sur les langages dédiés (Domain Specific Languages - DSL), les techniques de génération de code et d'optimisation, et les algorithmes numériques propres aux applications. Dans cette thèse, nous présentons une méthode de programmation haut niveau prenant en compte les caractéristiques des architectures hétérogènes et les propriétés existantes des matrices pour produire un solveur générique d'algèbre linéaire dense. Notre modèle de programmation supporte les transferts explicites et implicites entre un processeur (CPU) et un processeur graphique qui peut être généraliste (GPU) ou intégré (IGP). Dans la mesure où les GPU sont devenus un outil important pour le calcul haute performance, il est essentiel d'intégrer leur usage dans les plateformes de calcul. Une architecture récente telle que l'IGP requiert des connaissances supplémentaires pour pouvoir être programmée efficacement. Notre méthodologie a pour but de simplifier le développement sur ces architectures parallèles en utilisant des outils de programmation haut niveau. À titre d'exemple, nous avons développé un solveur de moindres carrés en précision mixte basé sur les équations semi-normales qui n'existait pas dans les bibliothèques actuelles. Nous avons par la suite étendu nos travaux à un modèle de programmation multi-étape ("multi-stage") pour résoudre les problèmes d'interopérabilité entre les modèles de programmation CPU et GPU. Nous utilisons cette technique pour générer automatiquement du code pour accélérateur à partir d'un code effectuant des opérations point par point ou utilisant des squelettes algorithmiques. L'approche multi-étape nous assure que le typage du code généré est valide. Nous avons ensuite montré que notre méthode est applicable à d'autres architectures et algorithmes. Les routines développées ont été intégrées dans une bibliothèque de calcul appelée NT2.Enfin, nous montrons comment la programmation haut niveau peut être appliquée à des calculs groupés et des contractions de tenseurs. Tout d'abord, nous expliquons comment concevoir un modèle de container en utilisant des techniques de programmation basées sur le C++ moderne (C++-14). Ensuite, nous avons implémenté un produit de matrices optimisé pour des matrices de petites tailles en utilisant des instructions SIMD. Pour ce faire, nous avons pris en compte les multiples problèmes liés au calcul groupé ainsi que les problèmes de localité mémoire et de vectorisation. En combinant la programmation haut niveau avec des techniques avancées de programmation parallèle, nous montrons qu'il est possible d'obtenir de meilleures performances que celles des bibliothèques numériques actuelles. / Parallelism in today's computer architectures is ubiquitous whether it be in supercomputers, workstations or on portable devices such as smartphones. Exploiting efficiently these systems for a specific application requires a multidisciplinary effort that concerns Domain Specific Languages (DSL), code generation and optimization techniques and application-specific numerical algorithms. In this PhD thesis, we present a method of high level programming that takes into account the features of heterogenous architectures and the properties of matrices to build a generic dense linear algebra solver. Our programming model supports both implicit or explicit data transfers to and from General-Purpose Graphics Processing Units (GPGPU) and Integrated Graphic Processors (IGPs). As GPUs have become an asset in high performance computing, incorporating their use in general solvers is an important issue. Recent architectures such as IGPs also require further knowledge to program them efficiently. Our methodology aims at simplifying the development on parallel architectures through the use of high level programming techniques. As an example, we developed a least-squares solver based on semi-normal equations in mixed precision that cannot be found in current libraries. This solver achieves similar performance as other mixed-precision algorithms. We extend our approach to a new multistage programming model that alleviates the interoperability problems between the CPU and GPU programming models. Our multistage approach is used to automatically generate GPU code for CPU-based element-wise expressions and parallel skeletons while allowing for type-safe program generation. We illustrate that this work can be applied to recent architectures and algorithms. The resulting code has been incorporated into a C++ library called NT2. Finally, we investigate how to apply high level programming techniques to batched computations and tensor contractions. We start by explaining how to design a simple data container using modern C++14 programming techniques. Then, we study the issues around batched computations, memory locality and code vectorization to implement a highly optimized matrix-matrix product for small sizes using SIMD instructions. By combining a high level programming approach and advanced parallel programming techniques, we show that we can outperform state of the art numerical libraries.
|
Page generated in 0.1315 seconds