SlideShare une entreprise Scribd logo
1  sur  12
Atos, Atos and fish symbol, Atos Origin and fish symbol, Atos Consulting, and the fish symbol itself are registered trademarks of Atos Origin SA.
© 2006 Atos Origin. Private for the client. This report or any part of it, may not be copied, circulated, quoted without prior written approval from Atos Origin or the client.
Graphics Card = Computation Engine ?
Présentation du CEPC : GPGPU
CPU vs GPU : pourquoi GPGPU ?
 Les GPU nous fournissent une bande passante et
une puissance de calcul énorme et pour pas
cher, exemple :
 GeForce 6800 : 35Gb/sec pour ~100€
 ATI X800 : 63GFlops pour ~150€
 Pentium IV SSE 3.7Ghz : 14.8GFlops ~535€
 Ils sont à la pointe des technologies (>300millions
de transistors, 110nano …)
 Une carte dernière génération ~500€ et ça tombe
très rapidement.
Présentation du CEPC : GPGPU
Aperçu Général d’une carte graphique
 Sur une carte graphique moderne 90% de la surface est dédier à
la 3D
 Les GPU modernes sont architecturés autours d’un pipeline
destiné à maintenir un fort débit grâce à la parallélisassions.
 Depuis quelques années, ils sont devenus « programmable ». Et
depuis 2002 supportent les calculs flottant
 L’apparition d’un langage Assembleur à accéléré les choses.
Optional chapter number (Arial 10 plain)
 2005 : L’OpenGL Board à officialisé les
extensions Pixel et Vertex Shader, facilitant
ainsi les développements
Présentation du CEPC : GPGPU
Stream processing
 Conventional, sequential paradigm
for(int i = 0; i < 100 * 4; i++)
result[i] = source0[i] + source1[i];
 Parallel SIMD paradigm, packed registers (SWAR)
for(int el = 0; el < 100; el++) // for each vector
vector_sum(result[el], source0[el], source1[el]);
 Parallel Stream paradigm (SIMD/MIMD)
// This is a fictional language for demonstration purposes.
streamElements 100 streamElementFormat 4 numbers
elementKernel "@arg0+@arg1" result = kernel(source0,
source1)
Présentation du CEPC : GPGPU
Concept 1 : Tableau = Texture
 Notre but : pour 2 vecteurs x et y de longeur N et un scalaire alpha, on veut calculer
: y = y + alpha * x (encore appeler saxpy() )
 Les tableaux à 1 dimension sont les éléments naturels des CPUs : a[i][j] c’est un
tableau de tableau de taille MxN.
 Sur les GPUs les données natives sont à 2 dimensions.
 On travaille sur 4 données en même temps (RGBA).
 A la place de notre tableau on aura une texture 2D de taille MxN.
 Il faudra mettre en place un mapping entre les indices et le pixels.
 Les textures sont : soit Readable, soit Writable, jamais les deux !
Présentation du CEPC : GPGPU
Concept 2 : Kernels = Shaders
 implémentation CPU oriente boucle vs kernel et data-parallele.
 Typiquement sur un CPU on aura :
for (int i=0; i<N; i++)
dataY[i] = dataY[i] + alpha * dataX[i];
 L’objectif sur un GPU c’est de séparer les 2 : on parle alors de kernel
y_new[i] = y_old[i] + alpha * x[i]
 On utilise le « fragment pipeline » pour les calculs (= plusieurs unités en // ), il se
comporte comme un processeur vectoriel de la taille de notre texture !
 Kernel => shader sur le GPU, c’est-à-dire un petit programme qui s’exécute sur
chaque fragment // shader for RGBA data
// and texture2D
uniform sampler2D textureY;
uniform sampler2D textureX;
uniform float alpha;
void main(void) {
vec4 y = exture2D(textureY,gl_TexCoord[0].st);
vec4 x = texture2D(textureXgl_TexCoord[0].st);
gl_FragColor = y + alpha*x;
}
Présentation du CEPC : GPGPU
Concept 3 : Computing = Drawing
 On va maintenant mettre tous les éléments ensemble pour finir le calcul.
 Si on récapitule :
• On a créé des textures avec nos données.
• On a créé des shaders avec nos algorithmes, à exécuter sur chaque fragment.
• On a établit un mapping 1:1 entre nos indices et les pixels.
 Il ne reste plus qu‘ une (!) chose : généré une scène avec la « bonne géométrie »
pour que notre shader soit exécuté sur chaque élément de la texture !
 Et c’est finalement très simple : un rectangle plein suffit !
En affichant un simple rectangle texturé, on exécute notre
kernel sur chaque élément de notre vecteur de départ !
Présentation du CEPC : GPGPU
Le Grand Public ;-)
 Apple CoreImage / CoreVideo
Framework de développement Apple OSX
10.4…
Propose un fallback CPU si la carte ne le
permet pas.
Utilisé par QuartzExtreme et le Dashboard
Notion d’ImageUnits (kernel …)
Quartz Composer permet de jouer facilement
avec.
 Apple Aperture, iMovie (CoreVideo), Motion
Présentation du CEPC : GPGPU
Base de Données
 Les tris
 GPUTeraSort, tri haute performance sur GPU
http://gamma.cs.unc.edu/GPUTERASORT/
 Calcul rapide des opérations BDD
http://gamma.cs.unc.edu/DB/
Les jeux (!)
 Oblivion & co …
 Ils utilisent de plus en plus ces techniques
pour le rendu réaliste des scènes.
Présentation du CEPC : GPGPU
Traitement de Signal / Audio
 FFT
• GPUFFTW : une FFT sur GPU en puissance de 2
http://gamma.cs.unc.edu/GPUFFTW/
 DFT
• Jasper (implémentation GPU du JPEG 2000 )
http://www.cse.cuhk.edu.hk/~ttwong/software/dwtgpu/dwtgpu.html
 Audio
• Bionicfx annonce AVEX ( http://www.bionicfx.com/ )
BionicFX announced a technology for music production that turns NVIDIA video
cards into audio effects processors. Audio Video Exchange (AVEX) converts
digital audio into graphics data, and then performs effect calculations
using the 3D architecture of the GPU. The latest video cards from NVIDIA
are capable of more than 40 gigaflops of processing power compared to less
than 6 gigaflops on Intel and AMD CPUs.
Réseau de Neurones
 Améliore de 20 fois un système de détection de texte sur une ATI RADEON 9700
PRO.
Cryptographie
 AES
 Secret Key « Stream Cipher »
Présentation du CEPC : GPGPU
Conclusion
 Ati et NVIDIA annonce des »GPU » dédié
 Convergence des CPU/GPU
 NVIDIA investit 2,93M$ dans Acceleware spécialiste canadien du GP-GPU
(programme CUDA )
 Annoncée comme étant la « disruptive technology 2007 »par les analystes
 Cluster de GPU (SLI, mais aussi réseau !)
Présentation du CEPC : GPGPU
Quelques Liens…
 http://www.gpgpu.org/
 http://shallows.sourceforge.net/
 Brook : http://graphics.stanford.edu/projects/brookgpu/
 Cg : http://www.nvidia.com/
 Sh : http://libsh.org/
 ATI : http://developper.ati.com/
 NVIDIA : http://developper.nvidia.com/
 Les Shaders et le GLSL :
• http://www.lighthouse3d.com/opengl/glsl/
• http://opengl.org/documentation/books.html#oglsl
 Un tutorial facile : http://www.mathematik.uni-dortmund.de/~goeddeke/gpgpu/

Contenu connexe

En vedette

Affinity Engine - Recommandations personnalisées - Offre Affinity Items
Affinity Engine - Recommandations personnalisées - Offre Affinity ItemsAffinity Engine - Recommandations personnalisées - Offre Affinity Items
Affinity Engine - Recommandations personnalisées - Offre Affinity ItemsStéphane Roy
 
GtugDakar AppEngine, Gwt
GtugDakar AppEngine, GwtGtugDakar AppEngine, Gwt
GtugDakar AppEngine, Gwthkairi
 
Recommandations avec Neo4j et le GraphAware Recommendation Engine
Recommandations avec Neo4j et le GraphAware Recommendation EngineRecommandations avec Neo4j et le GraphAware Recommendation Engine
Recommandations avec Neo4j et le GraphAware Recommendation EngineChristophe Willemsen
 
Smart City - Le rôle stratégique des acteurs publics
Smart City - Le rôle stratégique des acteurs publicsSmart City - Le rôle stratégique des acteurs publics
Smart City - Le rôle stratégique des acteurs publicsJérémie34
 
Introduction au cloud computing
Introduction au cloud computingIntroduction au cloud computing
Introduction au cloud computingStéphane Traumat
 
Search Engine Optimization
Search Engine Optimization Search Engine Optimization
Search Engine Optimization ch.ch
 
LNG FUEL & DUAL FUEL ENGINE
LNG FUEL & DUAL FUEL ENGINELNG FUEL & DUAL FUEL ENGINE
LNG FUEL & DUAL FUEL ENGINENguyen Tri
 
Network Meeting - Integration von Camunda mit Liferay
Network Meeting - Integration von Camunda mit LiferayNetwork Meeting - Integration von Camunda mit Liferay
Network Meeting - Integration von Camunda mit Liferaycamunda services GmbH
 
JUG Luzern: Open Source BPM mit BPMN 2.0 und Java
JUG Luzern: Open Source BPM mit BPMN 2.0 und JavaJUG Luzern: Open Source BPM mit BPMN 2.0 und Java
JUG Luzern: Open Source BPM mit BPMN 2.0 und Javacamunda services GmbH
 
Introduction to Oracle Grid Engine
Introduction to Oracle Grid Engine Introduction to Oracle Grid Engine
Introduction to Oracle Grid Engine Morteza Zakeri
 
Slidedeck Datenanalysen auf Speed - Oracle R Enterprise (ORE) Demo - DOAG Big...
Slidedeck Datenanalysen auf Speed - Oracle R Enterprise (ORE) Demo - DOAG Big...Slidedeck Datenanalysen auf Speed - Oracle R Enterprise (ORE) Demo - DOAG Big...
Slidedeck Datenanalysen auf Speed - Oracle R Enterprise (ORE) Demo - DOAG Big...Nadine Schoene
 
Testgetriebene Geschäftsprozessmodellierung
Testgetriebene GeschäftsprozessmodellierungTestgetriebene Geschäftsprozessmodellierung
Testgetriebene GeschäftsprozessmodellierungZambrovski Simon
 
WJAX 2012: Dreamteam "BPM + Java EE"
WJAX 2012: Dreamteam "BPM + Java EE"WJAX 2012: Dreamteam "BPM + Java EE"
WJAX 2012: Dreamteam "BPM + Java EE"camunda services GmbH
 
Ein Prozess lernt laufen: LEGO Mindstorms Steuerung mit BPMN
Ein Prozess lernt laufen: LEGO Mindstorms Steuerung mit BPMNEin Prozess lernt laufen: LEGO Mindstorms Steuerung mit BPMN
Ein Prozess lernt laufen: LEGO Mindstorms Steuerung mit BPMNComsysto Reply GmbH
 
7 Tipps für erfolgreiches SEA Autor Patrick Palz
7 Tipps für erfolgreiches SEA Autor Patrick Palz7 Tipps für erfolgreiches SEA Autor Patrick Palz
7 Tipps für erfolgreiches SEA Autor Patrick PalzPatrick Palz
 
Hadoop et son écosystème
Hadoop et son écosystèmeHadoop et son écosystème
Hadoop et son écosystèmeKhanh Maudoux
 

En vedette (17)

Affinity Engine - Recommandations personnalisées - Offre Affinity Items
Affinity Engine - Recommandations personnalisées - Offre Affinity ItemsAffinity Engine - Recommandations personnalisées - Offre Affinity Items
Affinity Engine - Recommandations personnalisées - Offre Affinity Items
 
GtugDakar AppEngine, Gwt
GtugDakar AppEngine, GwtGtugDakar AppEngine, Gwt
GtugDakar AppEngine, Gwt
 
Search Engine Advertising - Wir zeigen wie es funktioniert!
Search Engine Advertising - Wir zeigen wie es funktioniert!Search Engine Advertising - Wir zeigen wie es funktioniert!
Search Engine Advertising - Wir zeigen wie es funktioniert!
 
Recommandations avec Neo4j et le GraphAware Recommendation Engine
Recommandations avec Neo4j et le GraphAware Recommendation EngineRecommandations avec Neo4j et le GraphAware Recommendation Engine
Recommandations avec Neo4j et le GraphAware Recommendation Engine
 
Smart City - Le rôle stratégique des acteurs publics
Smart City - Le rôle stratégique des acteurs publicsSmart City - Le rôle stratégique des acteurs publics
Smart City - Le rôle stratégique des acteurs publics
 
Introduction au cloud computing
Introduction au cloud computingIntroduction au cloud computing
Introduction au cloud computing
 
Search Engine Optimization
Search Engine Optimization Search Engine Optimization
Search Engine Optimization
 
LNG FUEL & DUAL FUEL ENGINE
LNG FUEL & DUAL FUEL ENGINELNG FUEL & DUAL FUEL ENGINE
LNG FUEL & DUAL FUEL ENGINE
 
Network Meeting - Integration von Camunda mit Liferay
Network Meeting - Integration von Camunda mit LiferayNetwork Meeting - Integration von Camunda mit Liferay
Network Meeting - Integration von Camunda mit Liferay
 
JUG Luzern: Open Source BPM mit BPMN 2.0 und Java
JUG Luzern: Open Source BPM mit BPMN 2.0 und JavaJUG Luzern: Open Source BPM mit BPMN 2.0 und Java
JUG Luzern: Open Source BPM mit BPMN 2.0 und Java
 
Introduction to Oracle Grid Engine
Introduction to Oracle Grid Engine Introduction to Oracle Grid Engine
Introduction to Oracle Grid Engine
 
Slidedeck Datenanalysen auf Speed - Oracle R Enterprise (ORE) Demo - DOAG Big...
Slidedeck Datenanalysen auf Speed - Oracle R Enterprise (ORE) Demo - DOAG Big...Slidedeck Datenanalysen auf Speed - Oracle R Enterprise (ORE) Demo - DOAG Big...
Slidedeck Datenanalysen auf Speed - Oracle R Enterprise (ORE) Demo - DOAG Big...
 
Testgetriebene Geschäftsprozessmodellierung
Testgetriebene GeschäftsprozessmodellierungTestgetriebene Geschäftsprozessmodellierung
Testgetriebene Geschäftsprozessmodellierung
 
WJAX 2012: Dreamteam "BPM + Java EE"
WJAX 2012: Dreamteam "BPM + Java EE"WJAX 2012: Dreamteam "BPM + Java EE"
WJAX 2012: Dreamteam "BPM + Java EE"
 
Ein Prozess lernt laufen: LEGO Mindstorms Steuerung mit BPMN
Ein Prozess lernt laufen: LEGO Mindstorms Steuerung mit BPMNEin Prozess lernt laufen: LEGO Mindstorms Steuerung mit BPMN
Ein Prozess lernt laufen: LEGO Mindstorms Steuerung mit BPMN
 
7 Tipps für erfolgreiches SEA Autor Patrick Palz
7 Tipps für erfolgreiches SEA Autor Patrick Palz7 Tipps für erfolgreiches SEA Autor Patrick Palz
7 Tipps für erfolgreiches SEA Autor Patrick Palz
 
Hadoop et son écosystème
Hadoop et son écosystèmeHadoop et son écosystème
Hadoop et son écosystème
 

Similaire à Graphics card as computation engine

OWF12/PAUG Conf Days Render script, sylvain galand, software engineer at geny...
OWF12/PAUG Conf Days Render script, sylvain galand, software engineer at geny...OWF12/PAUG Conf Days Render script, sylvain galand, software engineer at geny...
OWF12/PAUG Conf Days Render script, sylvain galand, software engineer at geny...Paris Open Source Summit
 
Architecture des ordinateurs
Architecture des ordinateursArchitecture des ordinateurs
Architecture des ordinateursRMwebsite
 
Softshake 2013 - Vivre en parallèle
Softshake 2013 - Vivre en parallèleSoftshake 2013 - Vivre en parallèle
Softshake 2013 - Vivre en parallèleOCTO Technology
 
Vivre en parallèle - Softshake 2013
Vivre en parallèle - Softshake 2013Vivre en parallèle - Softshake 2013
Vivre en parallèle - Softshake 2013Henri Tremblay
 
Isbs slides 2010
Isbs slides 2010Isbs slides 2010
Isbs slides 2010RMwebsite
 
Les Cartes Graphiques
Les Cartes GraphiquesLes Cartes Graphiques
Les Cartes GraphiquesGoogle
 
Les Cartes Graphiques
Les Cartes GraphiquesLes Cartes Graphiques
Les Cartes Graphiquesguest4c66652
 
Sizing PoC LSF & PowerAI for Engineers schools workloads
Sizing PoC LSF & PowerAI for Engineers schools workloadsSizing PoC LSF & PowerAI for Engineers schools workloads
Sizing PoC LSF & PowerAI for Engineers schools workloadsPhilippeBrogi
 
Diabang et fatimetou mennou rapport design &amp; simulation of dssss using ma...
Diabang et fatimetou mennou rapport design &amp; simulation of dssss using ma...Diabang et fatimetou mennou rapport design &amp; simulation of dssss using ma...
Diabang et fatimetou mennou rapport design &amp; simulation of dssss using ma...Cheikh Tidiane DIABANG
 
Introduction à GStreamer
Introduction à GStreamerIntroduction à GStreamer
Introduction à GStreamerNicolas Hennion
 
Retour d'expérience : gérer des flux vidéos multiples de manière optimisée
Retour d'expérience :  gérer des flux vidéos multiples de manière optimiséeRetour d'expérience :  gérer des flux vidéos multiples de manière optimisée
Retour d'expérience : gérer des flux vidéos multiples de manière optimiséeSilicon Comté
 
Presentaion fpga µc µp quelles est la solution
Presentaion  fpga µc µp quelles est la solutionPresentaion  fpga µc µp quelles est la solution
Presentaion fpga µc µp quelles est la solutionCynapsys It Hotspot
 
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesBreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesXavier MARIN
 
La programmation GPU avec C++ AMP pour les performances extrêmes
La programmation GPU avec C++ AMP pour les performances extrêmesLa programmation GPU avec C++ AMP pour les performances extrêmes
La programmation GPU avec C++ AMP pour les performances extrêmesMicrosoft
 

Similaire à Graphics card as computation engine (20)

OWF12/PAUG Conf Days Render script, sylvain galand, software engineer at geny...
OWF12/PAUG Conf Days Render script, sylvain galand, software engineer at geny...OWF12/PAUG Conf Days Render script, sylvain galand, software engineer at geny...
OWF12/PAUG Conf Days Render script, sylvain galand, software engineer at geny...
 
Architecture des ordinateurs
Architecture des ordinateursArchitecture des ordinateurs
Architecture des ordinateurs
 
Softshake 2013 - Vivre en parallèle
Softshake 2013 - Vivre en parallèleSoftshake 2013 - Vivre en parallèle
Softshake 2013 - Vivre en parallèle
 
Vivre en parallèle - Softshake 2013
Vivre en parallèle - Softshake 2013Vivre en parallèle - Softshake 2013
Vivre en parallèle - Softshake 2013
 
Isbs slides 2010
Isbs slides 2010Isbs slides 2010
Isbs slides 2010
 
Les Cartes Graphiques
Les Cartes GraphiquesLes Cartes Graphiques
Les Cartes Graphiques
 
Les Cartes Graphiques
Les Cartes GraphiquesLes Cartes Graphiques
Les Cartes Graphiques
 
CUDA
CUDACUDA
CUDA
 
Sizing PoC LSF & PowerAI for Engineers schools workloads
Sizing PoC LSF & PowerAI for Engineers schools workloadsSizing PoC LSF & PowerAI for Engineers schools workloads
Sizing PoC LSF & PowerAI for Engineers schools workloads
 
Diabang et fatimetou mennou rapport design &amp; simulation of dssss using ma...
Diabang et fatimetou mennou rapport design &amp; simulation of dssss using ma...Diabang et fatimetou mennou rapport design &amp; simulation of dssss using ma...
Diabang et fatimetou mennou rapport design &amp; simulation of dssss using ma...
 
Introduction à GStreamer
Introduction à GStreamerIntroduction à GStreamer
Introduction à GStreamer
 
Bitmaps
BitmapsBitmaps
Bitmaps
 
Paug renderscript-mars-2013
Paug renderscript-mars-2013Paug renderscript-mars-2013
Paug renderscript-mars-2013
 
Datalogger finale
Datalogger finaleDatalogger finale
Datalogger finale
 
Retour d'expérience : gérer des flux vidéos multiples de manière optimisée
Retour d'expérience :  gérer des flux vidéos multiples de manière optimiséeRetour d'expérience :  gérer des flux vidéos multiples de manière optimisée
Retour d'expérience : gérer des flux vidéos multiples de manière optimisée
 
Presentaion fpga µc µp quelles est la solution
Presentaion  fpga µc µp quelles est la solutionPresentaion  fpga µc µp quelles est la solution
Presentaion fpga µc µp quelles est la solution
 
Dijkstra kshortest
Dijkstra kshortestDijkstra kshortest
Dijkstra kshortest
 
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesBreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
 
DSP
DSPDSP
DSP
 
La programmation GPU avec C++ AMP pour les performances extrêmes
La programmation GPU avec C++ AMP pour les performances extrêmesLa programmation GPU avec C++ AMP pour les performances extrêmes
La programmation GPU avec C++ AMP pour les performances extrêmes
 

Dernier

The Importance of Indoor Air Quality (French)
The Importance of Indoor Air Quality (French)The Importance of Indoor Air Quality (French)
The Importance of Indoor Air Quality (French)IES VE
 
Les Metiers de l'Intelligence Artificielle
Les Metiers de l'Intelligence ArtificielleLes Metiers de l'Intelligence Artificielle
Les Metiers de l'Intelligence ArtificielleErol GIRAUDY
 
Mes succès sur Microsoft LEARN et examens
Mes succès sur Microsoft LEARN et examensMes succès sur Microsoft LEARN et examens
Mes succès sur Microsoft LEARN et examensErol GIRAUDY
 
Installation de Sylius 2.0 et découverte du nouveau backoffice en Bootstrap
Installation de Sylius 2.0 et découverte du nouveau backoffice en BootstrapInstallation de Sylius 2.0 et découverte du nouveau backoffice en Bootstrap
Installation de Sylius 2.0 et découverte du nouveau backoffice en BootstrapMaxime Huran 🌈
 
Workshop l'IA au service de l'industrie - Présentation générale - Extra 14...
Workshop l'IA au service de l'industrie - Présentation générale - Extra 14...Workshop l'IA au service de l'industrie - Présentation générale - Extra 14...
Workshop l'IA au service de l'industrie - Présentation générale - Extra 14...Infopole1
 
KIT-COPILOT and more Article du 20240311
KIT-COPILOT and more Article du 20240311KIT-COPILOT and more Article du 20240311
KIT-COPILOT and more Article du 20240311Erol GIRAUDY
 

Dernier (6)

The Importance of Indoor Air Quality (French)
The Importance of Indoor Air Quality (French)The Importance of Indoor Air Quality (French)
The Importance of Indoor Air Quality (French)
 
Les Metiers de l'Intelligence Artificielle
Les Metiers de l'Intelligence ArtificielleLes Metiers de l'Intelligence Artificielle
Les Metiers de l'Intelligence Artificielle
 
Mes succès sur Microsoft LEARN et examens
Mes succès sur Microsoft LEARN et examensMes succès sur Microsoft LEARN et examens
Mes succès sur Microsoft LEARN et examens
 
Installation de Sylius 2.0 et découverte du nouveau backoffice en Bootstrap
Installation de Sylius 2.0 et découverte du nouveau backoffice en BootstrapInstallation de Sylius 2.0 et découverte du nouveau backoffice en Bootstrap
Installation de Sylius 2.0 et découverte du nouveau backoffice en Bootstrap
 
Workshop l'IA au service de l'industrie - Présentation générale - Extra 14...
Workshop l'IA au service de l'industrie - Présentation générale - Extra 14...Workshop l'IA au service de l'industrie - Présentation générale - Extra 14...
Workshop l'IA au service de l'industrie - Présentation générale - Extra 14...
 
KIT-COPILOT and more Article du 20240311
KIT-COPILOT and more Article du 20240311KIT-COPILOT and more Article du 20240311
KIT-COPILOT and more Article du 20240311
 

Graphics card as computation engine

  • 1. Atos, Atos and fish symbol, Atos Origin and fish symbol, Atos Consulting, and the fish symbol itself are registered trademarks of Atos Origin SA. © 2006 Atos Origin. Private for the client. This report or any part of it, may not be copied, circulated, quoted without prior written approval from Atos Origin or the client. Graphics Card = Computation Engine ?
  • 2. Présentation du CEPC : GPGPU CPU vs GPU : pourquoi GPGPU ?  Les GPU nous fournissent une bande passante et une puissance de calcul énorme et pour pas cher, exemple :  GeForce 6800 : 35Gb/sec pour ~100€  ATI X800 : 63GFlops pour ~150€  Pentium IV SSE 3.7Ghz : 14.8GFlops ~535€  Ils sont à la pointe des technologies (>300millions de transistors, 110nano …)  Une carte dernière génération ~500€ et ça tombe très rapidement.
  • 3. Présentation du CEPC : GPGPU Aperçu Général d’une carte graphique  Sur une carte graphique moderne 90% de la surface est dédier à la 3D  Les GPU modernes sont architecturés autours d’un pipeline destiné à maintenir un fort débit grâce à la parallélisassions.  Depuis quelques années, ils sont devenus « programmable ». Et depuis 2002 supportent les calculs flottant  L’apparition d’un langage Assembleur à accéléré les choses. Optional chapter number (Arial 10 plain)  2005 : L’OpenGL Board à officialisé les extensions Pixel et Vertex Shader, facilitant ainsi les développements
  • 4. Présentation du CEPC : GPGPU Stream processing  Conventional, sequential paradigm for(int i = 0; i < 100 * 4; i++) result[i] = source0[i] + source1[i];  Parallel SIMD paradigm, packed registers (SWAR) for(int el = 0; el < 100; el++) // for each vector vector_sum(result[el], source0[el], source1[el]);  Parallel Stream paradigm (SIMD/MIMD) // This is a fictional language for demonstration purposes. streamElements 100 streamElementFormat 4 numbers elementKernel "@arg0+@arg1" result = kernel(source0, source1)
  • 5. Présentation du CEPC : GPGPU Concept 1 : Tableau = Texture  Notre but : pour 2 vecteurs x et y de longeur N et un scalaire alpha, on veut calculer : y = y + alpha * x (encore appeler saxpy() )  Les tableaux à 1 dimension sont les éléments naturels des CPUs : a[i][j] c’est un tableau de tableau de taille MxN.  Sur les GPUs les données natives sont à 2 dimensions.  On travaille sur 4 données en même temps (RGBA).  A la place de notre tableau on aura une texture 2D de taille MxN.  Il faudra mettre en place un mapping entre les indices et le pixels.  Les textures sont : soit Readable, soit Writable, jamais les deux !
  • 6. Présentation du CEPC : GPGPU Concept 2 : Kernels = Shaders  implémentation CPU oriente boucle vs kernel et data-parallele.  Typiquement sur un CPU on aura : for (int i=0; i<N; i++) dataY[i] = dataY[i] + alpha * dataX[i];  L’objectif sur un GPU c’est de séparer les 2 : on parle alors de kernel y_new[i] = y_old[i] + alpha * x[i]  On utilise le « fragment pipeline » pour les calculs (= plusieurs unités en // ), il se comporte comme un processeur vectoriel de la taille de notre texture !  Kernel => shader sur le GPU, c’est-à-dire un petit programme qui s’exécute sur chaque fragment // shader for RGBA data // and texture2D uniform sampler2D textureY; uniform sampler2D textureX; uniform float alpha; void main(void) { vec4 y = exture2D(textureY,gl_TexCoord[0].st); vec4 x = texture2D(textureXgl_TexCoord[0].st); gl_FragColor = y + alpha*x; }
  • 7. Présentation du CEPC : GPGPU Concept 3 : Computing = Drawing  On va maintenant mettre tous les éléments ensemble pour finir le calcul.  Si on récapitule : • On a créé des textures avec nos données. • On a créé des shaders avec nos algorithmes, à exécuter sur chaque fragment. • On a établit un mapping 1:1 entre nos indices et les pixels.  Il ne reste plus qu‘ une (!) chose : généré une scène avec la « bonne géométrie » pour que notre shader soit exécuté sur chaque élément de la texture !  Et c’est finalement très simple : un rectangle plein suffit ! En affichant un simple rectangle texturé, on exécute notre kernel sur chaque élément de notre vecteur de départ !
  • 8. Présentation du CEPC : GPGPU Le Grand Public ;-)  Apple CoreImage / CoreVideo Framework de développement Apple OSX 10.4… Propose un fallback CPU si la carte ne le permet pas. Utilisé par QuartzExtreme et le Dashboard Notion d’ImageUnits (kernel …) Quartz Composer permet de jouer facilement avec.  Apple Aperture, iMovie (CoreVideo), Motion
  • 9. Présentation du CEPC : GPGPU Base de Données  Les tris  GPUTeraSort, tri haute performance sur GPU http://gamma.cs.unc.edu/GPUTERASORT/  Calcul rapide des opérations BDD http://gamma.cs.unc.edu/DB/ Les jeux (!)  Oblivion & co …  Ils utilisent de plus en plus ces techniques pour le rendu réaliste des scènes.
  • 10. Présentation du CEPC : GPGPU Traitement de Signal / Audio  FFT • GPUFFTW : une FFT sur GPU en puissance de 2 http://gamma.cs.unc.edu/GPUFFTW/  DFT • Jasper (implémentation GPU du JPEG 2000 ) http://www.cse.cuhk.edu.hk/~ttwong/software/dwtgpu/dwtgpu.html  Audio • Bionicfx annonce AVEX ( http://www.bionicfx.com/ ) BionicFX announced a technology for music production that turns NVIDIA video cards into audio effects processors. Audio Video Exchange (AVEX) converts digital audio into graphics data, and then performs effect calculations using the 3D architecture of the GPU. The latest video cards from NVIDIA are capable of more than 40 gigaflops of processing power compared to less than 6 gigaflops on Intel and AMD CPUs. Réseau de Neurones  Améliore de 20 fois un système de détection de texte sur une ATI RADEON 9700 PRO. Cryptographie  AES  Secret Key « Stream Cipher »
  • 11. Présentation du CEPC : GPGPU Conclusion  Ati et NVIDIA annonce des »GPU » dédié  Convergence des CPU/GPU  NVIDIA investit 2,93M$ dans Acceleware spécialiste canadien du GP-GPU (programme CUDA )  Annoncée comme étant la « disruptive technology 2007 »par les analystes  Cluster de GPU (SLI, mais aussi réseau !)
  • 12. Présentation du CEPC : GPGPU Quelques Liens…  http://www.gpgpu.org/  http://shallows.sourceforge.net/  Brook : http://graphics.stanford.edu/projects/brookgpu/  Cg : http://www.nvidia.com/  Sh : http://libsh.org/  ATI : http://developper.ati.com/  NVIDIA : http://developper.nvidia.com/  Les Shaders et le GLSL : • http://www.lighthouse3d.com/opengl/glsl/ • http://opengl.org/documentation/books.html#oglsl  Un tutorial facile : http://www.mathematik.uni-dortmund.de/~goeddeke/gpgpu/

Notes de l'éditeur

  1. Input : description de la geometrie 1 er stage : transformation en “screen coordinate” 2eme stage : rasterization : 1 fragment per pixel location 3eme stage : compute color for fragment from texture information
  2. Si on avait N processeurs on aurait un seul passage c’est le SIMD