Accelerating Haskell array codes with multicore GPUs

Manuel M.T. Chakravarty, Gabriele Keller, Sean Lee, Trevor L. McDonell, Vinod Grover

Research output: Chapter in Book/Report/Conference proceedingConference contributionAcademicpeer-review

Abstract

Current GPUs are massively parallel multicore processors optimised for workloads with a large degree of SIMD parallelism. Good performance requires highly idiomatic programs, whose development is work intensive and requires expert knowledge. To raise the level of abstraction, we propose a domain-specific high-level language of array computations that captures appropriate idioms in the form of collective array operations. We embed this purely functional array language in Haskell with an online code generator for NVIDIA's CUDA GPGPU programming environment. We regard the embedded language's collective array operations as algorithmic skeletons; our code generator instantiates CUDA implementations of those skeletons to execute embedded array programs. This paper outlines our embedding in Haskell, details the design and implementation of the dynamic code generator, and reports on initial benchmark results. These results suggest that we can compete with moderately optimised native CUDA code, while enabling much simpler source programs.

Original languageEnglish
Title of host publicationDAMP'11 - Proceedings of the 6th ACM Workshop on Declarative Aspects of Multicore Programming
Pages3-14
Number of pages12
DOIs
Publication statusPublished - 7 Mar 2011
Externally publishedYes
Event6th Workshop on Declarative Aspects of Multicore Programming, DAMP 2011 - Austin, TX, United States
Duration: 23 Jan 201123 Jan 2011

Conference

Conference6th Workshop on Declarative Aspects of Multicore Programming, DAMP 2011
Country/TerritoryUnited States
CityAustin, TX
Period23/01/1123/01/11

Keywords

  • Arrays
  • Data parallelism
  • Dynamic compilation
  • GPGPU
  • Haskell
  • Skeletons

Fingerprint

Dive into the research topics of 'Accelerating Haskell array codes with multicore GPUs'. Together they form a unique fingerprint.

Cite this