Une bibliothèque de templates pour CUDA

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

Download "Une bibliothèque de templates pour CUDA"

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

Informatique légale : FPGA vs. GPU

Informatique légale : FPGA vs. GPU Informatique légale : FPGA vs. GPU Sylvain Collange, Yoginder S. Dandass, Marc Daumas et David Defour 03/06/2008 Problématiques Analyse de disque dur Recherche de contenu illégal connu Y compris dans des

Plus en détail

Introduction à la programmation // sur GPUs en CUDA et Python

Introduction à la programmation // sur GPUs en CUDA et Python Introduction à la programmation // sur GPUs en CUDA et Python Denis Robilliard Équipe CAMOME: C. Fonlupt, V. Marion-Poty, A. Boumaza LISIC ULCO Univ Lille Nord de France BP 719, F-62228 Calais Cedex, France

Plus en détail

Rappels, SISD, SIMD. Calculateurs hybrides (GPU-OpenCL) Rappels, MIMD mémoire partagée. Rappels, MIMD mémoire partagée. Rappels... SISD,...

Rappels, SISD, SIMD. Calculateurs hybrides (GPU-OpenCL) Rappels, MIMD mémoire partagée. Rappels, MIMD mémoire partagée. Rappels... SISD,... Rappels, SISD, SIMD Calculateurs hybrides (GPU-OpenCL) Rappels... SISD,... SIMD Formation d Ingénieurs de l Institut Galiléee MACS 3 Philippe d Anfray Philippe.d-Anfray@cea.fr CEA DSM 2013-2014 SISD :

Plus en détail

Solveur linéaire sur GPU

Solveur linéaire sur GPU Thomas JOST 1 Sylvain CONTASSOT-VIVIER 1,2 Stéphane VIALLE 1,3 1 Équipe AlGorille, LORIA 2 Université Henri Poincaré Nancy 1 3 Équipe IMS Supélec (Metz) 1 Introduction 2 Contraintes et algorithmes Structure

Plus en détail

TD - Programmation CUDA

TD - Programmation CUDA TD - Programmation CUDA P. Bakowski P.Bakowski 1 Terminologie de CUDA L'hôte. est le CPU, c'est lui qui demande au périphérique (le GPU) d'effectuer les calculs. P.Bakowski 2 Terminologie de CUDA Un kernel

Plus en détail

Utilisation d un compilateur pour évaluer la résistance des obfuscations de programmes C

Utilisation d un compilateur pour évaluer la résistance des obfuscations de programmes C 1 Utilisation d un compilateur pour évaluer la résistance des obfuscations de programmes C Stéphanie Riaud INRIA & DGA-MI Directrice de thèse : Sandrine Blazy 2 L obfuscation *Collberg] : une solution

Plus en détail

M2-Images. Rendu Temps Réel - OpenGL 4 et compute shaders. J.C. Iehl. December 18, 2013

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 :

Plus en détail

CATALOGUE DE FORMATIONS OPTIMISATION DE PERFORMANCE ET ARCHITECTURES PARALLÈLES

CATALOGUE DE FORMATIONS OPTIMISATION DE PERFORMANCE ET ARCHITECTURES PARALLÈLES CATALOGUE DE FORMATIONS OPTIMISATION DE PERFORMANCE ET ARCHITECTURES PARALLÈLES Trois types de formation LES FORMATEURS Les experts techniques AS+ Groupe EOLEN disposent d une réelle expérience pratique

Plus en détail

Algorithmes évolutionnaires sur. et GPU. Introduction : GPU et puissance calculatoire Principe du GPU : le pipeline

Algorithmes évolutionnaires sur. et GPU. Introduction : GPU et puissance calculatoire Principe du GPU : le pipeline Algorithmes évolutionnaires et GPU Introduction : GPU et puissance calculatoire Principe du GPU : le pipeline graphique Introduction au parallélisme de données Exemple de simulation Les langages de haut-niveau

Plus en détail

Architecture des GPU et principes de base de CUDA

Architecture des GPU et principes de base de CUDA M2 Informatique/SSSR - ALA Architecture des GPU et principes de base de CUDA Stéphane Vialle Stephane.Vialle@centralesupelec.fr http://www.metz.supelec.fr/~vialle Architecture des GPU et principes de base

Plus en détail

Introduction à MATLAB R

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

Plus en détail

Design, améliorations, et implémentations

Design, améliorations, et implémentations CPU et Mémoire Design, améliorations, et implémentations Techniques et caractéristiques modernes qui permettent de donner aux ordinateurs actuels toute leur puissance 1 Architectures CPU Design de l architecture

Plus en détail

FSAB 1402 - Suggestions de lecture

FSAB 1402 - Suggestions de lecture FSAB 1402 - Suggestions de lecture 2006 Concepts, techniques and models of computer programming Cours 1 - Intro Chapitre 1 (sections 1.1, 1.2, 1.3, pages 1-3) Introduction aux concepts de base Chapitre

Plus en détail

Système. Introduction aux systèmes informatiques

Système. Introduction aux systèmes informatiques Introduction aux systèmes informatiques Système Un système est une collection organisée d'objets qui interagissent pour former un tout Objets = composants du système Des interconnexions (liens) entre les

Plus en détail

1. Les fondements de l informatique 13

1. Les fondements de l informatique 13 Introduction à l'algorithmique 1. Les fondements de l informatique 13 1.1 Architecture de Von Neumann 13 1.2 La machine de Turing 17 1.3 Représentation interne des instructions et des données 19 1.3.1

Plus en détail

Soutenance de PFE. Evolution de l'outil EZTrace. Charles Aulagnon Inria Bordeaux (SED) Maître de stage : François Rué mars septembre 2011

Soutenance de PFE. Evolution de l'outil EZTrace. Charles Aulagnon Inria Bordeaux (SED) Maître de stage : François Rué mars septembre 2011 Soutenance de PFE Evolution de l'outil EZTrace Charles Aulagnon Inria Bordeaux (SED) Maître de stage : François Rué mars septembre 2011 ENSEIRB-MATMECA Tuteur : Corentin Travers Sommaire 1. EZTrace Contexte

Plus en détail

É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

Algorithmique - Techniques fondamentales de programmation Exemples en Python (nombreux exercices corrigés) - BTS, DUT informatique

Algorithmique - Techniques fondamentales de programmation Exemples en Python (nombreux exercices corrigés) - BTS, DUT informatique Introduction à l'algorithmique 1. Les fondements de l informatique 13 1.1 Architecture de Von Neumann 13 1.2 La machine de Turing 17 1.3 Représentation interne des instructions et des données 19 1.3.1

Plus en détail

Introduction à CUDA. gael.guennebaud@inria.fr

Introduction à CUDA. gael.guennebaud@inria.fr 36 Introduction à CUDA gael.guennebaud@inria.fr 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

Plus en détail

Programmation efficace des multicœurs Application a la visualisation scientifique

Programmation efficace des multicœurs Application a la visualisation scientifique Programmation efficace des multicœurs Application a la visualisation scientifique Marc Tchiboukdjian Doctorant 3e me anne e Jean-Philippe Nomine Encadrant CEA Vincent Danjean Directeur de the se Bruno

Plus en détail

Multi-processeurs, multi-cœurs, cohérence mémoire et cache

Multi-processeurs, multi-cœurs, cohérence mémoire et cache Multi-processeurs, multi-cœurs, cohérence mémoire et cache Intervenant : Thomas Robert Institut Mines-Télécom Parallélisme inter instructions n Exécution : une séquence d instructions appliquées à un 1

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

Objectifs. Architecture des Ordinateurs Partie III : Liens avec le système d exploitation. Au sommaire... Schéma général d un compilateur (1/8)

Objectifs. Architecture des Ordinateurs Partie III : Liens avec le système d exploitation. Au sommaire... Schéma général d un compilateur (1/8) Architecture des Ordinateurs Partie III : Liens avec le système d exploitation 2. Génération de code David Simplot simplot@fil.univ-lille1.fr Objectifs Voir la génération de code ainsi que les mécanismes

Plus en détail

Wrapping de code avec SWIG et Python

Wrapping de code avec SWIG et Python Wrapping de code avec SWIG et Python Matthijs Douze Motivation Passerelle Python-C SWIG Niveaux de langage Haut: temps de développement > temps d'exécution objectifs : compact, shell interactif, backtrace

Plus en détail

Formation C++ avancée

Formation C++ avancée Formation C++ avancée ou comment être les stars du C++ Raffi Enficiaud INRIA 16-18 février 2009 INRIA - IMEDIA Formation C++ avancée Organisation générale Enficiaud (INRIA) C++ 16-18/02/2009 2 / 201 À

Plus en détail

Les processeurs. Les entrées-sorties

Les processeurs. Les entrées-sorties Les entrées-sorties La problématique des entrées sorties est la suivante : - Le processeur va vite, plus vite que des éléments mécaniques tel que l on trouve dans une imprimante, une souris, un clavier.

Plus en détail

Implémentation et analyse des performances d algorithmes de calcul scientifique sur GPU

Implémentation et analyse des performances d algorithmes de calcul scientifique sur GPU Université de Liège Faculté des Sciences Appliquées Institut Montefiore Implémentation et analyse des performances d algorithmes de calcul scientifique sur GPU Marsic Nicolas Mémoire de fin d études réalisé

Plus en détail

Argument-fetching dataflow machine de G.R. Gao et J.B. Dennis (McGill, 1988) = machine dataflow sans flux de données

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

Plus en détail

1 Notions de base 1.1 Structure d'un programme

1 Notions de base 1.1 Structure d'un programme 1 Notions de base 1.1 Structure d'un programme Le langage C++ contient le langage C : tout programme écrit en C à la norme ANSI doit pouvoir être compilé par un compilateur C++. C++ fait la diérence entre

Plus en détail

INSTALLATION ET CONFIGURATION POUR LA PROGRAMMATION

INSTALLATION ET CONFIGURATION POUR LA PROGRAMMATION INSTALLATION ET CONFIGURATION POUR LA PROGRAMMATION PARALLELES SOUS WINDOWS I. PREPARATION DE L ENVIRONNEMENT Tous d abord il va vous falloir télécharger quelques logiciels afin de pouvoir commencer à

Plus en détail

Cours d Analyse, Algorithmique Elements de programmation

Cours d Analyse, Algorithmique Elements de programmation 1 de 33 Cours d Analyse, Algorithmique Elements de programmation Florent Hivert Mél : Florent.Hivert@lri.fr Adresse universelle : http://www.lri.fr/ hivert 2 de 33 Données et instructions Un programme

Plus en détail

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

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

Plus en détail

Portage et optimisation d applications de traitement d images sur architecture Kalray Mppa-Manycore Journées de la Compilation

Portage et optimisation d applications de traitement d images sur architecture Kalray Mppa-Manycore Journées de la Compilation Portage et optimisation d applications traitement d images sur architecture Kalray Mppa-Manycore Journées la Compilation Pierre Guillou Centre recherche en informatique Mines ParisTech 4 décembre 2013

Plus en détail

Practice HPC. Retour d expérience Xeon PHI. Février 2012. Damien DUBUC Expert HPC software. 28/03/2013 ANEO Tous droits réservés 1

Practice HPC. Retour d expérience Xeon PHI. Février 2012. Damien DUBUC Expert HPC software. 28/03/2013 ANEO Tous droits réservés 1 Retour d expérience Xeon PHI Damien DUBUC Expert HPC software Février 2012 28/03/2013 ANEO Tous droits réservés 1 Quel est notre rôle? Présenter o Gérer un portefeuille clients nécessitant des optimisations

Plus en détail

X. Juvigny. Septembre 2007

X. Juvigny. Septembre 2007 De C à C++ X Juvigny Septembre 2007 1 Introduction Outre les nouvelles possibilités en programmation orienté objet, le C++ offre de plus de nouvelles caractéristiques par rapport au langage C dont il est

Plus en détail

Tableaux dynamiques: vecteurs

Tableaux dynamiques: vecteurs Tableaux dynamiques: vecteurs Pour pallier les défauts inhérents à la rigidité des tableaux de taille fixe (built-in array), la librairie (générique) standard 1 de C++ fournit un type de donnée 2 dénommée

Plus en détail

Programmation récursive

Programmation récursive Année 2004-2005 F. Lévy IUT De Villetaneuse Dép t informatique Cours d'algorithmique 2 éme Année Cours 8 Programmation récursive 1. Qu'est-ce que la programmation récursive Définition : la programmation

Plus en détail

Architecture matérielle et logicielle

Architecture matérielle et logicielle Architecture matérielle et logicielle Contents I Le Cours 2 1 Généralités 2 2 Micro-processeur 2 3 Mémoire 2 4 Performances 3 II TPs 3 1 Création d un exécutable : 3 2 Les bibliothèques 3 3 Codage de l

Plus en détail

Programmation avancée

Programmation avancée Programmation avancée Chapitre 1 : Complexité et les ABR (arbres binaires de recherche) 1 1 IFSIC Université de Rennes-1 M2Crypto, octobre 2011 Plan du cours 1 2 3 4 5 6 7 8 9 10 Algorithmes Définition

Plus en détail

Benchmarks. Ensemble de codes permettant de tester la fonctionnalité et les performances d'une solution HPC dans son ensemble.

Benchmarks. Ensemble de codes permettant de tester la fonctionnalité et les performances d'une solution HPC dans son ensemble. Ensemble de codes permettant de tester la fonctionnalité et les performances d'une solution HPC dans son ensemble. (Merci à Ludovic Saugé) Françoise BERTHOUD, Francoise.Berthoud@grenoble.cnrs.fr Les benchmarks

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

Programme de la licence informatique, université de Caen http://www.info.unicaen.fr

Programme de la licence informatique, université de Caen http://www.info.unicaen.fr Programme de la licence informatique, université de Caen http://www.info.unicaen.fr Unité Systèmes d'information CM : 45h - TD : 60h - TP : 12h - Coeff 2 Systèmes de Gestion de Bases de Données Modéliser

Plus en détail

IRL : Simulation distribuée pour les systèmes embarqués

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

Plus en détail

Parallélisation Automatique

Parallélisation Automatique Parallélisation Automatique Paul Feautrier ENS de Lyon Paul.Feautrier@ens-lyon.fr 8 septembre 2008 1 / 23 Pourquoi la parallélisation automatique? Les gains de performances dus à la technologie s amenuisent

Plus en détail

Optimisation de code

Optimisation de code Optimisation de code Brique ASC Samuel Tardieu sam@rfc1149.net École Nationale Supérieure des Télécommunications Samuel Tardieu (ENST) Optimisation de code 1 / 77 But L optimisation cherche à améliorer

Plus en détail

Résumé Introduction Programmation Java

Résumé Introduction Programmation Java Résumé Introduction Programmation Java Concepts Un programme : séquence, test conditionnel, boucles. Objets : Les objets Java modélisent les objets d un problème donné Classe : Les objets sont crées à

Plus en détail

GPU, processeurs multi-coeurs et bio-informatique

GPU, processeurs multi-coeurs et bio-informatique GPU, processeurs multi-coeurs et bio-informatique Jean-Stéphane Varré jean-stephane.varre@lifl.fr Equipe BONSAI Université Lille 1 - LIFL -INRIA Qu est-ce que c est? Le processeur (CPU) La carte graphique

Plus en détail

Problématique des accès mémoires irréguliers causés par les maillages non structurés :

Problématique des accès mémoires irréguliers causés par les maillages non structurés : Problématique des accès mémoires irréguliers causés par les maillages non structurés :! étude comparative entre les machines massivement multicoeurs et les GPU Loïc Maréchal / INRIA! LJLL, Demi-Journée

Plus en détail

Les Systèmes d Exploitation: Concepts et Programmation

Les Systèmes d Exploitation: Concepts et Programmation Les Systèmes d Exploitation: d Concepts et Programmation Samia Bouzefrane MCF en Informatique, CNAM samia.bouzefrane@cnam.fr http://cedric.cnam.fr/~bouzefra Samia Bouzefrane, Cours SYSTEME 1 Introduction

Plus en détail

Une introduction au langage C++ Marc Jachym, Lurpa

Une introduction au langage C++ Marc Jachym, Lurpa Une introduction au langage C++ Marc Jachym, Lurpa Janvier 2008 À l origine, le langage C Langage procédural créé dans les années 1970 aux laboratoires Bell (ATT : télécoms américains) en vue d écrire

Plus en détail

RAPPORT DE STAGE Calcul parallèle sur GPU

RAPPORT DE STAGE Calcul parallèle sur GPU Université Joseph Fourier Département Licence Sciences & Technologie RAPPORT DE STAGE Calcul parallèle sur GPU D Aguanno Carlotta Laboratoire d accueil : INRIA Directeur du laboratoire : GROS Patrick Responsable

Plus en détail

2. Optimisation de l'exponentiation modulaire

2. Optimisation de l'exponentiation modulaire Timing attack et hyperthreading Les processeurs modernes sont de plus en plus compliqués et difficiles à mettre en œuvre. Qu en est il de la sécurité des implémentations? Peut on exploiter les avancées

Plus en détail

Algorithmique et Programmation (1/3)

Algorithmique et Programmation (1/3) Algorithmique et Programmation (1/3) Objectifs : Approfondir l'algorithmique abordée au premier semestre : nouveaux types de données (énumérations, types composés), algorithmes de recherche, algorithmes

Plus en détail

ParaView / VTK / HDF5 un cas d utilisation : SimSERT. RDataDev OSUG 10 Avril 2015 Yves Rogez

ParaView / VTK / HDF5 un cas d utilisation : SimSERT. RDataDev OSUG 10 Avril 2015 Yves Rogez ParaView / VTK / HDF5 un cas d utilisation : SimSERT RDataDev OSUG 10 Avril 2015 Yves Rogez ParaView / VTK / HDF5 un cas d utilisation : SimSERT 1. Contexte : CONSERT / ROSETTA 2. ParaView : Fonctionnalités,

Plus en détail

La programmation concurrente

La programmation concurrente La programmation concurrente Jean-Ferdy Susini Maître de Conférences - CNAM Département Informatique Sources : Android Developpers, Wikipedia Paris, 06/05/2015 Architecture matérielle 2 Considérons l architecture

Plus en détail

Programmation orientée objet : le cas de C++

Programmation orientée objet : le cas de C++ Ecole Doctorale MathIf Programmation orientée objet : le cas de C++ Violaine Louvet 1 1 ICJ - CNRS Année 2009-2010 Objectifs de ce cours Connaître et comprendre les concepts de la programmation orientée

Plus en détail

Principes de la programmation impérative

Principes de la programmation impérative Séquence d instructions Variables et types Types élaborés Procédures, arguments Gestion de la mémoire Langage compilé, interprété Principes de la programmation impérative Séquence d instructions Variables

Plus en détail

Comparaison entre une architecture matérielle dédiée et un GP-GPU pour l optimisation

Comparaison entre une architecture matérielle dédiée et un GP-GPU pour l optimisation Comparaison entre une architecture matérielle dédiée et un GP-GPU pour l optimisation Université de Bretagne-Sud Lab-STICC, Lorient, France ROADeF Troyes, France 13-15 Février 2013 1/22 Objectifs Après

Plus en détail

1. Eléments de base du langage C

1. Eléments de base du langage C 1 1. Eléments de base du langage C Généralités Programme et sous-programme Fonction C Structure d un programme C Vocabulaire de base et syntaxe Exemples 2 Généralités Crée en 1972 par D. Ritchie pour écrire

Plus en détail

Arithmétique des corps finis dans la bibliothèque LinBox

Arithmétique des corps finis dans la bibliothèque LinBox Arithmétique des corps finis dans la bibliothèque LinBox Pascal Giorgi & Gilles Villard Équipe Arénaire Laboratoire de l informa tique du parallélisme ENS lyon - CNRS - INRIA Introduction Il existe déjà

Plus en détail

Les architectures parallèles et leur programmation pour le calcul scientifique. Yves Denneulin

Les architectures parallèles et leur programmation pour le calcul scientifique. Yves Denneulin Les architectures parallèles et leur programmation pour le calcul scientifique Yves Denneulin Plan du cours Introduction au parallélisme Le parallélisme de données présentation illustration sur deux langages

Plus en détail

. Plan du cours. . Architecture: Fermi (2010-12), Kepler (12-?)

. 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

Plus en détail

Réalisation d un serveur CTI-CSTA sur TCP/IP

Réalisation d un serveur CTI-CSTA sur TCP/IP Alcôve http://www.alcove.fr 1/28 Réalisation d un serveur CTI-CSTA sur TCP/IP Julien Gaulmin Cette présentation est librement diffusable sous les termes de la GNU Free Documentation

Plus en détail

Programmation sur GPU avec CUDA

Programmation sur GPU avec CUDA Programmation sur GPU avec CUDA Initiation François Cuvelier Laboratoire d'analyse Géométrie et Applications Institut Galilée Université Paris XIII. 24 mars 2014 Cuvelier F. (Ecole Doctorale) Programmation

Plus en détail

Structures de données

Structures de données 1 de 52 Algorithmique Structures de données Florent Hivert Mél : Florent.Hivert@lri.fr Page personnelle : http://www.lri.fr/ hivert 2 de 52 Algorithmes et structures de données La plupart des bons algorithmes

Plus en détail

Analyse des textures en temps réel exploitant une architecture parallèle multi-coeurs et GPU

Analyse des textures en temps réel exploitant une architecture parallèle multi-coeurs et GPU Analyse des textures en temps réel exploitant une architecture parallèle multi-coeurs et GPU Moulay Akhloufi, MScA, MBA (moulay.akhloufi@crvi.ca ) Gilles Champagne (gilles.champagne@crvi.ca) Mario Jr Laframboise

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

Cours de compilation

Cours de compilation Cours de compilation 1 Introduction Un compilateur est un logiciel de traduction d un langage source vers un langage cible. D ordinaire le langage source est un langage de programmation évolué, comme C++

Plus en détail

Récupération automatique de la

Récupération automatique de la Récupération automatique de la mémoire 1 Plan 1. La gestion du tas. 2. Marquage et balayage. 3. Comptage de références. 4. Récupération par copie. 5. Compléments. 2 Problématique Le code exécutable généré

Plus en détail

Abstractions Performantes Pour Cartes Graphiques

Abstractions Performantes Pour Cartes Graphiques 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

Plus en détail

Optimisations des SGBDR. Étude de cas : MySQL

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

Plus en détail

Délégation GPU des perceptions agents : application aux boids de Reynolds

Délégation GPU des perceptions agents : application aux boids de Reynolds Délégation GPU des perceptions agents : application aux boids de Reynolds JFSMA 2015 LIRMM - Université de Montpellier - CNRS Emmanuel Hermellin, Fabien Michel {hermellin, fmichel}@lirmm.fr Mercredi 1

Plus en détail

Résultats des benchmarks de HPC1 après ajout de 100 cœurs. Date : 06/09/2012. Auteur : Ph Parnaudeau

Résultats des benchmarks de HPC1 après ajout de 100 cœurs. Date : 06/09/2012. Auteur : Ph Parnaudeau Résultats des benchmarks de HPC1 après ajout de 1 cœurs. Date : 6/9/212 Auteur : Ph Parnaudeau 1. Evolution de la configuration la plate forme de calcul du LJLL : HPC1 HPC1 1 Février 211 : UV1 est une

Plus en détail

Systèmes d exploitation. Introduction. (Operating Systems) http://www.sir.blois.univ-tours.fr/ mirian/

Systèmes d exploitation. Introduction. (Operating Systems) http://www.sir.blois.univ-tours.fr/ mirian/ Systèmes d exploitation (Operating Systems) Introduction SITE : http://www.sir.blois.univ-tours.fr/ mirian/ Systèmes d exploitation - Mírian Halfeld-Ferrari p. 1/2 Qu est-ce qu un SE? Ensemble de logiciels

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

Architecture matérielle

Architecture matérielle Architecture matérielle Jacques Madelaine 1 Modèle de Von Neumann Mémoire Périphérique d E/S Bus de données Bus d adresses Bus de commandes UC centrale (CPU Central Processing Unit) prend depuis la mémoire

Plus en détail

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

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

Plus en détail

Parallel Tree-based Exact Algorithms using Heterogeneous Many and Multi-core Computing for Solving Challenging Problems in Combinatorial Optimization

Parallel Tree-based Exact Algorithms using Heterogeneous Many and Multi-core Computing for Solving Challenging Problems in Combinatorial Optimization Parallel Tree-based Exact Algorithms using Heterogeneous Many and Multi-core Computing for Solving Challenging Problems in Combinatorial Optimization Rudi Leroy Encadrement : N. Melab (Univ. Lille 1),

Plus en détail

Demande d attribution de ressources informatiques. Sur le Centre de Calculs Interactifs de l Université de Nice Sophia-Antipolis

Demande d attribution de ressources informatiques. Sur le Centre de Calculs Interactifs de l Université de Nice Sophia-Antipolis Demande d attribution de ressources informatiques Sur le Centre de Calculs Interactifs de l Université de Nice Sophia-Antipolis Titre du projet : Nom du laboratoire : Nom de l établissement hébergeur :

Plus en détail

Projets, Algorithmique, C++, Théorie des Jeux

Projets, Algorithmique, C++, Théorie des Jeux Table des matières Projets, Algorithmique, C++, Théorie des Jeux Guerre des blobs 1 Enoncé du mini-projet 3 1.1 Objectif................................................. 3 1.2 Contraintes...............................................

Plus en détail

Introduction au langage Java

Introduction au langage Java Introduction au langage Java Nicolas Dumoulin nicolas.dumoulin@cemagref.fr Cemagref Laboratoire d ingénierie pour les systèmes complexes 2010 Notes aux lecteurs Ce document est un support de cours qui

Plus en détail

C, seconde séance. le if then else n est pas une expression, mais une instruction ( Caml) se souvenir de:

C, seconde séance. le if then else n est pas une expression, mais une instruction ( Caml) se souvenir de: C, seconde séance le if then else n est pas une expression, mais une instruction ( Caml) se souvenir de: false, c est 0 ( \0 aussi) test d égalité: == pour printf: %d entier, %f flottant, %c caractère,

Plus en détail

C ellules. Gestion et récupération automatique de mémoire. Principes des lang. de progr. INE 11. Allocation dynamique de mémoire.

C ellules. Gestion et récupération automatique de mémoire. Principes des lang. de progr. INE 11. Allocation dynamique de mémoire. Principes des lang. de progr. INE 11 Michel Mauny ENSTA ParisTech Prénom.Nom@ensta.fr Michel Mauny (ENSTA ParisTech) INE 11 Prénom.Nom@ensta.fr 1 / 37 Gestion et récupération automatique de mémoire lanage

Plus en détail

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

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

Plus en détail

Analyse statique de programmes Typage et analyse statique au sein de Java

Analyse statique de programmes Typage et analyse statique au sein de Java Analyse statique de programmes Typage et analyse statique au sein de Java Master Professionnel Informatique spécialité FSIL/FSI Jean-Marc Talbot jean-marc.talbot@lif.univ-mrs.fr Aix-Marseille Université

Plus en détail

partie en parallèle : Programmation système et réseau du point de vue «Multiprocessus Plan

partie en parallèle : Programmation système et réseau du point de vue «Multiprocessus Plan 2 ème LST Info&Miage partie en parallèle : Programmation système et réseau du point de vue «Multiprocessus» Chapitre : Introduction à la Concurrence entre processus & Exclusion Mutuelle Chapitre 2 : Coopération

Plus en détail

Comparaison de MPI, OpenMP et MPI+OpenMP sur un nœud multiprocesseur multicœurs AMD à mémoire partagée.

Comparaison de MPI, OpenMP et MPI+OpenMP sur un nœud multiprocesseur multicœurs AMD à mémoire partagée. RenPar 19 / SympA 13 / CFSE 7 Toulouse, France, du 9 au 11 septembre 2009 Comparaison de MPI, OpenMP et MPI+OpenMP sur un nœud multiprocesseur multicœurs AMD à mémoire partagée. Khaled Hamidouche, Franck

Plus en détail

Plan. Cours 4 : Méthodes d accès aux données. Architecture système. Objectifs des SGBD (rappel)

Plan. Cours 4 : Méthodes d accès aux données. Architecture système. Objectifs des SGBD (rappel) UPMC - UFR 99 Licence d informatique 205/206 Module 3I009 Cours 4 : Méthodes d accès aux données Plan Fonctions et structure des SGBD Structures physiques Stockage des données Organisation de fichiers

Plus en détail

Résumé du document «Programmes des classes préparatoires aux Grandes Écoles ; Discipline : Informatique ; Première et seconde années - 2013»

Résumé du document «Programmes des classes préparatoires aux Grandes Écoles ; Discipline : Informatique ; Première et seconde années - 2013» Résumé du document «Programmes des classes préparatoires aux Grandes Écoles ; Discipline : Informatique ; Première et seconde années - 2013» I Objectifs Niveau fondamental : «on se fixe pour objectif la

Plus en détail

Langage Élémentaire Algorithmique Spécifications du langage

Langage Élémentaire Algorithmique Spécifications du langage Langage Élémentaire Algorithmique Spécifications du langage Lionel Clément Version provisoire Novembre 2012 Le but de ce projet est de livrer un compilateur pour un langage élémentaire algorithmique (Léa).

Plus en détail

Parallélisme. Cours 1

Parallélisme. Cours 1 Parallélisme Cours 1 TD : 20% - TP : 30% - Examen : 50% Feuille A4 manuscrite (pas de photocopie) Fabrice.Huet@etu.unice.fr (prendre rdv par mail pr le contacter) A quoi sert le parallélisme? Augmenter

Plus en détail

3ETI, Examen [CSC2] Developpement Logiciel en C CPE Lyon

3ETI, Examen [CSC2] Developpement Logiciel en C CPE Lyon 3ETI, Examen [CSC2] Developpement Logiciel en C CPE Lyon 2012-2013 (2eme session) durée 2h Tous documents et calculatrices autorisés. Le sujet comporte 6 pages Le temps approximatif ainsi que le barème

Plus en détail

Instructions assembleur

Instructions assembleur Instructions assembleur 0001011011110110 0001011101101101 10001001 Instruction vue par le programmeur assembleur ou instruction élémentaire cible d'un compilateur Réalise une modification de l'état interne

Plus en détail

Semaine 6 : La notation For

Semaine 6 : La notation For Semaine 6 : La notation For Les fonctions d'ordre supérieur telles que map, atmap ou lter fournissent des constructions puissantes pour manipuler les listes. Mais parfois le niveau d'abstraction requis

Plus en détail

Vérification formelle d un modèle mémoire pour le langage C

Vérification formelle d un modèle mémoire pour le langage C Vérification formelle d un modèle mémoire pour le langage C Projet ANR ARA SSIA CompCert (http://compcert.inria.fr) Sandrine Blazy, Xavier Leroy CEDRIC-ENSIIE et INRIA Rocquencourt CEA-LIST, 18 mars 2008

Plus en détail

Algorithmique et Programmation, IMA 3

Algorithmique et Programmation, IMA 3 Algorithmique et Programmation, IMA 3 Cours 4 : Vecteurs/Tableaux Université Lille 1 - Polytech Lille Vecteurs et Tableaux Algorithmes sur les tableaux d entiers Algorithmes de mots Tableaux2d - Matrices

Plus en détail

Outils d analyse de performance pour le HPC

Outils d analyse de performance pour le HPC Outils d analyse de performance pour le HPC François Trahay Master MOPS Décembre 2013 Plan 1 Introduction.................................................................... 3 2 Outils de profiling..............................................................10

Plus en détail

DEMARCHE ET MISE EN ŒUVRE

DEMARCHE ET MISE EN ŒUVRE Chapitre I : CONVENTIONS D ECRITURE 15 CHAPITRE I DEMARCHE ET MISE EN ŒUVRE Le développement de fonctions mathématiques peut répondre à plusieurs critères ou objectifs tels que la vitesse d exécution,

Plus en détail

Gestion mémoire et Représentation intermédiaire

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,

Plus en détail