packages feed

accelerate-arithmetic 0.1 → 1.0.0.2

raw patch · 5 files changed

Files

accelerate-arithmetic.cabal view
@@ -1,10 +1,10 @@ Name:             accelerate-arithmetic-Version:          0.1+Version:          1.0.0.2 License:          BSD3 License-File:     LICENSE Author:           Henning Thielemann <haskell@henning-thielemann.de> Maintainer:       Henning Thielemann <haskell@henning-thielemann.de>-Homepage:         http://hub.darcs.net/thielema/accelerate-arithmetic/+Homepage:         https://hub.darcs.net/thielema/accelerate-arithmetic/ Category:         Math Synopsis:         Linear algebra and interpolation using the Accelerate framework Description:@@ -13,25 +13,25 @@   but it does not contain processor optimizations   or optimizations for CUDA. Tested-With:      GHC==7.8.2-Cabal-Version:    >=1.14+Cabal-Version:    1.14 Build-Type:       Simple  Source-Repository this-  Tag:         0.1+  Tag:         1.0.0.2   Type:        darcs-  Location:    http://hub.darcs.net/thielema/accelerate-arithmetic/+  Location:    https://hub.darcs.net/thielema/accelerate-arithmetic/  Source-Repository head   Type:        darcs-  Location:    http://hub.darcs.net/thielema/accelerate-arithmetic/+  Location:    https://hub.darcs.net/thielema/accelerate-arithmetic/  Library   Build-Depends:-    accelerate-utility >=0.1 && <0.2,-    accelerate >=0.15 && <0.16,+    accelerate-utility >=1.1 && <1.2,+    accelerate >=1.3 && <1.5,     utility-ht >=0.0.8 && <0.1,     QuickCheck >=2.4 && <3,-    base >=4.5 && <4.10+    base >=4.5 && <5    GHC-Options:      -Wall -fwarn-missing-import-lists   Hs-Source-Dirs:   src, private
private/Data/Array/Accelerate/LinearAlgebra/Private.hs view
@@ -6,6 +6,7 @@ import qualified Data.Array.Accelerate.Utility.Lift.Exp as Exp import qualified Data.Array.Accelerate.Utility.Arrange as Arrange import qualified Data.Array.Accelerate as A+import Data.Array.Accelerate.Utility.Lift.Exp (expr) import Data.Array.Accelerate           (Acc, Array, Exp, Any(Any), All(All), Z(Z), (:.)((:.))) @@ -63,7 +64,7 @@   outer ::-   (A.Shape ix, A.Slice ix, A.IsNum a, A.Elt a) =>+   (A.Shape ix, A.Slice ix, A.Num a) =>    Vector ix a -> Vector ix a -> Matrix ix a outer x y =    A.zipWith (*)@@ -71,7 +72,7 @@       (A.replicate (A.lift $ Any :. numElems x :. All) y)  multiplyMatrixVector ::-   (A.Shape ix, A.Slice ix, A.IsNum a, A.Elt a) =>+   (A.Shape ix, A.Slice ix, A.Num a) =>    Matrix ix a ->    Vector ix a ->    Vector ix a@@ -82,8 +83,8 @@          A.zipWith (*) m             (A.replicate (A.lift $ Any :. rows :. All) v) -multiplyMatrixMatrix ::-   (A.Shape ix, A.Slice ix, A.IsNum a, A.Elt a) =>+multiplyMatrixMatrix, _multiplyMatrixMatrix, _multiplyMatrixMatrix2 ::+   (A.Shape ix, A.Slice ix, A.Num a) =>    Matrix ix a ->    Matrix ix a ->    Matrix ix a@@ -95,8 +96,27 @@             (A.replicate (A.lift $ Any :. All :. All :. cols) x)             (A.replicate (A.lift $ Any :. rows :. All :. All) y) +_multiplyMatrixMatrix x y =+   case (matrixShape x, matrixShape y) of+      (_ :. rows :. _cols, _ :. _rows :. cols) ->+         A.fold1 (+) $+         A.zipWith (*)+            (A.replicate (A.lift $ Any :. All :. cols :. All) x)+            (A.replicate (A.lift $ Any :. rows :. All :. All) $ transpose y)++_multiplyMatrixMatrix2 x y =+   case (matrixShape x, matrixShape y) of+      (_ :. rowsX :. _colsX, shapeY :. rowsY :. colsY) ->+         A.fold1 (+) $+         A.zipWith (*)+            (A.replicate (A.lift $ Any :. All :. colsY :. All) x)+            (A.backpermute (A.lift $ shapeY :. rowsX :. colsY :. rowsY)+                (Exp.modify (expr:.expr:.expr:.expr) $+                 \(ix:._:.j:.k) -> ix:.k:.j)+                y)+ newtonInverseStep ::-   (A.Shape ix, A.Slice ix, A.IsNum a, A.Elt a) =>+   (A.Shape ix, A.Slice ix, A.Num a) =>    Matrix ix a ->    Matrix ix a ->    Matrix ix a@@ -105,15 +125,15 @@    multiplyMatrixMatrix x $ multiplyMatrixMatrix a x  identity ::-   (A.Shape ix, A.Slice ix, A.IsNum a, A.Elt a) =>+   (A.Shape ix, A.Slice ix, A.Elt a, A.FromIntegral Int a) =>    Exp (ix :. Int :. Int) -> Matrix ix a identity sh =    A.generate sh       (withMatrixIndex $-       \(_ :. r :. c) -> A.fromIntegral $ A.boolToInt (r A.==* c))+       \(_ :. r :. c) -> A.fromIntegral $ A.boolToInt (r A.== c))  newtonInverse ::-   (A.Shape ix, A.Slice ix, A.IsNum a, A.Elt a) =>+   (A.Shape ix, A.Slice ix, A.Num a) =>    Exp Int ->    Matrix ix a ->    Matrix ix a ->@@ -124,7 +144,7 @@   scaleRows ::-   (A.Slice ix, A.Shape ix, A.Elt a, A.IsNum a) =>+   (A.Slice ix, A.Shape ix, A.Num a) =>    Vector ix a -> Matrix ix a -> Matrix ix a scaleRows s x =    zipScalarVectorWith (*) s x
src/Data/Array/Accelerate/Arithmetic/Interpolation.hs view
@@ -19,7 +19,7 @@   bisect ::-   (A.Slice ix, A.Shape ix, A.IsScalar a, A.Elt a) =>+   (A.Slice ix, A.Shape ix, A.Ord a, A.Elt a) =>    Vector ix a ->    Scalar ix a ->    Scalar ix (Int, Int) ->@@ -35,11 +35,11 @@                  (Exp.mapSnd (const center) interval)                  (Exp.mapFst (const center) interval))           centers bounds $-       A.zipWith (A.<*) xs $+       A.zipWith (A.<) xs $        Arrange.gather (Arrange.mapWithIndex Exp.indexCons centers) nodes  lookupInterval ::-   (A.Slice ix, A.Shape ix, A.IsScalar a, A.Elt a) =>+   (A.Slice ix, A.Shape ix, A.Ord a, A.Elt a) =>    Vector ix a ->    Scalar ix a ->    Scalar ix Int@@ -66,7 +66,7 @@ type Interpolator13 a = (a,a) -> (a,a) -> (a,a) -> (a,a) -> a -> a  sampleBasisFunctions13 ::-   (A.Slice ix, A.Shape ix, A.Elt a, A.IsFloating a, Num a) =>+   (A.Slice ix, A.Shape ix, A.Ord a, Num a) =>    Interpolator13 (Exp a) ->    Vector Z a -> Vector ix a -> Sparse.Rows ix a sampleBasisFunctions13 interpolate nodes zs =@@ -83,8 +83,8 @@               case (Exp.unliftQuadruple x, Exp.unliftQuadruple y) of                  ((xm1,x0,x1,x2), (ym1,y0,y1,y2)) ->                     (ln+k :: Exp Int,-                     A.cond (n A.<* minIx) y0 $-                     A.cond (n A.>* maxIx) y1 $+                     A.cond (n A.< minIx) y0 $+                     A.cond (n A.> maxIx) y1 $                      interpolate (xm1,ym1) (x0,y0) (x1,y1) (x2,y2) z))           (A.zip4 indices limitIndices zs              (A.zip4
src/Data/Array/Accelerate/LinearAlgebra/Matrix/Banded.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE FlexibleContexts #-} module Data.Array.Accelerate.LinearAlgebra.Matrix.Banded (    Symmetric(..),    flattenSymmetric,@@ -8,13 +9,13 @@ import qualified Data.Array.Accelerate.Utility.Lift.Exp as Exp import qualified Data.Array.Accelerate as A import Data.Array.Accelerate.Utility.Lift.Exp (expr)-import Data.Array.Accelerate ((:.)((:.)), (>*), (!), (?))+import Data.Array.Accelerate ((:.)((:.)), (!), (?))   newtype Symmetric ix a = Symmetric (Matrix ix a)  flattenSymmetric ::-   (A.Slice ix, A.Shape ix, A.Elt a, A.IsNum a) =>+   (A.Slice ix, A.Shape ix, A.Num a) =>    Symmetric ix a -> Matrix ix a flattenSymmetric (Symmetric m) =    case matrixShape m of@@ -23,4 +24,4 @@          Exp.modify (expr:.expr:.expr) $ \(ix:.k0:.j0) ->             let k = min k0 j0                 j = max k0 j0 - k-            in  width >* j ? (m ! A.lift(ix:.k:.j), 0)+            in  width A.> j ? (m ! A.lift(ix:.k:.j), 0)
src/Data/Array/Accelerate/LinearAlgebra/Matrix/Sparse.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE TypeOperators #-}+{-# LANGUAGE FlexibleContexts #-} module Data.Array.Accelerate.LinearAlgebra.Matrix.Sparse (    Columns(..),    multiplyColumnsVector,@@ -18,10 +19,8 @@ import qualified Data.Array.Accelerate as A import Data.Array.Accelerate.Utility.Lift.Exp (expr, ) -import Data.Array.Accelerate.LinearAlgebra-          (Matrix, Vector, matrixShape, )-import Data.Array.Accelerate-          (Exp, Any(Any), All(All), (:.)((:.)), (>*), (?), )+import Data.Array.Accelerate.LinearAlgebra (Matrix, Vector, matrixShape, )+import Data.Array.Accelerate (Exp, Any(Any), All(All), (:.)((:.)), (?), )   {- |@@ -40,13 +39,13 @@       (A.map A.fst m)  multiplyColumnsVector ::-   (A.Shape ix, A.Slice ix, A.IsNum a, A.Elt a) =>+   (A.Shape ix, A.Slice ix, A.Num a) =>    Columns ix a ->    Vector ix a ->    Vector ix a multiplyColumnsVector (Columns rows m) v =    Arrange.scatter (+)-      (realIndex m)+      (A.map A.Just_ $ realIndex m)       (case matrixShape m of           sh :. _rows :. _cols -> A.fill (A.lift $ sh :. rows) 0) $    A.zipWith (*)@@ -54,7 +53,7 @@       (A.replicate (A.lift $ Any :. LinAlg.numRows m :. All) v)  transposeColumns ::-   (A.Shape ix, A.Slice ix, A.IsNum a, A.Elt a) =>+   (A.Shape ix, A.Slice ix, A.Num a) =>    Columns ix a ->    Rows ix a transposeColumns (Columns n x) =@@ -68,7 +67,7 @@         Rows {numCols :: Exp Int, rowMatrix :: Matrix ix (Int, a)}  multiplyRowsVector ::-   (A.Shape ix, A.Slice ix, A.IsNum a, A.Elt a) =>+   (A.Shape ix, A.Slice ix, A.Num a) =>    Rows ix a ->    Vector ix a ->    Vector ix a@@ -78,14 +77,14 @@    Arrange.gather (realIndex m) v  transposeRows ::-   (A.Shape ix, A.Slice ix, A.IsNum a, A.Elt a) =>+   (A.Shape ix, A.Slice ix, A.Num a) =>    Rows ix a ->    Columns ix a transposeRows (Rows n x) =    (Columns n $ LinAlg.transpose x)  multiplyColumnsRows ::-   (A.Shape ix, A.Slice ix, A.IsNum a, A.Elt a) =>+   (A.Shape ix, A.Slice ix, A.Num a) =>    Columns ix a ->    Rows ix a ->    Matrix ix a@@ -95,7 +94,7 @@    in  Arrange.scatter (+)           (Arrange.mapWithIndex              (Exp.modify2 expr (expr,expr) $ \mix (k,j) ->-                global mix :. k :. j) $+                Just (global mix :. k :. j)) $            ixs)           (A.fill (A.lift $ global (A.shape prods) :. rows :. cols) 0)           prods@@ -108,7 +107,7 @@ So far, only correct for real matrices. -} realBandedGramian ::-   (A.Shape ix, A.Slice ix, A.IsNum a, A.Elt a) =>+   (A.Shape ix, A.Slice ix, A.Num a) =>    Exp Int ->    Rows ix a ->    BandMatrix.Symmetric ix a@@ -119,13 +118,14 @@        Arrange.scatter (+)           (Arrange.mapWithIndex              (Exp.modify2 expr (expr,expr) $ \mix (k,j) ->-                k>*j ? (A.ignore, A.lift $ global mix :. k :. j-k)) $+                k A.> j ?+                   (A.Nothing_, A.lift $ Just (global mix :. k :. j-k))) $            ixs)           (A.fill (A.lift $ global (A.shape prods) :. cols :. width) 0)           prods  matchMatrices ::-   (A.Shape ix, A.Slice ix, A.IsNum a, A.Elt a) =>+   (A.Shape ix, A.Slice ix, A.Num a) =>    Matrix ix (Int, a) ->    Matrix ix (Int, a) ->    Matrix (ix :. Int) ((Int, Int), a)@@ -141,7 +141,7 @@   scaleRowRows ::-   (A.Slice ix, A.Shape ix, A.Elt a, A.IsNum a) =>+   (A.Slice ix, A.Shape ix, A.Num a) =>    Vector ix a -> Rows ix a -> Rows ix a scaleRowRows s (Rows n x) =    Rows n $