Abstractions Performantes Pour Cartes Graphiques

Dimension: px
Commencer à balayer dès la page:

Download "Abstractions Performantes Pour Cartes Graphiques"

Transcription

1 UNIVERSITÉ PIERRE ET MARIE CURIE ÉCOLE DOCTORALE INFORMATIQUE, TÉLÉCOMMUNICATIONS ET ÉLECTRONIQUE Abstractions Performantes Pour Cartes. Graphiques MATHIAS BOURGOIN sous la direction d Emmanuel Chailloux et de Jean-Luc Lamotte THÈSE pour obtenir le titre de Docteur en Sciences mention Informatique Emmanuel Chailloux Jean-Luc Lamotte Marco Danelutto Jocelyn Sérot Carlos Agon Joël Falcou Gaétan Hains Stéphane Vialle Directeurs Université Pierre et Marie Curie Université Pierre et Marie Curie Rapporteurs Università di Pisa Université Blaise Pascal Examinateurs Institut de Recherche et Coordination AcoustiqueMusique Université Pierre et Marie Curie Université Paris-Sud Université Paris-Est Créteil Val de Marne École Supérieure d Électricité

2 Document mis en page avec X LATEX et la police E

3 «With great power, comes great responsability.» P. Parker alias Spider-Man

4 Remerciements Je tiens tout d abord à remercier mes deux directeurs de thèse, Emmanuel et Jean-Luc, qui au cours de ma thèse ont su, parfois malgré la distance, m orienter et me guider dans mes recherches et réflexions sans m ôter l autonomie et la liberté nécessaires à mon travail de recherche. Je suis particulièrement heureux d avoir réalisé cette thèse avec eux deux, sur un sujet qui me correspondait bien et qui associait parfaitement deux aspects de l informatique souvent considérés (à tort) comme opposés. Deux aspects que j ai découverts lors de mes années de licence, mais surtout lors de mes années de master. Je tiens d ailleurs à remercier toute l équipe enseignante qui m a mené jusqu ici. Je remercie très chaleureusement Marco et Jocelyn pour avoir accepté de rapporter ma thèse et pour leurs remarques bienveillantes qui m ont permis d améliorer mon manuscrit. Je remercie évidemment aussi Carlos, Joël, Gaétan et Stéphane d avoir accepté d être membres du jury de ma thèse. J en profite d ailleurs pour remercier l équipe de l école doctorale et en particulier Christian Queinnec, son directeur, qui ont toujours été très efficaces et réactifs pour répondre à mes questions au cours de la thèse et particulièrement sur la fin. Je pense bien sûr aussi à toute l équipe de la licence et du master d informatique, mais aussi à l équipe de la licence de mécanique et à son directeur de l époque qui a su, à sa manière, m orienter vers l informatique. Je remercie à nouveau l équipe enseignante de la licence et du master d informatique, cette fois-ci pour leur aide et leur soutien lors de la découverte de l enseignement universitaire, de l autre côté du miroir. J en profite pour remercier tous les membres de l équipe APR, et en particulier Michèle Soria, que j avais rencontrés en tant qu étudiant, lors des nombreux enseignements auxquels ils participent et qui plus tard lors de mes stages et de ma thèse m ont offert un cadre de recherche chaleureux et dynamique. Je remercie aussi tout le personnel administratif et les ingénieurs chargés de la gestion de nos machines. Je remercie aussi le projet OpenGPU sans qui cette thèse n aurait sans doute pas eu lieu. Merci à tous ses acteurs, et en particulier à Silkan pour la prise de relais. Mes années d études n auraient bien évidemment pas été les mêmes sans Adrien qui m a accompagné de la licence au master et sans qui je n aurais sans doute pas fini la moitié de mes projets. Merci Adrien, pour ta présence, ton écoute et parfois ta patience avec un camarade probablement pas toujours très facile et souvent trop exigeant. Mais surtout, merci pour ta camaraderie et pour ton enthousiasme, qui ne s éteint heureusement pas, une fois passées les douves de Jussieu. Merci ensuite à Benjamin et Philippe que j ai rencontrés lors d un stage de master et que j ai retrouvés plus tard lors de ma thèse. Merci à eux pour m avoir guidé, à leur manière, dans la thèse qu ils découvraient avec un peu d avance sur moi. Je n oublie bien sûr pas les autres membres du bureau 325, Vivien, Guillaume, Étienne, Aurélien, Jérémie et les quelques stagiaires qui sont passés par là. Sans vous, QWOP, GIRP, Isaac, Jamestown et son mode farce, la thèse aurait été plus fade, mais sans moi, Carri et ses GPU l ambiance aurait été plus froide, j en suis sûr.

5 5 Je remercie aussi ceux qui ont su me faire découvrir l informatique d abord en tant que loisir et qui m ont donné envie d aller voir plus loin. Je pense en particulier aux communautés des sites PlayerAdvance et Dev-fr et en particulier à Gregory, alias Mollusk. Merci à vous, et merci à Nintendo et Sony d avoir conçu des machines qui m ont donné l envie d aller voir sous le capot. Enfin, je remercie ma famille qui m a accompagné jusqu ici et qui j en suis sûr me suivra encore à l avenir. Merci à mes parents qui m ont soutenu et qui ont su rester patients lorsqu il le fallait, mais qui m ont aussi toujours poussé à continuer. Merci à ma soeur, qui m a toujours écouté et aidé quand j en avais besoin. Merci à ma belle famille, qui a, elle aussi, su m apporter le soutien dont j avais parfois besoin. Enfin, merci à Sandrine, qui bien qu elle soit passée par là peu de temps avant, a su, à nouveau, vivre une thèse, cette fois-ci du côté de l accompagnant. Merci d avoir joué ce rôle à merveille, associant soutien moral, mais aussi soutien scientifique (merci pour les relectures et les répétitions). Merci d avoir, toi aussi, su me remotiver quand par moment c était difficile. Bien sûr, je remercie tous ceux qui m ont aidé de près ou de loin, qui m ont accompagné, d une manière ou d une autre. Tous ceux qui un jour ont permis que cette thèse soit un moment plus agréable ou qui ont su m apporter leur aide quand j en avais besoin, souvent sans même le savoir.

6 Table des matières Table des matières 6 Table des figures 9 Liste des tableaux 10 Avant-propos 13 1 Introduction 15 I Abstraction et performances I.1 Langages de programmation I.2 Compilation et interprétation I.3 Typage I.4 Programmation parallèle et hautes performances I.5 Bibliothèques de programmation I.6 Conclusion II Cartes graphiques et accélérateurs de calcul II.1 Historique II.2 Processeurs généralistes et accélérateurs de calcul II.3 Outils pour la programmation GPGPU II.4 Applications GPGPU II.5 Outils, bibliothèques et langages III Objectifs et contributions de cette thèse IV Plan de la thèse Langages pour la programmation GPGPU : sémantique opérationnelle et typage 39 I Un langage pour le programme hôte : SPML I.1 Grammaire de SPML I.2 Quelles propriétés pour SPML? I.3 Sémantique opérationnelle de SPML I.4 Propriétés de SPML

7 TABLE DES MATIÈRES 7 II Un langage pour les noyaux de calcul II.1 Quelles propriétés pour Sarek? II.2 Grammaire de Sarek II.3 Sémantique opérationnelle de Sarek II.4 Propriétés de Sarek III Système de types III.1 Environnements et notations III.2 Typage des expressions III.3 Liaison entre SPML et Sarek IV Conclusion Programmation GPGPU : implantation avec OCaml 79 I Choix d implantation I.1 Pourquoi OCaml? I.2 Pourquoi une bibliothèque? II Présentation de la bibliothèque SPOC II.1 Unification des systèmes OpenCL et Cuda II.2 Transferts de données II.3 Exemple de programme SPOC III Noyaux de calcul III.1 Noyaux de calcul externes III.2 Un langage intégré dédié aux noyaux : Sarek III.3 Différences avec le formalisme IV Tests de performance IV.1 Petits exemples IV.2 Bibliothèques optimisées IV.3 Comparaison avec d autres langages de haut niveau IV.4 Calcul multi-gpu V Cas d utilisation : portage du programme PROP V.1 Présentation du programme étudié V.2 Portage avec SPOC V.3 Résultats et performances VI Conclusion Squelettes et composition 117 I Squelettes parallèles pour la programmation GPGPU II Implantation avec des noyaux externes III Implantation avec Sarek IV Exemple d utilisation V Tests de performance VI Conclusion Conclusion générale et perspectives 131 I Conclusion générale

8 8 TABLE DES MATIÈRES II Perspectives II.1 Rapprocher Sarek d OCaml II.2 Squelettes et extensions II.3 Portage vers d autres langages III Perspectives offertes par l évolution du matériel et des systèmes III.1 Évolution matérielle III.2 Cuda 5.5, OpenCL 2.0 : l avenir de la programmation GPGPU IV Vers une programmation GPGPU unifiée A Sémantique opérationnelle de SPML 143 I Grammaire du cœur de SPML II Notations III Sémantique opérationnelle B Comparaison : Cuda, OpenCL et SPOC 147 I Initialisation II Détection des dispositifs compatibles III Initialisation des données IV Préparation du noyau de calcul V Allocation sur le dispositif VI Transfert de données depuis l hôte vers le GPGPU VII Exécution du noyau de calcul VIII Transfert des valeurs de retour vers l hôte IX Utilisation des résultats par l hôte Bibliographie 155 Acronymes 163 Glossaire 164

9 Table des figures 1.1 Grille modélisant l architecture mémoire des GPGPU Cœur de SPML Partie GPGPU de SPML Exemple : programme SPML Grammaire de Sarek Exemple : module Sarek Exemple : noyau de calcul en Sarek Exemple : Programme divergent qui ne termine pas Sarek : Types et environnements de typage Compatibilité des systèmes GPGPU implantés par différents constructeurs Compatibilité système et matérielle de SPOC Type OCaml de la fonction d initialisation Type OCaml d un device Type OCaml de la fonction de création de vecteurs Type OCaml des vecteurs paramétrables Exemple : déclaration d un vecteur paramétré avec OCaml et C Types OCaml des fonctions de transferts explicites Exemple : programme hôte avec transferts automatiques via OCaml et SPOC Exemple : déclaration d un noyau GPGPU avec SPOC Type OCaml de la classe générée pour chaque noyau Compilation dynamique d un noyau GPGPU externe Addition de vecteur avec Sarek Compilation statique de Sarek Compilation dynamique de Sarek Code CudaOpenCL généré depuis un noyau Sarek (fig.3.13) Mesure de performances : Bibliothèques optimisées - Multiplication de matrices Mesure de performances : Comparaison - Addition de vecteurs Mesure de performances : Comparaison - Multiplication de matrices Répartition des tâches sur systèmes multi-gpus

10 3.21 Répartition des tâches et puissance théorique sur systèmes multi-gpus Mesure de performances : PROP - Occupation mémoire cas Grand Définition OCaml de la classe skeleton Définition OCaml d un squelette Map avec un noyau de calcul externe Types OCaml : Fonctions de manipulation des squelettes Exemple : utilisation de Map avec des constructions fonctionnelles Type OCaml : Fonction de compositions Exemple : Squelettes avec Sarek Type OCaml : transformation de noyaux Sarek avec map Transformation de noyaux de calcul Sarek avec des squelettes Exemples : Puissance itérée A.1 Cœur de SPML Liste des tableaux 1.1 Caractéristiques GPU - CPU Comparaison des bandes passantes mémoire de plusieurs architectures Primitives de SPML Opérations mémoire de SPML Variables globales de Sarek dédiées à la programmation GPGPU Bibliothèque d exécution de Sarek Schéma de compilation de Sarek vers IR Extrait de la génération de code Cuda et OpenCL Mesure de performances : temps (en s) et accélérations Meusre de performances : Systèmes Multi-GPU utilisés Mesure de performances : Multi-GPU - Temps (en s) et accélérations Mesure de performances : PROP - Caractéristiques des jeux de données Mesure de performances : PROP - Cas Petit et Moyen Mesure de performances : PROP - Cas Grand Mesure de performances : Puissance itérée

11 5.1 Mesure de performances : Comparaison - architecture multicœur

12

13 Avant-propos Cette thèse porte sur l étude d abstractions performantes pour les cartes graphiques qui sont normalement utilisées pour la gestion de l affichage et le traitement 3D dans les ordinateurs. Elles sont très performantes, mais aussi très spécialisées. Récemment, l usage des cartes graphiques a été détourné pour leur permettre de réaliser des calculs généralistes, normalement effectués par le processeur central de l ordinateur (Central Processing Unit (CPU)). Cette utilisation généraliste des unités de calculs graphiques (General Purpose Graphics Processing Unit (GPGPU) en anglais) demande une programmation spécifique de très bas niveau d abstraction dont le modèle est très proche de celui imposé par le matériel et qui demande de manipuler explicitement de nombreux paramètres matériels (comme la mémoire). Elle implique en particulier de réaliser de nombreux transferts de données entre la mémoire centrale de l ordinateur (associée au processeur central) et la mémoire du GPGPU. Par ailleurs, la programmation GPGPU demande d associer deux types de programmes (i) des programmes hôtes, qui sont exécutés pas le CPU et sont responsables des transferts mémoires et de la gestion des dispositifs GPGPU (qu on appellera simplement GPGPU par la suite), et (ii) des noyaux de calcul, qui sont des programmes assez courts exécutés par le GPGPU. La programmation GPGPU s appuie aujourd hui sur deux principaux systèmes, Compute Unified Device Architecture (Cuda) et Open Compute Language (OpenCL) qui sont très proches, mais incompatibles. Par ailleurs, certains dispositifs matériels ne sont exploitables qu avec l un de ces deux systèmes, ce qui rend difficile le développement d applications portables. Ceci rend l exploitation de l ensemble des performances des ordinateurs d autant plus complexe que ceux-ci sont de plus en plus hétérogènes, associant plusieurs GPGPU, parfois différents les uns des autres. Dans ce contexte, cette thèse s est attachée au développement d outils de haut niveau d abstraction pour la programmation GPGPU afin de la simplifier, tout en maintenant le haut niveau de performance qu elle peut offrir. Plus précisément, nos principaux objectifs étaient de libérer le programmeur de la gestion mémoire imposée par la programmation GPGPU, mais aussi d offrir une solution portable et hétérogène. Pour cela, nous avons tout d abord conçu un langage de programmation dédié à la programmation GPGPU et spécifié son comportement à travers sa sémantique opérationnelle. Par la suite, nous l avons implanté en utilisant le langage de programmation de haut niveau OCaml. Ainsi, la partie hôte correspond à une bibliothèque spécifique pour OCaml, SPOC, qui offre différentes propriétés : 13

14 14 AVANT PROPOS elle unifie les deux systèmes Cuda et OpenCL pour permettre le développement d applications portables, mais aussi hétérogènes, car elle permet de manipuler indifféremment et conjointement tout type de dispositifs GPGPU compatible avec au moins l un des deux systèmes. elle offre des transferts automatiques en associant à certains ensembles de données une information sur leur position dans le système (en mémoire CPU ou en mémoire GPU). Avec cette information, elle réalise automatiquement les transferts dès que les données sont utilisées à une nouvelle position. elle permet de manipuler des noyaux de calcul GPGPU externes, décrits avec les outils des systèmes Cuda ou OpenCL, et ainsi de profiter de bibliothèques de calculs optimisés. Pour accompagner cette bibliothèque, nous avons développé un langage intégré à OCaml, dédié à la description des noyaux de calcul, Sarek. Celui-ci se base sur les langages dédiés aux noyaux de calcul fournis avec les systèmes Cuda et OpenCL, mais avec une syntaxe proche de celle d OCaml et un système de type fort, associé à une vérification statique des types. De plus, ce langage est compilé, à la volée, en noyaux de calcul Cuda ou OpenCL en fonction du type de dispositif chargé d exécuter le noyau. Ainsi, le langage Sarek accroît la dimension portable et hétérogène de notre solution. Bien sûr, nous avons réalisé différents tests de notre solution. D abord, avec de petits exemples, pour vérifier que le niveau de performance était conservé, mais aussi pour vérifier qu elle offre effectivement portabilité et hétérogénéité. Par la suite, nous avons réalisé un portage d une application numérique complexe depuis Fortran et Cuda vers OCaml avec nos outils. Ainsi, nous avons vérifié que l application de nos outils permet effectivement d atteindre un très haut niveau de performance. SPOC et Sarek peuvent donc être utilisés à la fois par des programmeurs OCaml qui souhaitent utiliser des dispositifs GPGPU, mais aussi par la communauté du calcul numérique et plus particulièrement pour du calcul haute-performance. Afin d offrir davantage d abstractions, mais aussi de permettre d offrir des optimisations spécifiques, nous avons développé ces outils en nous attachant à les rendre facilement extensibles. Ainsi, la dernière partie de cette thèse décrit le développement de quelques squelettes de programmation pour la programmation GPGPU. Ces squelettes sont des constructions algorithmiques paramétrables qui permettent d automatiser certains calculs. Là encore, différents tests ont confirmé le haut niveau de performance atteint par notre implantation. Ce travail a été réalisé au Laboratoire d Informatique de Paris 6 (LIP6) de l Université Pierre et Marie Curie (UPMC, Paris), sous la direction des Pr. Emmanuel Chailloux et Jean-Luc Lamotte. Une partie de ces recherches a été réalisée dans le cadre du projet OpenGPU 1 du pôle Systematic. 1.

15 CHAPITRE 1 Introduction «We have in our possession a chip that could revolutionize medicine as we know it, by performing 100 billion operations a second (... ) and then we thought : hay! let s use it for games!» Publicité pour 3dfx Sommaire I Abstraction et performances I.1 Langages de programmation I.2 Compilation et interprétation I.3 Typage I.4 Programmation parallèle et hautes performances I.5 Bibliothèques de programmation I.6 Conclusion II Cartes graphiques et accélérateurs de calcul II.1 Historique II.2 Processeurs généralistes et accélérateurs de calcul II.3 Outils pour la programmation GPGPU II.4 Applications GPGPU II.5 Outils, bibliothèques et langages III Objectifs et contributions de cette thèse IV Plan de la thèse

16 16 CHAPITRE 1. INTRODUCTION

17 I. ABSTRACTION ET PERFORMANCES 17 CETTE THÈSE a pour objet l étude d abstractions performantes pour les cartes graphiques. Avant de présenter la programmation des cartes graphiques il est donc important de discuter des trois notions suivantes : abstractions, performances ainsi que programmation dont découlent les deux premières. I Abstraction et performances I.1 Langages de programmation Les programmes informatiques sont conçus pour s exécuter sur des ordinateurs dont l architecture est complexe. Ces machines ont une unité centrale de calcul (Central Processing Unit - CPU, en anglais) capable d exécuter du code spécifique, lié à leur architecture. Ce langage machine composé de 0 et de 1 représente une suite d instructions et de données à traiter. Il est très éloigné des langages naturels que manipulent les humains, et donc les programmeurs. Afin de simplifier la programmation, des langages de programmation ont été développés. Ces langages ont pour principal objectif d être manipulables par des humains pour décrire les instructions et les données composant un programme et d être exploitables sur des architectures matérielles spécifiques. Un programme exécutable sur une architecture ne sera pas obligatoirement exécutable sur une autre architecture. Le langage natif des machines peut-être considéré comme la méthode la plus concrète de programmer, il est dédié à un type de CPU. Les langages de programmation permettant d offrir davantage d abstractions, c est-à-dire d offrir des constructions plus éloignées des aspects matériels de l ordinateur et de libérer le programmeur de la gestion explicite de ces mêmes propriétés matérielles des ordinateurs, ils sont indépendants du type de CPU. Ils se décomposent en plusieurs catégories qui apportent différents niveaux d abstractions sur le matériel, les instructions des programmes ou sur les données. On s attachera ici au modèle de programmation séquentiel dans lequel un programme exécute l ensemble des instructions qui le composent dans un ordre prédéfini par la structure du programme. La majorité des langages de programmation de ce modèle se répartit en quatre grandes familles : les langages (i)impératifs, (ii)fonctionnels, (iii)orientés objet ou (iv)logiques. Les langages impératifs sont structurés sous forme de séquences d instructions manipulant la mémoire de l ordinateur. C est le modèle le plus proche du fonctionnement des machines. Il s appuie sur la modification (mutation) d états mémoire. Il implique donc souvent de manipuler explicitement les composants de la machine, en particulier la mémoire. Ce paradigme apporte peu d abstractions sur les opérations et la mémoire. Fortran, Pascal ou C sont des exemples de langages impératifs. Les langages fonctionnels permettent d abstraire le modèle d exécution de la machine en manipulant des fonctions plus proches du modèle mathématique. La mémoire n est plus modifiée par les instructions : les programmes sont constitués de fonctions qui via des valeurs d entrée, produisent de nouvelles valeurs en sortie, rejetant ou limitant la mutation des données. Le plus souvent, ils permettent d abstraire une partie des ressources matérielles de la machine, en particulier la mémoire qui y est gérée automatiquement. On citera les langages de la famille Lisp (Scheme, Common Lisp, Le Lisp,... ), ceux de la famille ML (OCaml, SML, F#,... ) et la famille des langages dits «paresseux» ou à évaluation retardée comme LazyML, Miranda ou Haskell comme représentants des langages fonctionnels.

18 18 CHAPITRE 1. INTRODUCTION Les langages orientés objet manipulent des objets, c est-à-dire des ensembles de données et de méthodes s appliquant sur ces données. La combinaison de différents objets permet de structurer le programme. Les langages objets à classe, comme Java, s appuient sur la notion d héritage entre classes pour permettre de spécialiser des parties du code. Les méthodes sont le plus souvent décrites en utilisant les paradigmes impératifs ou fonctionnels. SmallTalk, Java, C++, C#, JavaScript ou Python font partie de la famille des langages orientés objet. La programmation logique définit les programmes comme un ensemble de règles logiques. Ces règles sont ensuite automatiquement appliquées à un ensemble de faits élémentaires pour calculer la sortie du programme. Elle dépend de systèmes automatiques d application des règles. Ces systèmes simplifient la tâche du programmeur, mais peuvent s avérer coûteux en temps de calcul et surtout ne permettent pas de prédire facilement le comportement du programme au cours de son exécution. Le principal langage logique est Prolog. Les langages multiparadigmes permettent d accroître l abstraction en autorisant le programmeur à choisir son modèle de programmation et à en combiner plusieurs au sein d un même programme. Ils offrent souvent les abstractions sur la mémoire des langages fonctionnels tout en autorisant une programmation proche du modèle de la machine. On citera ici les langages OCaml, Python, Scala, Objective C, C++ et Java même si la plupart des langages modernes peuvent intégrer cette famille. I.2 Compilation et interprétation Les programmes écrits avec des langages de programmation sont naturellement incompréhensibles par un ordinateur. Afin de permettre l exécution d un programme par une machine, il est nécessaire d opérer une étape de traduction du langage de programmation vers le langage machine, ou vers des actions décrites en langage machine. Cette traduction peut principalement s opérer de deux manières : par compilation ou interprétation. La compilation consiste à utiliser un outil, le compilateur, capable de traduire l intégralité du programme en langage machine, avant l exécution. L interprétation consiste à utiliser un interprète pour lire le programme en exécutant, directement, au cours de la lecture, les opérations du programme. La méthode choisie peut influer sur la portabilité du programme, cest-à-dire sa capacité à s exécuter sur plusieurs machines d architectures différentes. Afin d exécuter un programme compilé sur plusieurs architectures, il est nécessaire d avoir un ou plusieurs compilateurs capables de cibler ces architectures. De la même manière, il est nécessaire de posséder un interprète pour chaque architecture dans le cas des langages interprétés. En général, l écriture d un interprète est plus simple que celle d un compilateur. Les langages interprétés sont considérés comme plus portables que les langages compilés. En contrepartie, l interprétation entraîne une charge supplémentaire pour l ordinateur et ralentit l exécution du programme. Les programmes compilés seront donc considérés comme plus performants, c est-à-dire qu ils exécuteront un même programme plus rapidement. De plus, la phase de compilation permet d analyser l ensemble du code, pour éventuellement produire un code machine optimisé plus performant. Elle permet aussi de détecter des erreurs avant l exécution du programme. Certains langages sont plus souvent utilisés compilés comme le langage C, tandis que d autres sont plutôt interprétés comme Scheme. Il reste cependant possible de développer des interprètes pour C comme Ch[1] ou TCC[2], ainsi que des compilateurs pour Scheme comme Bigloo[3]

19 I. ABSTRACTION ET PERFORMANCES 19 ou pour Python comme Cython[4]. Les deux approches peuvent aussi être associées. Il est désormais commun de manipuler des langages de programmation compilable vers du code machine ciblant des machines abstraites. Une machine abstraite est un modèle théorique qui représente un processeur et son jeu d instructions. Une machine abstraite ne représente le plus souvent pas un processeur réel. On utilisera alors des interprètes pour exécuter le programme. Ces interprètes vont exécuter le code de la machine abstraite, en utilisant un ensemble d opérations décrites en instructions-machine du processeur réel qui exécute l interprète. On les appelle des machines virtuelles. Cette approche permet de bénéficier de la compilation pour produire un code optimisé et concis tout en profitant des machines virtuelles pour offrir plus de portabilité. Par ailleurs, les interprètes sont désormais souvent capables de compiler des parties de code vers du code natif. Ce système de compilation à la volée (en anglais, jit - just in time) permet d apporter de meilleures performances à certaines sections des programmes interprétés. L utilisation de machines virtuelles capable de compiler du code à la volée permet d obtenir des performances très proches de celles obtenues avec les langages compilés tout en offrant une grande portabilité. On citera, par exemple, Java comme langage compilé pour une machine virtuelle avec compilation JIT. I.3 Typage Afin de garantir davantage de sureté d exécution, la plupart des langages de programmation utilisent des systèmes de types. Les types permettent de faire la différence entre les données, par exemple entre un nombre entier et une chaîne de caractères, mais aussi entre les opérations, une opération sur des nombres entiers sera différente d une opération sur des caractères, et ainsi de limiter l utilisation de ces opérations. Les systèmes de types permettent donc d apporter davantage de contrôle au programmeur sur les données qu il manipule et sur les opérations sur ces données. Les langages de programmation offrent différents systèmes de types, qui varient en fonction du moment où la vérification de type est effectuée (typage statique ou dynamique), et en fonction de la précision de cette vérification (typage faible ou fort). Typage statique et dynamique. Le typage statique vérifie lors de la phase de compilation que le programme est bien typé, c est-à-dire qu il n y a pas d opération sur des valeurs d un type incompatible. Le typage dynamique, au contraire, effectue la vérification au plus tard, lors de l exécution du programme. Au moment de réaliser une opération sur des valeurs, il va s assurer que leurs types sont bien compatibles avec l opération. On considère que le typage statique offre davantage de sécurité. En effet, il permet d assurer au programmeur que son programme ne déclenchera pas à l exécution d erreurs de typage et donc qu il ne s arrêtera pas brusquement pour cette raison. Il permet aussi de s affranchir de la vérification dynamique des types qui entraîne un surcoût en temps de calcul dans l exécution du programme. En contrepartie, il est plus compliqué à mettre en œuvre dans les langages et peut refuser des programmes qui s exécuteraient correctement. Cependant, c est, la plupart du temps, un atout pour les programmeurs, car il permet de détecter, au plus tôt (avant l exécution du programme), beaucoup d erreurs autrement très difficiles à corriger. Les langages C, Java et OCaml sont des langages typés statiquement ; Scheme, Smalltalk ou Python sont des exemples de langages typés dynamiquement.

20 20 CHAPITRE 1. INTRODUCTION Typage faible et fort. Les systèmes de types sont souvent qualifiés de forts ou faibles. Un système de type fort est un système de type qui rejette toute opération sur des données incompatibles. Au contraire, un système de type faible va autoriser certaines opérations sur des types proches des types compatibles. Les systèmes de types forts associés au typage statique sont ceux qui rejetteront le plus de programmes, mais permettront de détecter le maximum d erreur. En contrepartie, un système de type dynamique plus faible permettra au programmeur de contourner les limites du typage pour écrire des instructions autrement interdites. Même avec un système de types fort, il reste possible de définir des fonctions génériques, capables de manipuler différents types de données. Différentes solutions existent pour mettre en place cette généricité comme le polymorphisme ou la surcharge. Le polymorphisme permet de définir des fonctions qui seront compatibles avec tout type de données et pourront renvoyer différents types de données. Par exemple, une fonction de création de couples pourra associer tout type de données et produire un couple, dépendant du type de ses deux paramètres. Elle pourra ainsi associer un nombre entier avec une chaîne de caractères ou bien un caractère seul avec un autre couple. La surcharge permettra par exemple en Java de définir différentes fonctions, ayant le même nom, mais prenant différents types de paramètres, et offrant un traitement différent, en fonction des paramètres. Ainsi, le compilateur, ou l interprète sélectionneront la fonction la plus adaptée en fonction des paramètres utilisés. Parmi les langages typés statiquement on retrouvera des systèmes de types faibles comme avec le langage C et des systèmes de types forts comme avec OCaml. Il en est de même pour les langages typés dynamiquement, Ruby s appuie sur un système de types fort, JavaScript sur un système de types faible. I.4 Programmation parallèle et hautes performances Afin d accélérer matériellement l exécution des programmes, il existe deux principales solutions. (i)augmenter la fréquence d exécution de l unité de calcul (le processeur) et ainsi le nombre d opérations qu il peut effectuer par secondes ou alors (ii)multiplier le nombre d unités de calcul pour permettre l exécution de plusieurs tâches en parallèle. Là où la première solution ne demande aucun travail au programmeur, la seconde demande de correctement exploiter les multiples processeurs et donc d écrire un code spécifique. L augmentation de fréquence a actuellement atteint une limite difficile à franchir (principalement pour des raisons de dissipation de chaleur) et c est donc le parallélisme qui est utilisé désormais pour augmenter les performances. Il existe plusieurs types d architectures parallèles : les systèmes à mémoire partagée et les systèmes distribués. Ces deux systèmes se programment différemment. En mémoire partagée, les différentes unités de calcul partagent un même espace mémoire. Il est nécessaire de s assurer que les différents processeurs n écrivent pas au même moment dans le même emplacement mémoire. En mémoire distribuée, chaque unité de calcul possède son propre espace mémoire. Il est nécessaire d organiser la copie des données entre les différents espaces mémoires. Chaque modèle impose d appliquer des stratégies de synchronisation et d ordonnancement des tâches particulières qui complexifient énormément l écriture des programmes. On peut observer une relation entre architectures parallèles et modèles de programmation. La programmation impérative modifie directement la mémoire et s approche davantage de la mémoire partagée. Au contraire, la programmation fonctionnelle travaille davantage par copie et partage de valeurs et s approche de ce fait des systèmes distribués. De même, on préférera associer

21 I. ABSTRACTION ET PERFORMANCES 21 différents types de calculs à une famille de langages. En particulier, on différenciera le calcul numérique, qui s attache à l approximation numérique de problèmes mathématiques, du calcul symbolique qui s attache à la manipulation d expressions mathématiques. Le premier manipule des ensembles de données de très grande taille dont la copie n est pas envisageable et préférera les langages impératifs à effet de bord, tandis que le second préférera les langages fonctionnels qui travaillent par copie. Dans le cadre de la programmation parallèle, nous distinguerons la programmation dite hauteperformance. En effet, l informatique et la programmation s attachent à de multiples secteurs et on ne programme pas de la même manière des sites internet, des jeux vidéo ou des machines-outils. La programmation haute-performance s attache à l exploitation d architectures particulières pour obtenir les plus hautes performances sur des applications de calcul numérique scientifique. Elle est souvent associée à l utilisation de supercalculateurs. Les supercalculateurs sont des systèmes complexes, souvent composés de multiples ordinateurs (des nœuds) reliés entre eux. Chaque nœud possède lui même une architecture complexe (plusieurs unités de calcul). Ils associent architecture distribuée entre les différents nœuds et partagée au sein de chaque nœud du calculateur. Dans ce cadre, il est commun de cibler une seule architecture (un seul supercalculateur) pour l écriture des programmes. Les programmeurs utilisent alors des outils très proches du langage machine pour exploiter au mieux leur architecture cible. Ce travail d optimisation, souvent réalisé à la main, par des programmeurs experts du domaine et spécialistes de l architecture cible, permet d atteindre un haut niveau de performances des supercalculateurs. Certains programmes sont compatibles avec plusieurs cibles, ceci demande un travail d optimisation supplémentaire pour chaque cible. La portabilité est donc particulièrement difficile (et coûteuse) si on veut maintenir un haut niveau de performances. La programmation haute-performance a donc tendance à s attacher principalement à l optimisation et aux performances limitant l utilisation d outils de haut niveau d abstraction. I.5 Bibliothèques de programmation I.5.a Bibliothèques Les langages de programmation sont souvent accompagnés de bibliothèques. Ces bibliothèques sont des ensembles d opérations utilisables par les programmeurs. Ces opérations permettent de simplifier la programmation ou de profiter d optimisations particulières. Les bibliothèques participent à la montée en abstraction des langages de programmation en réduisant l impact des aspects matériels sur les programmes. Elles permettent d abstraire des opérations en cachant au programmeur toute la complexité qu elles contiennent. Il existe par exemple plusieurs méthodes pour multiplier des matrices, les versions les plus performantes sont très complexes à mettre en œuvre, et nécessitent de maîtriser au plus près l architecture matérielle des ordinateurs. [5, 6] et [7] présentent par exemple des optimisations particulières destinées à accroitre les performances des multiplications de matrices sur une architecture de carte graphique particulière. Néanmoins, de nombreuses bibliothèques existent pour permettre aux programmeurs de profiter de hautes performances dans leur langage favori. On pourra aussi noter que le support des architectures parallèles peut être apporté à un langage à travers des bibliothèques. Par exemple, la bibliothèque Message Passing Interface (MPI)[8], qui existe pour de nombreux langages permet l écriture de programmes ciblant les archi-

22 22 CHAPITRE 1. INTRODUCTION tectures distribuées. De son côté, Open Multi Processing (OpenMP)[9] inclut une bibliothèque pour l écriture de programmes parallèles en mémoire partagée. I.5.b Squelettes algorithmiques Afin de décrire un algorithme complexe, il est commun d appliquer des «recettes» connues. Dans le domaine de l ingénierie logicielle, on appelle ces recettes des patrons de conception (design patterns en anglais). Ils permettent de structurer les programmes pour répondre à un problème donné. Ils peuvent être spécialisés dans la résolution d un calcul complexe ou dans l utilisation d architectures difficiles à exploiter. Pour automatiser leur utilisation et simplifier davantage la tâche des programmeurs, certains patrons ont été transformés en fonctions paramétrables, c est-à-dire des constructions algorithmiques, qui à l aide de certains paramètres pourront reproduire l ensemble du patron sélectionné. Ces constructions algorithmiques, souvent regroupées dans des bibliothèques, sont appelées des squelettes algorithmiques[10, 11, 12, 13]. Il existe deux principaux types de squelettes, les squelettes de données et les squelettes de tâches[14]. Les premiers exploitent des structures de données distribuées entre les unités de calcul pour produire du parallélisme. On pourra citer le squelette map qui à partir d un ensemble de données, applique un même calcul à chaque élément de l ensemble pour produire un nouvel ensemble. Les seconds s appuient sur les relations entre différentes tâches pour paralléliser ce qui peut l être. Par exemple, le squelette pipe associe deux tâches en utilisant le résultat de la première comme données d entrée de la seconde. Les squelettes permettent de simplifier l écriture des programmes, mais aussi de profiter de constructions optimisées pour la résolution de l algorithme qu ils implantent. I.6 Conclusion La notion d abstraction regroupe l ensemble des possibilités offertes aux programmeurs pour s affranchir des notions concrètes liées aux machines. En particulier, l utilisation de langages de programmation permet de s éloigner du langage machine très difficile à manipuler pour un être humain. L utilisation d un langage multiparadigme permet aussi au programmeur de bénéficier d un large choix de méthodes de programmation. L utilisation de compilateurs, d interprètes et de machines virtuelles libère le programmeur de la nécessité d écrire de multiples programmes pour cibler des architectures différentes. Les langages de programmation permettent aussi via les systèmes de type de structurer les données des programmes. Le typage statique vérifie par ailleurs que le programme satisfait les contraintes de type ce qui limite les erreurs. Certains langages apportent davantage d abstractions en offrant une manipulation automatique de composants de la machine, comme la mémoire. Certains offrent aussi des constructions pour simplifier l écriture des programmes et automatiser des tâches autrement plus complexes. Les bibliothèques et squelettes de programmation permettent d accroître encore le niveau d abstraction en s attachant cette fois à l automatisation des calculs et de leur organisation au sein du programme. D un autre côté, la recherche de performance s attache souvent à l optimisation des programmes pour des architectures données. La recherche des performances passe souvent par l utilisation d outils de bas niveau d abstraction, et il est souvent considéré que l utilisation de langages de très haut niveau limite l accès à de bonnes performances, car ils empêchent d optimiser le programme manuellement au plus près du langage machine. En pratique, le domaine de la programmation haute-

23 II. CARTES GRAPHIQUES ET ACCÉLÉRATEURS DE CALCUL 23 performance s attache principalement au calcul numérique et préférera utiliser des langages impératifs avec gestion manuelle de la mémoire. Néanmoins, les bibliothèques de calculs optimisés et les squelettes algorithmiques permettent d aider les programmeurs à obtenir de hauts niveaux de performance sans empêcher l accès aux outils de haut niveau d abstraction. Dans cette thèse, nous verrons que les cartes graphiques ont des architectures très proches de celles des supercalculateurs et que les méthodes de programmations qui leur sont associées sont d assez bas niveau d abstraction. L objectif de cette thèse est donc d étudier le développement d outils de plus haut niveau d abstraction tout en se focalisant sur les performances dans le cadre de la programmation des cartes graphiques. II Cartes graphiques et accélérateurs de calcul Cette thèse a pour objectif l étude d abstractions performantes pour la programmation des cartes graphiques. En effet, les cartes graphiques sont des périphériques complexes à programmer, mais capables de délivrer de très hautes performances. Il paraît donc nécessaire d offrir des outils de haut niveau d abstraction pour simplifier leur utilisation tout en s assurant de conserver un haut niveau de performance. Dans ce cadre, il est important de distinguer les cartes graphiques (Graphics Processing Unit (GPU), en anglais) des CPU, ainsi que les méthodes de programmation qui leur sont associées. Pour ce faire, nous allons dresser un rapide historique des cartes graphiques et de leur programmation. Nous étudierons par la suite le cas plus général des accélérateurs de calcul (dont font partie les cartes graphiques), d une part, car ils sont concurrents des cartes graphiques pour le calcul hautes-performances et d autre part, car les méthodes de programmation qui leur sont associées sont proches et tendent à converger vers des outils communs. II.1 Historique Naissance. Les cartes graphiques ont été développées dans les années 1980 dans le but de soulager les processeurs de la charge que demandaient la gestion de l affichage de texte et, plus tard, la gestion séparée de chaque pixel de l écran. Elles sont des processeurs secondaires connectés au CPU et dotés de leur propre espace mémoire. Avec la demande de plus en plus importante en matière de graphisme incluant de la couleur, des animations et un nombre de pixels à afficher de plus en plus important, les cartes graphiques ont commencé à se perfectionner. Chargées principalement du calcul et du transfert des images produites par l ordinateur vers l écran, elles ont évolué pour permettre l affichage (et le calcul) d images en trois dimensions. La 3D est une activité très coûteuse en calcul, en particulier dans le cas d opérations en temps réel comme dans les jeux vidéo. C est sur ce créneau, et sur celui du dessin assisté par ordinateur qu elles vont se spécialiser. Le jeu vidéo 3D a permis la démocratisation des cartes graphiques en apportant la diffusion de masse et donc la baisse des coûts. Les environnements 3D vont se complexifier, ajoutant des textures aux modèles géométriques. Ces textures, des images à appliquer sur tout ou partie de l environnement 3D, demandent une importante quantité de mémoire ainsi qu une grande vitesse de transfert entre le CPU et la carte graphique. En effet, même si la carte graphique s occupe de l affichage, c est le CPU qui organise les tâches qu elle doit exécuter, et qui définit les données à afficher. L importante demande en matière de jeux vidéo va accélérer l évolution des cartes graphiques,

24 24 CHAPITRE 1. INTRODUCTION leur offrant d un côté plus de capacité de calcul pour davantage d effets en temps réel, et d un autre côté plus de mémoire pour augmenter la quantité d information à traiterafficher à l écran. La bande passante entre le CPU et la carte graphique va elle aussi être augmentée, passant des bus ISAVESA à PCI puis AGP et maintenant PCI-Express. De la même manière, l organisation de la mémoire intégrée dans les cartes graphiques va se hiérarchiser et se complexifier pour offrir des débits de plus en plus importants. Shaders et programmation des cartes graphiques. Bien qu on puisse définir un ensemble de tâches à faire exécuter par la carte graphique, ces tâches restaient prédéfinies et non programmables. La création d effets complexes et non prédéfinis demandait une forte implication du CPU dans les calculs et donc une importante perte de performances. En effet, enfin de proposer davantage de réalisme, les applications 3D ont commencé à intègrer de plus en plus de code numérique issu de la physique (gestion de drapés de vêtements, effet de vent, écoulement d eau, effet de lumière complexes, destruction de décors, etc). Afin de donner plus de flexibilité aux programmeurs et de permettre davantage d effets graphiques sans exploiter les CPU, la société Pixar définit en 1988 un langage, le shading language[15], pour décrire des opérations manipulant des éléments 3D depuis le GPU, des shaders. Un shader est un programme dédié au traitement graphique, qui sera exécuté par la carte graphique. Il permet de manipuler les données graphiques (pixel, vertex) directement depuis la carte graphique et de profiter des multiples unités de calcul qu elle possède. D abord dédiés à la génération d effets visuels précalculés, les shaders ont fini par devenir des programmes utilisables en temps réel. Différentes implantations de shading language ont vu le jour. Les trois principales étant HLSL (High Level Shader Language)[16] proposé par Microsoft dans son Application Programming Interface (API) Direct3D, OpenGL Shading Language (GLSL)[17] proposé par l OpenGL Architecture Review Board dans l API Open Graphic Library (OpenGL) et Cg (C for Graphics)[18] proposé par l entreprise NVidia. Ces trois langages, très proches du langage C, permettent la manipulation de pixels, textures et modèles 3D depuis la carte graphique, en temps réel. NVidia a proposé en 2001 la première carte graphique grand public capable d exploiter des shaders, via des unités de calcul dédiées, la Geforce 3. On distingue trois familles de shaders, les vertex shaders qui manipulent la position des points des éléments 3D dans l espace, les geometry shaders qui manipulent directement des ensembles de points et les pixel shaders qui manipulent les couleurs à afficher. Ces trois types de shaders sont appliqués les uns après les autres au sein du pipeline des cartes graphiques. Ceci a poussé à l ajout d unités de calcul supplémentaires, dédiées aux shaders, dans les cartes graphiques et a permis un accès simplifié au pipeline graphique pour les programmeurs. En effet, il est alors devenu possible de décrire des séries d opérations à réaliser sur les cartes graphiques et de combiner ces opérations entre elles. Les cartes graphiques sont depuis constituées de nombreuses unités de calcul et possèdent un espace mémoire important. C est avec l arrivée d unités de calcul sur les valeurs flottantes sur les cartes graphiques qu on a commencé à s intéresser à leur utilisation pour la résolution de problèmes numériques. En effet, nombre d entre eux sont modélisables sous la forme de calculs à réaliser sur des matrices. Or c est justement ce que permettent de faire les shading languages, et ce, avec des performances parfois nettement supérieures à celle des CPU classiques. La programmation généraliste sur unité de calcul graphique (GPGPU) était née.

Évaluation et implémentation des langages

Évaluation et implémentation des langages Évaluation et implémentation des langages Les langages de programmation et le processus de programmation Critères de conception et d évaluation des langages de programmation Les fondations de l implémentation

Plus en détail

Éléments de programmation et introduction à Java

Éléments de programmation et introduction à Java Éléments de programmation et introduction à Java Jean-Baptiste Vioix (jean-baptiste.vioix@iut-dijon.u-bourgogne.fr) IUT de Dijon-Auxerre - LE2I http://jb.vioix.free.fr 1-20 Les différents langages informatiques

Plus en détail

Machines virtuelles Cours 1 : Introduction

Machines virtuelles Cours 1 : Introduction Machines virtuelles Cours 1 : Introduction Pierre Letouzey 1 pierre.letouzey@inria.fr PPS - Université Denis Diderot Paris 7 janvier 2012 1. Merci à Y. Régis-Gianas pour les transparents Qu est-ce qu une

Plus en détail

Cours 1 : La compilation

Cours 1 : La compilation /38 Interprétation des programmes Cours 1 : La compilation Yann Régis-Gianas yrg@pps.univ-paris-diderot.fr PPS - Université Denis Diderot Paris 7 2/38 Qu est-ce que la compilation? Vous avez tous déjà

Plus en détail

FAMILLE EMC VPLEX. Disponibilité continue et mobilité des données dans et entre les datacenters AVANTAGES

FAMILLE EMC VPLEX. Disponibilité continue et mobilité des données dans et entre les datacenters AVANTAGES FAMILLE EMC VPLEX Disponibilité continue et mobilité des données dans et entre les datacenters DISPONIBLITÉ CONTINUE ET MOBILITÉ DES DONNÉES DES APPLICATIONS CRITIQUES L infrastructure de stockage évolue

Plus en détail

Une bibliothèque de templates pour CUDA

Une bibliothèque de templates pour CUDA Une bibliothèque de templates pour CUDA Sylvain Collange, Marc Daumas et David Defour Montpellier, 16 octobre 2008 Types de parallèlisme de données Données indépendantes n threads pour n jeux de données

Plus en détail

Métriques de performance pour les algorithmes et programmes parallèles

Métriques de performance pour les algorithmes et programmes parallèles Métriques de performance pour les algorithmes et programmes parallèles 11 18 nov. 2002 Cette section est basée tout d abord sur la référence suivante (manuel suggéré mais non obligatoire) : R. Miller and

Plus en détail

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions Cours d introduction à l informatique Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions Qu est-ce qu un Une recette de cuisine algorithme? Protocole expérimental

Plus en détail

Rapport de Synthèse. Création d un Générateur de modèle PADL pour le langage C++ Sébastien Colladon

Rapport de Synthèse. Création d un Générateur de modèle PADL pour le langage C++ Sébastien Colladon L Y O N Département Informatique Année 2011/2012 Rapport de Synthèse Création d un Générateur de modèle PADL pour le langage C++ Sébastien Colladon Laboratoire Ptidej de L Ecole Polytechnique de Montréal

Plus en détail

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Logiciel Libre Cours 3 Fondements: Génie Logiciel Logiciel Libre Cours 3 Fondements: Génie Logiciel Stefano Zacchiroli zack@pps.univ-paris-diderot.fr Laboratoire PPS, Université Paris Diderot 2013 2014 URL http://upsilon.cc/zack/teaching/1314/freesoftware/

Plus en détail

INTERSYSTEMS CACHÉ COMME ALTERNATIVE AUX BASES DE DONNÉES RÉSIDENTES EN MÉMOIRE

INTERSYSTEMS CACHÉ COMME ALTERNATIVE AUX BASES DE DONNÉES RÉSIDENTES EN MÉMOIRE I N T E RS Y S T E M S INTERSYSTEMS CACHÉ COMME ALTERNATIVE AUX BASES DE DONNÉES RÉSIDENTES EN MÉMOIRE David Kaaret InterSystems Corporation INTERSySTEMS CAChé CoMME ALTERNATIvE AUx BASES de données RéSIdENTES

Plus en détail

basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB www.enseirb.fr/~legal Olivier Augereau Formation UML

basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB www.enseirb.fr/~legal Olivier Augereau Formation UML basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB www.enseirb.fr/~legal Olivier Augereau Formation UML http://olivier-augereau.com Sommaire Introduction I) Les bases II) Les diagrammes

Plus en détail

VMWare Infrastructure 3

VMWare Infrastructure 3 Ingénieurs 2000 Filière Informatique et réseaux Université de Marne-la-Vallée VMWare Infrastructure 3 Exposé système et nouvelles technologies réseau. Christophe KELLER Sommaire Sommaire... 2 Introduction...

Plus en détail

I00 Éléments d architecture

I00 Éléments d architecture I00 I Exemples d ordinateur Pour les informaticiens, différentes machines de la vie courante sont des ordinateurs : par exemple les ordinateurs portables, les ordinateurs fixes, mais aussi les supercalculateurs,

Plus en détail

10 tâches d administration simplifiées grâce à Windows Server 2008 R2. 1. Migration des systèmes virtuels sans interruption de service

10 tâches d administration simplifiées grâce à Windows Server 2008 R2. 1. Migration des systèmes virtuels sans interruption de service 10 tâches d administration simplifiées grâce à Windows Server 2008 R2 Faire plus avec moins. C est l obsession depuis plusieurs années de tous les administrateurs de serveurs mais cette quête prend encore

Plus en détail

Enseignant: Lamouchi Bassem Cours : Système à large échelle et Cloud Computing

Enseignant: Lamouchi Bassem Cours : Système à large échelle et Cloud Computing Enseignant: Lamouchi Bassem Cours : Système à large échelle et Cloud Computing Les Clusters Les Mainframes Les Terminal Services Server La virtualisation De point de vue naturelle, c est le fait de regrouper

Plus en détail

Contrôle Non Destructif : Implantation d'algorithmes sur GPU et multi-coeurs. Gilles Rougeron CEA/LIST Département Imagerie Simulation et Contrôle

Contrôle Non Destructif : Implantation d'algorithmes sur GPU et multi-coeurs. Gilles Rougeron CEA/LIST Département Imagerie Simulation et Contrôle Contrôle Non Destructif : Implantation d'algorithmes sur GPU et multi-coeurs Gilles Rougeron CEA/LIST Département Imagerie Simulation et Contrôle 1 CEA R & D for Nuclear Energy 5 000 people Nuclear systems

Plus en détail

Synthèse d'images I. Venceslas BIRI IGM Université de Marne La

Synthèse d'images I. Venceslas BIRI IGM Université de Marne La Synthèse d'images I Venceslas BIRI IGM Université de Marne La La synthèse d'images II. Rendu & Affichage 1. Introduction Venceslas BIRI IGM Université de Marne La Introduction Objectif Réaliser une image

Plus en détail

Développement d un interpréteur OCL pour une machine virtuelle UML.

Développement d un interpréteur OCL pour une machine virtuelle UML. ObjeXion Software Prototyping made easy SA au capital de 500 000 F Siret 421 565 565 00015 APE 722Z Téléphone : 03 89 35 70 75 Télécopie : 03 89 35 70 76 L embarcadère 5, rue Gutemberg 68 800 Vieux-Thann,

Plus en détail

Julien MATHEVET Alexandre BOISSY GSID 4. Rapport RE09. Load Balancing et migration

Julien MATHEVET Alexandre BOISSY GSID 4. Rapport RE09. Load Balancing et migration Julien MATHEVET Alexandre BOISSY GSID 4 Rapport Load Balancing et migration Printemps 2001 SOMMAIRE INTRODUCTION... 3 SYNTHESE CONCERNANT LE LOAD BALANCING ET LA MIGRATION... 4 POURQUOI FAIRE DU LOAD BALANCING?...

Plus en détail

FAMILLE EMC VPLEX. Disponibilité continue et mobilité des données dans et entre les datacenters

FAMILLE EMC VPLEX. Disponibilité continue et mobilité des données dans et entre les datacenters FAMILLE EMC VPLEX Disponibilité continue et mobilité des données dans et entre les datacenters DISPONIBILITE CONTINUE ET MOBILITE DES DONNEES DES APPLICATIONS CRITIQUES L infrastructure de stockage évolue

Plus en détail

Architecture matérielle des systèmes informatiques

Architecture matérielle des systèmes informatiques Architecture matérielle des systèmes informatiques IDEC, Renens. Version novembre 2003. Avertissement : ce support de cours n est pas destiné à l autoformation et doit impérativement être complété par

Plus en détail

Bien architecturer une application REST

Bien architecturer une application REST Olivier Gutknecht Bien architecturer une application REST Avec la contribution de Jean Zundel Ce livre traite exactement du sujet suivant : comment faire pour que les services web et les programmes qui

Plus en détail

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP COURS PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 1 / 7 INITIATION AU LANGAGE C SUR PIC DE MICROSHIP I. Historique du langage C 1972 : naissance du C dans les laboratoires BELL par

Plus en détail

Initiation au HPC - Généralités

Initiation au HPC - Généralités Initiation au HPC - Généralités Éric Ramat et Julien Dehos Université du Littoral Côte d Opale M2 Informatique 2 septembre 2015 Éric Ramat et Julien Dehos Initiation au HPC - Généralités 1/49 Plan du cours

Plus en détail

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if Pierre Boudes 28 septembre 2011 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike

Plus en détail

IFT2255 : Génie logiciel

IFT2255 : Génie logiciel IFT2255 : Génie logiciel Chapitre 6 - Analyse orientée objets Section 1. Introduction à UML Julie Vachon et Houari Sahraoui 6.1. Introduction à UML 1. Vers une approche orientée objet 2. Introduction ti

Plus en détail

Cours Informatique 1. Monsieur SADOUNI Salheddine

Cours Informatique 1. Monsieur SADOUNI Salheddine Cours Informatique 1 Chapitre 2 les Systèmes Informatique Monsieur SADOUNI Salheddine Un Système Informatique lesystème Informatique est composé de deux parties : -le Matériel : constitué de l unité centrale

Plus en détail

Algorithme. Table des matières

Algorithme. Table des matières 1 Algorithme Table des matières 1 Codage 2 1.1 Système binaire.............................. 2 1.2 La numérotation de position en base décimale............ 2 1.3 La numérotation de position en base binaire..............

Plus en détail

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2 Anne Tasso Java Le livre de premier langage 10 e édition Avec 109 exercices corrigés Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2 Table des matières Avant-propos Organisation de l ouvrage..............................

Plus en détail

Solution A La Gestion Des Objets Java Pour Des Systèmes Embarqués

Solution A La Gestion Des Objets Java Pour Des Systèmes Embarqués International Journal of Engineering Research and Development e-issn: 2278-067X, p-issn: 2278-800X, www.ijerd.com Volume 7, Issue 5 (June 2013), PP.99-103 Solution A La Gestion Des Objets Java Pour Des

Plus en détail

Le Processus RUP. H. Kadima. Tester. Analyst. Performance Engineer. Database Administrator. Release Engineer. Project Leader. Designer / Developer

Le Processus RUP. H. Kadima. Tester. Analyst. Performance Engineer. Database Administrator. Release Engineer. Project Leader. Designer / Developer Le Processus RUP Database Administrator Project Leader H. Kadima Performance Engineer Release Engineer Analyst Designer / Developer Tester Table des matières 1. De l artisanat à l industrialisation de

Plus en détail

Modernisation et gestion de portefeuilles d applications bancaires

Modernisation et gestion de portefeuilles d applications bancaires Modernisation et gestion de portefeuilles d applications bancaires Principaux défis et facteurs de réussite Dans le cadre de leurs plans stratégiques à long terme, les banques cherchent à tirer profit

Plus en détail

Conception des systèmes répartis

Conception des systèmes répartis Conception des systèmes répartis Principes et concepts Gérard Padiou Département Informatique et Mathématiques appliquées ENSEEIHT Octobre 2012 Gérard Padiou Conception des systèmes répartis 1 / 37 plan

Plus en détail

Patrons de Conception (Design Patterns)

Patrons de Conception (Design Patterns) Patrons de Conception (Design Patterns) Introduction 1 Motivation Il est difficile de développer des logiciels efficaces, robustes, extensibles et réutilisables Il est essentiel de comprendre les techniques

Plus en détail

Une dérivation du paradigme de réécriture de multiensembles pour l'architecture de processeur graphique GPU

Une dérivation du paradigme de réécriture de multiensembles pour l'architecture de processeur graphique GPU Une dérivation du paradigme de réécriture de multiensembles pour l'architecture de processeur graphique GPU Gabriel Antoine Louis Paillard Ce travail a eu le soutien de la CAPES, agence brésilienne pour

Plus en détail

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique Institut Supérieure Aux Etudes Technologiques De Nabeul Département Informatique Support de Programmation Java Préparé par Mlle Imene Sghaier 2006-2007 Chapitre 1 Introduction au langage de programmation

Plus en détail

MODELISATION UN ATELIER DE MODELISATION «RATIONAL ROSE»

MODELISATION UN ATELIER DE MODELISATION «RATIONAL ROSE» MODELISATION UN ATELIER DE MODELISATION «RATIONAL ROSE» Du cours Modélisation Semi -Formelle de Système d Information Du Professeur Jean-Pierre GIRAUDIN Décembre. 2002 1 Table de matière Partie 1...2 1.1

Plus en détail

Cours 1 : Qu est-ce que la programmation?

Cours 1 : Qu est-ce que la programmation? 1/65 Introduction à la programmation Cours 1 : Qu est-ce que la programmation? Yann Régis-Gianas yrg@pps.univ-paris-diderot.fr Université Paris Diderot Paris 7 2/65 1. Sortez un appareil qui peut se rendre

Plus en détail

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr Mars 2002 Pour Irène et Marie Legal Notice Copyright c 2002 Patrick Cégielski Université

Plus en détail

Evaluation des performances de programmes parallèles haut niveau à base de squelettes

Evaluation des performances de programmes parallèles haut niveau à base de squelettes Evaluation des performances de programmes parallèles haut niveau à base de squelettes Enhancing the Performance Predictability of Grid Applications with Patterns and Process Algebras A. Benoit, M. Cole,

Plus en détail

Rappels sur les suites - Algorithme

Rappels sur les suites - Algorithme DERNIÈRE IMPRESSION LE 14 septembre 2015 à 12:36 Rappels sur les suites - Algorithme Table des matières 1 Suite : généralités 2 1.1 Déition................................. 2 1.2 Exemples de suites............................

Plus en détail

Sciences de Gestion Spécialité : SYSTÈMES D INFORMATION DE GESTION

Sciences de Gestion Spécialité : SYSTÈMES D INFORMATION DE GESTION Sciences de Gestion Spécialité : SYSTÈMES D INFORMATION DE GESTION Classe de terminale de la série Sciences et Technologie du Management et de la Gestion Préambule Présentation Les technologies de l information

Plus en détail

Analyse de sécurité de logiciels système par typage statique

Analyse de sécurité de logiciels système par typage statique Contexte Modélisation Expérimentation Conclusion Analyse de sécurité de logiciels système par typage statique Application au noyau Linux Étienne Millon UPMC/LIP6 Airbus Group Innovations Sous la direction

Plus en détail

Prise en compte des ressources dans les composants logiciels parallèles

Prise en compte des ressources dans les composants logiciels parallèles Prise en compte des ressources dans les composants logiciels parallèles Aperçus de l action RASC et du projet Concerto F. Guidec Frederic.Guidec@univ-ubs.fr Action RASC Plan de cet exposé Contexte Motivations

Plus en détail

Introduction aux systèmes temps réel. Iulian Ober IRIT ober@iut-blagnac.fr

Introduction aux systèmes temps réel. Iulian Ober IRIT ober@iut-blagnac.fr Introduction aux systèmes temps réel Iulian Ober IRIT ober@iut-blagnac.fr Définition Systèmes dont la correction ne dépend pas seulement des valeurs des résultats produits mais également des délais dans

Plus en détail

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application Université de Provence Licence Math-Info Première Année V. Phan Luong Algorithmique et Programmation en Python Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application 1 Ordinateur Un

Plus en détail

Semarchy Convergence for MDM La Plate-Forme MDM Évolutionnaire

Semarchy Convergence for MDM La Plate-Forme MDM Évolutionnaire FICHE PRODUIT Semarchy Convergence for MDM La Plate-Forme MDM Évolutionnaire BENEFICES POUR LES DSI Réussir les projets de gouvernance dans les délais et les budgets Démarrer de manière tactique tout en

Plus en détail

Nom de l application

Nom de l application Ministère de l Enseignement Supérieur et de la Recherche Scientifique Direction Générale des Etudes Technologiques Institut Supérieur des Etudes Technologiques de Gafsa Département Technologies de l Informatique

Plus en détail

Cours en ligne Développement Java pour le web

Cours en ligne Développement Java pour le web Cours en ligne Développement Java pour le web We TrainFrance info@wetrainfrance Programme général du cours Développement Java pour le web Module 1 - Programmation J2ee A) Bases de programmation Java Unité

Plus en détail

Chapitre 1 : Introduction aux bases de données

Chapitre 1 : Introduction aux bases de données Chapitre 1 : Introduction aux bases de données Les Bases de Données occupent aujourd'hui une place de plus en plus importante dans les systèmes informatiques. Les Systèmes de Gestion de Bases de Données

Plus en détail

SQL Server Installation Center et SQL Server Management Studio

SQL Server Installation Center et SQL Server Management Studio SQL Server Installation Center et SQL Server Management Studio Version 1.0 Grégory CASANOVA 2 SQL Server Installation Center et SQL Server Management Studio [03/07/09] Sommaire 1 Installation de SQL Server

Plus en détail

UE Programmation Impérative Licence 2ème Année 2014 2015

UE Programmation Impérative Licence 2ème Année 2014 2015 UE Programmation Impérative Licence 2 ème Année 2014 2015 Informations pratiques Équipe Pédagogique Florence Cloppet Neilze Dorta Nicolas Loménie prenom.nom@mi.parisdescartes.fr 2 Programmation Impérative

Plus en détail

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C IN 102 - Cours 1 Qu on le veuille ou non, les systèmes informatisés sont désormais omniprésents. Même si ne vous destinez pas à l informatique, vous avez de très grandes chances d y être confrontés en

Plus en détail

La dernière base de données de Teradata franchit le cap du big data grâce à sa technologie avancée

La dernière base de données de Teradata franchit le cap du big data grâce à sa technologie avancée Communiqué de presse Charles-Yves Baudet Twitter: Les clients de Teradata Teradata Corporation peuvent dan.conway@teradata.com tirer parti de plusieurs + 33 1 64 86 76 14 + 33 (0) 1 55 21 01 48/49 systèmes,

Plus en détail

Multiprogrammation parallèle générique des méthodes de décomposition de domaine

Multiprogrammation parallèle générique des méthodes de décomposition de domaine Multiprogrammation parallèle générique des méthodes de décomposition de domaine Andréa Schwertner-Charão To cite this version: Andréa Schwertner-Charão. Multiprogrammation parallèle générique des méthodes

Plus en détail

4.2 Unités d enseignement du M1

4.2 Unités d enseignement du M1 88 CHAPITRE 4. DESCRIPTION DES UNITÉS D ENSEIGNEMENT 4.2 Unités d enseignement du M1 Tous les cours sont de 6 ECTS. Modélisation, optimisation et complexité des algorithmes (code RCP106) Objectif : Présenter

Plus en détail

UN EXEMPLE DE CYBERENSEIGNEMENT EN CHIMIE

UN EXEMPLE DE CYBERENSEIGNEMENT EN CHIMIE 123 UN EXEMPLE DE CYBERENSEIGNEMENT EN CHIMIE Résumé Cet article décrit la création d un centre serveur sous le système d exploitation Linux, avec le serveur web Apache, ainsi que le développement d un

Plus en détail

Gé nié Logiciél Livré Blanc

Gé nié Logiciél Livré Blanc Gé nié Logiciél Livré Blanc Version 0.2 26 Octobre 2011 Xavier Blanc Xavier.Blanc@labri.fr Partie I : Les Bases Sans donner des définitions trop rigoureuses, il faut bien commencer ce livre par énoncer

Plus en détail

Hétérogénéité pour atteindre une consommation énergétique proportionnelle dans les clouds

Hétérogénéité pour atteindre une consommation énergétique proportionnelle dans les clouds Hétérogénéité pour atteindre une consommation énergétique proportionnelle dans les clouds Mardi Laurent Lefèvre LIP Inria/ENS Lyon Jean-Marc Pierson, Georges Da Costa, Patricia Stolf IRIT Toulouse Hétérogénéité

Plus en détail

Logiciel Libre Cours 2 Fondements: Programmation

Logiciel Libre Cours 2 Fondements: Programmation Logiciel Libre Cours 2 Fondements: Programmation Stefano Zacchiroli zack@pps.univ-paris-diderot.fr Laboratoire PPS, Université Paris Diderot 2013 2014 URL http://upsilon.cc/zack/teaching/1314/freesoftware/

Plus en détail

D une part, elles ne peuvent faire table rase de la richesse contenue dans leur système d information.

D une part, elles ne peuvent faire table rase de la richesse contenue dans leur système d information. PACBASE «Interrogez le passé, il répondra présent.». Le Module e-business Les entreprises doivent aujourd hui relever un triple défi. D une part, elles ne peuvent faire table rase de la richesse contenue

Plus en détail

Architectures web/bases de données

Architectures web/bases de données Architectures web/bases de données I - Page web simple : HTML statique Le code HTML est le langage de base pour concevoir des pages destinées à être publiées sur le réseau Internet ou intranet. Ce n'est

Plus en détail

DA MOTA Anthony - Comparaison de technologies : PhoneGap VS Cordova

DA MOTA Anthony - Comparaison de technologies : PhoneGap VS Cordova DA MOTA Anthony - Comparaison de technologies : PhoneGap VS Cordova I. Introduction Dans une période où la plasticité peut aider à réduire les coûts de développement de projets comme des applications mobile,

Plus en détail

Programmation d'agents intelligents Vers une refonte des fils de raisonnement. Stage de fin d'études Master IAD 2006

Programmation d'agents intelligents Vers une refonte des fils de raisonnement. Stage de fin d'études Master IAD 2006 vendredi 8 septembre 2006 Programmation d'agents intelligents Vers une refonte des fils de raisonnement Stage de fin d'études Master IAD 2006 Benjamin DEVEZE Responsable : M. Patrick TAILLIBERT Plan Plan

Plus en détail

La plate-forme DIMA. Master 1 IMA COLI23 - Université de La Rochelle

La plate-forme DIMA. Master 1 IMA COLI23 - Université de La Rochelle La plate-forme DIMA Master 1 IMA COLI23 - Université de La Rochelle DIMA Bref aperçu Qu'est-ce? Acronyme de «Développement et Implémentation de Systèmes Multi-Agents» Initié par Zahia Guessoum et Jean-Pierre

Plus en détail

Les diagrammes de modélisation

Les diagrammes de modélisation L approche Orientée Objet et UML 1 Plan du cours Introduction au Génie Logiciel L approche Orientée Objet et Notation UML Les diagrammes de modélisation Relations entre les différents diagrammes De l analyse

Plus en détail

Contributions à l expérimentation sur les systèmes distribués de grande taille

Contributions à l expérimentation sur les systèmes distribués de grande taille Contributions à l expérimentation sur les systèmes distribués de grande taille Lucas Nussbaum Soutenance de thèse 4 décembre 2008 Lucas Nussbaum Expérimentation sur les systèmes distribués 1 / 49 Contexte

Plus en détail

Chapitre VI- La validation de la composition.

Chapitre VI- La validation de la composition. Chapitre VI- La validation de la composition. Objectifs du chapitre : Expliquer les conséquences de l utilisation de règles de typage souples dans SEP. Présenter le mécanisme de validation des connexions

Plus en détail

KX-NCP500 / KX-NCP1000

KX-NCP500 / KX-NCP1000 KX-NCP500 / KX-NCP1000 Plateforme de communication réseau Communications unifiées en tout temps et en tout lieu Les communications : un facteur de succès Exploitez au mieux les possibilités de votre entreprise

Plus en détail

Limitations of the Playstation 3 for High Performance Cluster Computing

Limitations of the Playstation 3 for High Performance Cluster Computing Introduction Plan Limitations of the Playstation 3 for High Performance Cluster Computing July 2007 Introduction Plan Introduction Intérêts de la PS3 : rapide et puissante bon marché L utiliser pour faire

Plus en détail

Université de Bangui. Modélisons en UML

Université de Bangui. Modélisons en UML Université de Bangui CRM Modélisons en UML Ce cours a été possible grâce à l initiative d Apollinaire MOLAYE qui m a contacté pour vous faire bénéficier de mes connaissances en nouvelles technologies et

Plus en détail

UFR d Informatique. FORMATION MASTER Domaine SCIENCES, TECHNOLOGIE, SANTE Mention INFORMATIQUE 2014-2018

UFR d Informatique. FORMATION MASTER Domaine SCIENCES, TECHNOLOGIE, SANTE Mention INFORMATIQUE 2014-2018 UFR d Informatique FORMATION MASTER Domaine SCIENCES, TECHNOLOGIE, SANTE Mention INFORMATIQUE 2014-2018 Objectif L UFR d informatique propose au niveau du master, deux spécialités sous la mention informatique

Plus en détail

Programme scientifique Majeure ARCHITECTURE DES SYSTEMES D INFORMATION. Mentions Ingénierie des Systèmes d Information Business Intelligence

Programme scientifique Majeure ARCHITECTURE DES SYSTEMES D INFORMATION. Mentions Ingénierie des Systèmes d Information Business Intelligence É C O L E D I N G É N I E U R D E S T E C H N O L O G I E S D E L I N F O R M A T I O N E T D E L A C O M M U N I C A T I O N Programme scientifique Majeure ARCHITECTURE DES SYSTEMES D INFORMATION Mentions

Plus en détail

UNIFIED. Nouvelle génération d'architecture unifiée pour la protection des données D TA. dans des environnements virtuels et physiques PROTECTION

UNIFIED. Nouvelle génération d'architecture unifiée pour la protection des données D TA. dans des environnements virtuels et physiques PROTECTION UNIFIED Nouvelle génération d'architecture unifiée pour la protection des données D TA dans des environnements virtuels et physiques PROTECTION Unified Data protection DOSSIER SOLUTION CA arcserve UDP

Plus en détail

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation Base de données S. Lèbre slebre@unistra.fr Université de Strasbourg, département d informatique. Présentation du module Contenu général Notion de bases de données Fondements / Conception Utilisation :

Plus en détail

Manuel de System Monitor

Manuel de System Monitor Chris Schlaeger John Tapsell Chris Schlaeger Tobias Koenig Traduction française : Yves Dessertine Traduction française : Philippe Guilbert Traduction française : Robin Guitton Relecture de la documentation

Plus en détail

7 avantages à la virtualisation des applications stratégiques de votre entreprise

7 avantages à la virtualisation des applications stratégiques de votre entreprise 7 avantages à la virtualisation des applications stratégiques de votre entreprise Contenu de cet ebook Mise en contexte Avantage 1 : Accélération des mises à niveau grâce au clonage Avantage 2 : Réservation

Plus en détail

Conditions : stage indemnisé, aide au logement possible, transport CEA en Ile-de-France gratuit.

Conditions : stage indemnisé, aide au logement possible, transport CEA en Ile-de-France gratuit. Proposition de stage de BAC+4 ou BAC+5 Pro ou Recherche Etude comparative des outils de vérification d'algorithmes parallèles Logiciels (LSL), localisé à Palaiseau (Essonne), développe les outils d'aide

Plus en détail

ÉdIteur officiel et fournisseur de ServIceS professionnels du LogIcIeL open Source ScILab

ÉdIteur officiel et fournisseur de ServIceS professionnels du LogIcIeL open Source ScILab ÉdIteur officiel et fournisseur de ServIceS professionnels du LogIcIeL open Source ScILab notre compétence d'éditeur à votre service créée en juin 2010, Scilab enterprises propose services et support autour

Plus en détail

Programmation C. Apprendre à développer des programmes simples dans le langage C

Programmation C. Apprendre à développer des programmes simples dans le langage C Programmation C Apprendre à développer des programmes simples dans le langage C Notes de cours sont disponibles sur http://astro.u-strasbg.fr/scyon/stusm (attention les majuscules sont importantes) Modalités

Plus en détail

OCL - Object Constraint Language

OCL - Object Constraint Language OCL - Object Constraint Language Laëtitia Matignon laetitia.matignon@univ-lyon1.fr Département Informatique - Polytech Lyon Université Claude Bernard Lyon 1 2012-2013 Laëtitia Matignon SIMA - OCL - Object

Plus en détail

Point sur la virtualisation

Point sur la virtualisation Le 04/03/2013 OBJECTIF VIRTUALISATION mathieuc@exakis.com EXAKIS NANTES Identification du document Titre Projet Date de création Date de modification Point sur la Objectif 04/03/2013 26/03/2013 virtualisation

Plus en détail

La visio-conférence holographique : Pourquoi? Comment?

La visio-conférence holographique : Pourquoi? Comment? La visio-conférence holographique : Pourquoi? Comment? Francis Felix Labo LSIS / Arts & Métiers Paritech (ENSAM) 2 Cours des Arts et Métiers 13100 Aix-en-Provence Thierry Henocque AIP-Primeca Dauphiné

Plus en détail

PROJET DE MODELISATION CASERNE SERGEANT BLANDAN

PROJET DE MODELISATION CASERNE SERGEANT BLANDAN Boris BRUGEVIN Sylvain GIORIA PROJET DE MODELISATION CASERNE SERGEANT BLANDAN Master 2 Programmation et Développement Université Lumière LYON 2 - GAMAGORA 2007-2008 II.. PRESENTATIION DU PROJET Ce projet

Plus en détail

Rapport d activité. Mathieu Souchaud Juin 2007

Rapport d activité. Mathieu Souchaud Juin 2007 Rapport d activité Mathieu Souchaud Juin 2007 Ce document fait la synthèse des réalisations accomplies durant les sept premiers mois de ma mission (de novembre 2006 à juin 2007) au sein de l équipe ScAlApplix

Plus en détail

Composants génériques de calcul scientifique

Composants génériques de calcul scientifique Composants génériques de calcul scientifique T. Géraud et A. Duret-Lutz RAPPORT TECHNIQUE 9901 MARS 1999 Laboratoire de Recherche et Développement d EPITA 14-16, rue Voltaire 94276 Le Kremlin-Bicêtre cedex

Plus en détail

Premiers Pas avec OneNote 2013

Premiers Pas avec OneNote 2013 Premiers Pas avec OneNote 2 Présentation de OneNote 3 Ouverture du logiciel OneNote 4 Sous Windows 8 4 Sous Windows 7 4 Création de l espace de travail OneNote 5 Introduction 5 Présentation des différentes

Plus en détail

1 Architecture du cœur ARM Cortex M3. Le cœur ARM Cortex M3 sera présenté en classe à partir des éléments suivants :

1 Architecture du cœur ARM Cortex M3. Le cœur ARM Cortex M3 sera présenté en classe à partir des éléments suivants : GIF-3002 SMI et Architecture du microprocesseur Ce cours discute de l impact du design du microprocesseur sur le système entier. Il présente d abord l architecture du cœur ARM Cortex M3. Ensuite, le cours

Plus en détail

Livret du Stagiaire en Informatique

Livret du Stagiaire en Informatique Université François-Rabelais de Tours Campus de Blois UFR Sciences et Techniques Département Informatique Livret du Stagiaire en Informatique Licence 3ème année Master 2ème année Année 2006-2007 Responsable

Plus en détail

Vulgarisation Java EE Java EE, c est quoi?

Vulgarisation Java EE Java EE, c est quoi? Paris, le 1 Février 2012 Vulgarisation Java EE Java EE, c est quoi? Sommaire Qu est ce que Java? Types d applications Java Environnements Java Versions de Java Java EE, c est quoi finalement? Standards

Plus en détail

Une SGDT simple pour entreprises

Une SGDT simple pour entreprises livre blanc Une SGDT simple pour entreprises RESUME SolidWorks Enterprise PDM aide les entreprises de développement de produits 3D à maîtriser, gérer et partager le volume toujours croissant des diverses

Plus en détail

Introduction au langage C

Introduction au langage C Introduction au langage C Cours 1: Opérations de base et premier programme Alexis Lechervy Alexis Lechervy (UNICAEN) Introduction au langage C 1 / 23 Les premiers pas Sommaire 1 Les premiers pas 2 Les

Plus en détail

Leçon 1 : Les principaux composants d un ordinateur

Leçon 1 : Les principaux composants d un ordinateur Chapitre 2 Architecture d un ordinateur Leçon 1 : Les principaux composants d un ordinateur Les objectifs : o Identifier les principaux composants d un micro-ordinateur. o Connaître les caractéristiques

Plus en détail

Introduction à la Programmation Parallèle: MPI

Introduction à la Programmation Parallèle: MPI Introduction à la Programmation Parallèle: MPI Frédéric Gava et Gaétan Hains L.A.C.L Laboratoire d Algorithmique, Complexité et Logique Cours du M2 SSI option PSSR Plan 1 Modèle de programmation 2 3 4

Plus en détail

La Thèse de Maths dont vous êtes le héros

La Thèse de Maths dont vous êtes le héros La Thèse de Maths dont vous êtes le héros Toi aussi tu peux devenir Docteur en Mathématiques et impressionner tes amis, mais attention : tu devras lutter pendant trois ans et éviter les pièges si tu veux

Plus en détail

Manuel d utilisation 26 juin 2011. 1 Tâche à effectuer : écrire un algorithme 2

Manuel d utilisation 26 juin 2011. 1 Tâche à effectuer : écrire un algorithme 2 éducalgo Manuel d utilisation 26 juin 2011 Table des matières 1 Tâche à effectuer : écrire un algorithme 2 2 Comment écrire un algorithme? 3 2.1 Avec quoi écrit-on? Avec les boutons d écriture........

Plus en détail

NFP111 Systèmes et Applications Réparties

NFP111 Systèmes et Applications Réparties NFP111 Systèmes et Applications Réparties 1 de 34 NFP111 Systèmes et Applications Réparties Cours 7 - CORBA/Partie 1 Claude Duvallet Université du Havre UFR Sciences et Techniques 25 rue Philippe Lebon

Plus en détail

Encadré par : Michel SIMATIC

Encadré par : Michel SIMATIC Réalisé Par : Nizar BEN AYADA Ahmed GHZAIEL Encadré par : Michel SIMATIC I. PRESENTATION DU PROJET II. PRESENTATION DU MIDDLEWARE GASP 1- PRESENTATION GENERALE : 2- NECESSITE DES INTERGICIELS DANS LE MONDE

Plus en détail