Rencontrez Ian Buck de Nvidia
Merci d’avoir pris le temps de discuter aujourd’hui. Commençons par quelques bases. Pourquoi ne parlez-vous pas un peu de vous à nos lecteurs et de ce que vous faites actuellement chez Nvidia ?
Je suis directeur logiciel pour GPU Computing ici chez Nvidia. Mon objectif principal est de construire et de faire évoluer une plate-forme informatique GPU complète, qui comprend le logiciel système, les outils de développement, la direction du langage et du compilateur, les bibliothèques et les applications et algorithmes ciblés. Avec l’aide d’une équipe formidable, nous développons à la fois le logiciel de l’utilisateur final et définissons la direction de l’informatique GPU au sein de Nvidia.
Pourquoi ne pas commencer par le début ? J’imagine que votre intérêt pour GPGPU n’a pas commencé lorsque vous aviez 5 ans – quels événements se sont déroulés à Princeton ou à Stanford qui vous ont vraiment amené à découvrir un intérêt pour GPGPU ?
J’ai essayé l’informatique GPU à l’époque de Princeton, en expérimentant la convection thermique et la simulation de fluide sur du matériel graphique, qui, à l’époque, était le SGI O2. Bien que les choses aient été très limitées, il était difficile de le justifier.
J’ai sérieusement commencé à m’intéresser à l’informatique GPU lors de mes recherches doctorales à Stanford. À Stanford, avec d’autres membres de la communauté de la recherche, j’ai réalisé que la progression naturelle des graphiques programmables était l’évolution du GPU vers un processeur plus polyvalent. Nous avons écrit l’un des premiers articles SIGGRAPH sur le lancer de rayons avec du matériel GPU de classe DX9 pour aider à prouver ce point. Ce qui était si motivant dans ce travail, c’est que ce processeur de base, qui était disponible sur tous les PC, suivait un taux de croissance des performances au cube selon la loi de Moore, bien plus rapide que le CPU. Cela soulevait la question : que pourrait faire un PC s’il avait plusieurs ordres de grandeur de puissance de calcul en plus qu’aujourd’hui ? Un changeur de jeu total pour les sciences informatiques ainsi que la vision par ordinateur, l’IA, l’exploration de données et les graphiques.
Quel était votre rôle avec Brook ?
Après avoir travaillé sur la capacité de tracer des rayons sur le GPU, mes recherches à Stanford se sont concentrées sur la compréhension du bon modèle de programmation pour le calcul GPU. À l’époque, beaucoup d’autres avaient montré que le GPU était bon pour une variété d’applications différentes, mais il n’y avait pas de bon cadre ou de modèle de programmation sur la façon dont on devrait considérer le GPU comme un dispositif de calcul. A l’époque, il fallait un doctorat en infographie pour pouvoir porter une application sur le GPU. J’ai donc lancé le projet Brook dans le but de définir un langage de programmation pour l’informatique GPU, qui réduisait les graphismes du GPU à des concepts de programmation plus généraux. Le concept de programmation fondamental de Brook était le « flux », qui était une collection d’éléments de données nécessitant un travail similaire. Brook est finalement devenu ma thèse de doctorat à Stanford.
Votre travail a commencé avec Merrimac, le Stanford Streaming Super Computer. En quoi est-ce différent de quelque chose comme une Tesla ?
Les concepts du modèle de programmation de Brook étaient applicables à plus que les GPU. À Stanford, nous avons travaillé sur deux implémentations différentes du modèle de programmation Brook : l’une pour les GPU, l’autre pour Merrimac qui était une architecture de recherche développée à Stanford. De nombreuses idées lancées dans le cadre de Merrimac ont influencé la façon dont les GPU pourraient être améliorés pour l’informatique à usage général. Il convient également de noter que Bill Dally, qui était l’enquêteur principal de Merrimac à Stanford, est maintenant le scientifique en chef de Nvidia.
CUDA avait-il des racines dans Gelato ? Quelle a été la première exploration académique de GPGPU ? Qu’en est-il de la première utilisation commercialisée ?
J’ai commencé CUDA alors que je terminais mes recherches à Stanford. Nvidia était déjà très favorable à mes recherches et a clairement vu le potentiel de mieux activer l’informatique GPU du côté matériel des choses. J’ai rejoint Nvidia pour démarrer le projet CUDA en 2005. À l’époque, il n’y avait que moi et un autre ingénieur. Nous avons maintenant développé le projet dans l’organisation qu’il est aujourd’hui, et un composant central des GPU de Nvidia aujourd’hui.
www.gpgpu.org fournit une belle histoire du calcul GPU, remontant à 2002.
Actuellement, AMD pousse Brook comme langage de programmation de choix pour GPGPU, tandis que Nvidia a C avec des extensions CUDA. Comment compareriez-vous les forces/faiblesses des deux ?
À partir de Nvidia, nous avons eu l’occasion de revoir certaines des décisions de conception fondamentales de Brook, qui étaient largement basées sur ce que le matériel de classe DX9 pouvait réaliser. L’une des principales limitations était les contraintes du modèle de mémoire, qui obligeaient le programmeur à mapper son algorithme autour d’un modèle d’accès à la mémoire assez limité. Avec nos extensions C avec CUDA, nous avons assoupli ces contraintes. Fondamentalement, le programmeur disposait simplement d’un énorme pool de threads et pouvait accéder à la mémoire comme il le souhaitait. Cette amélioration, ainsi que quelques autres, nous a permis d’implémenter une sémantique complète du langage C sur le GPU.