Nikola: embedding compiled GPU functions in Haskell

  • Authors:
  • Geoffrey Mainland;Greg Morrisett

  • Affiliations:
  • Harvard University, Cambridge, MA, USA;Harvard University, Cambridge, MA, USA

  • Venue:
  • Proceedings of the third ACM Haskell symposium on Haskell
  • Year:
  • 2010

Quantified Score

Hi-index 0.00

Visualization

Abstract

We describe Nikola, a first-order language of array computations embedded in Haskell that compiles to GPUs via CUDA using a new set of type-directed techniques to support re-usable computations. Nikola automatically handles a range of low-level details for Haskell programmers, such as marshaling data to/from the GPU, size inference for buffers, memory management, and automatic loop parallelization. Additionally, Nikola supports both compile-time and run-time code generation, making it possible for programmers to choose when and where to specialize embedded programs.