Skip to Main content Skip to Navigation
Journal articles

High Level Data Structures for GPGPU Programming in a Statically Typed Language

Mathias Bourgoin 1, 2 Emmanuel Chailloux 3 Jean-Luc Lamotte 4
LIFO - Laboratoire d'Informatique Fondamentale d'Orléans
3 APR - Algorithmes, Programmes et Résolution
LIP6 - Laboratoire d'Informatique de Paris 6
4 PEQUAN - Performance et Qualité des Algorithmes Numériques
LIP6 - Laboratoire d'Informatique de Paris 6
Abstract : To increase software performance, it is now common to use hardware accelerators. Currently, GPUs are the most widespread accelerators that can handle general computations. This requires to use GPGPU frameworks such as Cuda or OpenCL. Both are very low-level and make the benefit of GPGPU programming difficult to achieve. In particular, they require to write programs as a combination of two subprograms, and, to manually manage devices and memory transfers. This increases the complexity of the overall software design. The idea we develop in this paper is to guarantee expressiveness and safety for CPU and GPU computations and memory managements with high-level data-structures and static type-checking. In this paper, we present how statically typed languages, compilers and libraries help harness high level GPGPU programming. In particular, we show how we added high-level user-defined data structures to a GPGPU programming framework based on a statically typed programming language: OCaml. Thus, we describe the introduction of records and tagged unions shared between the host program and GPGPU kernels described via a domain specific language as well as a simple pattern matching control structure to manage them. Examples, practical tests and comparisons with state of the art tools, show that our solutions improve code design, productivity, and safety while providing a high level of performance.
Complete list of metadatas
Contributor : Mathias Bourgoin <>
Submitted on : Monday, May 23, 2016 - 11:07:19 PM
Last modification on : Friday, November 20, 2020 - 1:08:01 PM



Mathias Bourgoin, Emmanuel Chailloux, Jean-Luc Lamotte. High Level Data Structures for GPGPU Programming in a Statically Typed Language. International Journal of Parallel Programming, Springer Verlag, 2016, ⟨10.1007/s10766-016-0424-7⟩. ⟨hal-01320488⟩



Record views