repa-algorithms 3.4.1.4 → 3.4.1.5
raw patch · 2 files changed
+20/−19 lines, 2 filesdep ~base
Dependency ranges changed: base
Files
Data/Array/Repa/Algorithms/Matrix.hs view
@@ -2,10 +2,10 @@ {-# LANGUAGE PackageImports #-} -- | Algorithms operating on matrices.---+-- -- These functions should give performance comparable with nested loop C--- implementations.---+-- implementations. +-- -- If you care deeply about runtime performance then you -- may be better off using a binding to LAPACK, such as hvector. --@@ -27,6 +27,7 @@ import Data.Array.Repa as R import Data.Array.Repa.Eval as R import Data.Array.Repa.Unsafe as R+import Control.Monad import Control.Monad.ST.Strict @@ -46,18 +47,18 @@ -- MMult ---------------------------------------------------------------------- -- | Matrix matrix multiply, in parallel. mmultP :: Monad m- => Array U DIM2 Double- -> Array U DIM2 Double+ => Array U DIM2 Double + -> Array U DIM2 Double -> m (Array U DIM2 Double) -mmultP arr brr- = [arr, brr] `deepSeqArrays`+mmultP arr brr + = [arr, brr] `deepSeqArrays` do trr <- transpose2P brr let (Z :. h1 :. _) = extent arr let (Z :. _ :. w2) = extent brr- trr `deepSeqArray` computeP+ trr `deepSeqArray` computeP $ fromFunction (Z :. h1 :. w2)- $ \ix -> R.sumAllS+ $ \ix -> R.sumAllS $ R.zipWith (*) (unsafeSlice arr (Any :. (row ix) :. All)) (unsafeSlice trr (Any :. (col ix) :. All))@@ -65,8 +66,8 @@ -- | Matrix matrix multiply, sequentially.-mmultS :: Array U DIM2 Double- -> Array U DIM2 Double+mmultS :: Array U DIM2 Double + -> Array U DIM2 Double -> Array U DIM2 Double mmultS arr brr@@ -74,9 +75,9 @@ do trr <- R.now $ transpose2S brr let (Z :. h1 :. _) = extent arr let (Z :. _ :. w2) = extent brr- return $ computeS+ return $ computeS $ fromFunction (Z :. h1 :. w2)- $ \ix -> R.sumAllS+ $ \ix -> R.sumAllS $ R.zipWith (*) (unsafeSlice arr (Any :. (row ix) :. All)) (unsafeSlice trr (Any :. (col ix) :. All)))@@ -86,13 +87,13 @@ -- Transpose ------------------------------------------------------------------ -- | Transpose a 2D matrix, in parallel. transpose2P- :: Monad m- => Array U DIM2 Double+ :: Monad m + => Array U DIM2 Double -> m (Array U DIM2 Double) transpose2P arr = arr `deepSeqArray`- do computeUnboxedP+ do computeUnboxedP $ unsafeBackpermute new_extent swap arr where swap (Z :. i :. j) = Z :. j :. i new_extent = swap (extent arr)@@ -101,7 +102,7 @@ -- | Transpose a 2D matrix, sequentially. transpose2S- :: Array U DIM2 Double+ :: Array U DIM2 Double -> Array U DIM2 Double transpose2S arr
repa-algorithms.cabal view
@@ -1,5 +1,5 @@ Name: repa-algorithms-Version: 3.4.1.4+Version: 3.4.1.5 License: BSD3 License-file: LICENSE Author: The DPH Team@@ -18,7 +18,7 @@ Library Build-Depends:- base >= 4.8 && < 4.15+ base >= 4.8 && < 5 , vector >= 0.11 && < 0.13 , repa == 3.4.1.*