Une bibliothèque de templates pour CUDA
|
|
|
- Paulette Beaudet
- il y a 10 ans
- Total affichages :
Transcription
1 Une bibliothèque de templates pour CUDA Sylvain Collange, Marc Daumas et David Defour Montpellier, 16 octobre 2008
2 Types de parallèlisme de données Données indépendantes n threads pour n jeux de données distincts Ex : rendu graphique Code d'un thread = corps de boucle parallèle Données dépendantes n threads pour 1 jeu de données Ex : multiplication de deux matrices 100x100 Utilisation de bibliothèques GPU : cublas, cufft, CUDPP... Mixte n*m threads pour n jeux de données Ex : calcul sur 100 matrices 10x10 Pas de solution existante sur GPU 2
3 Application Résolution de simplexes pour solveurs de Bernstein Collaboration avec Dominique Michelucci, Université de Bourgogne Résoudre ~10000 simplexes de 100x100 Portage sur GPU en cours de développement 3
4 Objectifs Développer une bibliothèque logicielle sur GPU Mettre en œuvre des algorithmes parallèles pour du parallélisme «mixte» Simplifier la programmation pour GPU Rester efficace 4
5 Plan NVidia CUDA Algorithmes parallèles et CUDPP Notre bibliothèque 5
6 Répartir le travail Sur CPU multicœur / SMP / NUMA Parallélisme à gros grain Découpler les données des threads pour limiter les conflits et communications Sur GPU Parallélisme à grain fin Entrelacer les données des threads pour optimiser la localité et exploiter les mémoires locales T0 T1 T2 T3 T0 T1 T2 T3 6
7 Architecture GPU NVidia simplifiée Unités de calcul Cœur Registres Mém partagée Mém constantes Unité mémoire Controleur memoire Mémoire globale Cluster x8 7
8 NVidia CUDA Compilateur et bibliothèque pour les GPU NVidia Organisation des threads par l'utilisateur Code SPMD : un seul programme pour tous les threads 8
9 Organisation logicielle des threads Ordonnancement des threads par le GPU/driver Tous les threads d'un bloc sont ordonnancés sur le même cœur Les blocs sont ordonnancés en fonction des ressources disponibles 9
10 Mémoires 10
11 Localité Exécution en SIMT (Single Instruction, Multiple Threads) Le programmeur écrit du code sur des données scalaires Le matériel exécute ce code sur des vecteurs Branchement Peut prendre plusieurs directions différentes dans le vecteur Il faut exécuter tous les cas, masquer les résultats Cas particulier : tous les threads du vecteur suivent le même chemin 11
12 Instructions load/store Chaque thread du vecteur peut demander une adresse différente Devient gather/scatter Cas particulier : toutes les adresses dans une même ligne mémoire Une seule requête mémoire à faire (coalesced reads/writes) Gain de performance significatif Privilégier la localité 12
13 Limitations Pas de mécanismes d'abstraction de la mémoire Mémoire partagée à allouer manuellement Calculs d'index en fonction du numéro de thread Pour respecter les règles de coalescing Architecture peu documentée 13
14 Plan NVidia CUDA Algorithmes parallèles et CUDPP Notre bibliothèque 14
15 Algorithmes parallèles Réduction Sommation, produit scalaire Somme préfixe (scan) Multiplication matrice creuse x vecteur Compaction Transposition Optimisation des motifs d'accès mémoire 15
16 CUDPP CUDA Data Parallel Primitives Library University of California Davis, NVidia Bibliothèque C sur CPU Algorithmes de scan CUDPPConfiguration config; config.op = CUDPP_ADD; config.datatype = CUDPP_FLOAT; config.algorithm = CUDPP_SCAN; config.options = CUDPP_OPTION_FORWARD CUDPP_OPTION_EXCLUSIVE; CUDPPHandle scanplan = 0; cudppplan(&scanplan, config, numelements, 1, 0); cudppscan(scanplan, d_odata, d_idata, numelements); 16
17 CUDPP Avantages Pas besoin de programmer en CUDA Algorithmes parallèles efficaces Limitations Pas de parallèlisme possible entre plusieurs calculs : opérations effectuées séquentiellement Coût de lancement du calcul, communications avec le CPU Types de données et opérations possibles limitées : opérateurs paramétrables mais non programmables 17
18 Plan NVidia CUDA Algorithmes parallèles et CUDPP Notre bibliothèque 18
19 Contenu Des conteneurs Pour abstraire la gestion des mémoires Des algorithmes parallèles Pour la communication entre threads d'un bloc Source et destination dans les registres Réduction parallèle (vote), broadcast,... Des fonctions haut-niveau Source ou destination en mémoire globale 19
20 CUDA : C ou C++? Support officiel C++ sur CPU sauf exceptions C uniquement sur GPU «sauf templates simples» En pratique Utilisation de classes et templates dans CUDPP Projet auquel participe NVidia Front-end CUDA basé sur le front-end C++ d'edg Respecte 100% de la norme C++ Rumeurs : support du C++ dans une prochaine version de CUDA? Toujours possible de passer par un compilateur C++ C 20
21 Métaprogrammation Les templates C++ fournissent un langage fonctionnel Exécuté à la compilation Récursivité possible template<int n> struct fact { enum { val = n * fact<n-1>::val }; }; template<> struct fact<0> { enum { val = 1 }; }; fact<6>::val -> 720 Permet de générer des constantes et du code 21
22 Découpage d'un bloc CUDA Une dimension explicite, une dimension implicite Quelle est la plus interne? Calcul sur n blocs indépendants de taille m Array Of Structures Calcul sur un bloc de m vecteurs de taille p Structure Of Arrays Dépend de l'application On généralise : n blocs indépendants de m vecteurs de taille p Les dimensions n et p sont implicites Classe Shape passée en argument de template Dimensions connues à la compilation n m m p p m n 22
23 Mémoire partagée En CUDA : allocation statique uniquement Pour toute la durée de l'exécution Pas de pile Une classe pour gérer la mémoire Allocation statique en pile template<class T, class Shape, int Size, class ParentFrame = root_frame, int Alignment = 4> struct shared_array { device shared_array(shape s); device T & operator[] (size_t index); }; Brique de base de la bibliothèque // Dimensions du bloc // Nombre d'éléments // (dimension explicite) // Cadre de pile 23
24 Mémoire privée Où stocker les données privées? Registres : rapide (0-4 cycles), limité (~32/thread), non indexable Mémoire partagée : rapide (4 cycles), limitée (~8/th), indexable Mémoire locale : lente (500 cycles), ~illimitée, indexable Mémoire globale : lente (500 cycles), ~illimitée, indexable En CUDA : quatre syntaxes différentes Choix à faire au début de la conception Devrait être fait lors de l'optimisation Abstraction du type de mémoire : template<class T, class Shape, int Size, class ParentFrame, StorageArea Storage> struct private_array; template<class T, class Shape, class ParentFrame, StorageArea Storage> struct private_scalar; 24
25 Réduction Opération à effectuer Somme, min, max, etc. Fonction passée en paramètre template Réduction dans la dimension m Utilisation d'un arbre de réduction Algorithme récursif exécuté à la compilation Aucun contrôle de flot dans le code GPU Passage par la mémoire partagée Résultat aux threads d'indice 0 dans la dimension m m f p? n 0 25
26 Broadcast Suit généralement une réduction Tous les threads de la dimension m reçoivent la valeur du thread i Passage par la mémoire partagée m p n i 26
27 Algorithmes dérivés Fonctions intégrées Accès en mémoire globale avec adressage implicite Lecture de scalaire en mémoire globale (read+broadcast) Réductions depuis un tableau en mémoire Recherche d'un élément satisfaisant un prédicat dans un tableau Objectif : porter les fonctions standard de <algorithm> for_each, transform, fill, find, search, count, max_element... Presque toutes implémentables avec les briques de base Nécessité de trouver un équivalent parallèle aux itérateurs 27
28 Decuda Langage machine GPU NVidia non documenté Désassembleur issu d'un travail de reconstruction à partir de la sortie binaire du compilateur Wladimir van der Laan, Rijksuniversiteit Groningen, NL Permet de connaître exactement le code généré 28
29 Problèmes rencontrés Front-end C++ Pas de fonctions membres template Niveaux de protection (private,...) non respectés par l'émulation logicielle Erreurs internes du compilateur Back-end Échec de l'inférence du type de mémoire pointée «Optimisations» nécessitant trop de registres Langage pas encore stabilisé 29
30 Résultats Réduction depuis la mémoire avec 512 threads Comparaison avec la réduction 6 de Mark Harris (code C optimisé de NVidia) Byte/clock Harris Byte/clock CUTL K 256K 4MB 64MB Pas de surcoût notable dû à la généricité 30
31 Conclusion Évolution progressive des langages GPU bas-niveau Assembleurs en 2002 (DX shaders, ARBfp) Dérivés du C simplifiés en 2003 (Cg, GLSL, HLSL) Dérivé du C parallèle en 2005 (Brook) C parallèle en 2006 (CUDA) Prochaines étapes C++ Bibliothèques de structures de données et d'algorithmes Reste à construire 31
32 OpenCL? Présenté à SIGGRAPH 08 // This kernel computes FFT of length The 1024 length FFT is decomposed into // calls to a radix 16 function, another radix 16 function and then a radix 4 function kernel void fft1d_1024 ( global float2 *in, global float2 *out, local float *smemx, local float *smemy) { int tid = get_local_id(0); int blockidx = get_group_id(0) * tid; float2 data[16]; // starting index of data to/from global memory in = in + blockidx; out = out + blockidx; globalloads(data, in, 64); // coalesced global reads fftradix16pass(data); // in-place radix-16 pass twiddlefactormul(data, tid, 1024, 0); // local shuffle using local memory localshuffle(data, smemx, smemy, tid, (((tid & 15) * 65) + (tid >> 4))); fftradix16pass(data); // in-place radix-16 pass twiddlefactormul(data, tid, 64, 4); // twiddle factor multiplication localshuffle(data, smemx, smemy, tid, (((tid >> 4) * 64) + (tid & 15))); // four radix-4 function calls fftradix4pass(data); fftradix4pass(data + 4); fftradix4pass(data + 8); fftradix4pass(data + 12); // coalesced global writes globalstores(data, out, 64); } 32
M2-Images. Rendu Temps Réel - OpenGL 4 et compute shaders. J.C. Iehl. December 18, 2013
Rendu Temps Réel - OpenGL 4 et compute shaders December 18, 2013 résumé des épisodes précédents... création des objets opengl, organisation des données, configuration du pipeline, draw,... opengl 4.3 :
Introduction à CUDA. [email protected]
36 Introduction à CUDA [email protected] 38 Comment programmer les GPU? Notion de kernel exemple (n produits scalaires): T ci =ai b ( ai, b : vecteurs 3D, ci for(int i=0;i
Introduction à MATLAB R
Introduction à MATLAB R Romain Tavenard 10 septembre 2009 MATLAB R est un environnement de calcul numérique propriétaire orienté vers le calcul matriciel. Il se compose d un langage de programmation, d
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
. Plan du cours. . Architecture: Fermi (2010-12), Kepler (12-?)
Plan du cours Vision mate riel: architecture cartes graphiques NVIDIA INF 560 Calcul Paralle le et Distribue Cours 3 Vision logiciel: l abstraction logique de l architecture propose e par le langage CUDA
É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
Introduction au calcul parallèle avec OpenCL
Introduction au calcul parallèle avec OpenCL Julien Dehos Séminaire du 05/01/2012 Sommaire Introduction Le calculateur du CGR/LISIC/LMPA Généralités sur OpenCL Modèles Programmation Optimisation Conclusion
Cours 1 : La compilation
/38 Interprétation des programmes Cours 1 : La compilation Yann Régis-Gianas [email protected] PPS - Université Denis Diderot Paris 7 2/38 Qu est-ce que la compilation? Vous avez tous déjà
Argument-fetching dataflow machine de G.R. Gao et J.B. Dennis (McGill, 1988) = machine dataflow sans flux de données
EARTH et Threaded-C: Éléments clés du manuel de références de Threaded-C Bref historique de EARTH et Threaded-C Ancêtres de l architecture EARTH: Slide 1 Machine à flux de données statique de J.B. Dennis
Optimisations des SGBDR. Étude de cas : MySQL
Optimisations des SGBDR Étude de cas : MySQL Introduction Pourquoi optimiser son application? Introduction Pourquoi optimiser son application? 1. Gestion de gros volumes de données 2. Application critique
LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN
LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN Les contenues de ce document sont la propriété exclusive de la société REVER. Ils ne sont transmis qu à titre d information et ne peuvent en aucun cas
Introduction à MapReduce/Hadoop et Spark
1 / 36 Introduction à MapReduce/Hadoop et Spark Certificat Big Data Ludovic Denoyer et Sylvain Lamprier UPMC Plan 2 / 36 Contexte 3 / 36 Contexte 4 / 36 Data driven science: le 4e paradigme (Jim Gray -
IRL : Simulation distribuée pour les systèmes embarqués
IRL : Simulation distribuée pour les systèmes embarqués Yassine El Khadiri, 2 ème année Ensimag, Grenoble INP Matthieu Moy, Verimag Denis Becker, Verimag 19 mai 2015 1 Table des matières 1 MPI et la sérialisation
Machines Virtuelles. et bazard autour. Rémi Forax
Machines Virtuelles et bazard autour Rémi Forax Avant propos Quelle est la complexité du code ci-dessous? Avec un processeur à 1Ghz, combien de temps le calcul prendra t'il? public static void main(string[]
DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51
DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51 PLAN DU COURS Introduction au langage C Notions de compilation Variables, types, constantes, tableaux, opérateurs Entrées sorties de base Structures de
TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile
TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile Dans ce TP, vous apprendrez à définir le type abstrait Pile, à le programmer en Java à l aide d une interface
4. Groupement d objets
Conception objet en Java avec BlueJ une approche interactive 4. Groupement d objets Collections et itérateurs David J. Barnes, Michael Kölling version française: Patrice Moreaux Rédigé avec 1.0 Principaux
Gestion mémoire et Représentation intermédiaire
Gestion mémoire et Représentation intermédiaire Pablo de Oliveira March 23, 2015 I Gestion Memoire Variables locales Les variables locales sont stockées: Soit dans un registre,
Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère
L'héritage et le polymorphisme en Java Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère En java, toutes les classes sont dérivée de la
C++ Programmer. en langage. 8 e édition. Avec une intro aux design patterns et une annexe sur la norme C++11. Claude Delannoy
Claude Delannoy Programmer en langage C++ 8 e édition Avec une intro aux design patterns et une annexe sur la norme C++11 Groupe Eyrolles, 1993-2011. Groupe Eyrolles, 2014, pour la nouvelle présentation,
Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004
Questionnaire d'examen final INF1101 Sigle du cours Nom : Signature : Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004 Professeur(s)
Calcul multi GPU et optimisation combinatoire
Année universitaire 2010 2011 Master recherche EEA Spécialité : SAID Systèmes Automatiques, Informatiques et Décisionnels Parcours : Systèmes Automatiques Calcul multi GPU et optimisation combinatoire
MapReduce. Malo Jaffré, Pablo Rauzy. 16 avril 2010 ENS. Malo Jaffré, Pablo Rauzy (ENS) MapReduce 16 avril 2010 1 / 15
MapReduce Malo Jaffré, Pablo Rauzy ENS 16 avril 2010 Malo Jaffré, Pablo Rauzy (ENS) MapReduce 16 avril 2010 1 / 15 Qu est ce que c est? Conceptuellement Données MapReduce est un framework de calcul distribué
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
INF6500 : Structures des ordinateurs. Sylvain Martel - INF6500 1
INF6500 : Structures des ordinateurs Sylvain Martel - INF6500 1 Cours 4 : Multiprocesseurs Sylvain Martel - INF6500 2 Multiprocesseurs Type SISD SIMD MIMD Communication Shared memory Message-passing Groupe
Logiciel Libre Cours 3 Fondements: Génie Logiciel
Logiciel Libre Cours 3 Fondements: Génie Logiciel Stefano Zacchiroli [email protected] Laboratoire PPS, Université Paris Diderot 2013 2014 URL http://upsilon.cc/zack/teaching/1314/freesoftware/
Classes et Objets en Ocaml.
Classes et Objets en Ocaml. Didier Rémy 2001-2002 http://cristal.inria.fr/ remy/mot/2/ http://www.enseignement.polytechnique.fr/profs/informatique/didier.remy/mot/2/ Cours Exercices Slide 1 1. Objets 2.
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
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
Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction
PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS Depuis SAS 9.2 TS2M3, SAS propose un nouveau langage de programmation permettant de créer et gérer des tables SAS : le DS2 («Data Step 2»). Ces nouveautés
Certificat Big Data - Master MAthématiques
1 / 1 Certificat Big Data - Master MAthématiques Master 2 Auteur : Sylvain Lamprier UPMC Fouille de données et Medias Sociaux 2 / 1 Rich and big data: Millions d utilisateurs Millions de contenus Multimedia
Plan du cours 2014-2015. Cours théoriques. 29 septembre 2014
numériques et Institut d Astrophysique et de Géophysique (Bât. B5c) Bureau 0/13 email:[email protected] Tél.: 04-3669771 29 septembre 2014 Plan du cours 2014-2015 Cours théoriques 16-09-2014 numériques pour
Segmentation d'images à l'aide d'agents sociaux : applications GPU
Segmentation d'images à l'aide d'agents sociaux : applications GPU Richard MOUSSA Laboratoire Bordelais de Recherche en Informatique (LaBRI) - UMR 5800 Université de Bordeaux - France Laboratoire de recherche
Université du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation.
Université du Québec à Chicoutimi Département d informatique et de mathématique Plan de cours Titre : Élément de programmation Sigle : 8inf 119 Session : Automne 2001 Professeur : Patrice Guérin Local
EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE
EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE QCM Remarque : - A une question correspond au moins 1 réponse juste - Cocher la ou les bonnes réponses Barème : - Une bonne réponse = +1 - Pas de réponse = 0
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
Processus! programme. DIMA, Systèmes Centralisés (Ph. Mauran) " Processus = suite d'actions = suite d'états obtenus = trace
Processus 1) Contexte 2) Modèles de Notion de Points de vue Modèle fourni par le SX Opérations sur les 3) Gestion des Représentation des Opérations 4) Ordonnancement des Niveaux d ordonnancement Ordonnancement
6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, [email protected]
6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, [email protected] Interface d un SGF Implémentation d un SGF Gestion de la correspondance entre la structure logique et la structure
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
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 [email protected] 2 Programmation Impérative
Conventions d écriture et outils de mise au point
Logiciel de base Première année par alternance Responsable : Christophe Rippert [email protected] Introduction Conventions d écriture et outils de mise au point On va utiliser dans cette
Compilation (INF 564)
Présentation du cours Le processeur MIPS Programmation du MIPS 1 Compilation (INF 564) Introduction & architecture MIPS François Pottier 10 décembre 2014 Présentation du cours Le processeur MIPS Programmation
<Insert Picture Here> Solaris pour la base de donnés Oracle
Solaris pour la base de donnés Oracle Alain Chéreau Oracle Solution Center Agenda Compilateurs Mémoire pour la SGA Parallélisme RAC Flash Cache Compilateurs
C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement
C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement des objets d'une classe Utilisation d'une classe Droit
Informatique industrielle A7-19571 Systèmes temps-réel J.F.Peyre. Partie I : Introduction
Informatique industrielle A7-19571 Systèmes temps-réel J.F.Peyre Partie I : Introduction Plan de la première partie Quelques définitions Caractéristiques communes des applications temps-réel Exemples d
Brefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs
Brefs rappels sur la pile et le tas (Stack / Heap) et les pointeurs (exemples en C) v1.11 - Olivier Carles 1 Pile et Tas Mémoire allouée de manière statique Mémoire Allouée Dynamiquement variables locales
Introduction à la programmation des GPUs
Introduction à la programmation des GPUs Anne-Sophie Mouronval Mesocentre de calcul de l Ecole Centrale Paris Laboratoire MSSMat Avril 2013 Anne-Sophie Mouronval Introduction à la programmation des GPUs
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
Les structures de données. Rajae El Ouazzani
Les structures de données Rajae El Ouazzani Les arbres 2 1- Définition de l arborescence Une arborescence est une collection de nœuds reliés entre eux par des arcs. La collection peut être vide, cad l
1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.
1. Structure d un programme C Un programme est un ensemble de fonctions. La fonction "main" constitue le point d entrée pour l exécution. Un exemple simple : #include int main() { printf ( this
Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. [email protected]
. Cours intensif Java 1er cours: de C à Java Septembre 2009 Enrica DUCHI LIAFA, Paris 7 [email protected] LANGAGES DE PROGRAMMATION Pour exécuter un algorithme sur un ordinateur il faut le
Java - la plateforme
Java - la plateforme Java la plateforme Java? VM GC JIT Java Aujourd'hui 3 environnements d'exécutions différents Java ME (Micro Edition) pour PDA, téléphone Android (Java SE moins certain paquetages)
1. Systèmes d entrée/sortie 2. Systèmes de fichiers 3. Structure de mémoire de masse (disques)
Chapitre 4 Le système de Gestion de Fichiers 1. Systèmes d entrée/sortie 2. Systèmes de fichiers 3. Structure de mémoire de masse (disques) 1 Systèmes d entrée/sortie Concepts importants : Matériel E/S
Algorithmique, Structures de données et langage C
UNIVERSITE PAUL SABATIER TOULOUSE III Algorithmique, Structures de données et langage C L3 IUP AISEM/ICM Janvier 2005 J.M. ENJALBERT Chapitre 1 Rappels et compléments de C 1.1 Structures Une structure
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
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
Traduction des Langages : Le Compilateur Micro Java
BARABZAN Jean-René OUAHAB Karim TUCITO David 2A IMA Traduction des Langages : Le Compilateur Micro Java µ Page 1 Introduction Le but de ce projet est d écrire en JAVA un compilateur Micro-Java générant
PROGRAMME DU CONCOURS DE RÉDACTEUR INFORMATICIEN
PROGRAMME DU CONCOURS DE RÉDACTEUR INFORMATICIEN 1. DÉVELOPPEMENT D'APPLICATION (CONCEPTEUR ANALYSTE) 1.1 ARCHITECTURE MATÉRIELLE DU SYSTÈME INFORMATIQUE 1.1.1 Architecture d'un ordinateur Processeur,
Environnements de développement (intégrés)
Environnements de développement (intégrés) Tests unitaires, outils de couverture de code Patrick Labatut [email protected] http://www.di.ens.fr/~labatut/ Département d informatique École normale supérieure
Programmer en JAVA. par Tama ([email protected]( [email protected])
Programmer en JAVA par Tama ([email protected]( [email protected]) Plan 1. Présentation de Java 2. Les bases du langage 3. Concepts avancés 4. Documentation 5. Index des mots-clés 6. Les erreurs fréquentes
Analyse de performance, monitoring
Analyse de performance, monitoring Plan Principes de profilage Projet TPTP dans Eclipse Utilisation des profiling tools de TPTP Philippe Collet Master 1 Informatique 2009-2010 http://deptinfo.unice.fr/twiki/bin/view/minfo/gl
Architecture des ordinateurs
Architecture des ordinateurs Cours 4 5 novembre 2012 Archi 1/22 Micro-architecture Archi 2/22 Intro Comment assembler les différents circuits vus dans les cours précédents pour fabriquer un processeur?
Licence ST Université Claude Bernard Lyon I LIF1 : Algorithmique et Programmation C Bases du langage C 1 Conclusion de la dernière fois Introduction de l algorithmique générale pour permettre de traiter
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
Développement d'applications Web HTML5 L'art et la manière avec Visual Studio 2015 et TFS
Avant de commencer 1. Introduction 15 2. HTML5 oui, mais pas que... 15 2.1 HTML5 16 2.2 JavaScript 17 2.3 CSS 18 3. Les outils 18 Préparation des outils et création du projet 1. Introduction 21 2. Team
Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test
Grandes lignes Analyseur Statique de logiciels Temps RÉel Embarqués École Polytechnique École Normale Supérieure Mercredi 18 juillet 2005 1 Présentation d 2 Cadre théorique de l interprétation abstraite
Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples
Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation impérative et structures de données simples Introduction au langage C Sandrine Blazy - 1ère année 24 octobre 2007 Cours d Algorithmique-Programmation
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
TP1 : Initiation à Java et Eclipse
TP1 : Initiation à Java et Eclipse 1 TP1 : Initiation à Java et Eclipse Systèmes d Exploitation Avancés I. Objectifs du TP Ce TP est une introduction au langage Java. Il vous permettra de comprendre les
Cours d Algorithmique et de Langage C 2005 - v 3.0
Cours d Algorithmique et de Langage C 2005 - v 3.0 Bob CORDEAU [email protected] Mesures Physiques IUT d Orsay 15 mai 2006 Avant-propos Avant-propos Ce cours en libre accès repose sur trois partis pris
Bases de programmation. Cours 5. Structurer les données
Bases de programmation. Cours 5. Structurer les données Pierre Boudes 1 er décembre 2014 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. Types char et
Introduction aux Machines Virtuelles avec VMKit
Introduction aux Machines Virtuelles avec Ingénieur :, Responsables : Gaël Thomas, Gilles Müller EQUIPE REGAL LIP6 INRIA (Paris/France) un substrat de machine virtuelle : a substrate for Managed Runtime
Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.
Encapsulation L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets. La visibilité dépend des membres : certains membres peuvent être visibles et d'autres
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
Auto-évaluation Programmation en Java
Auto-évaluation Programmation en Java Document: f0883test.fm 22/01/2013 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INTRODUCTION AUTO-ÉVALUATION PROGRAMMATION EN
La technologie Java Card TM
Présentation interne au CESTI La technologie Java Card TM [email protected] http://dept-info.labri.u-bordeaux.fr/~sauveron 8 novembre 2002 Plan Qu est ce que Java Card? Historique Les avantages
Info0804. Cours 6. Optimisation combinatoire : Applications et compléments
Recherche Opérationnelle Optimisation combinatoire : Applications et compléments Pierre Delisle Université de Reims Champagne-Ardenne Département de Mathématiques et Informatique 17 février 2014 Plan de
Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)
Modularité Extensions Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs) généricité modules de première classe : peuvent être
RN2-Programmation Orientée Objet - JAVA CH 1 Introduction à la POO et Java
RN2-Programmation Orientée Objet - JAVA CH 1 à la POO et Java Licence Professionnelle 2006 Agnès Guerraz INRIA Rhône-Alpes [email protected] LP UPMF, Grenoble Septembre 2006 Ce cours reprend en grande
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
Hiérarchie matériel dans le monde informatique. Architecture d ordinateur : introduction. Hiérarchie matériel dans le monde informatique
Architecture d ordinateur : introduction Dimitri Galayko Introduction à l informatique, cours 1 partie 2 Septembre 2014 Association d interrupteurs: fonctions arithmétiques élémentaires Elément «NON» Elément
Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :
Algorithmique et programmation : STRUCTURES DE DONNÉES A. Structure et enregistrement 1) Définition et rôle des structures de données en programmation 1.1) Définition : En informatique, une structure de
Java et les bases de données
Michel Bonjour http://cuiwww.unige.ch/~bonjour CENTRE UNIVERSITAIRE D INFORMATIQUE UNIVERSITE DE GENEVE Plan Introduction JDBC: API SQL pour Java - JDBC, Java, ODBC, SQL - Architecture, interfaces, exemples
Contexte et motivations Les techniques envisagées Evolution des processus Conclusion
Vérification de logiciels par analyse statique Contexte et motivations Les techniques envisagées Evolution des processus Conclusion Contexte et motivations Specification Design architecture Revues and
UE C avancé cours 1: introduction et révisions
Introduction Types Structures de contrôle Exemple UE C avancé cours 1: introduction et révisions Jean-Lou Desbarbieux et Stéphane Doncieux UMPC 2004/2005 Introduction Types Structures de contrôle Exemple
ASR1 TD7 : Un microprocesseur RISC 16 bits
{Â Ö Ñ º ØÖ Ý,È ØÖ ºÄÓ Ù,Æ ÓÐ ºÎ ÝÖ Ø¹ ÖÚ ÐÐÓÒ} Ò ¹ÐÝÓÒº Ö ØØÔ»»Ô Ö Óº Ò ¹ÐÝÓÒº Ö» Ö Ñ º ØÖ Ý»¼ Ö½» ASR1 TD7 : Un microprocesseur RISC 16 bits 13, 20 et 27 novembre 2006 Présentation générale On choisit
TPs Architecture des ordinateurs DUT Informatique - M4104c SUJETS. R. Raffin Aix-Marseille Université romain.raffin-at-univ-amu.fr
TPs Architecture des ordinateurs DUT Informatique - M4104c SUJETS R. Raffin Aix-Marseille Université romain.raffin-at-univ-amu.fr 2015 Table des matières 1 TP 1 : prise en main 2 1.1 Introduction.......................................................
Initiation. àl algorithmique et à la programmation. en C
Initiation àl algorithmique et à la programmation en C Initiation àl algorithmique et à la programmation en C Cours avec 129 exercices corrigés Illustration de couverture : alwyncooper - istock.com Dunod,
as Architecture des Systèmes d Information
Plan Plan Programmation - Introduction - Nicolas Malandain March 14, 2005 Introduction à Java 1 Introduction Présentation Caractéristiques Le langage Java 2 Types et Variables Types simples Types complexes
Java Licence Professionnelle CISII, 2009-10
Java Licence Professionnelle CISII, 2009-10 Cours 4 : Programmation structurée (c) http://www.loria.fr/~tabbone/cours.html 1 Principe - Les méthodes sont structurées en blocs par les structures de la programmation
modules & compilation
Programmation fonctionnelle avec OCaml 3ème séance, 19 mars 2015 modules & compilation [email protected] http ://www.loria.fr/ shornus/ocaml/ Modules Un module regroupe un ensemble de définitions
Modélisation des interfaces matériel/logiciel
Modélisation des interfaces matériel/logiciel Présenté par Frédéric Pétrot Patrice Gerin Alexandre Chureau Hao Shen Aimen Bouchhima Ahmed Jerraya 1/28 TIMA Laboratory SLS Group 46 Avenue Félix VIALLET
Arbres binaires de recherche
1 arbre des comparaisons 2 recherche dichotomique l'arbre est recalculé à chaque recherche 2 5 3 4 7 9 1 6 1 2 3 4 5 6 7 9 10 conserver la structure d'arbre au lieu de la reconstruire arbre binaire de
Algorithmique I. [email protected] [email protected] [email protected]. Algorithmique I 20-09-06 p.1/??
Algorithmique I [email protected] [email protected] [email protected] Télécom 2006/07 Algorithmique I 20-09-06 p.1/?? Organisation en Algorithmique 2 séances par semaine pendant 8 semaines. Enseignement
Plan du cours : Zippers. Des fonctions sur les listes avec position. Des fonctions sur les listes avec position
Plan du cours : Le problème : naviguer efficacement une structure de données Ce qui ne marche pas Ce qui marche : les de Huet Exemples Comment dériver des pour tout type de données Pour en savoir plus
ACTIVITÉ DE PROGRAMMATION
ACTIVITÉ DE PROGRAMMATION The purpose of the Implementation Process is to realize a specified system element. ISO/IEC 12207 Sébastien Adam Une introduction 2 Introduction Ø Contenu Utilité de l ordinateur,
Machines virtuelles Cours 1 : Introduction
Machines virtuelles Cours 1 : Introduction Pierre Letouzey 1 [email protected] PPS - Université Denis Diderot Paris 7 janvier 2012 1. Merci à Y. Régis-Gianas pour les transparents Qu est-ce qu une
Langage C. Patrick Corde. [email protected]. 22 juin 2015. Patrick Corde ( [email protected] ) Langage C 22 juin 2015 1 / 289
Langage C Patrick Corde [email protected] 22 juin 2015 Patrick Corde ( [email protected] ) Langage C 22 juin 2015 1 / 289 Table des matières I 1 Présentation du langage C Historique Intérêts
Initiation à l algorithmique
Informatique S1 Initiation à l algorithmique procédures et fonctions 2. Appel d une fonction Jacques TISSEAU Ecole Nationale d Ingénieurs de Brest Technopôle Brest-Iroise CS 73862-29238 Brest cedex 3 -
Langage et Concepts de ProgrammationOrientée-Objet 1 / 40
Déroulement du cours Introduction Concepts Java Remarques Langage et Concepts de Programmation Orientée-Objet Gauthier Picard École Nationale Supérieure des Mines de Saint-Étienne [email protected]
