The accelerate package

[Tags: bsd3, library]

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

A simple example

As a simple example, consider the computation of a dot product of two vectors of floating point numbers:

 dotp :: Acc (Vector Float) -> Acc (Vector Float) -> Acc (Scalar Float)
 dotp xs ys = fold (+) 0 (zipWith (*) xs ys)

Except for the type, this code is almost the same as the corresponding Haskell code on lists of floats. The types indicate that the computation may be online-compiled for performance – for example, using Data.Array.Accelerate.CUDA it may be on-the-fly off-loaded to the GPU.

Available backends

Currently, there are two backends:

1. An interpreter that serves as a reference implementation of the intended semantics of the language, which is included in this package.

2. A CUDA backend generating code for CUDA-capable NVIDIA GPUs: http://hackage.haskell.org/package/accelerate-cuda

Several experimental and/or incomplete backends also exist. If you are interested in helping finish these, please contact us.

1. Cilk/ICC and OpenCL: https://github.com/AccelerateHS/accelerate-backend-kit

2. Another OpenCL backend: https://github.com/HIPERFIT/accelerate-opencl

3. A backend to the Repa array library: https://github.com/blambo/accelerate-repa

Additional components

The following support packages are available:

1. accelerate-cuda: A high-performance parallel backend targeting CUDA-enabled NVIDIA GPUs. Requires the NVIDIA CUDA SDK and, for full functionality, hardware with compute capability 1.2 or greater. See the table on Wikipedia for supported GPUs: http://en.wikipedia.org/wiki/CUDA#Supported_GPUs

2. accelerate-examples: Computational kernels and applications showcasing Accelerate, as well as performance and regression tests.

3. accelerate-io: Fast conversion between Accelerate arrays and other formats, including Repa arrays.

4. accelerate-fft: Computation of Discrete Fourier Transforms.

Install them from Hackage with cabal install PACKAGE

Examples and documentation

Haddock documentation is included in the package, and a tutorial is available on the GitHub wiki: https://github.com/AccelerateHS/accelerate/wiki

The accelerate-examples package demonstrates a range of computational kernels and several complete applications, including:

Mailing list and contacts
Release notes

Properties

Versions0.4.0, 0.5.0.0, 0.6.0.0, 0.7.1.0, 0.8.0.0, 0.8.1.0, 0.9.0.0, 0.9.0.1, 0.10.0.0, 0.12.0.0, 0.12.1.0, 0.12.2.0, 0.13.0.0, 0.13.0.1, 0.13.0.2, 0.13.0.3, 0.13.0.4, 0.13.0.5, 0.14.0.0
Dependenciesarray (>=0.3 && <0.5), base (==4.*), containers (>=0.3 && <0.6), fclabels (>=1.0 && <1.2), ghc-prim, hashable (>=1.1 && <1.3), hashtables (>=1.0 && <1.2), pretty (>=1.0 && <1.2)
LicenseBSD3
AuthorManuel M T Chakravarty, Robert Clifton-Everest, Gabriele Keller, Sean Lee, Ben Lever, Trevor L. McDonell, Ryan Newtown, Sean Seefried
MaintainerManuel M T Chakravarty <chak@cse.unsw.edu.au>
StabilityExperimental
CategoryCompilers/Interpreters, Concurrency, Data, Parallelism
Home pagehttps://github.com/AccelerateHS/accelerate/
Bug trackerhttps://github.com/AccelerateHS/accelerate/issues
Source repositoryhead: git clone git://github.com/AccelerateHS/accelerate.git
Upload dateSun May 12 09:02:16 UTC 2013
Uploaded byTrevorMcDonell
DistributionsNixOS:0.14.0.0
Downloads2581 total (397 in last 30 days)

Modules

Flags

NameDescriptionDefault
debugEnable tracing message flags. These are read from the command-line arguments, which is convenient but may cause problems interacting with the user program, so are disabled by default. The available options are: * -ddump-sharing: print sharing recovery information * -ddump-simpl-stats: dump statistics counts from the simplifier phase * -ddump-simpl-iterations: dump the program after each iteration of the simplifier * -dverbose: other, uncategorised messages Enabled
more-ppEnable HTML and Graphviz pretty printing.Disabled
bounds-checksEnable bounds checkingEnabled
unsafe-checksEnable bounds checking in unsafe operationsDisabled
internal-checksEnable internal consistency checksDisabled

Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info

Downloads

Maintainers' corner

For package maintainers and hackage trustees