knead: Repa-like array processing using LLVM JIT
This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.
This library processes arrays like Repa
and Accelerate
,
but it uses the just-in-time compiler of LLVM
for generating the machine code.
That is, you get very efficient vectorised code
that can be run without a GPU.
You do not need to care about inlining and strictness annotations,
because the LLVM code is by default inlined and strict.
The package is intended as the basis
for an LLVM backend for the Accelerate
framework.
Highlights:
Very flexible index handling, even more flexible than the one of
Data.Array
. It is much more expressive and type-safe than that ofrepa
andarray
.Extensible element types, e.g. complex numbers. (Maybe this is also possible with accelerate, e.g. with RGB type.)
Every compilable program also runs. In contrast to that,
accelerate
may accept a program that cannot be run by a particular backend, likeaccelerate-cuda
.
Known deficiencies:
The functions do not check array bounds. (Of course, we can think about temporary bound checking for debugging purposes.)
The package does not try to distribute work across multiple processors. It is certainly simpler, more efficient and more reliable if you do that at a higher level.
The name of the package is inspired by the visualization of typical operations like reshaping, collapsing a dimension and extruding another one.
Properties
Versions | 0.2, 0.2.0.1, 0.2.1, 0.2.2, 0.2.3, 0.3, 0.4, 0.4.1, 0.4.2, 0.5, 0.5, 1.0, 1.0.1, 1.0.1.1 |
---|---|
Change log | None available |
Dependencies | base (>=4 && <5), bool8 (>=0.0 && <0.1), comfort-array (>=0.3 && <0.5), fixed-length (>=0.2.1 && <0.3), llvm-dsl (>=0.0 && <0.1), llvm-extra (>=0.10 && <0.11), llvm-tf (>=9.2 && <9.3), prelude-compat (>=0.0 && <0.0.1), storable-enum (>=0.0 && <0.1), storable-record (>=0.0.5 && <0.1), tagged (>=0.7 && <0.9), tfp (>=1.0 && <1.1), transformers (>=0.3 && <0.6), utility-ht (>=0.0.15 && <0.1) [details] |
License | BSD-3-Clause |
Author | Henning Thielemann <haskell@henning-thielemann.de> |
Maintainer | Henning Thielemann <haskell@henning-thielemann.de> |
Category | Data Structures |
Home page | http://hub.darcs.net/thielema/knead/ |
Source repo | this: darcs get http://hub.darcs.net/thielema/knead/ --tag 0.5 head: darcs get http://hub.darcs.net/thielema/knead/ |
Uploaded | by HenningThielemann at 2020-03-21T19:57:38Z |
Modules
- Data
- Array
- Knead
- Data.Array.Knead.Expression
- Data.Array.Knead.Expression.Vector
- Data.Array.Knead.Parameter
- Parameterized
- Data.Array.Knead.Parameterized.Physical
- Data.Array.Knead.Parameterized.Render
- Data.Array.Knead.Parameterized.Slice
- Data.Array.Knead.Parameterized.Symbolic
- Data.Array.Knead.Shape
- Data.Array.Knead.Shape.Cubic
- Data.Array.Knead.Shape.Cubic.Int
- Data.Array.Knead.Shape.Cubic
- Simple
- Data.Array.Knead.Simple.Fold
- Data.Array.Knead.Simple.Physical
- Data.Array.Knead.Simple.ShapeDependent
- Data.Array.Knead.Simple.Slice
- Data.Array.Knead.Simple.Symbolic
- Data.Array.Knead.Expression
- Knead
- Array
Downloads
- knead-0.5.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
Package maintainers
For package maintainers and hackage trustees