Spelling suggestions: "subject:"dédiée""
11 |
Approche langage au développement logiciel : application au domaine des systèmes d’informatique ubiquitaireMercadal, Julien 10 October 2011 (has links)
Face à l'augmentation de la taille et de la complexité des systèmeslogiciels, il convient de les décrire à un plus haut niveaud'abstraction (i.e., au-delà du code) avant de concrètement lesimplémenter. Toutefois, l'utilisation de ces descriptions de hautniveau dans les processus de construction et de vérification dessystèmes reste très rudimentaire, ne permettant pas de véritablementguider et faciliter le développement logiciel. Cette thèse propose une nouvelle approche pour rendre plus simple etplus sûr le développement de systèmes logiciels. Cette approche reposesur l'utilisation de langages dédiés et sur un couplage fort entre unecouche de spécification et d'architecture et une couched'implémentation. Elle consiste tout d'abord à décrire à un hautniveau d'abstraction différents aspects, à la fois fonctionnels et nonfonctionnels, d'un système dans la couche de spécification etd'architecture. Ces descriptions sont ensuite analysées et utiliséespour personnaliser la couche d'implémentation, afin de faciliter laconstruction et la vérification du système logiciel. Nous illustrons notre approche dans le domaine de l'informatiqueubiquitaire. À la suite d'une analyse complète du domaine, nous avonsconçu deux langages dédiés à l'orchestration d'objets communicants,Pantaxou et Pantagruel. / The sheer size and complexity of today's software systems posechallenges for both their programming and verification, making itcritical to raise the level of abstraction of software developmentbeyond the code. However, the use of high-level descriptions in thedevelopment process still remains rudimentary, improving and guidingthis process marginally.This thesis proposes a new approach to making software developmentsimpler and safer. This approach is based on the use ofdomain-specific languages and a tight coupling between a specificationand architecture layer, and an implementation layer. It consists ofdescribing functional and non-functional aspects of a software systemat a high level of abstraction, using the specification andarchitecture layer. These high-level descriptions are then analyzedand used to customize the implementation layer, greatly facilitatingthe programming and verification of the software system.We have validated our approach in the domain of pervasive computingsystems development. From a complete domain analysis, we haveintroduced two domain-specific languages, Pantaxou and Pantagruel,dedicated to the orchestration of networked smart devices.
|
12 |
Analyse et compilation de langages de programmation parallèle / Analysis and Compilation of Parallel Programming LanguagesSusungi, Adilla 26 November 2018 (has links)
La compilation traditionnelle est confrontée à de nombreux défis face aux besoins d'optimisations de programmes pour architectures parallèles. Un défi particulier est la conception de langages et représentations intermédiaires (RIs) appropriés.Bien que différentes RIs aient été proposées pour repousser les limites de la compilation traditionnelle, la plupart ne sont toujours pas adaptées pour appliquer des transformations de programmes pertinentes.Différentes alternatives sont donc de plus en plus exploitées, telles que l'autotuning ou la compilation interactive. Ces dernières nécessitent l'usage de langages intermédiaires fondamentalement différents, par exemple, les méta-langages pour la transformation de programmes. Dans cette thèse, centrée sur les besoins en applications numériques, nous étudions ce type de meta-langages; nous adressons particulièrement quatre questions:(i) Comment introduire une expressivité spécifique à un domaine?(ii) Comment repenser leur conception pour améliorer leur flexibilité dans la composition de transformations et la génération de plusieurs variantes de programme?(iii) Jusqu'où pouvons-nous introduire du support pour le NUMA (Non-Uniform Memory Access)?(iv) En tant que nouvelle classe de méta-langages, comment formaliser leur sémantique? Nous répondons à ces questions au travers de la conception et la sémantique de TeML, un méta-langage pour l'optimisation d'applications tensorielles. / Traditional compilation faces numerous challenges with program optimizations for parallel architectures. A particular challenge is the design of proper intermediate languages and representations to enable the application of relevant optimization techniques.Various parallel intermediate representations and languages have been proposed.To overcome this issue, different alternatives are more and more exploitedsuch as empirical autotuning or interactive compilation. Such alernatives require fondamentally different typesof intermediates languages such as transformation meta-languages. In this thesis, we study transformation meta-languages for numerical applications: wa particularly address four questions:(i) How do we introduce domain-specific expressiveness?(ii) How do we rethink their design to enhance their flexibility in composing optimizations paths and generating multiple program variants?(iii) How far can we introduce NUMA (Non-Uniform Memory Access) awareness?(iv) As a new class of meta-languages, how do we formalize their semantics? We answer these questions through the design and semantics of TeML, a tensor optimizations meta-language.
|
13 |
A Design-Driven Methodology for the Development of Large-Scale Orchestrating Applications / Une methodologie dirigée par la conception pour le developpement d’applications d’orchestration à grande echelleKabac, Milan 26 September 2016 (has links)
Notre environnement est de plus en plus peuplé de grandes quantités d’objets intelligents. Certains surveillent des places de stationnement disponibles, d’autres analysent les conditions matérielles dans les bâtiments ou détectent des niveaux de pollution dangereux dans les villes. Les quantités massives de capteurs et d’actionneurs constituent des infrastructures de grande envergure qui s’étendent sur des terrains de stationnement entiers, des campus comprenant plusieurs bâtiments ou des champs agricoles. Le développement d’applications pour de telles infrastructures reste difficile, malgré des déploiement réussis dans un certain nombre de domaines. Une connaissance considérable des spécificités matériel / réseau de l’infrastructure de capteurs est requise de la part du développeur. Pour remédier à ce problème, des méthodologies et des outils de développement logiciel permettant de relever le niveau d’abstraction doivent être introduits pour que des développeurs non spécialisés puissent programmer les applications. Cette thèse présente une méthodologie dirigée par la conception pour le développement d’applications orchestrant des quantités massives d’objets communicants. La méthodologie est basée sur un langage de conception dédié, nommé DiaSwarm qui fournit des constructions déclaratives de haut niveau permettant aux développeurs de traiter des masses d’objets en phase de conception, avant de programmer l’application. La programmation générative est utilisée pour produire des cadres de programmation spécifiques à la conception pour guider et soutenir le développement d’applications dans ce domaine. La méthodologie intègre le traitement parallèle de grandes quantités de données collectées à partir de masses de capteurs. Nous introduisons un langage de déclarations permettant de générer des cadres de programmation basés sur le modèle de programmation MapReduce. En outre, nous étudions comment la conception peut être utilisée pour rendre explicites les ressources requises par les applications ainsi que leur utilisation. Pour faire correspondre les exigences de l’application à une infrastructure de capteurs cible, nous considérons les déclarations de conception à différents stades du cycle de vie des applications. Le passage à l’échelle de cette approche est évaluée dans une expérience qui montre comment les cadres de programmation générés s’appuyant sur le modèle de programmation MapReduce sont utilisés pour le traitement efficace de grands ensembles de données de relevés des capteurs. Nous examinons l’efficacité de l’approche proposée pour relever les principaux défis du génie logiciel dans ce domaine en mettant en oeuvre des scénarios d’application qui nous sont fournis par des partenaires industriels. Nous avons sollicité des programmeurs professionnels pour évaluer l’utilisabilité de notre approche et présenter des données quantitatives et qualitatives de l’expérience. / Our environment is increasingly populated with large amounts of smart objects. Some monitor free parking spaces, others analyze material conditions in buildings or detect unsafe pollution levels in cities. The massive amounts of sensing and actuation devices constitute large-scale infrastructures that span over entire parking lots, campuses of buildings or agricultural fields. Despite being successfully deployed in a number of domains, the development of applications for such infrastructures remains challenging. Considerable knowledge about the hardware/network specificities of the sensor infrastructure is required on the part of the developer. To address this problem, software development methodologies and tools raising the level of abstraction need to be introduced to allow non-expert developers program applications. This dissertation presents a design-driven methodology for the development of applications orchestrating massive amounts of networked objects. The methodology is based on a domain-specific design language, named DiaSwarm that provides high-level, declarative constructs allowing developers to deal with masses of objects at design time, prior to programming the application. Generative programming is used to produce design-specific programming frameworks to guide and support the development of applications in this domain. The methodology integrates the parallel processing of large-amounts of data collected from masses of sensors. We introduce specific language declarations resulting in the generation of programming frameworks based on the MapReduce programming model. We furthermore investigate how design can be used to make explicit the resources required by applications as well as their usage. To match the application requirements to a target sensor infrastructure, we consider design declarations at different stages of the application lifecycle. The scalability of this approach is evaluated in an experiment, which shows how the generated programming frameworks relying on the MapReduce programming model are used for the efficient processing of large datasets of sensor readings. We examine the effectiveness of the proposed approach in dealing with key software engineering challenges in this domain by implementing application scenarios provided to us by industrial partners. We solicited professional programmers to evaluate the usability of our approach and present quantitative and qualitative data from the experiment.
|
14 |
Langages dédiés au développement de services de communicationsPalix, Nicolas 17 September 2008 (has links) (PDF)
Les services de téléphonie IP automatisent le traitement des stimuli de communication en utilisant des ressources réseaux. Cependant, l'ajout de services rend vulnérable le système de téléphonie car certaines propriétés de fonctionnement des services déployés ne sont pas garanties. Aucune solution de développement de services ne permet de simultanément garantir des propriétés de fonctionnement et d'exploiter des ressources réseaux.<br />Cette thèse propose une approche fondée sur le concept des langages dédiés pour développer des services de communications. Deux nouveaux langages dédiés au domaine des communications ont été développés : SPL et Pantaxou. Le premier sert à router des messages de signalisation tandis que le second, plus généraliste, permet la coordination d'entités communicantes.<br />Dans cette thèse, nous démontrons, grâce à SPL et Pantaxou, que les services de communications peuvent être développés avec un langage de programmation expressif tout en préservant des propriétés critiques du domaine.
|
15 |
Codèle : Une Approche de Composition de Modèles pour la Construction de Systèmes à Grande ÉchelleNguyen, Thi Thanh Tam 22 December 2008 (has links) (PDF)
Depuis "toujours", en Génie Logiciel comme dans toutes les ingénieries, afin réduire la complexité et pour améliorer la réutilisation, le produit à construire est divisé en parties construites indépendamment et ensuite assemblées. L'approche récente de l'Ingénierie Dirigée par les Modèles (IDM, ou MDE pour Model-Driven Engineering), fait de même, en proposant "simplement" que les parties à construire et à assembler soient des modèles et non pas des programmes. C'est ainsi que le problème de la composition de modèles est devenu un thème important de l'IDM, et le sujet de cette thèse. En effet, un système logiciel réel est bien trop complexe pour pouvoir être décrit par un seul modèle. De nombreux modèles devront être créés pour le spécifier, soit à divers niveaux d'abstraction, soit selon divers points de vue, soit encore selon des domaines fonctionnels differents et complémentaires. Dans ce travail, nous partons de l'hypothèse que de tels domaines métiers existent. Un domaine est un champ d'expertise avec 1) les savoir-faire et les connaissances capturés et formalisés sous la forme d'un langage de modélisation dédié au domaine (un Domain-Specific Modeling Language (DSML)), et 2) des outils et des environnements supportant le développement d'applications dans ce domaine. Une application, dans un domaine, est décrite par un modèle (conforme au métamodèle du domaine). Dans ce travail, nous faisons aussi l'hypothèse que ces domaines sont exécutables ; les modèles du domaine sont exécutés par une machine virtuelle du domaine. En IDM, comme dans les autres approches du Génie Logiciel, la réutilisation impose que le processus d'assemblage des parties puisse se faire sans avoir à modifier celles-ci, ni bien sur l'environnement qui les a produit ou qui les exécute. Appliqué à notre contexte, cela signifie qu'il faut être capable de composer des modèles sans les modifier et sans modifier ni l'éditeur ni la machine virtuelle du domaine dont ils sont issus. C'est le problème que nous abordons dans notre travail. Nous montrons que pour atteindre cet objectif, il faut d'abord composer les domaines c'est à dire composer leurs métamodèles et leurs machines virtuelles, puis les modèles. Nous montrons dans ce travail comment ces compositions peuvent être réalisées sans modifier les éléments compos és, en utilisant des relations dites horizontales entre les métamodèles, et des liens entre les modèles. Cette approche est validée d'abord par la réalisation d'un certain nombre de domaines composites, et par de nombreuses compositions de modèles opérationnelles. Une partie importante du travail a consisté à définir Codèle, un langage de composition de modèles et de métamodèles, et à réaliser l'environnement d'assistance correspondant. Codèle assiste les ingénieurs pour composer de façon systématique les domaines, et rend automatique ou semi-automatique la composition de tous modèles provenant de ces domaines. Nous présentons l'outil Codèle et nous évaluons son usage dans divers projets.
|
16 |
Approches langages pour la conception et la mise en oeuvre de programmesFradet, Pascal 10 November 2000 (has links) (PDF)
Par "approche langage" on entend désigner une approche qui s'exprime, soit dans un langage de programmation, soit par un langage de programmation.<br />Les approches qui s'expriment dans le langage ne font appel à aucun formalisme éloigné (e.g. sémantique). Le langage de programmation est l'unique cadre de travail pour exprimer le problème, le résoudre et appliquer la solution. Nous montrons :<br /><br />- comment la compilation des langages fonctionnels peut s'exprimer dans le langage lui-même par transformation de programme. Ce cadre unifié permet de décrire, prouver, comparer et classifier la plupart des mises en œuvre de langages fonctionnels,<br /><br />- deux optimisations de l'implémentation des langages fonctionnels (une analyse de globalisation et un GC étendu) qui reposent sur la syntaxe et le type des expressions.<br /><br /><br /> Pour les approches qui s'expriment par un langage de programmation, il s'agit de prévenir le problème ou d'assurer une propriété via l'utilisation d'un langage (ou d'une discipline de programmation). Nous illustrons ce style d'approche par trois exemples :<br /><br /><br />- les types graphes qui permettent de définir et vérifier le partage des structures de données à pointeurs,<br /><br />- un langage dédié au parallélisme qui garantit une analyse de coût précise et un choix automatique de la meilleure distribution,<br /><br />- un style de programmation par aspects qui permet d'imposer automatiquement des propriétés aux programmes.
|
17 |
Développement de composants Fractal adaptatifs : un langage dédié à l'aspect d'adaptationDavid, Pierre-Charles 01 July 2005 (has links) (PDF)
Les contextes toujours plus variés et dynamiques dans lesquels les logiciels actuels s'exécutent leurs imposent de s'adapter de façon autonome à ces changements. L'objectif de cette thèse est de faciliter le développement de telles applications adaptatives, en considérant l'adaptation comme un aspect qui doit être développé séparément du reste de l'application a fin de pouvoir y être intégré et modifié dynamiquement. Pour cela nous proposons Safran, une extension du modèle de composants Fractal permettant d'associer dynamiquement des politiques d'adaptation aux composants d'une application. Ces politiques sont programmées dans un langage dédié sous la forme de règles réactives. Leur exécution repose d'une part sur WildCAT, un système permettant de détecter les évolutions du contexte d'exécution (quand adapter ?), et d'autre part sur FScript, un langage dédié pour la reconfiguration dynamique consistante de composants Fractal (comment adapter ?).
|
18 |
An Energy-Efficient Reservation Framework for Large-Scale Distributed Systems / Un environnement de réservation efficace en énergie pour les systèmes distribués à grande échelleOrgerie, Anne-Cécile 27 September 2011 (has links)
Depuis quelques années, économiser l'énergie est devenu un enjeu majeur dans les technologies de l'information et de la communication (TIC). Celles-ci représentent en effet 2% des émissions de CO2 de la planète, soit autant que l'aviation. Les systèmes distribués (grilles, clouds, réseaux haute performance) constituent de gros consommateurs d'électricité. En effet, pour des besoins de haute disponibilité, leurs ressources sont allumées en permanence et notamment lorsqu'elles ne sont pas utilisées. Les systèmes de réservation garantissent qualité de service et respect des contraintes de l'utilisateur. Ils permettent également une gestion plus fine des ressources. Pour limiter la consommation électrique des systèmes distribués et des réseaux dédiés, nous avons proposé un système de réservation de ressources efficace en énergie. Ce système de réservation, appelé ERIDIS, a été adapté à trois infrastructures distribuées différentes: les centres de calcul et les grilles, les environnements de cloud et les réseaux filaires dédiés. Dans les trois cas, des validations ont été menées et elles ont montré que des économies d'énergie significatives pouvaient être réalisées en utilisant ERIDIS dans les systèmes distribués actuels et futurs. / Over the past few years, the energy consumption of Information and Communication Technologies (ICT) has become a major issue. Nowadays, ICT accounts for 2% of the global CO2 emissions, an amount similar to that produced by the aviation industry. Large-scale distributed systems (e.g. Grids, Clouds and high-performance networks) are often heavy electricity consumers because -- for high-availability requirements -- their resources are always powered on even when they are not in use. Reservation-based systems guarantee quality of service, allow for respect of user constraints and enable fine-grained resource management. For these reasons, we propose an energy-efficient reservation framework to reduce the electric consumption of distributed systems and dedicated networks. The framework, called ERIDIS, is adapted to three different systems: data centers and grids, cloud environments and dedicated wired networks. By validating each derived infrastructure, we show that significant amounts of energy can be saved using ERIDIS in current and future large-scale distributed systems.
|
19 |
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.
|
20 |
Approche langage au développement logiciel : application au domaine des systèmes d'informatique ubiquitaireMercadal, Julien 10 October 2011 (has links) (PDF)
Face à l'augmentation de la taille et de la complexité des systèmes logiciels, il convient de les décrire à un plus haut niveau d'abstraction (\ie au-delà du code) avant de concrètement les implémenter. Toutefois, l'utilisation de ces descriptions de haut niveau dans les processus de construction et de vérification des systèmes reste très rudimentaire, ne permettant pas de véritablement guider et faciliter le développement logiciel. Cette thèse propose une nouvelle approche pour rendre plus simple et plus sûr le développement de systèmes logiciels. Cette approche repose sur l'utilisation de langages dédiés et sur un couplage fort entre une couche de spécification et d'architecture et une couche d'implémentation. Elle consiste tout d'abord à décrire à un haut niveau d'abstraction différents aspects, à la fois fonctionnels et non fonctionnels, d'un système dans la couche de spécification et d'architecture. Ces descriptions sont ensuite analysées et utilisées pour personnaliser la couche d'implémentation, afin de faciliter la construction et la vérification du système logiciel. Nous illustrons notre approche dans le domaine de l'informatique ubiquitaire. À la suite d'une analyse complète du domaine, nous avons conçu deux langages dédiés à l'orchestration d'objets communicants, Pantaxou et Pantagruel.
|
Page generated in 0.3731 seconds