31 |
Modèles et protocoles de cohérence de données, décision et optimisation à la compilation pour des architectures massivement parallèles. / Data Consistency Models and Protocols, Decision and Optimization at Compile Time for Massively Parallel ArchitecturesDahmani, Safae 14 December 2015 (has links)
Le développement des systèmes massivement parallèles de type manycores permet d'obtenir une très grande puissance de calcul à bas coût énergétique. Cependant, l'exploitation des performances de ces architectures dépend de l'efficacité de programmation des applications. Parmi les différents paradigmes de programmation existants, celui à mémoire partagée est caractérisé par une approche intuitive dans laquelle tous les acteurs disposent d'un accès à un espace d'adressage global. Ce modèle repose sur l'efficacité du système à gérer les accès aux données partagées. Le système définit les règles de gestion des synchronisations et de stockage de données qui sont prises en charge par les protocoles de cohérence. Dans le cadre de cette thèse nous avons montré qu'il n'y a pas un unique protocole adapté aux différents contextes d'application et d'exécution. Nous considérons que le choix d'un protocole adapté doit prendre en compte les caractéristiques de l'application ainsi que des objectifs donnés pour une exécution. Nous nous intéressons dans ces travaux de thèse au choix des protocoles de cohérence en vue d'améliorer les performances du système. Nous proposons une plate-forme de compilation pour le choix et le paramétrage d'une combinaison de protocoles de cohérence pour une même application. Cette plate- forme est constituée de plusieurs briques. La principale brique développée dans cette thèse offre un moteur d'optimisation pour la configuration des protocoles de cohérence. Le moteur d'optimisation, inspiré d'une approche évolutionniste multi-objectifs (i.e. Fast Pareto Genetic Algorithm), permet d'instancier les protocoles de cohérence affectés à une application. L'avantage de cette technique est un coût de configuration faible permettant d'adopter une granularité très fine de gestion de la cohérence, qui peut aller jusqu'à associer un protocole par accès. La prise de décision sur les protocoles adaptés à une application est orientée par le mode de performance choisi par l'utilisateur (par exemple, l'économie d'énergie). Le modèle de décision proposé est basé sur la caractérisation des accès aux données partagées selon différentes métriques (par exemple: la fréquence d'accès, les motifs d'accès à la mémoire, etc). Les travaux de thèse traitent également des techniques de gestion de données dans la mémoire sur puce. Nous proposons deux protocoles basés sur le principe de coopération entre les caches répartis du système: Un protocole de glissement des données ainsi qu'un protocole inspiré du modèle physique du masse-ressort. / Manycores architectures consist of hundreds to thousands of embedded cores, distributed memories and a dedicated network on a single chip. In this context, and because of the scale of the processor, providing a shared memory system has to rely on efficient hardware and software mechanisms and data consistency protocols. Numerous works explored consistency mechanisms designed for highly parallel architectures. They lead to the conclusion that there won't exist one protocol that fits to all applications and hardware contexts. In order to deal with consistency issues for this kind of architectures, we propose in this work a multi-protocol compilation toolchain, in which shared data of the application can be managed by different protocols. Protocols are chosen and configured at compile time, following the application behaviour and the targeted architecture specifications. The application behaviour is characterized with a static analysis process that helps to guide the protocols assignment to each data access. The platform offers a protocol library where each protocol is characterized by one or more parameters. The range of possible values of each parameter depends on some constraints mainly related to the targeted platform. The protocols configuration relies on a genetic-based engine that allows to instantiate each protocol with appropriate parameters values according to multiple performance objectives. In order to evaluate the quality of each proposed solution, we use different evaluation models. We first use a traffic analytical model which gives some NoC communication statistics but no timing information. Therefore, we propose two cycle- based evaluation models that provide more accurate performance metrics while taking into account contention effect due to the consistency protocols communications.We also propose a cooperative cache consistency protocol improving the cache miss rate by sliding data to less stressed neighbours. An extension of this protocol is proposed in order to dynamically define the sliding radius assigned to each data migration. This extension is based on the mass-spring physical model. Experimental validation of different contributions uses the sliding based protocols versus a four-state directory-based protocol.
|
32 |
"Joindre le chief avecques les membres". Remembrer et compiler l'histoire de Charlemagne dans la deuxième moitié du XVe siècle / « Joindre le chief avecques les membres ». Remembering and Compiling Charlemagne’s Story in the Second Half of the Fifteenth CenturyCheynet, Magali 15 December 2015 (has links)
Dans la deuxième moitié du XVe siècle, les Croniques et conquestes de Charlemaine de David Aubert, l’Histoire de Charlemagne de Jean Bagnyon et l’anonyme Cronique associee ont cherché à rassembler et compiler les récits associés à Charlemagne. Composées dans des milieux différents à un moment où tant la réécriture en prose que le personnage de l’empereur étaient en vogue, ces compilations ont recyclé des chansons de geste et des chroniques des siècles précédents pour (re)constituer une histoire cohérente du personnage. Leur résultat est tantôt une biographie princière, tantôt un fragment cyclique qui s’arrête à la mort de l’empereur. La prose donne une forme nouvelle à ces récits inédits par leur organisation et leur extension, mais banals par leur matériau, recyclé de compilation en compilation. Par l’étude du contexte historique, et surtout la comparaison des versions proposées, dans leur récit, leurs articulations et leur présentation, nous souhaitons montrer comment la compilation est le reflet d’une lecture critique et organisée propre aux nouvelles habitudes de la fin du Moyen Âge. Le remaniement oriente sa propre lecture en fonction d’un public familier de la tradition littéraire : les morceaux de bravoure sont réécrits, comme l’épisode de Roncevaux, d’autres sont triés et oubliés en fonction du projet propre à chacune des œuvres. La compilation oscille entre la reconnaissance des textes et la déprise introduite par le nouvel ensemble. Au cœur de notre questionnement se trouve la double dynamique de fixation et de malléabilité de la mémoire, érigée au Moyen Âge comme modalité de l’activité littéraire. Nous proposons en annexe la transcription de la Cronique associee (ms Paris, Arsenal 3324) pour rendre ce texte plus facilement accessible. / In the second half of the fifteenth century, David Aubert’s Croniques et conquestes de Charlemaine, Jean Bagnyon’s Histoire de Charlemagne and the anonymous Cronique associee tried to collect and compile the stories linked to Charlemagne. Composed in various circles, when both rewriting in prose and Charlemagne himself were popular, these compilations recycled epic songs and chronicles written in the previous centuries to piece together a coherent story of this character. What results is either a princely biography or a cyclic fragment that is interrupted when the emperor dies. The prose form revives these stories whose structure and scope were novel but whose material had become trite after being compiled again and again. By studying the historical context, and especially by comparing the composition, narrative structure and presentation of different versions, I wish to show how the compilation reflects a critical and organized reading which epitomizes the new practices of the late Middle Ages. The rewriting process bears its own guidelines, depending on a reading public who is familiar with literary tradition: the purple patches, such as the Roncesvalles episode, are rewritten, while other passages are sorted away or forgotten, in keeping with the objective of each specific work. Through compilation, texts are either recognized or abandoned, blended within the new unit. At the heart of my investigation is the twofold dynamic of the fixation and malleability of memory, fashioned in the Middle Ages as a modality of literary activity. A transcript of the Cronique associee (ms Arsenal 3324) is appended to the dissertation in order to make this text more readily accessible.
|
33 |
Vérification des résultats de l'inférence de types du langage OCaml / Checking type inference results of the OCaml languageCouderc, Pierrick 23 October 2018 (has links)
OCaml est un langage fonctionnel statiquement typé, qui génère après inférence de types un arbre de syntaxe abstraite dans lequel chacun des noeuds est annoté avec un ensemble d’informations issues de cette inférence. Ces informations, en particulier les types inférés, constituent une preuve de typage de l’expression annotée.Ce manuscrit de thèse s’intéresse à la vérification de ces arbres annotés en les considérant comme des preuves de typages du programme, et décrit un ensemble de règles permettant d’en vérifier la cohérence. La formalisation de ces règles de vérification de preuves de types peut être vue comme une représensation du système de types du langage étudié.Cette thèse présente plusieurs aspects de la vérification d’arbres de syntaxe annotés. Le premier cas étudié est la formalisation d’un dérivé de MiniML où toutes les expressions sont annotées de manière théoriquement parfaite, et montre qu’il est possible d’écrire des règles de vérification de manière algorithmique, rendant directe la preuve de correction vis-à-vis de la spécification. La seconde partie s’intéresse à la formalisation de règles de vérification pour un sous-ensemble du premier langage intermédiaire d’OCaml, le TypedTree, accompagné d’un vérificateur implémentant ces règles. Ces règles constituent alors une représentation du système de types d’OCaml, document jusqu’alors inexistant, au mieux disséminé dans diverses publications. / OCaml is a statically typed programming language that generates typed annotated abstract syntax trees after type inference. Each of their nodes contains information derived from the inference like the inferred type and the environment used to find this information. These annotated trees can then be seen as typing proofs of the program.In this thesis, we introduce a consistency checking of type-annotated trees, considering them as typing proof, and we describe a set of rules that defines the consistency property.Such consistency checking rules can then be seen as a formalized representation of the type system, since consistency ensures the typing invariants of the language.This thesis introduces multiple aspects of checking type-annotated trees. First of all, it considers a simplified and ideal version of MiniML and formalizes a set of rules to check consistency. In this formalism, we consider ideally type-annotated trees, which might not be the case for OCaml typed trees. Such type checking rules are presented in an algorithmic form, reducing as much as possible the gap from formalism to implementation. As such, they ease the correction proof between the implementation of the type checker and the specification of the type system. The second part of this thesis is dedicated to the formalization of a set of rules for a subset of the OCaml annotated trees: the TypedTree. The formalism described in these chapters is implemented as a type checker working on large subset of the language, leaving the formalization of some aspects for a further work. These rules constitute a formalized representation of the OCaml type system in a single document.
|
34 |
Protecting Functional Programs From Low-Level AttackersLarmuseau, Adriaan January 2016 (has links)
Software systems are growing ever larger. Early software systems were singular units developed by small teams of programmers writing in the same programming language. Modern software systems, on the other hand, consist of numerous interoperating components written by different teams and in different programming languages. While this more modular and diversified approach to software development has enabled us to build ever larger and more complex software systems, it has, however, made it harder to ensure the reliability and security of software systems. In this thesis we study and remedy the security flaws that arise when attempting to resolve the difference in abstractions between components written in high-level functional programming languages and components written in imperative low-level programming languages. High-level functional programming languages, treat computation as the evaluation of mathematical functions. Low-level imperative programming languages, on the contrary, provide programmers with features that enable them to directly interact with the underlying hardware. While these features help programmers write more efficient software, they also make it easy to write malware through techniques such as buffer overflows and return oriented programming. Concretely, we develop new run-time approaches for protecting components written in functional programming languages from malicious components written in low-level programming languages by making using of an emerging memory isolation mechanism.This memory isolation mechanism is called the Protected Module Architecture (PMA). Informally, PMA isolates the code and data that reside within a certain area of memory by restricting access to that area based on the location of the program counter. We develop these run-time protection techniques that make use of PMA for three important areas where components written in functional programming languages are threatened by malicious low-level components: foreign function interfaces, abstract machines and compilation. In everyone of these three areas, we formally prove that our run-time protection techniques are indeed secure. In addtion to that we also provide implementations of our ideas through a fully functional compiler and a well-performing abstract machine.
|
35 |
Compilation techniques for high-performance embedded systems with multiple processorsFranke, Bjorn January 2004 (has links)
Despite the progress made in developing more advanced compilers for embedded systems, programming of embedded high-performance computing systems based on Digital Signal Processors (DSPs) is still a highly skilled manual task. This is true for single-processor systems, and even more for embedded systems based on multiple DSPs. Compilers often fail to optimise existing DSP codes written in C due to the employed programming style. Parallelisation is hampered by the complex multiple address space memory architecture, which can be found in most commercial multi-DSP configurations. This thesis develops an integrated optimisation and parallelisation strategy that can deal with low-level C codes and produces optimised parallel code for a homogeneous multi-DSP architecture with distributed physical memory and multiple logical address spaces. In a first step, low-level programming idioms are identified and recovered. This enables the application of high-level code and data transformations well-known in the field of scientific computing. Iterative feedback-driven search for “good” transformation sequences is being investigated. A novel approach to parallelisation based on a unified data and loop transformation framework is presented and evaluated. Performance optimisation is achieved through exploitation of data locality on the one hand, and utilisation of DSP-specific architectural features such as Direct Memory Access (DMA) transfers on the other hand. The proposed methodology is evaluated against two benchmark suites (DSPstone & UTDSP) and four different high-performance DSPs, one of which is part of a commercial four processor multi-DSP board also used for evaluation. Experiments confirm the effectiveness of the program recovery techniques as enablers of high-level transformations and automatic parallelisation. Source-to-source transformations of DSP codes yield an average speedup of 2.21 across four different DSP architectures. The parallelisation scheme is – in conjunction with a set of locality optimisations – able to produce linear and even super-linear speedups on a number of relevant DSP kernels and applications.
|
36 |
Etude de la syntaxe d' Algol - Application à la compilationWerner, Georg 01 June 1964 (has links) (PDF)
.
|
37 |
Contribution à l'étude des mécanismes de traduction des langages de programmation : application au traitement des structures définies dynamiquementTrilling, Laurent 01 December 1967 (has links) (PDF)
.
|
38 |
Edition critique partielle de l'Histoire Universelle du Monde (livre 3 : "Description de l'Europe") de François de Belleforest / Partial critical edition of François de Belleforest's Histoire Universelle du Monde (book three : « Description de l'Europe »)Bissat, Edith 14 December 2012 (has links)
Cette thèse consiste en une édition critique de la troisième partie d'un livre de François de Belleforest, intitulé Histoire Universelle du Monde (première édition 1570). Surtout connu pour ses traductions diverses, Belleforest est également l'auteur de nombreux ouvrages traitant d'histoire et de géographie. L'Histoire Universelle du Monde, et plus spécifiquement la « Description de l'Europe » est un écrit particulièrement intéressant car il présage des travaux postérieurs de Belleforest, tout en apportant un éclairage sur l?esprit de son temps et ses opinions personnelles, qu'elles soient politiques ou religieuses. En outre, il permet de faire le point sur les connaissances historiques et géographiques de la Renaissance, sur les sources employées par les savants et sur les mythes fondateurs qui perdurent ou sont au contraire combattus. Enfin, ce texte qui se veut une relation neutre des événements survenus en Europe depuis l'Antiquité jusqu'au seizième siècle et une description objective des nations qui la composent est teintée d'un catholicisme militant et laisse transparaître une forme précoce de nationalisme. La thèse comporte le texte complet, amendé et annoté de la « Description de l'Europe ». Elle comprend également trois bibliographies, un index commenté des écrivains cités comme sources par l'auteur, un glossaire et une introduction. Cette dernière vise à présenter la vie et l'oeuvre de François de Belleforest, à expliquer ses visées lors de la rédaction de l'ouvrage, à éclairer le lecteur sur les particularités du style de l'auteur et les difficultés de la grammaire propre à la Renaissance, et enfin à exposer les choix qui ont présidé à la toilette du texte. / This doctoral thesis is a critical edition of the third part of a François de Belleforest's Histoire Universelle du Monde (first edition 1570). Known primarily because of his translations of various works, Belleforest also authored numerous books on topics related to history and geography. The Histoire Universelle du Monde, and specifically the "Description de l'Europe" provide a particularly interesting piece of writing, as it foretells themes found in Belleforest's later works, throws light on the spirit of the Renaissance and illustrate the author's personal political and religious beliefs. Besides, it summarizes historical and geographical knowledge from the Renaissance era, informs us about the authorities used as references by scholars and identifies founding myths that continue to cause persistent controversy. Although Belleforest's text pretends to be a neutral account of events that occurred in Europe from Antiquity to the sixteenth century and is presented as an objective description of its countries, it is in fact a display of militant Catholicism and nationalism. This thesis includes the full emended and annotated text of the "Description de l'Europe". It also contains three bibliographies, a commentated index of specific authorities quoted by Belleforest, a glossary and an introduction. The latter intends to introduce the life and works of Belleforest, and examines his intentions for having written this book. The reader will become enlightened about the characteristics of Belleforest's writing style, the Renaissance era grammatical difficulties, and the essential rules of language that governed the edits in this thesis.
|
39 |
Compilation de réseaux de Petri : modèles haut niveau et symétries de processus / Compilation of Petri nets : high-level models and process symmetriesFronc, Lukasz 28 November 2013 (has links)
Cette thèse s'intéresse à la vérification de systèmes automatisables par model-checking. La question sous-jacente autour de laquelle se construit la contribution est la recherche d'un compromis entre différents objectifs potentiellement contradictoires : la décidabilité des systèmes à vérifier, l'expressivité des formalismes de modélisation, l'efficacité de la vérification, et la certification des outils utilisés. Dans ce but, on choisit de baser la modélisation sur des réseaux de Petri annotés par des langages de programmation réels. Cela implique la semi-décidabilité de la plupart des questions puisque la responsabilité de la terminaison est remise entre les mains du modélisateur (tout comme la terminaison des programmes est de la responsabilité du programmeur). Afin d'exploiter efficacement ces annotations, on choisit ensuite une approche de compilation de modèle qui permet de générer des programmes efficaces dans le langage des annotations, qui sont alors exécutées de la manière la plus efficace. De plus, la compilation est optimisée en tirant partie des spécificités de chaque modèle et nous utilisons l'approche de model-checking explicite qui autorise cette richesse d'annotations tout en facilitant le diagnostique et en restant compatible avec la simulation (les modèles compilés peuvent servir à de la simulation efficace). Enfin, pour combattre l'explosion combinatoire, nous utilisons des techniques de réductions de symétries qui permettent de réduire les temps d'exploration et l'espace mémoire nécessaire. / This work focuses on verification of automated systems using model-checking techniques. We focus on a compromise between potentially contradictory goals: decidability of systems to be verified, expressivity of modeling formalisms, efficiency of verification, and certification of used tools. To do so, we use high level Petri nets annotated by real programming languages. This implies the semi-decidability of most of problems because termination is left to the modeler (like termination of programs is left to the programmer). To handle these models, we choose a compilation approach which produces programs in the model annotation language, this allows to execute them efficiently. Moreover, this compilation is optimizing using model peculiarities. However, this rich expressivity leads to the use of explicit model-checking which allows to have rich model annotations but also allows to easily recover errors from verification, and remains compatible with simulation (these compiled models can be used for efficient simulation). Finally, to tackle the state space explosion problem, we use reduction by symmetries techniques which allow to reduce exploration times and state spaces.
|
40 |
Le débogage de code optimisé dans le contexte des systèmes embarqués.Venturini, Hugo 28 March 2008 (has links) (PDF)
Les optimisations jouent un rôle majeur dans la compilation des programmes embarqués. Elles interviennent à tous les niveaux, et sur les différentes représentations intermédiaires. En effet, les systèmes embarqués imposent souvent de lourdes contraintes à la fois sur l'espace disponible en mémoire et sur la puissance de calcul utilisable. La structure habituelle d'un compilateur lui fait collecter les informations de débogage au début du processus de compilation, pour les ajouter au fichier binaire à la toute fin. De ce fait, si le programme est modifié par les optimisations, les informations de débogage présentes dans le fichier binaire sont en partie incorrectes. Or le débogueur s'appuie sur ces informations afin de répondre aux requêtes de l'utilisateur. Si elles ne correspondent plus à la réalité du programme, les informations données à l'utilisateur seront erronées. Ainsi la méthode classique de débogage de programme est de développer sans optimisation de compilation durant la phase de mise au point et quand le produit est prêt à être livré, le compiler avec le maximum d'optimisations. Cette méthode ne convient pas au cycle de développement dans le contexte des systèmes embarqués. Notre approche est de présenter l'exécution du programme optimisé au développeur, de manière à ce qu'il comprenne aisément le lien avec le code source, malgré les transformations appliquées par le compilateur. L'idée est de ne pas émuler l'exécution du programme non-optimisé à partir de l'exécution du programme optimisé. Le développeur de programmes embarqués a des connaissances que nous allons exploiter. À partir d'une analyse de l'état de l'art du débogage de code optimisé et des outils fournis par STMicroelectronics, nous avons cherché à développer une solution viable industriellement. Notre parti est de montrer la réalité à l'utilisateur, de faire ce que P. Zellweger et J. Hennessy ont défini comme étant du débogage non-transparent. Il offre au développeur la possibilité de comprendre l'exécution de son programme. Afin de tracer les modifications effectuées par le compilateur, nous proposons d'étiqueter chaque instruction du code source lors de la compilation. Il s'agit ensuite pour le compilateur de maintenir de manière précise les étiquettes utilisées par optimisation et de propager cette information tout au long de la compilation. Ajoutées au fichier binaire en tant qu'informations de débogage, elles sont ensuite utilisées par le débogueur afin de répondre sans erreurs aux interrogations de l'utilisateur. L'ensemble des expérimentations est fait sur le compilateur mmdspcc et l'infrastructure IDbug.
|
Page generated in 0.086 seconds