GPGPU. Cours de MII 2

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

Download "GPGPU. Cours de MII 2"

Transcription

1 GPGPU Cours de MII 2 1

2 GPGPU Objectif du cours : Comprendre les architectures GPU Comprendre la programmation parallèle sur GPU Maîtriser la programmation Cuda Contenu : 1 ou 2 cours magistraux 2 ou 3 séances de TP Notations : 1 projet & TP notés 2

3 GPGPU Plan 1. Introduction 2. Architecture 3. GPGPU on the GPU 4. GPGPU via Cuda 5. Exemple et optimisation 3

4 GPGPU 1. Introduction 4

5 History of 3D 5

6 History of 3D 6

7 The way it uses to be... Fixed Function Pipelines (DX7) Writing new rendering algorithms means Tricks with multitexture, stencil buffer, depth buffer, blending Examples Stencil shadow volumes Hidden line removal... 7

8 The way it uses to be... The fixed function pipeline 8

9 The way it uses to be... Programmable Shaders (DX8-10) Writing new rendering algorithms means Tricks with stencil buffer, depth buffer, blending Plus: Writing shaders Examples User-defined materials User-defined lights User-defined data structures (built in texture memory) 9

10 The way it uses to be... Programmable pipeline 10

11 The way it begins to be... Software Graphics: Part I (DX11) Writing new rendering algorithms means Tricks with stencil buffer, depth buffer, blending Plus: Writing shaders Plus: Writing data-and task-parallel algorithms Analyze results of rendering pipeline Synthesize data structures Examples Dynamic summed area table Dynamic quadtree adaptive shadow map Dynamic histogram-analysis shadow map Dynamic ambient occlusion 11

12 Examples (DX 11) Dynamic Ambient Occlusion and Indirect Lighting, Bunnell, GPU Gems II, 2005 Real-Time Approximate Sorting for Self Shadowing and Transparency in Hair Rendering, Sintornet al., I3D 2008 Fast Summed- Area Table Generation and its Applications, Hensley et al., Eurographics

13 The way it begins to be... Software Graphics: Part II (DX11+) Writing new rendering algorithms means Tricks with stencil buffer, depth buffer, blending Plus: Writing shaders Plus: Writing data-and task-parallel algorithms Plus: Creating new and extended rendering pipelines Examples Micropolygon rendering Ray tracing pipelines 13

14 Examples CUDA inside OptiX, NVIDIA 2008 RenderAnts: Interactive Reyes Rendering on GPUs, Zhou et al., ACM SIGGRAPH Asia CUDA inside Hardware-Accelerated Global Illuminationby Image Space Photon Mapping, McGuire and Luebke, HPG 09 FreePipe: a Programmable Parallel Rendering Architecture for Efficient Multi-Fragment Effects, Liu et 14al., ACM SIGGRAPH 2010

15 The way it will be... Render to Data Structures DX11 Atomics to global memory Gather/scatter to memory ( unordered access views Order independent transparency Capture all rendered fragments PixelShader5 Render directly to grid-of-lists data structure instead of FB No framebuffer bound while rendering Increment global counter to get unique address for fragment Result is grid of linked lists Sort and blend lists for final image (pixel shader or compute shader) 15

16 The way it will be... 16

17 GPU Programming? GPU stands for Graphics Processing Unit Simply It is the processor that resides on your graphics card. GPUs allow us to achieve the unprecedented graphics capabilities now available in games 17

18 CPU vs GPU Why use GPU? 18

19 CPU vs GPU A quiet revolution and potential build-up Calculation: Memory 367 GFLOPS vs. 32 GFLOPS Bandwidth: 86.4 GB/s vs. 8.4 GB/s Until last couple years, programmed through graphics API GPU in every PC and workstation massive volume and potential impact 19

20 GPU Programming? How has this comes about? Game design has become ever more sophisticated. Fast GPUs are used to implement complex shader and rendering operations for real-time effects. In turn, the demand for speed has led to ever-increasing innovation in card design. The NV40 architecture has 225 million transistors, compared to about 175 million for the Pentium 4 EE 3.2 Ghz chip. The gaming industry has overtaken the defense, finance, oil and healthcare industries as the main driving factor for high performance processors. 20

21 GPU Programming? GPU speed increasing at cubed-moore s Law. This is a consequence of the data-parallel streaming aspects of the GPU. GPUs are cheap! Put a couple together, and you can get a super-computer Warning! Various granularities of parallelism exist, but programming model must not hinder parallel implementation data delivery needs careful management 21

22 Wealth of applications Data Analysis Motion Planning Voronoi Diagrams Particle Systems Force-field simulation Molecular Dynamics Graph Drawing Geometric Optimization Physical Simulation Matrix Multiplication Database queries Conjugate Gradient Sorting and Searching Range queries Image Processing Signal Processing Finance Optimization Planning Radar, Sonar, Oil Exploration and graphics too!!

23 Wealth of applications

24 GPU Programming? A Unifying theme: Streaming All the graphics language models share basic properties: 1. They view the frame buffer as an array of pixel computers, with the same program running at each pixel (SIMD) 2. Fragments are streamed to each pixel computer 3. The pixel programs have limited state. All the GPGPU language works the same 1. They view problem as an array of threads 2. Data elements are streamed to each thread 3. The threads have limited memory / computing power 24

25 Stream programming? A stream is a sequence of data could be numbers, colors, RGBA vectors, A kernel is a (fragment) program runs on each element of a stream generating an output stream (pixel buffer) 25

26 Stream programming? Two main ways of doing stream programming The pure GPU way Using the graphic programmable pipeline Language : Cg, HLSL, GLSL The GPGPU way Using high level abstraction library Language : BrookGPU, CUDA, OpenCL 26

27 Stream program on GPU Kernel vertex/fragment Input stream stream of fragments or vertices or texture data Output stream frame program buffer or pixel buffer or texture Multiple kernels multi-pass rendering sequence on the GPU 27

28 Stream program on GPGPU Kernel User defined function Input stream Stream Output stream Stream of any data (float mainly) of any data (float mainly) Multiple kernels Multi-pass execution of kernel on the GPU with synchronization 28

29 Stream programming To program the GPU, one must think of it as a (parallel) stream processor. 29

30 GPGPU 2. Architecture 30

31 GPU Architecture Nomenclature : Kernel : treatment unit Thread Host : a single processing unit : application hardware (CPU) Device : coprocessor hardware (GPU) 31

32 Architecture GeForce 7800 GTX 8 Vertex Engines Z-Cull Triangle Setup/Raster Shader Instruction Dispatch Fragment Crossbar Memory Partition Memory Partition 24 Pixel Shaders 16 Raster Operation Pipelines Memory Partition Memory Partition 32

33 Architecture G80 graphic mode The future of GPU is programmable processing? Build the architecture around the processor Host Input Assembler Setup / Rstr / ZCull SP SP SP TF SP TF SP TF L1 SP SP L1 SP TF SP SP SP TF L1 L2 FB SP TF L1 L1 L2 FB Pixel Thread Issue SP TF L2 FB SP SP TF L1 L2 FB SP Geom Thread Issue L1 L2 FB Thread Processor Vtx Thread Issue L1 L2 FB 33

34 Architecture G80 CUDA mode Processors execute computing threads New operating mode/hw interface for computing Host Input Assembler Thread Execution Manager Parallel Data Cache Parallel Data Cache Texture Texture Load/store Parallel Data Cache Texture Load/store Parallel Data Cache Texture Parallel Data Cache Texture Load/store Parallel Data Cache Texture Load/store Global Memory Parallel Data Cache Texture Load/store Parallel Data Cache Texture Texture Load/store 34

35 GPU Architecture What is behind such an evolution? GPU specialized for compute-intensive, highly data parallel computation (exactly what graphics rendering is about) So, more transistors can be devoted to data processing rather than data caching and flow control 35

36 GPU Architecture Pipeline/Architecture of GPU (graphic mode) 36

37 GPGPU Architecture Each «processor unit» can host a thread Kernel are launch on arrays of thread Each thread runs the same code (SPMD) Each thread has an ID that it uses to compute memory addresses and make control decisions threadid float x = input[threadid]; float y = func(x); output[threadid] = y; 37

38 GPGPU Architecture Kernel : grid of blocks All thread share a single memory space Blocks : batch of threads Cooperates through Execution synchronization Shared memory Thread in different blocks cannot cooperate 38

39 GPGPU Architecture How can we distinct a thread from one other? Each Device Grid 1 thread has an Id Can decide what data to work with Each block has also an Id Block (0, 0) Block (1, 0) Block (2, 0) Block (0, 1) Block (1, 1) Block (2, 1) Block (1, 1) Thread Thread Thread Thread Thread (0, 0) (1, 0) (2, 0) (3, 0) (4, 0) Thread Thread Thread Thread Thread (0, 1) (1, 1) (2, 1) (3, 1) (4, 1) Thread Thread Thread Thread Thread (0, 2) (1, 2) (2, 2) (3, 2) (4, 2) 39

40 GPGPU Architecture Blocks can be 1D or 2D Means Id are 1D or 2D Grid 1 Threads can be 1, 2 or 3D Means Device Id are the same Simplifies memory addressing when processing multidimensional data Image processing Solving PDE on volumes... Block (0, 0) Block (1, 0) Block (2, 0) Block (0, 1) Block (1, 1) Block (2, 1) Block (1, 1) Thread Thread Thread Thread Thread (0, 0) (1, 0) (2, 0) (3, 0) (4, 0) Thread Thread Thread Thread Thread (0, 1) (1, 1) (2, 1) (3, 1) (4, 1) Thread Thread Thread Thread Thread (0, 2) (1, 2) (2, 2) (3, 2) (4, 2) 40

41 Memory Comparison CPU memory vs. GPU one CPU Memory : At any program point Allocate/free Random local or global memory memory access Registers Local Read/write memory Global Read/write to stack memory Read/write to heap Read/write to disk Disk 41

42 GPU Memory GPU Memory : restricted acces Allocate/free Limited memory only before computation memory access during computation (kernel) Registers Local memory Read/write Read/write Shared Memory Only available in GPGPU not Graphics pipeline 42

43 GPU Memory Global memory Virtual Memory Read-only during computation Write-only at end of computation Read/write in GPGPU world only Does not exist! Disk access Does not exist! 43

44 GPU Memory Where is GPU data stored Vertex buffer Frame buffer Texture Texture Vertex Buffer Vertex Processor Rasterizer Fragment Processor Frame Buffer(s) 44

45 GPU Memory Vertex buffer Store geometric and radiometric data Framebuffer Store image based data (color, depth, stencil...) Texture Store any kind of information (color, normal, radiometric data...) 45

46 GPGPU Memory Acces also restricted (Device) Grid Each thread can: Block (0, 0) R/W per-thread registers R/W per-thread local memory Shared Memory R/W per-block shared memory R/W per-grid global memory Read only per-grid constant memory Read only per-grid texture memory Block (1, 0) Host Registers Registers Shared Memory Registers Registers Thread (0, 0) Thread (1, 0) Thread (0, 0) Thread (1, 0) Local Memory Local Memory Local Memory Local Memory Global Memory Constant Memory Texture Memory 46

47 GPGPU Memory The host can R/W global, constant, and texture memories (Device) Grid Block (0, 0) Block (1, 0) Shared Memory Registers Host Registers Shared Memory Registers Registers Thread (0, 0) Thread (1, 0) Thread (0, 0) Thread (1, 0) Local Memory Local Memory Local Memory Local Memory Global Memory Constant Memory Texture Memory 47

48 GPGPU Memory Global memory : Long latency accesses! Main means of communicating R/W Data between host and device Contents visible to all threads Constant and texture memories Constant initialized by host Contents visible to all threads 48

49 GPGPU Memory Per thread local memory Register Per block memory Shared memory Global memory 49

50 GPGPU 3. GPGPU on the GPU 50

51 GPGPU 3. GPGPU on the GPU 3.1 les shaders 51

52 Cartes graphiques programmable Deux emplacements majeurs programmables 52

53 Les shaders Deux types de programmes : Les vertex program Les fragment program Intérêt : Adaptabilité De du rendu nouveaux rendus (rapides!) : Autres Matériaux réalistes, Milieux participants, Éclairage par fragment, Ombre, Éclairage réaliste calculs que le rendu Calcul matriciel, Lancer de rayon, Silhouette, Traitement d images, Animation 53

54 Les shaders Intérêts? 54

55 Les shaders 55

56 Les shaders Les vertex program : Informations Sommet Textures VERTEX PROGRAM Variables génériques sommet Information sommet à interpoler dont position, taille des points, clip 56

57 Les shaders Les fragment program : Informations fragment Textures FRAGMENT PROGRAM Couleur du fragment Profondeur du fragment dont position (image) et front_facing Variables génériques fragment 57

58 Les shaders Langage particulier pour piloter les programmes Assembleur Dépendent de la carte (ATI / Nvidia) Pénible à écrire à la main Code optimisé Langages haut niveau au dessus de ces assembleurs Appelés shaders les shading languages : langages de 58

59 Les shaders Historique des langages de shader Shading language : indépendant des cartes graphiques Sorte d'unité programmable atomique Renderman Shading Language (Renderman 88) Adapté au lancer de rayon & rendu photoréaliste Adresse 5 shaders différents : light, displacement, surface, volume et imager ISL : Interactive Shading Language (SGI 00) Encore plus haut niveau. Génère des passes de rendu en OpenGL S adresse directement à des instructions OpenGL 59

60 Les shaders Historique des langages de shader HLSL Très proche de OpenGLSL : syntaxe, vertex & fragment Adresse DirectX Le shader n est pas compilé par le driver Cg : High-Level Shader Language (Microsoft 02) : C graphic (Nvidia 02) Très très similaire à HLSL (développé conjointement avec Microsoft) Ajout d une couche librairie (Cg runtime library) Adresse OpenGL et Direct X OpenGLSL (OpenGL 03) Décrit par la suite 60

61 GPGPU 3. GPGPU on the GPU 3.2 OpenGLSL 61

62 GLSL : introduction OpenGLSL : un langage de shader libre Propriétés Lien et intégration simple avec Open GL Flexible aux futures évolutions des cartes graphiques Indépendant du hardware Conserve les performances des cartes graphiques Langage simple à utiliser Convient à la norme OpenGL ARB (Arch. Review Board) Permet les futures parallélisations dans les cartes graphiques Simple à optimiser (donc langage simple) 62

63 GLSL : introduction Caractéristiques : Syntaxe identique à celle du C / C++ Nouveaux types de données : Vecteurs Matrices Fragment de texture Existence de variables et fonctions prédéfinies Opérateurs surchargés Pas de pointeur ni de référence Pas de promotion (cast) implicite Passage d argument par valeur 63

64 GLSL : introduction Architecture : Application Code source shader OpenGL API OpenGL Driver Compilat eur Objet shader Code compilé Link er Objet programme Code exécutable Carte graphique 64

65 GLSL : introduction Avantages : Colle à OpenGL Compilation à l exécution Indépendant du hardware Compilation par le driver => Meilleures performances Standard open source Fonctionne pour tout processus graphiques Donc peut être dans le futur les dernières parties non programmable Pas besoin de librairie supplémentaire 65

66 GLSL : Types Types disponibles : Scalaires : int / float / bool int : de à bool : true ou false Vecteurs vec2, vec3, vec4 : vecteur en float à 2, 3 ou 4 composantes ivec2, ivec3, ivec4 : idem mais avec des entiers bvec2, bvec3, bvec4 : idem mais avec des booléens Accès aux composantes 1, 2, 3 ou 4 du vecteur vec par vec.x / vec.y / vec.z / vec.w Accès identique : Créé pour des questions de lisibilité vec.r / vec.g / vec.b / vec.a position, couleur, texture vec.s / vec.t / vec.p / vec.q Comme un tableau : vec[0] / vec[1] / vec[2] / vec[3] 66

67 GLSL : Types Matrices mat2, mat3, mat4 : Matrice 2x2, 3x3 et 4x4 de float Organisé en colonne Accès aux colonnes d une matrice mat : mat[0] / mat[1] / mat[2] / mat[3] : 1, 2, 3 et 4ème colonne Accès à un élément de mat : mat[0][2] : 3ème élément de la 1ère colonne Sampler Type permettant un accès à une texture Ne demande aucune connaissance de la façon dont est définie la texture Le shader ne peut définir de Sampler. Il les récupère directement de l application. 67

68 GLSL : Types Sampler Ne peut être modifié par le shader Les différents types : sampler1d : accès à une texture 1D sampler2d : accès à une texture 2D sampler3d : accès à une texture 3D samplercube : accès à une texture cubique sampler1dshadow : accès à une texture 1D de profondeur avec comparaison des profondeurs Sampler2DShadow : idem avec une texture 2D 68

69 GLSL : structures Tableaux Déclarés taille];; classiquement : type nom[taille La taille est optionnelle, peut être calculée à la compilation : vec4 vec4 pts[]; pts[]; pts[0] pts[0] == vec4(0,0,0,0); vec4(0,0,0,0); pts[6] pts[6] == vec4(1,0,0,0); vec4(1,0,0,0); // // pts pts est est de de taille taille 77 Redimensionnement explicite ou implicite illégal : vec4 vec4 pts[]; pts[]; vec4 vec4 pts[10]; pts[10]; vec4 vec4 pts[20]; pts[20]; // // Illégal Illégal pts[20] pts[20] == vec4(0,0,0,0); vec4(0,0,0,0); // // Illégal Illégal 69

70 GLSL : structures Structure Syntaxe Exemple : : struct struct nom_structure nom_structure {{ type type champs champs; }} struct struct kernel3x3 kernel3x3 {{ size size ponderation; ponderation; float float coef[9]; coef[9]; }} Peuvent être emboîtées et encapsulées Peuvent contenir tous les types précédents S utilisent directement sans le mot clé struct kernel3x3 kernel3x3 blur; blur; 70

71 GLSL : constructeurs «Constructeurs» (initialisation) Scalaire float a,b=3.0,c; a,b=3.0,c; : comme en C : float Autres types : utilisation de constructeur Similaire à un appel de fonction Autant d argument que de valeur à initialiser Exemple : vec4 v = vec4(1.0,2.0,0.0,1.0); kernel3x3 blur = blur(1./9.,{0.0f}); Cas particulier : Constructeur vecteur avec 1 float : remplissage Constructeur matrice avec 1 float : matrice diagonale 71

72 GLSL : conversions Conversions : vers bool : 0 ou 0.0 => false sinon true de bool : false => 0 / true => 1 Vecteur à Vecteur : La source doit avoir un nombre de composante > destination Affectation dans l ordre. Les termes restants ne sont pas utilisés Vecteur Remplissage dans l ordre de la matrice (colonne major) Matrice à Matrice : à Matrice : Lecture, remplissage en colonne major 72

73 GLSL : qualifiers Qualificatifs de variables (qualifiers) : attribute : Variables correspondant à ce qui est injecté fréquemment dans le pipe line : sommets, normales Accessible en lecture uniquement Réservé au vertex program Sont forcément des flottants : float, vecteur ou matrice Certaines variables prédéfinies uniform : Variables correspondant à des données ne changeant pas fréquemment (au maximum 1 fois par primitive) Accessible en lecture uniquement Certaines variables prédéfinies Commun aux vertex et fragment program 73

74 GLSL : qualifiers Qualificatifs de variables (qualifiers) : varying Interface entre le vertex program et le fragment program Accessible en écriture dans le vertex shader Accessible en lecture dans le fragment shader Interpolation entre le vertex et le fragment sur la primitive const : Constante : initialisation obligatoire et accessible en lecture sans : qualificateur : Variable temporaire : accessible en lecture et écriture Défini pour un program donné (vertex ou fragment) 74

75 GLSL : flux de données Les vertex program : prédéfinies gl_vertex, gl_normal définies par utilisateur Attribute Uniform VERTEX PROGRAM Textures prédéfinies gl_modelviewmatrix gl_lightsource[0..n] définies par l utilisateur Varying prédéfinies gl_frontcolor gl_fogfragcolor spéciales : gl_position, gl_pointsize gl_clipvertex définies par l utilisateur 75

76 GLSL : flux de données Fragment program Varying prédéfinies gl_color gl_texcoord[0..n] spéciales : gl_fragcoord gl_frontfacing définies par l utilisateur Uniform Textures FRAGMENT PROGRAM prédéfinies gl_modelviewmatrix gl_lightsource[0..n] définies par l utilisateur Spéciales gl_fragcolor, gl_fragdepth 76

77 GLSL : flux d'instructions Chaque programme possède un main Quasiment strictement identique au C if else / while / do while / for break / continue Pas de switch, pas de goto Fonctions : identique au C sauf Passage par valeur et référence : qualificateurs in : passage par valeur out : accessible en écriture seulement (copié à la fin) inout : passage par référence (copié au début et à la fin) const : ne peut être écrit, utilisable uniquement avec in 77

78 GLSL : opérations Similaires à celles du C Arithmétiques Logiques : +, -, *, / : &&,, ^^,!, <, >, <=, >=, Affectation : =, +=, -=, *=, /=, ++, - Sélection :., [],?: ==,!= Opérations sur les vecteurs & matrices Pas d opérateur logique (fonctions prédéfinies) Opérations composant par composant SAUF : vecteur * matrice : transposée du vecteur fois la matrice matrice * vecteur : l opération classique matrice vecteur 78

79 GLSL : opérations Sélection composantes d un vecteur : swizling Trois groupes de sélection : xyzw, rgba ou stpq On peut les composer / ordonner / restreindre à loisir vec4 v = vec4(1.0,2.0,0.0,3.0); v4.rgba; // vecteur à 4 composantes identique à v4 v4.xy; // vecteur à 2 composantes (1.0,2.0) v4.psq; // vecteur à 3 composantes (0.0,1.0,3.0) v4.g; // C est un float v4.xyba; // Illégal vec4 dup=v4.rraa; // dup = vec4(1.0,1.0,3.0,3.0) dup.xzyw = v4.xxzz;// dup = vec4(1.0,0.0,1.0,0.0) dup.xxzz = v4; // Illégal 79

80 GPGPU 3. GPGPU on the GPU 3.3 Lien avec l'application 80

81 Shader & pipeline Le lien se fait par les variables! L application envoie dans le pipe line : Des primitives : constituées de vertex ou données Ce seront les variables attribute L état de la machine OpenGL : Variables prédéfinies comme les lumières ou la couleur du brouillard Variables définies par l application Ce sont les variables uniform 81

82 Shader & pipeline Vertex Shader Remplace complètement le pipe line classique Variables attribute prédéfinies : Reçue par des appels standard à des fonctions OpenGL Prédéfinies : gl_position : correspond à glvertex3f( ) gl_normal : correspond à glnormal3f( ) gl_color : correspond à glcolor3f( ) gl_secondarycolor : correspond à glsecondarycolor3f( ) gl_multitexcoord0 : correspond à gltexcoord2f( ) / glmultitexcoord( ) 82

83 Shader & pipeline Vertex Shader Variables Utilisation de glvertexattribarb Voir dans la partie suivante Variables uniform prédéfinies Cf. ci-après Variable attribute définies par l utilisateur : uniform définies par l utilisateur Utilisation de gluniformarb Voir dans la partie suivante 83

84 Shader & pipeline Vertex Shader Variables Variable gl_position Doit impérativement être écrite C est un vec4 Variable gl_pointsize varying spéciales : Taille du point : optionnel C est un float Variable gl_clipvertex Coordonnées du point pour le clipping : optionnel C est un vec4 84

85 Shader & pipeline Vertex Shader Variables vec4 gl_frontcolor vec4 gl_backcolor vec4 gl_frontsecondarycolor vec4 gl_backsecondarycolor vec4 gl_texcoord[0..n] float gl_fogfragcoord Variables varying prédéfinies : varying définies par l utilisateur Rien à faire coté application. Tout est géré dans le driver 85

86 Shader & pipeline Fragment Shader Les varying arrivent après interpolation perspective Variables varying spéciales : vec4 gl_fragcoord : Position du fragment bool gl_frontfacing : La primitive du fragment est elle face à la caméra Variables varying prédéfinies : vec4 gl_secondarycolor vec4 gl_color vec4 gl_texcoord[0..n] float gl_fogfragcoord 86

87 Shader & pipeline Fragment Shader Variables uniform : comme pour le vertex shader Variables de sorties : vec4 gl_fragcolor : Couleur du fragment à ajouter dans l image float gl_fragdepth : Permet de fixer la profondeur du fragment Si non fixé, on conserve la valeur de base 87

88 Shader & pipeline Variables uniformes prédéfinies Il y en a énormément : Pour les lumières Pour le brouillard Pour les matrices de transformation Pour les paramètres de la caméra Pour les matériaux utilisés par les objets Pour les propriétés de point Correspondent à des «états» du pipeline graphique Liste complète : 88

89 Exemple de shader // VERTEX PROGRAM (tiré (tiré du du Orange Orange Book ) Book ) uniform float float CoolestTemp; CoolestTemp; uniform float float temprange; temprange; // FRAGMENT PROGRAM (tiré attribute float vertextemp; FRAGMENT PROGRAM (tiré du du Orange Orange Book ) Book ) float vertextemp; uniform uniform vec3 CoolestColor; uniform vec3 Temperature; HottestColor; varying uniformfloat float Temperature; varying float void main() { Temperature; varying // // Calcule Calcule le le degre degre de de temperature temperature entre entre 0 et 1 void main() Temperature main() {{= (vertextemp Temperature vertextemp - CoolestTemp CoolestTemp)/ )/temprange temprange; // Utilisation Utilisation d une d une fonction fonction prédéfinie prédéfinie :: mix mix // afin une gl_position gl_modelviewprojectionmatrix afin de de= trouver trouver une couleur couleur mélangée mélangée * gl_vertex;; gl_position } vec3 vec3 color color == mix mix(coolestcolor CoolestColor,,HottestColor HottestColor,,Temperature); gl_fragcolor gl_fragcolor = vec4 vec4(color,1.0); (color,1.0); } 89

90 Utilisation des shaders Comment utiliser les shader dans une application OpenGL? Utilisation des API : GLSL_vertex_program GLSL_fragment_program Collection de fonction en C (fourni par les drivers de votre carte) permettant de : Créer les vertex / fragment shader (vide) Les remplir avec du code en provenance d un fichier Compiler (à l utilisation donc!), attacher, lier ces programmes Envoyer des données aux shaders 90

91 Utilisation des shaders Méthode : Créer un ou plusieurs shaders glcreateshaderobject Leur donner du code source glshadersource Les compiler glcompileshader Créer un objet programme glcreateprogramobject Attacher les shaders à cet objet glattachobject 91

92 Utilisation des shaders Méthode : 6. Lier le programme Permet par exemple de relier les variables varying Similaire à la phase de lien d une phase de compilation gllinkprogram 7. Intégrer le programme dans le pipeline graphique 8. gluseprogramobject Fournir les variables définies par l utilisateur glgetuniformlocation, gluniform glbindattriblocation, glgetattriblocation, glvertexattrib glenablevertexattribarray, glvertexattribpointer 92

93 Utilisation des shaders GLhandleARB GLhandleARB loadshaders(const loadshaders(const char char *vertexfile,const *vertexfile,const char char *fragmentfile) *fragmentfile) {{ GLhandleARB GLhandleARB programobject; programobject; // // CREATION CREATION DU DU PROGRAMME PROGRAMME programobject programobject == glcreateprogramobject glcreateprogramobject(); (); if(!programobject) return 0; if(!programobject) return 0; // // CHARGEMENT CHARGEMENT DU DU VERTEX VERTEX SHADER SHADER :: char char *vertexsource; *vertexsource; // // Récupération Récupération de de la la chaine chaine de de caractère caractère du du fichier fichier d entree d entree if (! loadsource (vertexfile, &vertexsource)) return 0; if (!loadsource(vertexfile, &vertexsource)) return 0; // // Creation Creation d'un d'un objet objet qui qui va va contenir contenir des des sources sources GLhandleARB GLhandleARB shaderobject shaderobject == glcreateshaderobject glcreateshaderobject(gl_vertex_shader_arb); (GL_VERTEX_SHADER_ARB); // // Association Association des des sources sources glshadersource glshadersource(shaderobject, (shaderobject, 1, 1, && vertexsource, vertexsource, NULL); NULL); // // Compilation Compilation des des sources sources glcompileshader (shaderobject); glcompileshader(shaderobject); // // Attachement Attachement au au programme programme glattachobject glattachobject(programobject, (programobject, shaderobject); shaderobject); // // Destruction Destruction de de l objet l objet shader shader (inutile (inutile maintenant) maintenant) gldeleteobject gldeleteobject(shaderobject); (shaderobject);

94 Utilisation des shaders // // CHARGEMENT CHARGEMENT DU DU FRAGMENT FRAGMENT SHADER SHADER :: char char *fragmentsource; *fragmentsource; // Récupération // Récupération de de la la chaine chaine de de caractère caractère du du fichier fichier d entree d entree if if (! (!loadsource loadsource(fragmentfile, (fragmentfile, &fragmentsource)) &fragmentsource)) return return 0; 0; // // Creation Creation d'un d'un objet objet qui qui va va contenir contenir des des sources sources shaderobject shaderobject == glcreateshaderobject glcreateshaderobject(gl_fragment_shader_arb); (GL_FRAGMENT_SHADER_ARB); // // Association Association des des sources sources glshadersource (shaderobject, glshadersource(shaderobject, 1, 1, && fragmentsource, fragmentsource, NULL); NULL); // // Compilation Compilation des des sources sources glcompileshader glcompileshader(shaderobject); (shaderobject); // // Attachement Attachement au au programme programme glattachobject glattachobject(programobject, (programobject, shaderobject); shaderobject); // // Destruction Destruction de de l objet l objet shader shader (inutile (inutile maintenant) maintenant) gldeleteobject (shaderobject); gldeleteobject(shaderobject); // // Linkage Linkage du du programme programme gllinkprogram gllinkprogram(programobject); (programobject); }} // // PLUS PLUS TARD TARD DANS DANS L'INITIALISATION L'INITIALISATION sprog sprog == loadshaders( loadshaders("vert.vert","fragtxt.frag"); "vert.vert","fragtxt.frag"); // // PLUS PLUS TARD TARD DANS DANS LA LA FONCTION FONCTION DE DE DESSIN DESSIN gluseprogram gluseprogram(sprog); (sprog); // // si si =0 =0 on on garde garde le le pipeline pipeline classique classique 94

95 Utilisation des shaders Transmission des variables uniform : Variables Utiliser les instructions classiques OpenGL Variables prédéfinies : définies par l utilisateur Récupération de l indice de stockage du driver : glgetuniformlocation(program, "nom_variable") Envoi des valeurs à cette variable : gluniform{ }{s f v}{v} (indice,{nb,} valeur) Transmission des variables attribute : Variables prédéfinies : Utilisation glvertex pour gl_vertex Utilisation glnormal pour gl_normal 95

96 Utilisation des shaders Variables Récupérer l indice de stockage de la variable : définies par l utilisateur : ind = glgetattriblocation(program, "nom_variable" ); ind = glbindattriblocation(program,1, "nom_variable" ); Envoyer les valeurs : Une valeur : glvertexattrib{1234}{s f d}{v}(indice,valeur); D autres combinaisons existent (avec 4) Par vertex array : glenablevertexattribarray(indice) glvertexattribpointer(indice, size, type, normalized, stride, pointeur); 96

Chapitre VIII : Vertex et Fragment Shaders

Chapitre VIII : Vertex et Fragment Shaders Chapitre VIII : Vertex et Fragment Shaders Programmation 3D Fabrice Aubert fabrice.aubert@lifl.fr Licence/Master USTL - IEEA 2008-2009 F. Aubert (LS6/MS2) P3D/ VIII Shaders 2008-2009 1 / 28 Introduction

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

SHADERS. Alexandre Blondin Massé Département d'informatique Université du Québec à Montréal 4 novembre 2015 INF5071 - Infographie

SHADERS. Alexandre Blondin Massé Département d'informatique Université du Québec à Montréal 4 novembre 2015 INF5071 - Infographie CHAPITRE 8 SHADERS Alexandre Blondin Massé Département d'informatique Université du Québec à Montréal 4 novembre 2015 INF5071 - Infographie INTRODUCTION Les shaders sont des programmes qui indiquent à

Plus en détail

QU EST-CE QUE LA GPGPU? POURQUOI SUR GPU?

QU EST-CE QUE LA GPGPU? POURQUOI SUR GPU? QU EST-CE QUE LA GPGPU? Initiation à la GPGPU Introduction General Programing on Graphic Processing Units. Utilisation de la puissance des cartes graphiques pour autre choses qu afficher des triangles.

Plus en détail

Plan du cours. Fonctions avancées de rendu 3D. Textures. Coordonnées de textures : u,v,s,t. Exemples : textures 1D, 2D, 3D

Plan du cours. Fonctions avancées de rendu 3D. Textures. Coordonnées de textures : u,v,s,t. Exemples : textures 1D, 2D, 3D Fonctions avancées de rendu 3D Gilles Debunne DEA IVR 2004 Principe Matrice de texture Mipmapping Textures d environnement Fonctions avancées de rendu 3D Gilles Debunne 2004 2 Textures Initialisation de

Plus en détail

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 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.......................................................

Plus en détail

Introduction à la programmation GPU. P. Fortin UPMC / LIP6 ANR TaMaDi 27/10/2010

Introduction à la programmation GPU. P. Fortin UPMC / LIP6 ANR TaMaDi 27/10/2010 Introduction à la programmation GPU P. Fortin UPMC / LIP6 ANR TaMaDi 27/10/2010 Les processeurs graphiques (GPU) GPU : Graphics Processing Unit GPGPU : General Purpose computation on Graphics Processing

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

Introduction à la notion Pipeline Graphique (initiation)

Introduction à la notion Pipeline Graphique (initiation) DENNE Introduction à la notion Pipeline Graphique (initiation) Année universitaire 2004-2005 Pascal Mignot Pascal.Mignot@univ-reims.fr DENNE Objectifs préparation au cours: d OpenGL (initiation) de DirectX

Plus en détail

NVIDIA CUDA. Compute Unified Device Architecture. Sylvain Jubertie. Laboratoire d Informatique Fondamentale d Orléans 2011-2012

NVIDIA CUDA. Compute Unified Device Architecture. Sylvain Jubertie. Laboratoire d Informatique Fondamentale d Orléans 2011-2012 NVIDIA CUDA Compute Unified Device Architecture Sylvain Jubertie Laboratoire d Informatique Fondamentale d Orléans 2011-2012 Sylvain Jubertie (LIFO) NVIDIA CUDA 2011-2012 1 / 58 1 Introduction 2 Architecture

Plus en détail

Pipeline. G.Gilet. Informatique Graphique Moteurs 3D temps réels. Pipeline OpenGL. Guillaume Gilet Guillaume.Gilet@unilim.

Pipeline. G.Gilet. Informatique Graphique Moteurs 3D temps réels. Pipeline OpenGL. Guillaume Gilet Guillaume.Gilet@unilim. Informatique Graphique Moteurs 3D temps réels OpenGL Guillaume Gilet Guillaume.Gilet@unilim.fr 2012-2013 Résumé des épisodes précédents Rasterisation Projection des sommets dans le plan image Rasterisation

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

Synthèse d'images 000

Synthèse d'images 000 Synthèse d'images 000 Affichage 3D Données 3D Caméra fichier description utilisateur Résultat: écran 001 Affichage 3D Données 3D Caméra Ordre de grandeurs: fichier description utilisateur Objets 3D: 100-10

Plus en détail

Générateur de pages WEB et serveur pour supervision accessible à partir d un navigateur WEB

Générateur de pages WEB et serveur pour supervision accessible à partir d un navigateur WEB AUTOMGEN 8.009 Générateur de pages WEB et serveur pour supervision accessible à partir d un navigateur WEB version 2 : support de sources vidéo, support 3D, support de l ensemble des objets IRIS 2D WEB

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

Synthèse d images et animation. Estelle Duveau - estelle.duveau@inria.fr. 3A IRV, 24 septembre 2008. OpenGL - Cours 1. Introduction.

Synthèse d images et animation. Estelle Duveau - estelle.duveau@inria.fr. 3A IRV, 24 septembre 2008. OpenGL - Cours 1. Introduction. Synthèse d images et animation OpenGL - Estelle Duveau - estelle.duveau@inria.fr 3A IRV, 24 septembre 2008 Planning Cours : introduction à OpenGL - 24/09/2008 (1h30) Cours : OpenGL avancé - 01/10/2008

Plus en détail

MATÉRIEL GRAPHIQUE POUR LE CALCUL SCIENTIFIQUE. François Rousselle LISIC Image et Apprentissage OASIS

MATÉRIEL GRAPHIQUE POUR LE CALCUL SCIENTIFIQUE. François Rousselle LISIC Image et Apprentissage OASIS MATÉRIEL GRAPHIQUE POUR LE CALCUL SCIENTIFIQUE François Rousselle LISIC Image et Apprentissage OASIS Cadre BQR 2010 CGR LISIC LMPA : Réalisation d'une plateforme générique de calcul intensif pour cartes

Plus en détail

NOTICE D UTILISATION Option USB 2-Ports USB FRANCAIS

NOTICE D UTILISATION Option USB 2-Ports USB FRANCAIS NOTICE D UTILISATION Option USB 2-Ports USB FRANCAIS Introduction Ce supplément vous informe de l utilisation de la fonction USB qui a été installée sur votre table de mixage. Disponible avec 2 ports USB

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

Chapitre 1 : Introduction - Programmation 3D

Chapitre 1 : Introduction - Programmation 3D Chapitre 1 : Introduction - Programmation 3D Modélisation 3D et Synthèse Fabrice Aubert fabrice.aubert@lifl.fr IEEA - Master Info 2014-2015 F. Aubert (MS2) M3DS/ 1 - Introduction - Programmation 3D 2014-2015

Plus en détail

Programmation multigpu OpenMP versus MPI

Programmation multigpu OpenMP versus MPI 17 février 2011 Gabriel Noaje Programmation multigpu OpenMP versus OpenMP 1 Programmation multigpu OpenMP versus MPI Gabriel Noaje, Michaël Krajecki, Christophe Jaillet gabriel.noaje@univ-reims.fr Équipe

Plus en détail

MAT 2377 Solutions to the Mi-term

MAT 2377 Solutions to the Mi-term MAT 2377 Solutions to the Mi-term Tuesday June 16 15 Time: 70 minutes Student Number: Name: Professor M. Alvo This is an open book exam. Standard calculators are permitted. Answer all questions. Place

Plus en détail

Instructions pour mettre à jour un HFFv2 v1.x.yy v2.0.00

Instructions pour mettre à jour un HFFv2 v1.x.yy v2.0.00 Instructions pour mettre à jour un HFFv2 v1.x.yy v2.0.00 HFFv2 1. OBJET L accroissement de la taille de code sur la version 2.0.00 a nécessité une évolution du mapping de la flash. La conséquence de ce

Plus en détail

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

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

Plus en détail

CUDA 4 et Architecture Fermi GPUDirect2.0 et UVA

CUDA 4 et Architecture Fermi GPUDirect2.0 et UVA CUDA 4 et Architecture Fermi GPUDirect2.0 et UVA Pierre Kunzli - hepia 5 septembre 2012 1 Introduction La version 4.0 de CUDA introduit avec l'architecture Fermi deux nouveautés concernant la gestion de

Plus en détail

Programmation Graphique Haute Performance. Rendu 3D sur GPU

Programmation Graphique Haute Performance. Rendu 3D sur GPU Programmation Graphique Haute Performance Rendu 3D sur GPU gael.guennebaud@inria.fr http://www.labri.fr/perso/guenneba/pghp_2015 La synthèse d'images Monde réel modélisation représentation numérique synthèse

Plus en détail

Portage, optimisation et développement de logiciels de calcul sur architectures GPU et hybrides PSA PEUGEOT CITROËN

Portage, optimisation et développement de logiciels de calcul sur architectures GPU et hybrides PSA PEUGEOT CITROËN Portage, optimisation et développement de logiciels de calcul sur architectures GPU et hybrides PSA PEUGEOT CITROËN Benoît DESCHAMPS PSA Peugeot Citroën 29/06/11 INDEX Présentations activités Réalité Virtuelle

Plus en détail

OpenGL Notions avancées

OpenGL Notions avancées OpenGL Notions avancées David Odin Septembre 2007 David Odin () OpenGL Notions avancées Septembre 2007 1 / 25 OPENGL NOTIONS AVANCÉES PLAN 1 TEXTURES Généralités Paramètres et chargement Mipmapping Multitexturage

Plus en détail

Camera de surveillance IP / WIFI / DVR Waterproof Vision nocturne Certification CE / FC

Camera de surveillance IP / WIFI / DVR Waterproof Vision nocturne Certification CE / FC Camera de surveillance IP / WIFI / DVR. 1 Camera de surveillance IP / WIFI / DVR. 2 Camera de surveillance IP / WIFI - Waterproof et infrarouge pour une utilisation extérieure. Une camera IP Puissante

Plus en détail

Data Carrier System (code 5641090)

Data Carrier System (code 5641090) Instructions for Use Instructions d utilisation 2 5 Data Carrier System (code 5641090) 5009756-E 05/2011 2 ENGLISH PARTS OF THE DATA CARRIER READ/WRITE HARDWARE The Data Carrier consists of three parts:

Plus en détail

Guide d'installation et Présentation de l'application Collecteur de données du «ColloidGen II» http://www.colloidgen.com

Guide d'installation et Présentation de l'application Collecteur de données du «ColloidGen II» http://www.colloidgen.com Guide d'installation et Présentation de l'application Collecteur de données du «ColloidGen II» http://www.colloidgen.com Installation and Overview Guide of Collector data Application for the "ColloidGen

Plus en détail

Monday, December 2 nd 2013. Formation Galaxy

Monday, December 2 nd 2013. Formation Galaxy Formation Galaxy Lundi, 10 Février 2014 This training has not for objectives to introduce every Galaxy tool individually or to build a workflow to process your own data. Objectives: To provide a first

Plus en détail

Les licences Creative Commons expliquées aux élèves

Les licences Creative Commons expliquées aux élèves Les licences Creative Commons expliquées aux élèves Source du document : http://framablog.org/index.php/post/2008/03/11/education-b2i-creative-commons Diapo 1 Creative Commons presents : Sharing Creative

Plus en détail

Remote Control Library Librairie Remote Control

Remote Control Library Librairie Remote Control Remote Control Library Librairie Remote Control Installation File, Fichier : REMOTEVPU.EXE After installation Après installation In the toolbox : Dans la boite à outils : Files Added, Files Ajoutés : C:\API32\Modules\

Plus en détail

Calcul parallèle sur processeurs GPU

Calcul parallèle sur processeurs GPU Calcul parallèle sur processeurs GPU Nicolas GAC Maitre de Conférence - Université Paris Sud 11 Laboratoire des Signaux et Systèmes (L2S) Cours à l ESIEE Paris 5ième année - Majeure Informatique 19 septembre

Plus en détail

Mode dʼemploi User guide

Mode dʼemploi User guide Mode dʼemploi User guide Urban Connexion Kit for Microsoft Surface Référence Urban Factory ICR32UF Introduction: Vous venez d acheter un kit de connexion Urban Factory pour Microsoft Surface, et nous vous

Plus en détail

Génération de code binaire pour application multimedia : une approche au vol

Génération de code binaire pour application multimedia : une approche au vol Génération de binaire pour application multimedia : une approche au vol http://hpbcg.org/ Henri-Pierre Charles Université de Versailles Saint-Quentin en Yvelines 3 Octobre 2009 Présentation Présentation

Plus en détail

(Programme de formation pour les parents ~ Training program for parents)

(Programme de formation pour les parents ~ Training program for parents) PODUM-INFO-ACTION (PIA) La «carte routière» pour les parents, sur l éducation en langue française en Ontario A «road map» for parents, on French-language education in Ontario (Programme de formation pour

Plus en détail

Once the installation is complete, you can delete the temporary Zip files..

Once the installation is complete, you can delete the temporary Zip files.. Sommaire Installation... 2 After the download... 2 From a CD... 2 Access codes... 2 DirectX Compatibility... 2 Using the program... 2 Structure... 4 Lier une structure à une autre... 4 Personnaliser une

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

Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184. Frédéric BERTIN fbertin@neotilus.com

Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184. Frédéric BERTIN fbertin@neotilus.com Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184 Frédéric BERTIN fbertin@neotilus.com Présentaion : Mobile 3D Graphics API JSR 184 M3G :présentation Package optionnel de l api J2ME. Prend

Plus en détail

Audio and Web Conferencing services. Orange Business Services. Web Conferencing

Audio and Web Conferencing services. Orange Business Services. Web Conferencing Audio and Web Conferencing services Orange Business Services Web Conferencing web conferencing completely integrated audio and web services conference availability 24hrs/7days up to 100 participants complete

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

2 players Ages 8+ Note: Please keep these instructions for future reference. WARNING. CHOKING HAZARD. Small parts. Not for children under 3 years.

2 players Ages 8+ Note: Please keep these instructions for future reference. WARNING. CHOKING HAZARD. Small parts. Not for children under 3 years. Linja Game Rules 2 players Ages 8+ Published under license from FoxMind Games NV, by: FoxMind Games BV Stadhouderskade 125hs Amsterdam, The Netherlands Distribution in North America: FoxMind USA 2710 Thomes

Plus en détail

Sujet de TPE PROPOSITION

Sujet de TPE PROPOSITION Single photon source made of single nanodiamonds This project will consist in studying nanodiamonds as single photon sources. The student will study the emission properties of such systems and will show

Plus en détail

HYDRODYNAMIQUE PHYSIQUE. PROBLèMES RéSOLUS AVEC RAPPELS DE COURS BY MARC FERMIGIER

HYDRODYNAMIQUE PHYSIQUE. PROBLèMES RéSOLUS AVEC RAPPELS DE COURS BY MARC FERMIGIER Read Online and Download Ebook HYDRODYNAMIQUE PHYSIQUE. PROBLèMES RéSOLUS AVEC RAPPELS DE COURS BY MARC FERMIGIER DOWNLOAD EBOOK : HYDRODYNAMIQUE PHYSIQUE. PROBLèMES RéSOLUS Click link bellow and free

Plus en détail

Architecture des GPU (GPU=Graphics Processing Unit) gael.guennebaud@inria.fr

Architecture des GPU (GPU=Graphics Processing Unit) gael.guennebaud@inria.fr Architecture des GPU (GPU=Graphics Processing Unit) gael.guennebaud@inria.fr Plan du cours 2 Motivations pour les GPUs single core multi-core many-core Architecture des GPUs CPU versus GPU Programmation

Plus en détail

PHP. virginie.sans@irisa.fr http://perso.univ-rennes1.fr/virginie.sans/pwb. Internet et HTML

PHP. virginie.sans@irisa.fr http://perso.univ-rennes1.fr/virginie.sans/pwb. Internet et HTML PHP virginie.sans@irisa.fr http://perso.univ-rennes1.fr/virginie.sans/ BUR Internet et HTML PHP, qu'est-ce que c'est? Un langage pour la programmation du serveur Permet d'inclure des parties programmées

Plus en détail

Utiliser une WebCam. Micro-ordinateurs, informations, idées, trucs et astuces

Utiliser une WebCam. Micro-ordinateurs, informations, idées, trucs et astuces Micro-ordinateurs, informations, idées, trucs et astuces Utiliser une WebCam Auteur : François CHAUSSON Date : 8 février 2008 Référence : utiliser une WebCam.doc Préambule Voici quelques informations utiles

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

Utilisation de la brique LEGO EV3 avec Automgen. Using EV3 brick with Automgen (C)2014 IRAI. Lego EV3, Automgen

Utilisation de la brique LEGO EV3 avec Automgen. Using EV3 brick with Automgen (C)2014 IRAI. Lego EV3, Automgen Utilisation de la brique LEGO EV3 avec Automgen Using EV3 brick with Automgen (C)2014 IRAI 1 Ce manuel décrit l'utilisation de la brique LEGO Ev3 avec Automgen. This manual describes the use of EV3 LEGO

Plus en détail

Cytoscape pour la visualisation et le traitement de grands graphes

Cytoscape pour la visualisation et le traitement de grands graphes Cytoscape pour la visualisation et le traitement de grands graphes Laurent Risser CNRS, Institut de Mathématiques de Toulouse 01/16 1) Principaux logiciels Outils libres pour la visualisation et traitement

Plus en détail

Infographie IMN428. À l ordre du jour. Été 2015. Introduction Par Pierre-Marc Jodoin et Olivier Godin

Infographie IMN428. À l ordre du jour. Été 2015. Introduction Par Pierre-Marc Jodoin et Olivier Godin Été 2015 Infographie IMN428 Introduction Par Pierre-Marc Jodoin et Olivier Godin À l ordre du jour Introduction à l infographie Espace couleur Primitives graphiques Caméra Pipeline graphique 2 1 Rappel

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

Embedded Domain-Specific Languages using Libraries and Dynamic Metaprogramming

Embedded Domain-Specific Languages using Libraries and Dynamic Metaprogramming Embedded Domain-Specific Languages using Libraries and Dynamic Metaprogramming THÈSE N O 5007 (2011) PRÉSENTÉE le 20 mai 2011 À LA FACULTÉ INFORMATIQUE ET COMMUNICATIONS LABORATOIRE DE MÉTHODES DE PROGRAMMATION

Plus en détail

Analysing chip- seq data using Galaxy

Analysing chip- seq data using Galaxy Analysing chip- seq data using Galaxy PhD programme 2013 Stéphanie Le Gras Overview Top menu Analyze your data Log in/out HISTORY PANEL keep track of each jobs that have been run Grey: job is waikng to

Plus en détail

Tutorial. Gwennaël ARBONA - 18 décembre 2013

Tutorial. Gwennaël ARBONA - 18 décembre 2013 Gwennaël ARBONA - 18 décembre 2013 1. Le rendu 3D dans les jeux vidéo 1.0.1. Introduction Si on s intéresse à la technologie derrière les jeux vidéo les plus récents, on peut donner deux chiffres surprenants.

Plus en détail

Développer en PL/SQL. Sommaire du cours

Développer en PL/SQL. Sommaire du cours Sommaire du cours Module 1 Introduction et Rappels Module 2 Eléments de langage PL/SQL Module 3 Accès à la Base de données Module 4 Traitements stockés Module 5 Gestion des exceptions Module 6 - Compléments

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

Programmation des processeurs multicoeurs

Programmation des processeurs multicoeurs Programmation des processeurs multicoeurs Cours théorique et Application en OpenCL avec Matrix Studio Pascal Ballet pascal.ballet@univ-brest.fr Université de Bretagne Occidentale Laboratoire d Informatique

Plus en détail

XM-EVT Universal Vinyl Siding Trim

XM-EVT Universal Vinyl Siding Trim XM-EVT Universal Vinyl Siding Trim The Universal Vinyl Siding Trim is designed to provide a finished look on the outside wall of a home. The Vinyl Siding Trim is a universal part that can be used in combination

Plus en détail

Architecture et Système

Architecture et Système Architecture et Système Stefan Schwoon Cours L3, 2014/15, ENS Cachan Rappels Quelques éléments qu on a pu construire à partir des transistors (et une horloge): fonctions arithmétiques et logiques multiplexeur,

Plus en détail

Pipeline Graphique. Transforma)ons de modélisa)on. Illumina)on (Shading) Transforma)ons d affichage. Clipping. Transforma)on écran (Projec)on)

Pipeline Graphique. Transforma)ons de modélisa)on. Illumina)on (Shading) Transforma)ons d affichage. Clipping. Transforma)on écran (Projec)on) Pipeline Graphique Pipeline Graphique de Modèle de la scène Image 3D Transformations de modélisation de Application des transformations de composition de scène : Passage du système de coordonnées local

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

RIE LE RENDU THEO. 2 e trim ÉTAPE DE FINITION BOÎTE DE DIALOGUE. remarques

RIE LE RENDU THEO. 2 e trim ÉTAPE DE FINITION BOÎTE DE DIALOGUE. remarques THEO RIE LE RENDU 2 e trim JANVIER 2008 remarques ÉTAPE DE FINITION Le rendu est la partie finale de notre création, à ce moment on décide que notre 3D est finie et l on en réalise une image 2D Cette image

Plus en détail

Solution d hébergement de "SWIFTAlliance ENTRY R7" Politique de Sauvegarde et de Restauration

Solution d hébergement de SWIFTAlliance ENTRY R7 Politique de Sauvegarde et de Restauration Solution d hébergement de "SWIFTAlliance ENTRY R7" Politique de Sauvegarde et de Restauration Avril 2012 I- Introduction Le présent document présente la politique de sauvegarde et de restauration à adopter

Plus en détail

Exercices sur SQL server 2000

Exercices sur SQL server 2000 Exercices sur SQL server 2000 La diagramme de classe : Exercices sur SQL server 2000 Le modèle relationnel correspondant : 1 Créer les tables Clic-droit on Tables et choisir «New Table» Créer la table

Plus en détail

FORMATION VB.NET Visual Studio 2008

FORMATION VB.NET Visual Studio 2008 FORMATION VB.NET Visual Studio 2008 Livret 1 Introduction à Visuàl Studio Thierry TILLIER http://www.coursdinfo.fr Ce support de cours est réservé à un usage personnel. Toute utilisation et diffusion dans

Plus en détail

Tableaux (introduction) et types de base

Tableaux (introduction) et types de base Tableaux (introduction) et types de base A. Motivation..................................................... 4 B. Les tableaux.................................................... 5 C. Construction des tableaux.......................................

Plus en détail

Algorithmique - Programmation 1. Cours 10

Algorithmique - Programmation 1. Cours 10 Algorithmique - Programmation 1 Cours 10 Université Henri Poincaré CESS Epinal Automne 2008 1/ 25 Plan Caml fonctionnel vs impératif Caml fonctionnel vs impératif Le type unit Données mutables Les structures

Plus en détail

TDs Architecture des ordinateurs DUT Informatique - M4104c SUJETS. R. Raffin Aix-Marseille Université romain.raffin-at-univ-amu.fr

TDs Architecture des ordinateurs DUT Informatique - M4104c SUJETS. R. Raffin Aix-Marseille Université romain.raffin-at-univ-amu.fr TDs Architecture des ordinateurs DUT Informatique - M4104c SUJETS R. Raffin Aix-Marseille Université romain.raffin-at-univ-amu.fr 2015 Table des matières 1 TD1 : les bonnes résolutions 2 1.1 Premières

Plus en détail

Systèmes & Réseaux. Georges Arhodakis Université Paris 8

Systèmes & Réseaux. Georges Arhodakis Université Paris 8 Systèmes & Réseaux Georges Arhodakis Université Paris 8 Sommaire Introduction Historique Service du noyau Appel Système Trappes & Interruptions Horloge & Gestion du Temps Ordonnancement Contrôle & Gestion

Plus en détail

Gestion de la configuration et contrôle du code source

Gestion de la configuration et contrôle du code source MGL7460 Automne 2015 Gestion de la configuration et contrôle du code source Guy Tremblay Professeur Département d informatique UQAM http://www.labunix.uqam.ca/~tremblay 10 septembre 2015 Parmi les premières

Plus en détail

Please find attached a revised amendment letter, extending the contract until 31 st December 2011.

Please find attached a revised amendment letter, extending the contract until 31 st December 2011. Sent: 11 May 2011 10:53 Subject: Please find attached a revised amendment letter, extending the contract until 31 st December 2011. I look forward to receiving two signed copies of this letter. Sent: 10

Plus en détail

How to? / Flash the ATMEGA32

How to? / Flash the ATMEGA32 How to? / Flash the ATMEGA32 Français La programmation du microcontrôleur n est pas très compliquée mais elle nécessite un minimum d attention. Elle peut se faire directement sur la platine du Monome grâce

Plus en détail

Votre entrée dans le monde des plombiers. Entering a plumber world

Votre entrée dans le monde des plombiers. Entering a plumber world Votre entrée dans le monde des plombiers Entering a plumber world Jean-Denis Roy 9 janvier 2010 Quelle est la principale différence entre l université et le marché du travail? What is the main difference

Plus en détail

Web search. Course Organization. 4 July 2011. 1 / 7 Pierre Senellart Licence de droits d usage

Web search. Course Organization. 4 July 2011. 1 / 7 Pierre Senellart Licence de droits d usage Web search Course Organization 1 / 7 Pierre Senellart Course scope Introduction to the technologies of Web search engines Prerequisites: basic math and computer science Labs prerequisites: Java programming

Plus en détail

Introduction à l algorithmique et à la programmation 2013-2014. Cyril Nicaud Cyril.Nicaud@univ-mlv.fr. Cours 1 / 5

Introduction à l algorithmique et à la programmation 2013-2014. Cyril Nicaud Cyril.Nicaud@univ-mlv.fr. Cours 1 / 5 Introduction à l algorithmique et à la programmation IUT 1ère année 2013-2014 Cyril Nicaud Cyril.Nicaud@univ-mlv.fr Cours 1 / 5 Déroulement du cours Organisation : 5 séances de 2h de cours 10 séances de

Plus en détail

Konstantin Avrachenkov, Urtzi Ayesta, Patrick Brown and Eeva Nyberg

Konstantin Avrachenkov, Urtzi Ayesta, Patrick Brown and Eeva Nyberg Konstantin Avrachenkov, Urtzi Ayesta, Patrick Brown and Eeva Nyberg Le présent document contient des informations qui sont la propriété de France Télécom. L'acceptation de ce document par son destinataire

Plus en détail

XSORIES WEYE FEYE FAQ

XSORIES WEYE FEYE FAQ XSORIES WEYE FEYE FAQ ENGLISH FRANCAIS WEYE FEYE FAQ ENGLISH 1. COMPATIBILITY Weye Feye is compatible with the following cameras: CANON EOS 5DmII EOS 5DmIII EOS 6D EOS 7D EOS 40D EOS 50D EOS 60D EOS 70D

Plus en détail

Recherche d images similaires à partir de descripteurs couleurs

Recherche d images similaires à partir de descripteurs couleurs Descripteurs couleurs Recherche d images similaires à partir de descripteurs couleurs Romain Bachy supervisé par Emi Aldea Romain Bachy Master 2 IMA - UPMC 20 janvier 2010 Romain Bachy Master 2 IMA - UPMC

Plus en détail

Programmation en VBA

Programmation en VBA Programmation en VBA Présentation de Visual Basic Visual Basic : Basic : dérivé du langage Basic (Biginner s All purpose Symbolic Instruction Code) des années 60 Visual : dessin et aperçu de l interface

Plus en détail

Programmation en VBA

Programmation en VBA Programmation en VBA Présentation de Visual Basic Visual Basic : Basic : dérivé du langage Basic (Biginner s All purpose Symbolic Instruction Code) des années 60 Visual : dessin et aperçu de l interface

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

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

Plan : Master IM2P2 - Calcul Scientifique

Plan : Master IM2P2 - Calcul Scientifique Plan : Les systèmes HPC Typologie des systèmes : Machines Mémoire partagée Machines à Mémoire Distribuées Machine NUMA Exemples Architectures Processeurs HPC Processeurs scalaires, superscalaires, vectoriels

Plus en détail

PC industriels et disques associés

PC industriels et disques associés Technical Service Bulletin PRODUIT DATE CREATION DATE MODIFICATION FICHIER PC INDUSTRIEL 23/03/2010 201005 REV A PC industriels et disques associés English version follows. SF01 (du 4 au 8 janvier 2010)

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

L'ART D'AIMER : 10 ANS DE LEçONS DE SéDUCTION BY AUBADE, HERVé LEWIS, HERVé BRUHAT, BERNARD MATUSSIèRE

L'ART D'AIMER : 10 ANS DE LEçONS DE SéDUCTION BY AUBADE, HERVé LEWIS, HERVé BRUHAT, BERNARD MATUSSIèRE Read Online and Download Ebook L'ART D'AIMER : 10 ANS DE LEçONS DE SéDUCTION BY AUBADE, HERVé LEWIS, HERVé BRUHAT, BERNARD MATUSSIèRE DOWNLOAD EBOOK : L'ART D'AIMER : 10 ANS DE LEçONS DE SéDUCTION BY Click

Plus en détail

EADS TELECOM property Release of this document requires express permission of EADS TELECOM

EADS TELECOM property Release of this document requires express permission of EADS TELECOM Titre: M>Tunnel 2.5 Contraintes d emploi Version : 1.1 Date d émission: 07 Janvier 2003 Résumé: Ce document présente les recommandations de mise en œuvre du VPN M>Tunnel 2.5 afin de respecter les contraintes

Plus en détail

1 ère mondiale. Carol PTAK "Roughly Right is better than precisely wrong"

1 ère mondiale. Carol PTAK Roughly Right is better than precisely wrong 1 ère mondiale Carol PTAK "Roughly Right is better than precisely wrong" All material and content copyright 2015 Institute. All rights reserved. 1 http://demanddriveninstitute.com/ Carol PTAK est actuellement

Plus en détail

GPU = coprocesseur «graphique»

GPU = coprocesseur «graphique» GPUs et CUDA Daniel Etiemble d@lif de@lri.fr GPU = coprocesseur «graphique» GPU avec DRAM locale (coprocesseur) PCI CPU (hôte) 1 Architecture CPU+GPU Architecture hétérogène Le CPU exécute les threads

Plus en détail

DICTIONNAIRE DE SPIRITUALITé ASCéTIQUE ET MYSTIQUE : DOCTRINE ET HISTOIRE...

DICTIONNAIRE DE SPIRITUALITé ASCéTIQUE ET MYSTIQUE : DOCTRINE ET HISTOIRE... Read Online and Download Ebook DICTIONNAIRE DE SPIRITUALITé ASCéTIQUE ET MYSTIQUE : DOCTRINE ET HISTOIRE... DOWNLOAD EBOOK : DICTIONNAIRE DE SPIRITUALITé ASCéTIQUE ET Click link bellow and free register

Plus en détail

XtremWeb-HEP 8.0.0. Interconnecting jobs over DG. Virtualization over DG. Oleg Lodygensky Laboratoire de l Accélérateur Linéaire

XtremWeb-HEP 8.0.0. Interconnecting jobs over DG. Virtualization over DG. Oleg Lodygensky Laboratoire de l Accélérateur Linéaire XtremWeb-HEP 8.0.0 Interconnecting jobs over DG Virtualization over DG Oleg Lodygensky Objectives 1.Deploy Virtual Machines in XtremWeb-HEP desktop grid to: protect volunteer resources generalize «pilot

Plus en détail

PHP. Introduction à la programmation web serveur. Université Nice Sophia-Antipolis. Découverte et pratique avec PHP. Fabien Givors

PHP. Introduction à la programmation web serveur. Université Nice Sophia-Antipolis. Découverte et pratique avec PHP. Fabien Givors Introduction à la programmation web serveur Découverte et pratique avec PHP Fabien Givors d après les cours de Philippe Renevier Gonin Université Nice Sophia-Antipolis Année universitaire 2014-2015 PHP

Plus en détail

LIF1 : ALGORITHMIQUE ET PROGRAMMATION IMPÉRATIVE, INITIATION

LIF1 : ALGORITHMIQUE ET PROGRAMMATION IMPÉRATIVE, INITIATION Licence STS Université Claude Bernard Lyon I LIF1 : ALGORITHMIQUE ET PROGRAMMATION IMPÉRATIVE, INITIATION 1 COURS 7 : Structures et Fichiers OBJECTIFS DE LA SÉANCE Deux notions abordées dans ce cours Celle

Plus en détail

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. 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

Plus en détail

Eléments de syntaxe du langage Java

Eléments de syntaxe du langage Java c jan. 2014, v3.0 Java Eléments de syntaxe du langage Java Sébastien Jean Le but de ce document est de présenter es éléments de syntaxe du langage Java : les types primitifs, les opérateurs arithmétiques

Plus en détail

INDUSTRIAL PC 13/11/2007 19/11/2007. Nouveau PC Industriel sur Imprimantes RIP4

INDUSTRIAL PC 13/11/2007 19/11/2007. Nouveau PC Industriel sur Imprimantes RIP4 Technical Service Bulletin FILE CONTROL CREATED DATE MODIFIED DATE FOLDER INDUSTRIAL PC 13/11/2007 19/11/2007 662-02-27011B Nouveau PC Industriel sur Imprimantes RIP4 English version follows. Objet du

Plus en détail

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Structure d un programme et Compilation Notions de classe et d objet Syntaxe Cours1 Structure d un programme et Compilation Notions de classe et d objet Syntaxe POO 1 Programmation Orientée Objet Un ensemble d objet qui communiquent Pourquoi POO Conception abstraction sur les types

Plus en détail