OpenGL et WebGL, comparaison de performances dans le framework Geant4

Slides:



Advertisements
Présentations similaires
Introduction à la programmation graphique
Advertisements

Informatique en L2-L3 Thèmes du niveau « Expert » G.
INFSO-RI Enabling Grids for E-sciencE Statistiques d'usage d'un site de la grille LCG/EGEE Emmanuel Medernach, IN2P3 LPC.
Emacs Laurent Pierron
Présentation LabPlus v3. Solution novatrice en Technologies de l’information Solution novatrice en Technologies de l’information Application pour la Gestion.
OpenArticles : Libérez votre savoir ! Mise en place d'un service libre et gratuit de dépôt et d'accès aux articles scientifiques David Larlet – Janvier.
Les profils du SEDA confection de profil avec Agape.
RMLL 2008 Isis-FISH/Gesi Benjamin Poussin Code Lutin
1 The Nhân LUONG Éditeur visuel pour la création d'applications web géographiques Présenté par Mike Deguilhem Séminaire T2I – mercredi 16 juin 2010.
FORMATION PRODIGE Aspects techniques Chistophe BOCQUET (CPII/DOO)
1 Le stage informatique de Masters APIM et PIE (2012/2013) Ivana Hrivnacova Vincent Lafage Basé sur le stage informatique du LAL et IPN par (2005/2006):
Développement d'applications Web avec le framework PHP Symfony 2 Mathieu Peltier (Mercator Océan - CNRS) (UMS 831, Observatoire Midi-Pyrénées)
Portage d'une application sur GPU CreditCruncher.
GOOGLE MAPS ANDROID API V2. INTRODUCTION TO THE GOOGLE MAPS ANDROID API V2.
1. 2 Boite à outils Qt ● Boite à outils C++ pour le développement multi-plateforme d'application en environnement graphique (GUI) – des fonctions GUI.
Les Techniques Biométriques et leurs applications Par Ghislain MUKENDI KALONJI.
Traitement d'images en Java avec JAI
Cartographie sur le web (webmapping)
Cross-Plateform Cours JavaScript
L’Appel d’Offre Agences de voyages
Présenté par M. Anis DIALLO
Synthèse d’images Antoine Bouthors
SEO : Search Engine Optimization Référencement Naturel
objets connectés et réalité augmentée générations et objets connectés
A JavaScript library for building user interfaces
Google analytics.
Michel Jouvin LAL/Orsay
IS-IS - Adjacence Point à Point
Les Bases de données Définition Architecture d’un SGBD
Les Processeurs Graphiques Programmables
AugerDb / SimDb Gestion des simulations Auger Java
Ajouter le code dans une page html
Analyse Performance Chaine Energie + Problématique
Comprendre les valeurs
Réalisation d'agents de surveillance Zephir
Cissé Moussa Diawara Issif Master Informatique 2ième année
Virtualisation d’applications mobiles dans un réseau de Cloudlets
Support – info Sauvegarde des données locales des postes clients
Veille technologique BOCH Dylan
Intro Rappel upgrade phase2/patterns/mémoires associatives et objectifs Migration du code version IPNL dans interface CMSSW (vérification) Performances.
Réponses à l’appel à manifestation d’intérêt
Développement d’un réseau social de collaboration destiné aux médecins radiologues Soutenance de projet de fin d’étude En vue de l’obtention du diplôme.
Bases de données réparties Les vues matérialisées Oracle
Présentation de la maquette du projet
Documentation technique (Linux)
Commande d’une voiture par LABVIEW/ ARDUINO / Bluetooth
PROGRAMMATION INFORMATIQUE D’INGÉNIERIE II
SRT3 LDAP.
Présentation de la carte graphique
3- Nouvelles pages d’accueil
Environnement de gestion des machines Virtuelles
Integrated Business intelligence
Programmation Android Première application Android
Programmation graphique
Présentation logiciel
Bonnes pratiques d’exploitation des applications
Mésocentre de calcul et de stockage ouvert sur la grille EGEE (MUST) LAPP/ Université de Savoie / EGEE.
Communication Assistant V2.0
Régulation et transports
Présenté par M. Anis DIALLO
Serveurs d’applications
Présentation du Portail Client
État d’avancement REGARDS
Tris Simples/Rapides.
1- Charte graphique rénovée
La dématérialisation des marchés publics
Exploitation de vos données
Délégation académique pour le numérique éducatif
Python Nicolas THIBAULT
Transcription de la présentation:

OpenGL et WebGL, comparaison de performances dans le framework Geant4 Laurent Garnier LAL / IN2P3 / CNRS JI 2014– Le Grau du Roi – 15 Octobre 2014 Laurent Garnier - LAL / Geant4 Workshop - 30 Sept 2014 - Okinawa

Sommaire 1. Introduction OpenGL / WebGL 2. Problèmes rencontrés 3. Performances 4. Bilan et améliorations possibles Laurent Garnier - LAL / Geant4 Workshop - 30 Sept 2014 - Okinawa

1.1 OpenGL, WebGL But : Cible : Objectifs d’une application Web Framework de simulation Geant4 ~400 000 lignes de code (essentiellement C++) ~ 80 développeurs dans le monde Utilisé dans les domaines : Physique des hautes énergies / Biomédical / Spacial Objectifs d’une application Web Tutoriels, cours, exemples en ligne, accessibilité à distance… Application OpenGL Application Web WebGL Laurent Garnier - LAL / Geant4 Workshop - 30 Sept 2014 - Okinawa

1.2 Ou est le problème ? Coté « application » : Coté graphique : Aucun (enfin presque…) Coté graphique : Passage du graphique « natif » OpenGL => graphique « orienté web » WebGL Laurent Garnier - LAL / Geant4 Workshop - 30 Sept 2014 - Okinawa

1.3 OpenGL et WebGL ? Introduction dans Geant4 OpenGL2.0 OpenGL3.0 OpenGL 4.2 1992 1996 2004 2008 2010 OpenGL: Librairie multiplateforme permettant de faire des application graphiques, principalement orientés 3D WebGL: Basée sur OpenGL2.x et Javascript, permet de faire des applications graphiques dans les browsers Web récents. Laurent Garnier - LAL / Geant4 Workshop - 30 Sept 2014 - Okinawa

2.1 Quels sont les difficultés ? WebGL est basé sur OpenGL2.x, or dans Geant4, la version de OpenGL utilisée est principalement OpenGL1.x Laurent Garnier - LAL / Geant4 Workshop - 30 Sept 2014 - Okinawa

2.2 OpenGL1.x / OpenGL2.x G4 CPU GPU G4 CPU GPU G4 CPU GPU Mode “Immediate” – OpenGL1.x La géométrie est donnée vertex par vertex A chaque vertex décrit, une commande est envoyée au GPU Crée un gros traffic entre le CPU et le GPU Supprimé depuis OpenGL 3.1 Mode “Stored” – OpenGL1.x Stocke les vertex et attributs dans une “Display List” Envoie la “Display List” au GPU Meilleur que le mode “Immediate”, mais à chaque changement on doit reconstruire une “Display List” Stockage sur le GPU – OpenGL2.x Passage par des “Vertex buffer objects” En résumé, on construit nous même nos tableaux de vertex et attributs et on les envoie au GPU On accède « directement »sur le GPU à ces tableaux par la suite G4 CPU GPU G4 CPU GPU Laurent Garnier - LAL / Geant4 Workshop - 30 Sept 2014 - Okinawa

2.3Architecture de Geant4 Geant4 possède une architecture Modèle / Vue /Controleur bien séparé Kernel de Geant4 interface Drivers Graphique G4PhysicsLists WebGL OpenGL G4Event G4interfaces G4Geometry RayTracer G4Processes HepRep Laurent Garnier - LAL / Geant4 Workshop - 30 Sept 2014 - Okinawa

2.4 OpenGL1.x dans Geant4 Appel à des fonctions OpenGL1.x dispersés Laurent Garnier - LAL / Geant4 Workshop - 30 Sept 2014 - Okinawa

2.5 Migration En 2 temps : Migration des anciennes commandes vers l’utilisation de Vertex Buffer Object (VBO), le tout en gardant en place l’existant Pas si simple… Définition d’un nouveau driver utilisant WebGL et basé sur les VBO Laurent Garnier - LAL / Geant4 Workshop - 30 Sept 2014 - Okinawa

2.6 Exemple Exemple pour la fonction glOrtho : Fragment shader VBO GPU Fragment shader glOrtho Redefinition de cette fonction VBO #define glOrtho fVboDrawer->vboGlOrtho Appel de notre fonction void G4OpenGLVboDrawer::vboGlOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) { if (fVboViewer) { if (fVboViewer->isInitialized()) { float a = 2.0f / (right - left); float b = 2.0f / (top - bottom); float c = -2.0f / (zFar – zNear); float tx = - (right + left)/(right - left); float ty = - (top + bottom)/(top - bottom); float tz = - (zFar + zNear)/(zFar - zNear); float ortho[16] = { a, 0, 0, 0, 0, b, 0, 0, 0, 0, c, 0, tx, ty, tz, 1 }; glUniformMatrix4fv(fVboViewer->getShaderProjectionMatrix(), 1, 0, ortho); } else { G4cerr << "glFrustum could only be used in GL_PROJECTION mode" << G4endl; } } } } Vertex shader void main(void) {  gl_Position = uPMatrix * uCMatrix * uMVMatrix * uTMatrix * vec4(aVertexPosition, 1.0) … Have to change projection matrix Laurent Garnier - LAL / Geant4 Workshop - 30 Sept 2014 - Okinawa

2.7 Functions à remplacer Certaines fonctions sont “deprecated” dans OpenGL 3 (Release Date: August 11, 2008) …Et seront abandonnées en OpenGL 4 (Release Date: March 11, 2010) Mais heureusement, il y existe un « compatibility mode » pour ces fonctions ! Deprecated Function : glBegin(...) glEnd() glCallList(...) glColor* glMaterial* glVertexPointer Et tout ce qui se trouve entre glBegin et glEnd: glVertex* / glNormal* / glTexCoord* / ….. Toutes les opérations de matrices: glRotate*, glTranslate*, glScale*, glMatrixMode(), glLoadIdentity(), glPushMatrix()…

3.1 Performances (sans graphique) App App Qt Wt Mac /Linux / … Mac /Linux / … Hardware Hardware Sans le graphique, entre l’utilisation du framework Wt et Qt On change uniquement la couche « interface » entre l’application et l’utilisateur pour une interface Web => Performances identiques Laurent Garnier - LAL / Geant4 Workshop - 30 Sept 2014 - Okinawa

3.2 Performances (avec graphique) App App App Qt Qt Wt OpenGL1.x OpenGL2.X WebGL Hardware Hardware Hardware On ajoute le graphique : Changement de l’« interface » entre l’application et l’utilisateur pour une interface Web Passage de OpenGL1.x aux Vertex Buffer Object, puis à WebGL Laurent Garnier - LAL / Geant4 Workshop - 30 Sept 2014 - Okinawa

3.2 Performances (avec graphique) Passage de OpenGL1.x aux Vertex Buffer Object => Gain théorique assez faible, variable en fonction des applications => Dans la pratique, on est 2 fois plus lent Passage des Vertex Buffer Object à WebGL => 5 fois plus lent Laurent Garnier - LAL / Geant4 Workshop - 30 Sept 2014 - Okinawa

4 Bilan et améliorations Pourquoi est-ce plus lent ? OpenGL1.X / VBO Actuellement on construit des milliers de VBO sur le GPU => Dégradation des performances (par 2 actuellement) G4 CPU GPU G4 CPU GPU 16 16 Version actuelle Version optimizée Laurent Garnier - LAL / Geant4 Workshop - 30 Sept 2014 - Okinawa

4 Bilan et améliorations Pourquoi est-ce plus lent ? OpenGL2.X / WebGL WebGL est basée sur du Javascript ce qui rajoute une surcouche et ralenti l’application. Dégradation des performances (par 5 actuellement) App App App Wt Qt Wt Javascript OpenGL2.X WebGL OpenGL2.X Hardware Hardware Hardware Graphic « natif » Graphic Web Laurent Garnier - LAL / Geant4 Workshop - 30 Sept 2014 - Okinawa

References Site web Geant4 : http://geant4.cern.ch/ OpenGL : http://opengl.org/ WebGL : http://fr.wikipedia.org/wiki/WebGL Framework Wt : http://www.webtoolkit.eu/wt OpenGL Vertex Buffer Objects tutorial: http://nehe.gamedev.net/tutorial/vertex_buffer_objects/2 2002/ Laurent Garnier - LAL / Geant4 Workshop - 30 Sept 2014 - Okinawa

Questions ? Laurent Garnier - LAL / Geant4 Workshop - 30 Sept 2014 - Okinawa