• Refine Query
  • Source
  • Publication year
  • to
  • Language
  • 147
  • 90
  • 17
  • 9
  • 9
  • 4
  • 2
  • 2
  • 2
  • 2
  • 2
  • 1
  • Tagged with
  • 308
  • 146
  • 130
  • 56
  • 44
  • 44
  • 43
  • 42
  • 42
  • 41
  • 40
  • 30
  • 28
  • 27
  • 26
  • About
  • The Global ETD Search service is a free service for researchers to find electronic theses and dissertations. This service is provided by the Networked Digital Library of Theses and Dissertations.
    Our metadata is collected from universities around the world. If you manage a university/consortium/country archive and want to be added, details can be found on the NDLTD website.
131

Algorithmique du décalage d'instructions

Huard, Guillaume 06 December 2001 (has links) (PDF)
L'évolution constante des processeurs vers des architectures proposant des capacités superscalaires, de parallélisme au niveau des instructions, de prédiction, de spéculation et la multiplication des niveaux de hiérarchie mémoire donnent de plus en plus d'importance au travail du compilateur.<br />Dans cette thèse, nous nous intéressons aux transformations du programme source destinées à l'optimisation dans la chaîne de compilation, et plus particulièrement à une transformation appelée décalage d'instructions.<br />Cette transformation sert de base au pipeline logiciel, elle a une influence sur le parallélisme au niveau des instructions et l'utilisation des registres.<br />Elle intervient également comme composante des techniques de parallélisation de boucles par ordonnancement affine.<br />Nous avons voulu mieux comprendre les perspectives offertes par le décalage d'instructions, savoir quels objectifs il permettait d'atteindre mais aussi savoir quels problèmes de décalage restaient difficiles.<br />Pour cela nous avons étudié le décalage d'instructions dans plusieurs contextes plus ou moins proches, et apporté des contributions à chacun d'entre eux.<br /><br />Dans le cadre du pipeline logiciel, nous proposons un algorithme polynomial pour déterminer le décalage le plus à même de produire un maximum de parallélisme au niveau des instructions, et une étude expérimentale de l'efficacité absolue de la technique à l'aide de l'outil logiciel que nous avons réalisé dans ce but : PASTAGA (pour Plate-forme d'Analyse Statistique et de Tests d'Algorithmes sur Graphes Aléatoires).<br />Dans le cadre de l'utilisation des registres (stage scheduling), de la parallélisation de boucle et de la localité, nous apportons des réponses aux problèmes de décalage d'instructions associés~: complexité, solutions exactes, approximations.
132

PRATIQUE DES LANGAGES FONCTIONNELS TYPES

Chailloux, Emmanuel 19 December 2003 (has links) (PDF)
PRATIQUE DES LANGAGES FONCTIONNELS TYPES Dans l'approche conception on s'intéresse à l'évolution de la compilation de ML en l'illustrant par la description de deux compilateurs : CeML un compilateur de ML vers C et OCamil un compilateur d'O'CAML vers .net. On montre ensuite les capacités d'extensions (parallèle et objet) au niveau des constructions du langage ML. Cela autorise de le choisir comme langage cible de compilation pour d'autres langages. Les capacités d'interopérer entre ML d'autres langages sont alors explorées pour plusieurs plates-formes d'exécution en conservant la sûreté du typage statique. Dans l'approche développement d'applications on s'intéresse aux outils de développement de l'édition structurée à la mise au point et à l'intégration de ces outils dans une même interface. On discute ensuite sur la formation du programmeur en montrant le cadre confortable du typage statique et l'intérêt de comprendre le modèle fonctionnel avant d'aborder le modèle objet. Le déploiement d'application est illustré par plusieurs applications embarquant un compilateur ML en tant que composant de l'application.
133

Typer la désérialisation sans sérialiser les types

Henry, Grégoire 17 June 2011 (has links) (PDF)
Le typage statique des langages de programmation garantit des propriétés de sûreté d'exécution des programmes et permet l'usage de représentations de données dénuées d'informations de types. En présence de primitives de (dé)sérialisation, ces données brutes peuvent invalider les propriétés apportées par le typage statique. Il est alors utile de pouvoir tester dynamiquement la compatibilité des données lues avec le type statique attendu. Cette thèse définit, dans le cadre des langages de programmation basés sur un système de types avec polymorphisme paramétrique et utilisant une représentation uniforme des données, une notion de compatibilité d'un graphe mémoire (désérialisé) avec un type ; cette notion s'exprime sous la forme de contraintes de types sur les nœuds du graphe mémoire. Cette formalisation permet de construire un mécanisme de résolution de contraintes par réécriture, puis un algorithme de vérification de compatibilité d'un graphe mémoire avec un type. Les propriétés de correction et de complétude de l'algorithme obtenu sont étudiées en présence de types algébriques, de données modifiables, de cycles et de valeurs fonctionnelles. Cette thèse propose également un prototype pour le compilateur OCaml.
134

Extensions syntaxiques dans un contexte LL(1)

Vidart, Jorge 28 September 1974 (has links) (PDF)
.
135

Environnements pour la compilation dirigée par les données : supports d'exécution et expérimentations

Mahéo, Yves 04 July 1995 (has links) (PDF)
La difficulté de programmation des architectures parallèles à mémoire distribuée est un obstacle à l'exploitation de leur puissance de calcul potentielle. Parmi les différentes approches proposées pour pallier à cette difficulté, celle de la compilation dirigée par les données semble prometteuse, notamment dans le domaine du calcul scientifique. Le programme source, exprimé par exemple en HPF, est un programme séquentiel impératif dans lequel il est précisé comment sont réparties les données sur les processeurs ; le compilateur dérive un code parallèle en distribuant le contrôle d'après la distribution des données. La mise en oeuvre de cette approche nécessite le développement d'environnements complets. Cette thèse présente le travail réalisé dans le cadre d'un environnement de ce type : l'environnement Pandore. Nous nous sommes intéressés à la conception et la réalisation d'un exécutif portable et efficace qui doit être associé au compilateur ainsi qu'à l'évaluation des performances des programmes générés. Après avoir situé l'approche de la compilation par distribution de données dansle contexte plus large de la programmation des machines parallèles à mémoire distribuée, nous définissons des opérations de haut niveau qui permettent la description des schémas de compilation et la prise en compte des optimisations. Deux types de machines cibles sont considérés, d'une part des machines à messages et d'autre part des machines disposant d'un mécanisme de mémoire virtuelle partagée. Les points clés de la mise en oeuvre des opérations dans le compilateur et l'exécutif sont abordés. Nous insistons plus particulièrement sur la gestion des données distribuées et sur les optimisations des communications à l'exécution. Une mise en oeuvre réalisée dans l'environnement Pandore est ensuite détaillée. L'évaluation des performances des programmes est également étudiée, dans un premier temps par une série d'expérimentations sur plusieurs applications et dans un deuxième temps par la définition d'outils de mesure et de visualisation adaptés à la compilation par distribution de données.
136

Compilation de connaissances pour la décision en ligne : application à la conduite de systèmes autonomes

Niveau, Alexandre 27 March 2012 (has links) (PDF)
La conduite de systèmes autonomes nécessite de prendre des décisions en fonction des observations et des objectifs courants : cela implique des tâches à effectuer en ligne, avec les moyens de calcul embarqués. Cependant, il s'agit généralement de tâches combinatoires, gourmandes en temps de calcul et en espace mémoire. Réaliser ces tâches intégralement en ligne dégrade la réactivité du système ; les réaliser intégralement hors ligne, en anticipant toutes les situations possibles, nuit à son embarquabilité. Les techniques de compilation de connaissances sont susceptibles d'apporter un compromis, en déportant au maximum l'effort de calcul avant la mise en situation du système. Ces techniques consistent à traduire un problème dans un certain langage, fournissant une forme compilée de ce problème, dont la résolution est facile et la taille aussi compacte que possible. L'étape de traduction peut être très longue, mais elle n'est effectuée qu'une seule fois, hors ligne. Il existe de nombreux langages-cible de compilation, notamment le langage des diagrammes de décision binaires (BDDs), qui ont été utilisés avec succès dans divers domaines de l'intelligence artificielle, tels le model-checking, la configuration ou la planification. L'objectif de la thèse était d'étudier l'application de la compilation de connaissances à la conduite de systèmes autonomes. Nous nous sommes intéressés à des problèmes réels de planification, qui impliquent souvent des variables continues ou à grand domaine énuméré (temps ou mémoire par exemple). Nous avons orienté notre travail vers la recherche et l'étude de langages-cible de compilation assez expressifs pour permettre de représenter de tels problèmes. Dans la première partie de la thèse, nous présentons divers aspects de la compilation de connaissances ainsi qu'un état de l'art de l'utilisation de la compilation dans le domaine de la planification. Dans une seconde partie, nous étendons le cadre des BDDs aux variables réelles et énumérées, définissant le langage-cible des " interval automata " (IAs). Nous établissons la carte de compilation des IAs et de certaines restrictions des IAs, c'est-à-dire leurs propriétés de compacité et leur efficacité vis-à-vis d'opérations élémentaires. Nous décrivons des méthodes de compilation en IAs pour des problèmes exprimés sous forme de réseaux de contraintes continues. Dans une troisième partie, nous définissons le langage-cible des " set-labeled diagrams " (SDs), une autre généralisation des BDDs, permettant de représenter des IAs discrétisés. Nous établissons la carte de compilation des SDs et de certaines restrictions des SDs, et décrivons une méthode de compilation de réseaux de contraintes discrets en SDs. Nous montrons expérimentalement que l'utilisation de IAs et de SDs pour la conduite de systèmes autonomes est prometteuse.
137

Étude des problèmes de <i>spilling</i> et <i>coalescing</i> liés à l'allocation de registres en tant que deux phases distinctes

Bouchez, Florent 30 April 2009 (has links) (PDF)
Le but de l'allocation de registres est d'assigner les variables d'un programme aux registres ou de les " spiller " en mémoire s'il n'y a plus de registre disponible. La mémoire est bien plus lente, il est donc préférable de minimiser le spilling. Ce problème est difficile il est étroitement lié à la colorabilité du programme. Chaitin et al. [1981] ont modélisé l'allocation de registres en le coloriage du graphe d'interférence, qu'ils ont prouvé NP-complet, il n'y a donc pas dans ce modèle de test exact qui indique s'il est nécessaire ou non de faire du spill, et si oui quoi spiller et où. Dans l'algorithme de Chaitin et al., une variable spillée est supprimée dans tout le programme, ce qui est inefficace aux endroits où suffisamment de registres sont encore disponibles. Pour palier ce problème, de nombreux auteurs ont remarqué que l'on peut couper les intervalles de vie des variables grâce à l'insertion d'instructions de copies, ce qui crée des plus petits intervalles et permet de spiller les variables sur des domaines plus réduits. La difficulté est alors de choisir les bons endroits où couper les intervalles. En pratique, on obtient de meilleurs résultats si les intervalles sont coupés en de très nom- breux points [Briggs, 1992; Appel and George, 2001], on attend alors du coalescing qu'il enlève la plupart de ces copies, mais s'il échoue, le bénéfice d'avoir un meilleur spill peut être annulé. C'est pour cette raison que Appel and George [2001] ont créé le " Coalescing Challenge ". Récemment (2004), trois équipes ont découvert que le graphe d'interférence d'un programme sous la forme Static Single Assignment (SSA) sont cordaux. Colorier le graphe devient alors facile avec un schéma d'élimination simpliciel et la communauté se demande si SSA simplifie l'allocation de registres. Nos espoirs étaient que, comme l'était le coloriage, le spilling et le coalescing deviennent plus facilement résolubles puisque nous avons à présent un test de coloriage exact. Notre premier but a alors été de mieux comprendre d'où venait la complexité de l'allocation de registres, et pourquoi le SSA semble simplifier le problème. Nous sommes revenus à la preuve originelle de Chaitin et al. [1981] pour mettre en évidence que la difficulté vient de la présence d'arcs critiques et de la possibilité d'effectuer des permutations de couleurs ou non. Nous avons étudié le problème du spill sous SSA et différentes versions du problème de coalescing : les cas généraux sont NP-complets mais nous avons trouvé un résultat polynomial pour le coalescing incrémental sous SSA. Nous nous en sommes servis pour élaborer de nouvelles heuristiques plus efficaces pour le problème du coalescing, ce qui permet l'utilisation d'un découpage agressif des intervalles de vie. Ceci nous a conduit à recommander un meilleur schéma pour l'allocation de reg- istres. Alors que les tentatives précédentes donnaient des résultats mitigés, notre coa- lescing amélioré permet de séparer proprement l'allocation de registres en deux phases indépendantes : premièrement, spiller pour réduire la pression registre, en coupant po- tentiellement de nombreuses fois ; deuxièmement, colorier les variables et appliquer le coalescing pour supprimer le plus de copies possible. Ce schéma devrait être très efficace dans un compilateur de type agressif, cepen- dant, le grand nombre de coupes et l'augmentation du temps de compilation nécessaire pour l'exécution du coalescing sont prohibitifs à l'utilisation dans un cadre de com- pilation just-in-time (JIT). Nous avons donc créé une nouvelle heuristique appelée " déplacement de permutation ", faite pour être utilisée avec un découpage selon SSA, qui puisse remplacer notre coalescing dans ce contexte.
138

Foundations for Automatic, Adaptable Compilation

January 2011 (has links)
Computational science demands extreme performance because the running time of an application often determines the size of the experiment that a scientist can reasonably compute. Unfortunately, traditional compiler technology is ill-equipped to harness the full potential of today's computing platforms, forcing scientists to spend time manually tuning their application's performance. Although improving compiler technology should alleviate this problem, two challenges obstruct this goal: hardware platforms are rapidly changing and application software is difficult to statically model and predict. To address these problems, this thesis presents two techniques that aim to improve a compiler's adaptability: automatic resource characterization and selective, dynamic optimization. Resource characterization empirically measures a system's performance-critical characteristics, which can be provided to a parameterized compiler that specializes programs accordingly. Measuring these characteristics is important, because a system's physical characteristics do not always match its observed characteristics. Consequently, resource characterization provides an empirical performance model of a system's actual behavior, which is better suited for guiding compiler optimizations than a purely theoretical model. This thesis presents techniques for determining a system's data cache and TLB capacity, line size, and associativity, as well as instruction-cache capacity. Even with a perfect architectural-model, compilers will still often generate suboptimal code because of the difficulty in statically analyzing and predicting a program's behavior. This thesis presents two techniques that enable selective, dynamic-optimization for cases in which static compilation fails to deliver adequate performance. First, intermediate-representation (IR) annotation generates a fully-optimized native binary tagged with a higher-level compiler representation of itself. The native binary benefits from static optimization and code generation, but the IR annotation allows targeted and aggressive dynamic-optimization. Second, adaptive code-selection allows a program to empirically tune its performance throughout execution by automatically identifying and favoring the best performing variant of a routine. This technique can be used for dynamically choosing between different static-compilation strategies; or, it can be used with IR annotation for performing dynamic, feedback-directed optimization.
139

Prévention de déréférencements de nul

Gélinas, Jean-Sébastien 06 1900 (has links) (PDF)
La bonne gestion des déréférencements de nul dans les langages à objets statiquement typés est un problème complexe qui est loin d'être nouveau. Plusieurs approches existent, mais aucune n'est parfaite. Les diverses solutions au déréférencement de nul se partagent trois dimensions : (1) la simplicité, (2) l'exactitude des résultats et (3) le typage statique. Présentement, à notre connaissance, aucune solution ne présente ces trois dimensions. Un des problèmes majeurs de la gestion des déréférencements de nul est la gestion des attributs, notamment lors de l'instantiation des objets. L'approche que nous présentons ici pour gérer les déréférencements de nul est une approche (1) simple et (2) exacte. Bien que notre approche présente un composant de typage statique, nous ajoutons aussi des tests dynamiques pour la compléter, ce qui fait qu'elle ne respecte pas totalement les trois dimensions. Nous introduisons aussi des analyses statiques pour détecter l'initialisation d'attributs dans les constructeurs pour ensuite, à l'aide d'optimisations, supprimer les tests dynamiques que nous avons ajoutés à la phase précédente. Pour un programme de grande taille (110.000 lignes de code), nous parvenons, avec nos analyses et nos optimisations, à supprimer 100% des tests dynamiques que nous avions introduits, tout en garantissant de façon statique qu'aucune erreur en lien avec le déréférencement de nul ne pourra se produire lors de l'exécution du programme. En conséquence, notre solution améliorée par les analyses statiques proposées permet de présenter les trois dimensions recherchées pour un sous-ensemble des programmes, ce qui fait un compromis très intéressant. ______________________________________________________________________________ MOTS-CLÉS DE L’AUTEUR : compilation, analyse statique, optimisation, types nullables, validation d'attributs, Nit
140

Reconfiguration dynamique et simulation fine modélisée au niveau de transaction dans les réseaux de capteurs sans fil hétérogènes matériellement-logiciellement

Galos, Mihai 15 October 2012 (has links) (PDF)
Cette thèse porte premièrement sur la reconfiguration dynamique et la simulation hétérogène dans les Réseaux des Capteurs sans Fil. Ces réseaux sont constitués d'une multitude de systèmes électroniques communicants par radio-fréquence, très contraints en énergie. La partie de communication radio entre ces nœuds est la plus consommatrice. C'est pourquoi la minimisation du temps effectif est désirée. On a implémenté une solution qui consiste à envoyer au nœud un fichier de reconfiguration codé utilisant un langage de programmation haut niveau (MinTax). Le nœud sera capable de compiler ce fichier et générer le code object associé à son architecture, in-situ. Grâce au caractère abstrait du MinTax, plusieurs architectures matérielles et systèmes d'exploitation sont visés. Dans un deuxième temps, ce travail de thèse est lié au simulateur de réseaux de capteurs IDEA1TLM.IDEA1TLM permet de prédire quels circuits et configurations sont les plus adéquats à une application sans fil donnée. Ce simulateur a été amélioré pour permettre la simulation rapide des systèmes électroniques matériellement différents dans le même réseau ainsi que le logiciel présent sur les noeuds. Mots clés : Reconfiguration dynamique, Compilation in-situ, MinTax, Hétérogénéité, IDEA1TLM.

Page generated in 0.1012 seconds