GPU Programming in Functional Languages


Graphical Processing Units (GPUs) are known to be excellent computation accelerators. However, their approach to data processing is very different from regular CPUs. This makes it harder for a regular developer to program these devices. In the past few years, several frameworks were introduced to simplify the programming of GPU devices. Accelerate and Obsidian are two of these frameworks, written in Haskell. Both present an Embedded Domain Specific Language (EDSL) to represent GPU computations. They try, at different levels, to abstract GPU details away. In this paper we will assess different aspects of these EDSLs to see how usable they are for programmers. We will assess CUDA as well, to see how these EDSLs compare to plain CUDA. We will investigate a matrix multiplication use case, to see how well Accelerate and Obsidian perform.

1 Figure or Table

Cite this paper

@inproceedings{Fokkink2013GPUPI, title={GPU Programming in Functional Languages}, author={Hijma W . J . Fokkink}, year={2013} }