knead: Repa-like array processing using LLVM JIT

[ bsd3, data-structures, library ] [ Propose Tags ]

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 of repa and array.

  • 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, like accelerate-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.

Downloads

Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

Versions [RSS] 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, 1.0, 1.0.1 (info)
Dependencies base (>=4 && <5), bool8 (>=0.0 && <0.1), comfort-array (>=0.5 && <0.6), fixed-length (>=0.2.1 && <0.3), llvm-dsl (>=0.1.1 && <0.2), llvm-extra (>=0.11 && <0.13), llvm-tf (>=9.2 && <17.1), 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.7), 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>
Revised Revision 1 made by HenningThielemann at 2023-10-05T21:18:30Z
Category Data Structures
Home page https://hub.darcs.net/thielema/knead/
Source repo this: darcs get https://hub.darcs.net/thielema/knead/ --tag 1.0.1
head: darcs get https://hub.darcs.net/thielema/knead/
Uploaded by HenningThielemann at 2023-09-30T09:34:59Z
Distributions
Reverse Dependencies 2 direct, 2 indirect [details]
Downloads 4514 total (12 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs uploaded by user
Build status unknown [no reports yet]