Abstractions performantes pour cartes graphiques
Institution:
Paris 6Disciplines:
Directors:
Abstract EN:
Les cartes graphiques (GPU) sont des dispositifs performants etspécialisés dotés de nombreuses unités de calcul, dédiés à l'affichageet au traitement 3D. Les systèmes Cuda et OpenCL permettent d'endétourner l'usage pour réaliser des calculs généralistes, normalementeffectués par le CPU : la programmation GPGPU (General Purpose GPU). De très bas niveau d'abstraction, ils demandent de manipulerexplicitement de nombreux paramètres matériels comme la mémoire ou leplacement des calculs sur les différentes unités. Le but de cettethèse est l'étude de solutions de plus haut niveau d'abstraction pourla programmation GPGPU, afin de la rendre à la fois plus accessible etplus sûre. Nous introduisons deux langages de programmation dédiés àla programmation GPGPU, SPML et Sarek ainsi que leur sémantiqueopérationnelle, et les garanties qu'ils apportent. Nous présentonsensuite une implantation de ces langages, en OCaml, à travers labibliothèque SPOC et le langage dédié intégré, Sarek. Des testsmontrent que notre solution permet d'atteindre un haut niveau deperformance, pour des exemples simples, comme pour le portage d'uneapplication numérique réaliste depuis Fortran et Cuda, vers OCaml. Nous montrons alors comment notre solution permet de définir dessquelettes de programmation offrant davantage d'abstractions. Àtravers un exemple, nous présentons comment ils simplifient laprogrammation GPGPU et autorisent le développement d'optimisationssupplémentaires. Enfin, nous discutons les possibilités offertes parl'évolution des systèmes matériels et logiciels pour offrir unesolution unifiée pour la programmation GPGPU.
Abstract FR:
Graphics Processing Units (GPUs) are complex devices with manycomputation units. Dedicated to display management and 3D processing,they are very efficient, but also highly specialized. Since recentyears, it is possible to divert their use to enable them to performgeneral computations normally performed by the CPU of thecomputer. This programming model, GPGPU (General Purpose GPU)programming is mainly based on two frameworks : Cuda and OpenCL. Bothare very low-level and demands explicit management of hardwareparameters such as the memory or the placement of computations on thevarious computation units. The goal of this thesis is the study ofsolutions of higher level of abstraction for GPGPU programming, inorder to make it more accessible and safer. After anintroduction to the context of GPGPU programming, we presnet twoprogramming languages dedicated to GPGPU programming, SPML andSarek. Through their operationnal semantics, we discuss theirproperties and the guarantees they offer. Then, we present animplementation of these languages with OCaml through the SPOC libraryand the domain specific language, Sarek. Performance tests show thatour solution achieves a high level of performance for simple examples,as well as with the translation of a realistic numerical applicationfrom Fortran and Cuda, to OCaml. We also show how our solutions allowto define algorithmic skeletons that offer more abstractions. Throughan example, we present how these skeletons eases GPGPU programming andoffers additional automatic optimizations. Finally we discuss how thecurrent hardware and software evolution can help providing a unifiedsolution for GPGPU programming.