packages feed

knead-1.0.1.1: knead.cabal

Name:             knead
Version:          1.0.1.1
License:          BSD3
License-File:     LICENSE
Author:           Henning Thielemann <haskell@henning-thielemann.de>
Maintainer:       Henning Thielemann <haskell@henning-thielemann.de>
Homepage:         https://hub.darcs.net/thielema/knead/
Category:         Data Structures
Synopsis:         Repa-like array processing using LLVM JIT
Description:
  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.
Tested-With:      GHC==8.4.4, GHC==8.6.5, GHC==8.10.7
Tested-With:      GHC==9.0.2, GHC==9.2.8, GHC==9.4.6
Cabal-Version:    >=1.10
Build-Type:       Simple
Extra-Source-Files:
  Makefile

Source-Repository this
  Tag:         1.0.1.1
  Type:        darcs
  Location:    https://hub.darcs.net/thielema/knead/

Source-Repository head
  Type:        darcs
  Location:    https://hub.darcs.net/thielema/knead/

Library
  Build-Depends:
    llvm-dsl >=0.1.1 && <0.2,
    llvm-extra >=0.11 && <0.13,
    llvm-tf >=9.0 && <17.1,
    tfp >=1.0 && <1.1,
    comfort-array >=0.5 && <0.6,
    fixed-length >=0.2.1 && <0.3,
    storable-record >=0.0.5 && <0.1,
    storable-enum >=0.0 && <0.1,
    bool8 >=0.0 && <0.1,
    transformers >=0.3 && <0.7,
    tagged >=0.7 && <0.9,
    utility-ht >=0.0.15 && <0.1,
    prelude-compat >=0.0 && <0.0.1,
    base >=4 && <5

  Default-Language: Haskell98
  GHC-Options:      -Wall
  Hs-Source-Dirs:   src
  Exposed-Modules:
    Data.Array.Knead.Shape
    Data.Array.Knead.Shape.Cubic
    Data.Array.Knead.Shape.Cubic.Int
    Data.Array.Knead.Expression
    Data.Array.Knead.Symbolic
    Data.Array.Knead.Symbolic.ShapeDependent
    Data.Array.Knead.Symbolic.Physical
    Data.Array.Knead.Symbolic.Slice
    Data.Array.Knead.Symbolic.Fold
    Data.Array.Knead.Symbolic.Render
  Other-Modules:
    Data.Array.Knead.Symbolic.RenderAlt
    Data.Array.Knead.Symbolic.Render.Basic
    Data.Array.Knead.Symbolic.Render.Argument
    Data.Array.Knead.Symbolic.Private
    Data.Array.Knead.Symbolic.PhysicalParametric
    Data.Array.Knead.Symbolic.PhysicalPrivate
    Data.Array.Knead.Code
    Data.Array.Knead.Shape.Orphan

Test-Suite knead-test
  Type: exitcode-stdio-1.0
  Build-Depends:
    QuickCheck >=2 && <3,
    knead,
    comfort-array,
    llvm-extra,
    llvm-tf,
    tfp,
    utility-ht,
    base
  Default-Language: Haskell98
  GHC-Options: -Wall
  Hs-Source-Dirs: test
  Main-Is: Main.hs
  Other-Modules:
    Test.Array