accelerate-1.3.0.0: accelerate.cabal
name: accelerate
version: 1.3.0.0
cabal-version: 1.18
tested-with: GHC >= 8.6
build-type: Custom
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.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. Install
them from Hackage with @cabal install \<package\>@
.
* @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_GPUs>
.
* @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.
.
* @containers-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).
.
* @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.
.
* @mwc-random-accelerate@: Generate Accelerate arrays filled with high
quality pseudorandom numbers.
.
[/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>
.
license: BSD3
license-file: LICENSE
author: The Accelerate Team
maintainer: Trevor L. McDonell <trevor.mcdonell@gmail.com>
homepage: https://github.com/AccelerateHS/accelerate/
bug-reports: https://github.com/AccelerateHS/accelerate/issues
category: Accelerate, Compilers/Interpreters, Concurrency, Data, Parallelism
stability: Experimental
extra-source-files:
README.md
CHANGELOG.md
cbits/*.c
cbits/*.h
extra-doc-files:
images/*.png
custom-setup
setup-depends:
base >= 4.10
, Cabal
, cabal-doctest >= 1.0
flag debug
default: False
description:
Enable debug tracing messages. The following options are read from the
environment variable @ACCELERATE_FLAGS@, and via the command-line as:
.
> ./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
@-f\<flag\>@ and can be reveresed with @-fno-\<flag\>@:
.
* @acc-sharing@: Enable sharing recovery of array expressions (True).
.
* @exp-sharing@: Enable sharing recovery of scalar expressions (True).
.
* @fusion@: Enable array fusion (True).
.
* @simplify@: Enable program simplification phase (True).
.
* @inplace@: Enable in-place array updates (True).
.
* @flush-cache@: Clear any persistent caches on program startup (False).
.
* @force-recomp@: Force recompilation of array programs (False).
.
* @fast-math@: Allow algebraically equivalent transformations which may
change floating point results (e.g., reassociate) (True).
.
* @fast-permute-const@: Allow non-atomic `permute const` for product types
(True).
.
The following options control debug message output, and are enabled with
@-d\<flag\>@.
.
* @verbose@: Be extra chatty.
.
* @dump-phases@: Print timing information about each phase of the compiler.
Enable GC stats (@+RTS -t@ or otherwise) for memory usage information.
.
* @dump-sharing@: Print information related to sharing recovery.
.
* @dump-simpl-stats@: Print statistics related to fusion & simplification.
.
* @dump-simpl-iterations@: Print a summary after each simplifier iteration.
.
* @dump-vectorisation@: Print information related to the vectoriser.
.
* @dump-dot@: Generate a representation of the program graph in Graphviz
DOT format.
.
* @dump-simpl-dot@: Generate a more compact representation of the program
graph in Graphviz DOT format. In particular, scalar expressions are
elided.
.
* @dump-gc@: Print information related to the Accelerate garbage
collector.
.
* @dump-gc-stats@: Print aggregate garbage collection information at the
end of program execution.
.
* @dubug-cc@: Include debug symbols in the generated and compiled kernels.
.
* @dump-cc@: Print information related to kernel code
generation/compilation. Print the generated code if @verbose@.
.
* @dump-ld@: Print information related to runtime linking.
.
* @dump-asm@: Print information related to kernel assembly. Print the
assembled code if @verbose@.
.
* @dump-exec@: Print information related to program execution.
.
* @dump-sched@: Print information related to execution scheduling.
.
flag ekg
default: False
description:
Enable hooks for monitoring the running application using EKG. Implies
@debug@ mode. In order to view the metrics, your application will need to
call @Data.Array.Accelerate.Debug.beginMonitoring@ before running any
Accelerate computations. This will launch the server on the local machine at
port 8000.
.
Alternatively, if you wish to configure the EKG monitoring server you can
initialise it like so:
.
> import Data.Array.Accelerate.Debug
>
> import System.Metrics
> import System.Remote.Monitoring
>
> main :: IO ()
> main = do
> store <- initAccMetrics
> registerGcMetrics store -- optional
>
> server <- forkServerWith store "localhost" 8000
>
> ...
.
Note that, as with any program utilising EKG, in order to collect Haskell GC
statistics, you must either run the program with:
.
> +RTS -T -RTS
.
or compile it with:
.
> -with-rtsopts=-T
.
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
-- Enabling this drastically increases build times
-- See: https://gitlab.haskell.org/ghc/ghc/issues/15751
flag nofib
default: False
description: Build the nofib test suite (required for backend testing)
library
build-depends:
base >= 4.12 && < 4.15
, ansi-terminal >= 0.6.2
, base-orphans >= 0.3
, bytestring >= 0.10.2
, containers >= 0.3
, cryptonite >= 0.21
, deepseq >= 1.3
, directory >= 1.0
, exceptions >= 0.6
, filepath >= 1.0
, ghc-prim
, half >= 0.3
, hashable >= 1.1
, hashtables >= 1.2.3
, hedgehog >= 0.5
, lens >= 4.0
, mtl >= 2.0
, prettyprinter >= 1.2
, prettyprinter-ansi-terminal >= 1.0
, primitive >= 0.6.4
, tasty >= 0.11
, template-haskell
, terminal-size >= 0.3
, text >= 1.2
, transformers >= 0.3
, unique
, unordered-containers >= 0.2
, vector >= 0.10
exposed-modules:
-- The core language and reference implementation
Data.Array.Accelerate
Data.Array.Accelerate.Interpreter
-- Prelude-like
Data.Array.Accelerate.Data.Bits
Data.Array.Accelerate.Data.Complex
Data.Array.Accelerate.Data.Either
Data.Array.Accelerate.Data.Fold
Data.Array.Accelerate.Data.Functor
Data.Array.Accelerate.Data.Maybe
Data.Array.Accelerate.Data.Monoid
Data.Array.Accelerate.Data.Ratio
Data.Array.Accelerate.Unsafe
-- For backend development (hidden)
Data.Array.Accelerate.AST
Data.Array.Accelerate.AST.Environment
Data.Array.Accelerate.AST.Idx
Data.Array.Accelerate.AST.LeftHandSide
Data.Array.Accelerate.AST.Var
Data.Array.Accelerate.Analysis.Hash
Data.Array.Accelerate.Analysis.Match
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
Data.Array.Accelerate.Debug
Data.Array.Accelerate.Error
Data.Array.Accelerate.Lifetime
Data.Array.Accelerate.Pretty
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
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
Data.Array.Accelerate.Trafo
Data.Array.Accelerate.Trafo.Config
Data.Array.Accelerate.Trafo.Delayed
Data.Array.Accelerate.Trafo.Fusion
Data.Array.Accelerate.Trafo.Sharing
Data.Array.Accelerate.Trafo.Substitution
Data.Array.Accelerate.Type
-- For testing
Data.Array.Accelerate.Test.NoFib
Data.Array.Accelerate.Test.Similar
-- Other
Data.BitSet
Data.Primitive.Vec
other-modules:
Data.Array.Accelerate.Analysis.Hash.TH
Data.Array.Accelerate.Array.Remote.Nursery
Data.Array.Accelerate.Classes
Data.Array.Accelerate.Classes.Bounded
Data.Array.Accelerate.Classes.Enum
Data.Array.Accelerate.Classes.Eq
Data.Array.Accelerate.Classes.Floating
Data.Array.Accelerate.Classes.Fractional
Data.Array.Accelerate.Classes.FromIntegral
Data.Array.Accelerate.Classes.Integral
Data.Array.Accelerate.Classes.Num
Data.Array.Accelerate.Classes.Ord
Data.Array.Accelerate.Classes.Rational
Data.Array.Accelerate.Classes.Real
Data.Array.Accelerate.Classes.RealFloat
Data.Array.Accelerate.Classes.RealFrac
Data.Array.Accelerate.Classes.ToFloating
Data.Array.Accelerate.Debug.Clock
Data.Array.Accelerate.Debug.Flags
Data.Array.Accelerate.Debug.Monitoring
Data.Array.Accelerate.Debug.Stats
Data.Array.Accelerate.Debug.Timed
Data.Array.Accelerate.Debug.Trace
Data.Array.Accelerate.Language
Data.Array.Accelerate.Lift
Data.Array.Accelerate.Orphans
Data.Array.Accelerate.Pattern
Data.Array.Accelerate.Pattern.Bool
Data.Array.Accelerate.Pattern.Either
Data.Array.Accelerate.Pattern.Maybe
Data.Array.Accelerate.Pattern.Ordering
Data.Array.Accelerate.Pattern.TH
Data.Array.Accelerate.Prelude
Data.Array.Accelerate.Pretty.Graphviz
Data.Array.Accelerate.Pretty.Graphviz.Monad
Data.Array.Accelerate.Pretty.Graphviz.Type
Data.Array.Accelerate.Pretty.Print
Data.Array.Accelerate.Trafo.Algebra
Data.Array.Accelerate.Trafo.Environment
Data.Array.Accelerate.Trafo.LetSplit
Data.Array.Accelerate.Trafo.Shrink
Data.Array.Accelerate.Trafo.Simplify
Data.Array.Accelerate.Trafo.Var
Data.Atomic
-- Data.Array.Accelerate.Array.Lifted
-- Data.Array.Accelerate.Trafo.Vectorise
-- nofib test suite
Data.Array.Accelerate.Test.NoFib.Base
Data.Array.Accelerate.Test.NoFib.Config
Language.Haskell.TH.Extra
if flag(nofib)
build-depends:
tasty-expected-failure >= 0.11
, tasty-hedgehog >= 0.1
, tasty-hunit >= 0.9
-- , pipes >= 4.1.6 -- #286
other-modules:
Data.Array.Accelerate.Test.NoFib.Sharing
Data.Array.Accelerate.Test.NoFib.Prelude
Data.Array.Accelerate.Test.NoFib.Prelude.Map
Data.Array.Accelerate.Test.NoFib.Prelude.ZipWith
Data.Array.Accelerate.Test.NoFib.Prelude.SIMD
Data.Array.Accelerate.Test.NoFib.Prelude.Fold
Data.Array.Accelerate.Test.NoFib.Prelude.Scan
Data.Array.Accelerate.Test.NoFib.Prelude.Backpermute
Data.Array.Accelerate.Test.NoFib.Prelude.Permute
Data.Array.Accelerate.Test.NoFib.Prelude.Filter
Data.Array.Accelerate.Test.NoFib.Prelude.Stencil
Data.Array.Accelerate.Test.NoFib.Imaginary
Data.Array.Accelerate.Test.NoFib.Imaginary.DotP
Data.Array.Accelerate.Test.NoFib.Imaginary.SASUM
Data.Array.Accelerate.Test.NoFib.Imaginary.SAXPY
Data.Array.Accelerate.Test.NoFib.Spectral
Data.Array.Accelerate.Test.NoFib.Spectral.SMVM
Data.Array.Accelerate.Test.NoFib.Spectral.RadixSort
Data.Array.Accelerate.Test.NoFib.Spectral.BlackScholes
Data.Array.Accelerate.Test.NoFib.Issues
Data.Array.Accelerate.Test.NoFib.Issues.Issue93
Data.Array.Accelerate.Test.NoFib.Issues.Issue102
Data.Array.Accelerate.Test.NoFib.Issues.Issue114
Data.Array.Accelerate.Test.NoFib.Issues.Issue119
Data.Array.Accelerate.Test.NoFib.Issues.Issue123
Data.Array.Accelerate.Test.NoFib.Issues.Issue137
Data.Array.Accelerate.Test.NoFib.Issues.Issue168
Data.Array.Accelerate.Test.NoFib.Issues.Issue184
Data.Array.Accelerate.Test.NoFib.Issues.Issue185
Data.Array.Accelerate.Test.NoFib.Issues.Issue187
Data.Array.Accelerate.Test.NoFib.Issues.Issue228
Data.Array.Accelerate.Test.NoFib.Issues.Issue255
Data.Array.Accelerate.Test.NoFib.Issues.Issue264
-- Data.Array.Accelerate.Test.NoFib.Issues.Issue286
Data.Array.Accelerate.Test.NoFib.Issues.Issue287
Data.Array.Accelerate.Test.NoFib.Issues.Issue288
Data.Array.Accelerate.Test.NoFib.Issues.Issue362
Data.Array.Accelerate.Test.NoFib.Issues.Issue364
Data.Array.Accelerate.Test.NoFib.Issues.Issue407
Data.Array.Accelerate.Test.NoFib.Issues.Issue409
Data.Array.Accelerate.Test.NoFib.Issues.Issue436
Data.Array.Accelerate.Test.NoFib.Issues.Issue437
Data.Array.Accelerate.Test.NoFib.Issues.Issue439
else
cpp-options:
-DACCELERATE_DISABLE_NOFIB
if impl(ghc >= 8.0)
exposed-modules:
Data.Array.Accelerate.Data.Semigroup
default-language:
Haskell2010
hs-source-dirs:
src
if flag(debug) || flag(ekg)
ghc-options:
-optc-DACCELERATE_DEBUG
cpp-options:
-DACCELERATE_DEBUG
if flag(ekg)
cpp-options:
-DACCELERATE_MONITORING
build-depends:
async >= 2.0
, ekg >= 0.1
, ekg-core >= 0.1
, text >= 1.0
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
if os(windows)
cpp-options: -DWIN32
build-depends: Win32
else
cpp-options: -DUNIX
build-depends: unix
cc-options:
-O3
-Wall
ghc-options:
-O2
-Wall
-Wcompat
-Wmissed-specialisations
-- -Wredundant-constraints
-freduction-depth=100
-fspec-constr-count=50
-funbox-strict-fields
ghc-prof-options:
-caf-all
-auto-all
-- 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:
test-suite doctest
type: exitcode-stdio-1.0
default-language: Haskell2010
hs-source-dirs: test/doctest
main-is: Main.hs
build-depends:
base >= 4.10
, accelerate
, doctest >= 0.11
ghc-options:
-Wall
-threaded
-rtsopts
x-doctest-options:
-freduction-depth=100
-fspec-constr-count=50
test-suite nofib-interpreter
type: exitcode-stdio-1.0
default-language: Haskell2010
hs-source-dirs: test/nofib
main-is: Main.hs
if !flag(nofib)
buildable: False
build-depends:
base >= 4.10
, accelerate
ghc-options:
-O2
-Wall
-threaded
-rtsopts
-with-rtsopts=-A128M
-with-rtsopts=-n4M
source-repository head
Type: git
Location: git://github.com/AccelerateHS/accelerate.git
source-repository this
Type: git
Tag: v1.3.0.0
Location: git://github.com/AccelerateHS/accelerate.git
-- vim: nospell