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, 0.15.0.0, 0.15.1.0
Change logNone available
Dependenciesarray (>=0.3 && <0.5), base (==4.*), blaze-html (>=0.5 && <0.7), blaze-markup (==0.5.*), bytestring (>=0.9 && <0.11), containers (>=0.3 && <0.6), directory (>=1.0 && <1.3), fclabels (>=1.0 && <1.2), filepath (>=1.0 && <1.4), ghc-prim, hashable (>=1.1 && <1.3), hashtables (>=1.0 && <1.2), mtl (>=2.0 && <2.2), pretty (>=1.0 && <1.2), text (>=0.10 && <0.12), unix (>=2.4 && <2.7)
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
UploadedSun Jun 9 12:42:25 UTC 2013 by TrevorMcDonell
DistributionsLTSHaskell:0.15.1.0, NixOS:0.15.1.0, Stackage:0.15.1.0
Downloads6681 total (306 in last 30 days)
StatusDocs uploaded by user
Build status unknown [no reports yet]

Modules

[Index]

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