Permalink
Find file
Fetching contributors…
Cannot retrieve contributors at this time
275 lines (248 sloc) 10.7 KB
Name: accelerate
Version: 2.0.0.0
Cabal-version: >= 1.8
Tested-with: GHC >= 7.8
Build-type: Simple
Synopsis: An embedded language for accelerated array processing
Description:
@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
particularly interested in any of these, especially with helping to finish
them, 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>
.
4. An infrastructure for generating LLVM code, with backends targeting
multicore CPUs and NVIDIA GPUs: <https://github.com/AccelerateHS/accelerate-llvm/>
.
[/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.1 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 'vector' and 'repa'.
.
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:
.
* An implementation of the Canny edge detection algorithm
.
* An interactive Mandelbrot set generator
.
* A particle-based simulation of stable fluid flows
.
* An /n/-body simulation of gravitational attraction between solid particles
.
* A cellular automata simulation
.
* A \"password recovery\" tool, for dictionary lookup of MD5 hashes
.
* A simple interactive ray tracer
.
[/Mailing list and contacts/]
.
* 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>
.
[/Hackage note/]
.
The module documentation list generated by Hackage is incorrect. The only
exposed modules should be:
.
* "Data.Array.Accelerate"
.
* "Data.Array.Accelerate.Interpreter"
.
* "Data.Array.Accelerate.Data.Complex"
.
License: BSD3
License-file: LICENSE
Author: Manuel M T Chakravarty,
Robert Clifton-Everest,
Gabriele Keller,
Sean Lee,
Ben Lever,
Trevor L. McDonell,
Ryan Newtown,
Sean Seefried
Maintainer: Manuel M T Chakravarty <chak@cse.unsw.edu.au>
Homepage: https://github.com/AccelerateHS/accelerate/
Bug-reports: https://github.com/AccelerateHS/accelerate/issues
Category: Compilers/Interpreters, Concurrency, Data, Parallelism
Stability: Experimental
Extra-source-files: changelog.md
Flag debug
Default: False
Description:
Enable 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
.
Flag more-pp
Description: Enable HTML and Graphviz pretty printing.
Default: False
Flag bounds-checks
Description: Enable bounds checking
Default: True
Flag unsafe-checks
Description: Enable bounds checking in unsafe operations
Default: False
Flag internal-checks
Description: Enable internal consistency checks
Default: False
Library
Build-depends: array >= 0.3,
base >= 4.7,
base-orphans >= 0.3,
containers >= 0.3,
exceptions >= 0.6,
unordered-containers >= 0.2,
fclabels >= 2.0,
ghc-prim,
hashable >= 1.1,
hashtables >= 1.0,
pretty >= 1.0,
template-haskell,
mtl >= 2.0,
transformers >= 0.3
if flag(more-pp)
Build-depends: bytestring >= 0.9,
blaze-html >= 0.5,
blaze-markup >= 0.5,
directory >= 1.0,
filepath >= 1.0,
mtl >= 2.0,
text >= 0.10,
unix >= 2.4
Exposed-modules:
-- The core language and reference implementation
Data.Array.Accelerate
Data.Array.Accelerate.Interpreter
-- Prelude-like
Data.Array.Accelerate.Data.Complex
-- For backend development
Data.Array.Accelerate.AST
Data.Array.Accelerate.Analysis.Match
Data.Array.Accelerate.Analysis.Shape
Data.Array.Accelerate.Analysis.Stencil
Data.Array.Accelerate.Analysis.Type
Data.Array.Accelerate.Array.Data
Data.Array.Accelerate.Array.Memory
Data.Array.Accelerate.Array.Memory.Table
Data.Array.Accelerate.Array.Memory.Cache
Data.Array.Accelerate.Array.Representation
Data.Array.Accelerate.Array.Sugar
Data.Array.Accelerate.Debug
Data.Array.Accelerate.Error
Data.Array.Accelerate.FullList
Data.Array.Accelerate.Lifetime
Data.Array.Accelerate.Pretty
Data.Array.Accelerate.Product
Data.Array.Accelerate.Smart
Data.Array.Accelerate.Trafo
Data.Array.Accelerate.Type
Other-modules: Data.Array.Accelerate.Array.Lifted
Data.Array.Accelerate.Array.Memory.Nursery
Data.Array.Accelerate.Debug.Flags
Data.Array.Accelerate.Debug.Stats
Data.Array.Accelerate.Debug.Trace
Data.Array.Accelerate.Language
Data.Array.Accelerate.Prelude
Data.Array.Accelerate.Pretty.Print
Data.Array.Accelerate.Pretty.Traverse
Data.Array.Accelerate.Trafo.Algebra
Data.Array.Accelerate.Trafo.Base
Data.Array.Accelerate.Trafo.Fusion
Data.Array.Accelerate.Trafo.Rewrite
Data.Array.Accelerate.Trafo.Sharing
Data.Array.Accelerate.Trafo.Shrink
Data.Array.Accelerate.Trafo.Simplify
Data.Array.Accelerate.Trafo.Substitution
Data.Array.Accelerate.Trafo.Vectorise
if flag(more-pp)
Other-modules: Data.Array.Accelerate.Pretty.HTML
Data.Array.Accelerate.Pretty.Graphviz
if flag(debug)
cpp-options: -DACCELERATE_DEBUG
if flag(bounds-checks)
cpp-options: -DACCELERATE_BOUNDS_CHECKS
if flag(unsafe-checks)
cpp-options: -DACCELERATE_UNSAFE_CHECKS
if flag(internal-checks)
cpp-options: -DACCELERATE_INTERNAL_CHECKS
ghc-options: -O2 -Wall -funbox-strict-fields -fno-warn-name-shadowing
ghc-prof-options: -caf-all -auto-all
if impl(ghc >= 7.0)
ghc-options: -fspec-constr-count=25 -fcontext-stack=30
-- Don't add the extensions list here. Instead, place individual LANGUAGE
-- pragmas in the files that require a specific extension. This means the
-- project loads in GHCi, and avoids extension clashes.
--
-- Extensions:
Source-repository head
Type: git
Location: git://github.com/AccelerateHS/accelerate.git