packages feed

repa-examples 3.0.0.1 → 3.0.0.2

raw patch · 2 files changed

+51/−1 lines, 2 files

Files

+ examples/MMult/src-repa/Solver.hs view
@@ -0,0 +1,49 @@++module Solver (mmultP) where+import Data.Array.Repa  as R+++-- | Matrix matrix multiply.+mmultP  :: Array U DIM2 Double +        -> Array U DIM2 Double +        -> Array U DIM2 Double++mmultP arr' brr + = mmult' arr' (transpose2P brr) + where (Z :. h1  :. _)  = extent arr'+       (Z :. _   :. w2) = extent brr++       mmult' arr trr+        = trr `deepSeqArray` computeP+        $ fromFunction (Z :. h1 :. w2)+        $ \ix   -> R.sumAllS +                 $ R.zipWith (*)+                        (slice arr (Any :. (row ix) :. All))+                        (slice trr (Any :. (col ix) :. All))+{-# INLINE mmultP #-}+++-- | Transpose a 2D matrix.+transpose2P+        :: Array U DIM2 Double +        -> Array U DIM2 Double++transpose2P arr+ = computeUnboxedP+ $ unsafeBackpermute new_extent swap arr+ where  swap (Z :. i :. j)      = Z :. j :. i+        new_extent              = swap (extent arr)+{-# INLINE transpose2P #-}+++-- | Take the row number of a rank-2 index.+row :: DIM2 -> Int+row (Z :. r :. _) = r+{-# INLINE row #-}+++-- | Take the column number of a rank-2 index.+col :: DIM2 -> Int+col (Z :. _ :. c) = c+{-# INLINE col #-}+
repa-examples.cabal view
@@ -1,5 +1,5 @@ Name:                repa-examples-Version:             3.0.0.1+Version:             3.0.0.2 License:             BSD3 License-file:        LICENSE Author:              The DPH Team@@ -43,6 +43,7 @@         random               == 1.0.*    Main-is: examples/MMult/src-repa/Main.hs+  other-modules: Solver   hs-source-dirs: examples/MMult/src-repa .   ghc-options:          -rtsopts