Ian Buck nous parle du GPGPU
Sommaire
- 1 – Rencontre avec Ian Buck
- 2 – Evolution du GPGPU Computing
Rencontre avec Ian Buck
Ian Buck, merci d’avoir pris le temps nécessaire à cette interview. Pouvez-vous vous présenter à nos lecteurs et nous expliquer votre rôle chez NVIDIA ?
Je suis le directeur software du département GPU Computing chez NVIDIA. Mon but est de concevoir et faire évoluer un environnement dédié au GPU computing, ce qui passe par les logiciels système, les outils de développement, la supervision du langage et des compilateurs, les librairies de programmation et enfin les applications cibles et algorithmes. Grâce à une équipe performante, nous développons les logiciels utilisateur autant que nous imprimons la marche à suivre pour l’entreprise en termes de GPU computing.
On imagine bien que vous n’avez pas commencé à vous intéresser au GPU Computing dès votre enfance, à quel moment avez-vous donc eu un déclic ? A Princeton ou Stanford lors de vos études ?
J’ai effectivement commencé à toucher au GPU computing à Princeton lorsque je travaillais sur la convection thermique et la simulation des fluides avec les composants graphiques de l’époque, à savoir un SGI O2 (station de travail Silicon Graphics d'entrée de gamme). Bien que les possibilités fussent alors extrêmement limitées du fait des composants, il était difficile de plaider pour le GPU Computing sur le long terme.
Je suis finalement tombé dans le bain lors de mes études doctorales à Stanford : notre communauté de chercheurs a pris la mesure de l’avancée naturelle de la programmation GPU : les cartes graphiques devenaient alors des unités de calcul dont les applications se faisaient de plus en plus larges. Nous avons rédigé un des premiers articles sur le ray tracing avec les GPU DX9 pour SIGGRAPH (Computing Machinery's Special Interest Group on Graphics and Interactive Techniques) afin de démontrer cet état de fait. Le travail était particulièrement intéressant dans la mesure où les cartes graphiques, composant tout à fait banal, suivaient la loi de Moore mais puissance 3 ! Evidemment, les processeurs n’évoluaient pas au même rythme. Il s’en suivait donc la question suivante : que pourrait-faire un PC s’il avait une multitude de commandes à gérer de pair avec une puissance de calcul supérieure à celle d’aujourd’hui ? Ceci change radicalement la donne en termes d'informatique, de même que la vision de l’informatique, l’intelligence artificielle, le data mining et les graphismes.
Quel a été votre rôle par rapport à Brook ?
Après avoir travaillé sur les possibilités de ray tracing GPU, mes recherches ont évolué vers les modèles pour le GPU computing. Bien d’autres avaient déjà démontré l’utilité du GPU pour une quantité d’applications variées, mais il n’existait pas encore de structure ou modèle de programmation satisfaisant pour appréhender le GPU en tant qu’unité de calcul. Il faut dire qu’à l’époque, il fallait un doctorat en infographie pour porter une application sur le GPU. J’ai donc initié le projet Brook avec le but de définir un langage de programmation pour le GPU computing, lequel faisait abstraction des principes du graphisme pour s’attacher à des concepts de programmation généralistes. Le concept fondamental de la programmation au sein du projet Brook était le « stream », un ensemble d’éléments de données qui nécessitaient un travail similaire. Brook est finalement devenu mon sujet de thèse à Stanford.
Votre travail a commencé par le Merrimac, le supercalculateur de Stanford. En quoi celui-ci diffère-t-il d’un supercalculateur Tesla par exemple ?
Les concepts de programmation modèle issus de Brook pouvaient s’appliquer au-delà des GPU. Ainsi nous avons travaillé sur deux différents types d’implémentation de Brook à Stanford : un pour les GPU et l’autre pour le Merrimac, qui était une architecture développée à l’université pour la recherche. Bon nombre d’idées développées sur le Merrimac ont été un déclic quant à l’utilité du GPU pour l’informatique en général. Par ailleurs, il faut savoir que Bill Dally était le chef de projet Merrimac à Stanford avant de devenir Chief Scientist (Directeur recherche) chez NVIDIA.
Est-ce que CUDA a trouvé ses racines dans Gelato ? Quand est-ce que les premières recherches universitaires sur le GPGGPU ont commencé ? A quand remonte sa première utilisation commerciale ?
J’ai commencé CUDA tout en poursuivant mes recherches à l’université. NVIDIA soutenait déjà mes travaux et voyait clairement l’intérêt à optimiser le GPU computing d’un point de vue matériel. En 2005, j’ai donc intégré NVIDIA pour travailler sur CUDA. A l’époque, nous étions deux : un ingénieur et moi-même. Mais nous avons fait évoluer le projet vers un département à part entière et un des principaux atouts des cartes graphiques NVIDIA actuelles.
Pour ce qui est des éléments chronologiques, www.gpgpu.org fait un bel historique du GPU computing depuis 2002.
Actuellement, AMD milite pour Brook en tant que langage de programmation principal pour le GPGPU tandis que NVIDIA pousse pour le C avec des extensions CUDA. Comment se comparent les deux en termes de forces/faiblesses ?
En commençant chez NVIDIA, nous avons eu l’opportunité de revoir certaines décisions quant à la conception fondamentale de Brook, lesquelles s’appuyaient assez largement sur ce que les composants DX9 étaient alors capables de faire. Une des principales limitations était due à la mémoire, qui imposait au programmeur de concevoir leur algorithme avec un schéma d’accès mémoire assez limité. L’utilisation de C avec les extensions CUDA a permis d’assouplir ces contraintes puisque le programmeur dispose d’une réserve massive de threads, ce qui lui permet d’accéder à la mémoire comme il/elle le souhaite. Cette amélioration parmi d’autres nous a permis d’implémenter la sémantique complète du langage C sur le GPU.
Actualités relatives
Les offres du moment
Tous les comparatifs
- NVIDIA aidé par Microsoft et l’OpenCL
- NVIDIA : de nouveaux pilotes GeForce bêta
- Radeon HD 5800 : des pilotes pour Vista et 7
- SIEMENS INDUSTRY - MOBILITY - INGÉNIEUR SYSTÈME POSTE DE COMMANDE CENTRALISÉE (H/F)
- SIEMENS INDUSTRY - MOBILITY - INGENIEUR INTEGRATION ET VALIDATION LOGICIEL POUR LES EQUIPEMENTS VIDEO PHONIE (H/F)
- SIEMENS INDUSTRY - MOBILITY - CHEF DE PROJET INFORMATIQUE (H/F)
- SIEMENS IT SOLUTIONS & SERVICES - CONTRÔLEUR DE GESTION / GESTIONNAIRE DE PROJET (H/F)
- SIEMENS HEALTHCARE - WORKFLOW & SOLUTIONS - INGENIEUR DEVELOPPEMENT FRAMEWORK MUMPS (H/F)

Excellente idée, d'autant plus qu'il est utile d'avoir le discours des experts (en tout cas le discours de ceux qui font l'actualité... vu le nombre "d'experts" autoproclamés).
Bonne chance aux modos pour gérer les crises de nerfs à venir
Enfin bon, je sais aussi qu'on va avoir de jolies batailles rangées, rien qu'avec les sujets touchant Apple
[]<--- déjà dehors...
Toujours au top Tom's !!

C'est vraiment une très bonne initiative ces interviews High-Tech.
Merci
Serait-il possible d'ajouter la possibilité de télécharger ces articles en divers formats (pdf..) ?
Je trouve l'idée intéressante mais j'espère que vous veillerez à clairement indiquer les responsabilités et l'entreprise au sein de laquelle ces experts travaillent car il est fort probable que cela puisse influencer énormément les propos de ces messieurs.
En espérant que cela ne servira pas seulement à relayer simplement le discours marketing des professionnels du secteurs.
Les appartenances seront évidemment clarifiées pour chaque intervenant via un encadré en en-tête.
Je lui aurais posé la question du pourquoi du support de DirectCompute par Nvidia ?
Après tout il ne s'agit que d'une API bricolée à la va-vite pour contrer OpenCL... Qui a en plus le défaut d'être réservé à Windows et tout ce qu'il y a de plus non-standard et propriétaire. Alors qu'au contraire Apple a dès le départ choisi d'ouvrir OpenCL à tous...
Bref DirectCompute fait double-emploi et trimballe ces problèmes pour n'offrir rien de plus... Pourquoi Nvidia accepte il alors de perdre du temps avec ça ?
Ne pouvaient-ils pas s'entendre avec AMD pour refuser de d'intégrer DC ?
Franchement les deux avaient tout à y gagner à ne pas se compliquer la vie pour rien et supporter tous les caprices de MS.
Je lui aurais posé la question du pourquoi du support de DirectCompute par Nvidia ?
Element de réponse :
http://www.nvidia.fr/object/directcompute_fr.html
Après tout il ne s'agit que d'une API bricolée à la va-vite pour contrer OpenCL... Qui a en plus le défaut d'être réservé à Windows et tout ce qu'il y a de plus non-standard et propriétaire. Alors qu'au contraire Apple a dès le départ choisi d'ouvrir OpenCL à tous...
Tous = 5% du monde. Merci Apple, trop généreux...
Bref DirectCompute fait double-emploi et trimballe ces problèmes pour n'offrir rien de plus... Pourquoi Nvidia accepte il alors de perdre du temps avec ça ?
Pour avoir des clients
Ne pouvaient-ils pas s'entendre avec AMD pour refuser de d'intégrer DC ?
Franchement les deux avaient tout à y gagner à ne pas se compliquer la vie pour rien et supporter tous les caprices de MS.
OpenGL et Direct 3D, OpenAL et DirectSound, OpenCL et DirectCompute : tout ce petit monde cohabite sans problème. N'ayant pas Windows, tu ne peux pas le savoir.
MS développe sa tambouille sans interdire aux autres de développer des solutions similaires... on peux pas en dire autant coté Apple
Je lui aurais posé la question du pourquoi du support de DirectCompute par Nvidia ?Après tout il ne s'agit que d'une API bricolée à la va-vite pour contrer OpenCL... Qui a en plus le défaut d'être réservé à Windows et tout ce qu'il y a de plus non-standard et propriétaire. Alors qu'au contraire Apple a dès le départ choisi d'ouvrir OpenCL à tous...Bref DirectCompute fait double-emploi et trimballe ces problèmes pour n'offrir rien de plus... Pourquoi Nvidia accepte il alors de perdre du temps avec ça ?Ne pouvaient-ils pas s'entendre avec AMD pour refuser de d'intégrer DC ?Franchement les deux avaient tout à y gagner à ne pas se compliquer la vie pour rien et supporter tous les caprices de MS.
Quelle est l'api 3d la plus utilisée dans le monde du jeu video console actuellement ?
DirectX 9 (PC)
DirectX 9+ (360)
LibGCM (PS3)
LibGCM, c'est une API bas niveau fournie par nvidia pour exploiter le GPU de la PS3 (nommé RSX). C'est une API très proche de DirectX 9 dans sa philosophie. Bien sur dans le sdk de la PS3, Sony fourni un driver OpenGL mais qui est développé au dessus de LibGCM. Tout les développeurs sérieux (id, epic, crytek etc, préfèrent court-circuiter cette couche et taper directement dans le bas niveau).
Résultat, lorsqu'un moteur 3D est développé, ses interfaces de haut niveau pour le rendu 3d ressemblent comme 2 gouttes d'eau à du DirectX, avec le bas niveau qui tire sur l'api de la plateforme.
Le problème d'OpenGL c'est la fiabilité des drivers. Les développeurs passent et continuerons de passer par du DirectX (9-10-11) pendant un petit moment. Il était normal d'intégrer DirectCompute avec DirectX pour eux.
Utiliser OpenCL avec du DirectX est beaucoup beaucoup moins propre (même si c'est possible) et surtout je suis pas sur que ça soit aussi souple/performant que l'association Direct3D + DirectCompute.
Maintenant réfléchi 5 min, si comme tu dis pourquoi nvidia et ati refusent pas de supporter DirectCompute?, c'est juste qu'il y a un gros marché et un avenir, sinon il l'aurait pas fait. (comme nvidia a plus ou moins bypasser DirectX 10.1)
Le business avant tout.
Merrimac - Stanford Streaming Supercomputer Project
A Streaming Supercomputer
Bill Dally, Pat Hanrahan,and Ron Fedkiw
September 18, 2001
http://merrimac.stanford.edu/publi [...] epaper.pdf
General-Purpose Computation on Graphics Hardware
The programming systems below attempt to provide GPGPU functionality while hiding the GPU-specific details from the programmer.
- Brook (Ian Buck, 2002)
This specification was developed with the assistance of Mattan Erez, Stanford University, the Stanford Streaming Supercomputer project, Peter Mattson, Eric Schweitz, Kenneth Mackenzie, Reservoir Labs
http://merrimac.stanford.edu/brook/
Brook for GPUs is a compiler and runtime implementation of the Brook stream program language for modern graphics hardware [Shader Model 2.0 = R300, NV30].
- Brook+
Brook+ is an implementation by AMD of the Brook GPU spec on AMD's Compute Abstraction Layer (CAL) with some enhancements
http://developer.amd.com/gpu_assets/AMD-Brookplus.pdf
ATI, SIGGRAPH 2006 (août), Data Parallel Virtual Machine (DPVM) : Expose relevant parts of the GPU, Hide all other graphics-specific features, Provide direct communication to device, Eliminate driver implemented procedural API
(Octobre 2005 ATI X1K architecture)
http://developer.amd.com/media/gpu_assets/dpvm_e.pdf
http://www.graphicshardware.org/pr [...] d-gh06.pdf
C'était en juillet 2006 qu'AMD avait annoncé l'acquisition d'ATI (finalisée en octobre 2006 au prix d'un endettement record)
- Scout compiler
http://gpgpu.org/static/articles/scout04.pdf
http://www.cct.lsu.edu/~estrabd/LA [...] /inman.pdf
- Accelerator (Microsoft Research)
Accelerator is written in C# and can be used with any .NET language. As such, it is a very effective and straightforward way to implement GPGPU algorithms.
http://research.microsoft.com/pubs [...] 05-184.pdf (ACM 2006)
- CGiS (Compiler Design Lab, Saarland University, Saarbrücken, ALLEMAGNE) : Like Brook, CGiS provides stream data types, but instead of explicit kernels that run on the GPU, the language invokes GPU computation via a built-in data-parallel forall operator.
- Glift template library
- CUDA (février 2007 : NVIDIA annonce la disponibilité de la version bêta du SDK de CUDA)
(Novembre 2006 GeForce 8800)
Ian Buck: "En 2005, j’ai donc intégré NVIDIA pour travailler sur CUDA. A l’époque, nous étions deux : un ingénieur et moi-même."
- OpenCL (2008): unified programming model for all CPU, GPU, Cell, DSP and other processors in a system
- Direct Compute (2009)
master capello a pris sa retraite... y'a un poste à pourvoir sur FR3.
il fallait encore qu'il ramène sa fraise sur apple... stune pathologie, ça.
y'a pas un psy dans la salle?
master capello a pris sa retraite... y'a un poste à pourvoir sur FR3.
Je me contente d'intervenir dans un domaine où je suis compétent... et je renouvelle ma suggestion de remplacer le lien sur le nom de l'auteur dans la page de la news qui renvoie... à la page de la news (ce qui est indispensable, évidemment !
Je me contente d'intervenir dans un domaine où je suis compétent... et je renouvelle ma suggestion de remplacer le lien sur le nom de l'auteur dans la page de la news qui renvoie... à la page de la news (ce qui est indispensable, évidemment ! ) par un lien vers les MP de l'auteur.
Bizarre, moi ça m'affiche une page "contact" où je peux poser une question à l'auteur
Toi, t'as encore des problèmes avec ton FF
Bizarre, moi ça m'affiche une page "contact" où je peux poser une question à l'auteur

Toi, t'as encore des problèmes avec ton FF
Je plussois, ces liens fonctionnent ...
Bizarre, moi ça m'affiche une page "contact" où je peux poser une question à l'auteur

Toi, t'as encore des problèmes avec ton FF
En fait, échaudé par de précédentes expériences je ne cliquais pas sur le lien (c'est le côté paresseux
soit l'adresse de la page plus /#, ce qui ressemble à une "ancre" HTML plus qu'autre chose. M'enfin...
Ce lien ne mène d'ailleurs pas au MP de l'auteur de la news mais à un contact avec la "rédaction" du site.
Je suppose qu'il y a un tri automatique derrière pour faire suivre...
Désormais je tâcherai de l'utiliser.
En fait, échaudé par de précédentes expériences je ne cliquais pas sur le lien (c'est le côté paresseux
), me contentant de lire le lien qui donne ceci : http://www.presence-pc.com/actuali [...] ts-36592/#
soit l'adresse de la page plus /#, ce qui ressemble à une "ancre" HTML plus qu'autre chose. M'enfin...
Ce lien ne mène d'ailleurs pas au MP de l'auteur de la news mais à un contact avec la "rédaction" du site.
Je suppose qu'il y a un tri automatique derrière pour faire suivre...
Désormais je tâcherai de l'utiliser.
[TOTALEMENT HORS SUJET]
En regardant la source, le lien est fait comme ça:
Ca renvoit à un formulaire de type post:
donc normal qu'on ne voit pas le lien directement, mais il y a bien des paramètres ...
[/TOTALEMENT HORS SUJET]
[TOTALEMENT HORS SUJET]
Un HS utile ça n'est plus tout à fait un HS. Merci !
Un HS utile ça n'est plus tout à fait un HS. Merci !