BOURGOIN Mathias
Supervision : Emmanuel CHAILLOUX
Opengpu Project - Efficient abstractions for graphics cards
Graphics Processing Units (GPUs) are complex devices with many computation units. Dedicated to display management and 3D processing, they are very efficient, but also highly specialized. Since recent years, it is possible to divert their use to enable them to perform general computations normally performed by the CPU of the computer. This programming model, GPGPU (General Purpose GPU) programming is mainly based on two frameworks : Cuda and OpenCL. Both are very low-level and demands explicit management of hardware parameters such as the memory or the placement of computations on the various computation units.
The goal of this thesis is the study of solutions of higher level of abstraction for GPGPU programming, in order to make it more accessible and safer.
After an introduction to the context of GPGPU programming, we presnet two programming languages dedicated to GPGPU programming, SPML and Sarek. Through their operationnal semantics, we discuss their properties and the guarantees they offer. Then, we present an implementation of these languages with OCaml through the SPOC library and the domain specific language, Sarek. Performance tests show that our solution achieves a high level of performance for simple examples, as well as with the translation of a realistic numerical application from Fortran and Cuda, to OCaml. We also show how our solutions allow to define algorithmic skeletons that offer more abstractions. Through an example, we present how these skeletons eases GPGPU programming and offers additional automatic optimizations. Finally we discuss how the current hardware and software evolution can help providing a unified solution for GPGPU programming.
Defence : 12/11/2013
Jury members :
M. Jocelyn Sérot (Professeur, Université Blaise Pascal) [Rapporteur]
M. Marco Danelutto (Associate Professor, Universita di Pisa, Italie) [Rapporteur]
M. Emmanuel Chailloux (Professeur, UPMC)
M. Jean-Luc Lamotte (Professeur, UPMC)
M. Jocelyn Sérot (Professeur, Université Blaise Pascal)
M. Carlos Agon (Professeur, IRCAM)
M. Joël Falcou (Maître de Conférences, Université Paris-Sud)
M. Gaétan Hains (Professeur, Université Paris-Est Créteil Val de Marne)
M. Stéphane Vialle (Professeur, Supélec)
2009-2017 Publications
-
2017
- M. Bourgoin, E. Chailloux, A. Doumoulakis : “Profiling High Level Heterogeneous Programs”, Tenth International Workshop on Programmability and Architectures for Heterogeneous Multicores (MULTIPROG 2017), Stockholm, Sweden (2017)
-
2016
- M. Bourgoin, E. Chailloux, J.‑L. Lamotte : “High Level Data Structures for GPGPU Programming in a Statically Typed Language”, International Journal of Parallel Programming, (Springer Verlag) (2016)
-
2015
- M. Bourgoin, E. Chailloux, J.‑L. Lamotte : “High Level Data Structures for GPGPU Programming in a Statically Typed Language”, 8th International Symposium on High-level Parallel Programming and Applications, Pisa, Italy (2015)
- M. Bourgoin, E. Chailloux : “High-Level Accelerated Array Programming in the Web Browser”, ACM SIGPLAN International Workshop on LIbraries, Languages and Compilers for Array Programming, Portland, OR, United States, pp. 31-36 (2015)
-
2014
- M. Bourgoin, E. Chailloux : “High Performance Client-Side Web Programming with SPOC and Js of ocaml”, The OCaml Users and Developers Workshop, Boston, MA, United States (2014)
- M. Bourgoin, E. Chailloux, J.‑L. Lamotte : “Efficient Abstractions for GPGPU Programming”, International Journal of Parallel Programming, vol. 42 (4), pp. 583-600, (Springer Verlag) (2014)
- M. Bourgoin, E. Chailloux : “GPGPU Composition with OCaml”, ACM SIGPLAN International Workshop on LIbraries, Languages and Compilers for Array Programming, ARRAY'14, Edinburgh, United Kingdom, pp. 1-6 (2014)
- M. Bourgoin, E. Chailloux, J.‑L. Lamotte : “High Level GPGPU Programming with Parallel Skeletons”, chapter in PATTERNS FOR PARALLEL PROGRAMMING ON GPUS, (Saxe-Coburg Publications) (2014)
-
2013
- M. Bourgoin : “Projet Opengpu - Abstractions performantes pour cartes graphiques”, thesis, defence 12/11/2013, supervision Chailloux, Emmanuel (2013)
- M. Bourgoin, E. Chailloux, J.‑L. Lamotte : “High-Performance GPGPU Programming with OCaml”, The OCaml Users and Developers Workshop, Boston, MA, United States (2013)
- M. Bourgoin, E. Chailloux, J.‑L. Lamotte : “Efficient Abstractions for GPGPU Programming”, International Symposium on High-level Parallel Programming and Applications, Paris, France (2013)
- M. Bourgoin, E. Chailloux, J.‑L. Lamotte : “Retour d’expérience : portage d’une application haute-performance vers un langage de haut niveau”, Compas'13, Grenoble, France, pp. 8 (2013)
-
2012
- M. Bourgoin, E. Chailloux, J.‑L. Lamotte : “SPOC: GPGPU PROGRAMMING THROUGH STREAM PROCESSING WITH OCAML”, Parallel Processing Letters, vol. 22 (2), pp. 1240007, (World Scientific Publishing) (2012)
- M. Bourgoin, E. Chailloux, J.‑L. Lamotte : “Experiments with Spoc”, Workshop OpenGPU, HIPEAC 2012, Paris, France (2012)
- M. Bourgoin, E. Chailloux, J.‑L. Lamotte : “SPOC : GPGPU programming through Stream Processing with OCaml”, HLPGPU2012 workshop, Paris, France, pp. 1-8 (2012)
-
2009
- M. Bourgoin, B. Canou, E. Chailloux, A. Jonquet, Ph. Wang : “OC4MC: Objective Caml for Multicore Architectures”, 21st Symposium on Implementation and Application of Functional Languages, vol. SHU-TR-CS-2009-09-1, South Orange, United States, pp. 24-41 (2009)