accelerate: An embedded language for accelerated array processing
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.LLVM.PTX it may be on-the-fly off-loaded to the GPU.
See the Data.Array.Accelerate module for further information.
- Additional components
The following supported add-ons are available as separate packages. Use them by adding them as dependencies to your project's cabal file.
accelerate-llvm-native: Backend supporting parallel execution on multicore CPUs.accelerate-llvm-ptx: Backend supporting parallel execution on CUDA-capable NVIDIA GPUs. Requires a GPU with compute capability 2.0 or greater. See the following table for supported GPUs: http://en.wikipedia.org/wiki/CUDA#Supported_GPUscontainers-accelerate: Container types for use with Accelerate.hashable-accelerate: Class for types which can be converted to a hash value.colour-accelerate: Colour representations in Accelerate (RGB, sRGB, HSV, and HSL).mwc-random-accelerate: Generate Accelerate arrays filled with high quality pseudorandom numbers.
Additional libraries that have worked in the past but are not included in the current release (they may be updated later, check to be sure):
accelerate-examples: Computational kernels and applications demonstrating the use of Accelerate.accelerate-io*: Fast conversions between Accelerate arrays and other array and data formats.accelerate-fft: Discrete Fourier transforms, with FFI bindings to optimised implementations.accelerate-blas: Numeric linear algebra, with FFI bindings to optimised implementations.accelerate-bignum: Fixed-width large integer arithmetic.gloss-accelerate: Generate gloss pictures from Accelerate.gloss-raster-accelerate: Parallel rendering of raster images and animations.lens-accelerate: Lens operators for Accelerate types.linear-accelerate: Linear vector spaces in Accelerate.
- Examples and documentation
Haddock documentation is included in the package.
The accelerate-examples package demonstrates a range of computational
kernels and several complete applications, including:
An implementation of the Canny edge detection algorithm
Interactive Mandelbrot and Julia set generators
A particle-based simulation of stable fluid flows
An n-body simulation of gravitational attraction between solid particles
An implementation of the PageRank algorithm
A simple interactive ray tracer
A cellular automata simulation
A "password recovery" tool, for dictionary lookup of MD5 hashes
lulesh-accelerate is an implementation of the Livermore Unstructured
Lagrangian Explicit Shock Hydrodynamics (LULESH) mini-app. LULESH represents a
typical hydrodynamics code such as ALE3D, but is highly simplified and
hard-coded to solve the Sedov blast problem on an unstructured hexahedron
mesh.
- Mailing list and contacts
Gitter chat: https://gitter.im/AccelerateHS/Lobby
Mailing list: accelerate-haskell@googlegroups.com (discussion of both use and development welcome).
Sign up for the mailing list here: http://groups.google.com/group/accelerate-haskell
Bug reports and issue tracking: https://github.com/AccelerateHS/accelerate/issues
[Skip to Readme]
Modules
[Index] [Quick Jump]
- Crypto
- Hash
- Crypto.Hash.XKCP
- Hash
- Data
- Array
- Data.Array.Accelerate
- Data.Array.Accelerate.AST
- Data.Array.Accelerate.AST.Environment
- Data.Array.Accelerate.AST.Idx
- Data.Array.Accelerate.AST.LeftHandSide
- Data.Array.Accelerate.AST.Var
- Analysis
- Data.Array.Accelerate.Analysis.Hash
- Data.Array.Accelerate.Analysis.Match
- Array
- Data.Array.Accelerate.Array.Data
- Data.Array.Accelerate.Array.Remote
- Data.Array.Accelerate.Array.Remote.Class
- Data.Array.Accelerate.Array.Remote.LRU
- Data.Array.Accelerate.Array.Remote.Table
- Data.Array.Accelerate.Array.Unique
- Data.Array.Accelerate.Async
- Control
- Data
- Debug
- Data.Array.Accelerate.Debug.Internal
- Data.Array.Accelerate.Debug.Trace
- Data.Array.Accelerate.Error
- Data.Array.Accelerate.Interpreter
- Data.Array.Accelerate.Lifetime
- Data.Array.Accelerate.Pretty
- Representation
- Data.Array.Accelerate.Representation.Array
- Data.Array.Accelerate.Representation.Elt
- Data.Array.Accelerate.Representation.Shape
- Data.Array.Accelerate.Representation.Slice
- Data.Array.Accelerate.Representation.Stencil
- Data.Array.Accelerate.Representation.Tag
- Data.Array.Accelerate.Representation.Type
- Data.Array.Accelerate.Representation.Vec
- Data.Array.Accelerate.Smart
- Sugar
- Data.Array.Accelerate.Sugar.Array
- Data.Array.Accelerate.Sugar.Elt
- Data.Array.Accelerate.Sugar.Foreign
- Data.Array.Accelerate.Sugar.Shape
- Data.Array.Accelerate.Sugar.Vec
- Test
- Data.Array.Accelerate.Test.NoFib
- Data.Array.Accelerate.Test.Similar
- Data.Array.Accelerate.Trafo
- Data.Array.Accelerate.Trafo.Config
- Data.Array.Accelerate.Trafo.Delayed
- Data.Array.Accelerate.Trafo.Fusion
- Data.Array.Accelerate.Trafo.LetSplit
- Data.Array.Accelerate.Trafo.Sharing
- Data.Array.Accelerate.Trafo.Simplify
- Data.Array.Accelerate.Trafo.Substitution
- Data.Array.Accelerate.Trafo.Var
- Data.Array.Accelerate.Type
- Data.Array.Accelerate.Unsafe
- Data.Array.Accelerate.AST
- Data.Array.Accelerate
- Data.BitSet
- Primitive
- Data.Primitive.Vec
- Array
Flags
Manual Flags
| Name | Description | Default |
|---|---|---|
| debug | Enable debug tracing messages. With debugging enabled, applications will read the following options from
the environment variable ./program +ACC ... -ACC Note that a backend may not implement (or be applicable to) all options. The following flags control phases of the compiler. The are enabled with
The following options control debug message output, and are enabled with
| Disabled |
| tracy | Enable kernel profiling using Tracy. This flag requires The executables
For example on Debian/Ubuntu you can install all of these via: sudo apt install cmake pkg-config libfreetype-dev libglfw3-dev libgtk-3-dev libtbb-dev Or on macOS via: brew install cmake pkg-config freetype glfw | Disabled |
| bounds-checks | Enable bounds checking in the interpreter | Enabled |
| internal-checks | Enable some internal consistency checks | Disabled |
| nofib | Build the nofib test suite (required for backend testing) | Disabled |
Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info
Downloads
- accelerate-1.4.0.0.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
For package maintainers and hackage trustees
Candidates
| Versions [RSS] | 0.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, 1.0.0.0, 1.1.0.0, 1.1.1.0, 1.2.0.0, 1.2.0.1, 1.3.0.0, 1.4.0.0 |
|---|---|
| Change log | CHANGELOG.md |
| Dependencies | accelerate, ansi-terminal (>=0.6.2), base (>=4.12 && <4.23), base-orphans (>=0.3), bytestring (>=0.10.2), containers (>=0.3), deepseq (>=1.3), directory (>=1.0), double-conversion (>=2.0), exceptions (>=0.6), filepath (>=1.0), formatting (>=7.0), ghc-prim, half (>=0.3), hashable (>=1.1), hashtables (>=1.2.3), hedgehog (>=0.5), microlens (>=0.4), mtl (>=2.0), prettyprinter (>=1.7), prettyprinter-ansi-terminal (>=1.1.2), primitive (>=0.6.4), tasty (>=0.11), template-haskell (<2.25), terminal-size (>=0.3), text (>=1.2.4), transformers (>=0.3), unique, unix, unordered-containers (>=0.2), vector (>=0.10), Win32 [details] |
| Tested with | ghc >=8.6 |
| License | BSD-3-Clause |
| Author | The Accelerate Team |
| Maintainer | Trevor L. McDonell <trevor.mcdonell@gmail.com> |
| Uploaded | by tomsmeding at 2026-04-02T16:43:06Z |
| Category | Accelerate, Compilers/Interpreters, Concurrency, Data, Parallelism |
| Home page | https://github.com/AccelerateHS/accelerate/ |
| Bug tracker | https://github.com/AccelerateHS/accelerate/issues |
| Source repo | head: git clone https://github.com/AccelerateHS/accelerate.git this: git clone https://github.com/AccelerateHS/accelerate.git(tag v1.4.0.0) |
| Reverse Dependencies | 44 direct, 10 indirect [details] |
| Executables | tracy-capture, tracy |
| Downloads | 33700 total (97 in the last 30 days) |
| Rating | 2.5 (votes: 6) [estimated by Bayesian average] |
| Your Rating | |
| Status | Docs available [build log] Last success reported on 2026-04-02 [all 1 reports] |


