An Embedded Language for Accelerated Array Computations

Data.Array.Accelerate defines an embedded language of array computations for high-performance computing. Computations on multi-dimensional, regular arrays are expressed in the form of parameterised collective operations (such as maps, reductions, and permutations). These computations are online compiled and executed on a range of architectures.

For more details, please see the slides and video of a talk that I gave at the Haskell Implementors Workshop 2009 (in Edinburgh): Haskell Arrays, Accelerated (Using GPUs).

The current version is intended for developers only. It is not useful for applications yet.

Availability

What's missing?

Here is a list of features that are currently missing:

  • High-performance backends (i.e., code generators) — we are working on a CUDA backend and a sequential LLVM backend
  • Reification of sharing (via common subexpression elimination or sharing observation)
  • Preliminary API (the current functionality is limited)

Documentation

Haddock documentation is included in the package and linked from the Hackage page. Furthermore, the source package contains a few simple examples in the examples/simple/ directory.

Internals

The idea behind the HOAS (higher-order abstract syntax) to de-Bruijn conversion used in the library is described separately.

People (alphabetically)

• Copyright 2009 Manuel M T Chakravarty • Last modified: 3 October 2009