dph-lifted-vseg: turn bounds checking back on
authorBen Lippmeier <benl@ouroborus.net>
Fri, 11 Nov 2011 04:20:08 +0000 (15:20 +1100)
committerBen Lippmeier <benl@ouroborus.net>
Fri, 11 Nov 2011 04:20:08 +0000 (15:20 +1100)
dph-lifted-vseg/Data/Array/Parallel/PArray.hs
dph-lifted-vseg/Data/Array/Parallel/PArray/PData/Double.hs
dph-lifted-vseg/Data/Array/Parallel/PArray/PData/Int.hs
dph-lifted-vseg/Data/Array/Parallel/PArray/PData/Nested.hs
dph-lifted-vseg/Data/Array/Parallel/PArray/PData/Sum2.hs
dph-lifted-vseg/Data/Array/Parallel/PArray/PData/Word8.hs

index 747a3aa..66f8c6a 100644 (file)
@@ -33,14 +33,14 @@ module Data.Array.Parallel.PArray
         , append,       appendl
         , concat,       concatl
         , unconcat
-        , nestSegd
+        , nestUSegd
 
         -- * Projections
         , length,       lengthl         -- length from D.A.P.PArray.PData.Base
         , index,        indexl
         , extract,      extracts,       extracts'
         , slice,        slicel
-        , takeSegd
+        , takeUSegd
 
         -- * Pack and Combine
         , pack,         packl
@@ -257,8 +257,8 @@ unconcat (PArray n# pdata1) (PArray _ pdata2)
 -- | Create a nested array from a segment descriptor and some flat data.
 --   The segment descriptor must represent as many elements as present
 --   in the flat data array, else `error`
-nestSegd :: PA a => U.Segd -> PArray a -> PArray (PArray a)
-nestSegd segd (PArray n# pdata)
+nestUSegd :: PA a => U.Segd -> PArray a -> PArray (PArray a)
+nestUSegd segd (PArray n# pdata)
         | U.elementsSegd segd     == I# n#
         , I# n2#                <- U.lengthSegd segd
         = PArray n2#
@@ -270,7 +270,7 @@ nestSegd segd (PArray n# pdata)
                         ++ "segment descriptor and data array do not match"
                 , " length of segment desciptor = " ++ show (U.elementsSegd segd)
                 , " length of data array        = " ++ show (I# n#) ]
-{-# NOINLINE nestSegd #-}
+{-# NOINLINE nestUSegd #-}
 
 
 -- Projections  ---------------------------------------------------------------
@@ -352,10 +352,10 @@ slicel (PArray n# sliceStarts) (PArray _ sliceLens) (PArray _ darr)
 
 -- | Take the segment descriptor from a nested array and demote it to a
 --   plain Segd. This is unsafe because it can cause index space overflow.
-takeSegd :: PArray (PArray a) -> U.Segd
-takeSegd (PArray _ pdata)
+takeUSegd :: PArray (PArray a) -> U.Segd
+takeUSegd (PArray _ pdata)
         = takeSegdPD pdata
-{-# INLINE_PA takeSegd #-}
+{-# INLINE_PA takeUSegd #-}
 
 
 -- Pack and Combine -----------------------------------------------------------
index 9f20305..e5d5aed 100644 (file)
@@ -79,13 +79,13 @@ instance PR Double where
 
   {-# INLINE_PDATA indexPR #-}
   indexPR (PDouble arr) ix
-        = arr `VU.unsafeIndex` ix
+        = arr VU.! ix
 
   {-# INLINE_PDATA indexsPR #-}
   indexsPR (PDoubles pvecs) (PInt srcs) (PInt ixs)
    = PDouble $ U.zipWith get srcs ixs
    where get !src !ix
-                = (pvecs `V.unsafeIndex` src) `VU.unsafeIndex` ix
+                = (pvecs V.! src) VU.! ix
 
   {-# INLINE_PDATA extractPR #-}
   extractPR (PDouble arr) start len 
@@ -136,7 +136,7 @@ instance PR Double where
         
   {-# INLINE_PDATA indexdPR #-}
   indexdPR (PDoubles vec) ix
-        = PDouble $ V.unsafeIndex vec ix
+        = PDouble $ vec V.! ix
 
   {-# INLINE_PDATA appenddPR #-}
   appenddPR (PDoubles xs) (PDoubles ys)
index 025e9b9..3366e85 100644 (file)
@@ -74,7 +74,7 @@ instance PR Int where
   indexsPR (PInts pvecs) (PInt srcs) (PInt ixs)
    = PInt $ U.zipWith get srcs ixs
    where get !src !ix
-                = (pvecs `V.unsafeIndex` src) `VU.unsafeIndex` ix
+                = (pvecs V.! src) VU.! ix
 
   {-# INLINE_PDATA extractPR #-}
   extractPR (PInt arr) start len 
@@ -126,7 +126,7 @@ instance PR Int where
         
   {-# INLINE_PDATA indexdPR #-}
   indexdPR (PInts vec) ix
-        = PInt $ V.unsafeIndex vec ix
+        = PInt $ vec V.! ix
 
   {-# INLINE_PDATA appenddPR #-}
   appenddPR (PInts xs) (PInts ys)
index 1d468fc..5a68b29 100644 (file)
@@ -377,10 +377,10 @@ instance PR a => PR (PArray a) where
          -- Function to get one element of the result.
          {-# INLINE get #-}
          get srcid vsegid
-          = let !pseglen        = (arrs_pseglens   `V.unsafeIndex` srcid) `VU.unsafeIndex` vsegid
-                !psegstart      = (arrs_psegstarts `V.unsafeIndex` srcid) `VU.unsafeIndex` vsegid
-                !psegsrcid      = (arrs_psegsrcids `V.unsafeIndex` srcid) `VU.unsafeIndex` vsegid  
-                                + psrcoffset `V.unsafeIndex` srcid
+          = let !pseglen        = (arrs_pseglens   V.! srcid) VU.! vsegid
+                !psegstart      = (arrs_psegstarts V.! srcid) VU.! vsegid
+                !psegsrcid      = (arrs_psegsrcids V.! srcid) VU.! vsegid  
+                                + psrcoffset V.! srcid
             in  (pseglen, psegstart, psegsrcid)
             
          (pseglens', psegstarts', psegsrcs')
@@ -456,7 +456,7 @@ instance PR a => PR (PArray a) where
         
   {-# INLINE_PDATA indexdPR #-}
   indexdPR (PNesteds vec) ix
-        = V.unsafeIndex vec ix
+        = vec V.! ix
 
   {-# INLINE_PDATA appenddPR #-}
   appenddPR (PNesteds xs) (PNesteds ys)
@@ -567,7 +567,7 @@ concatlPR arr
         --
         --    concatl [ [[1, 2, 3] [4, 5, 6]] [] ]
         --  
-        --  After the calls to unsafeFlattenPR we get:
+        --  After the calls to flattenPR we get:
         --   segd1: lengths1 = [ 2 0 ]
         --          indices1 = [ 0 2 ]
         
index 11a8e2e..fc33d94 100644 (file)
@@ -143,9 +143,9 @@ instance (PR a, PR b) => PR (Sum2 a b)  where
   indexsPR (PSum2s sels _ ass bss) psrcs@(PInt srcs) (PInt ixs)
    = let 
          getFlagIndex !src !ix
-          = let !sel        = sels                `V.unsafeIndex`  src
-                !elemFlag   = (U.tagsSel2    sel) `VU.unsafeIndex` ix
-                !elemIndex  = (U.indicesSel2 sel) `VU.unsafeIndex` ix
+          = let !sel        = sels                V.!  src
+                !elemFlag   = (U.tagsSel2    sel) VU.! ix
+                !elemIndex  = (U.indicesSel2 sel) VU.! ix
             in  (elemFlag, elemIndex)
             
          (flags', indices')
@@ -455,7 +455,7 @@ instance (PR a, PR b) => PR (Sum2 a b)  where
 
   {-# INLINE_PDATA indexdPR #-}
   indexdPR  (PSum2s sel2s _ xss yss) ix
-   = PSum2  (V.unsafeIndex sel2s ix)
+   = PSum2  (sel2s V.! ix)
             (indexdPR      xss   ix)
             (indexdPR      yss   ix)
 
index 5c1e8dd..17f4499 100644 (file)
@@ -83,7 +83,7 @@ instance PR Word8 where
   indexsPR (PWord8s pvecs) (PInt srcs) (PInt ixs)
    = PWord8 $ U.zipWith get srcs ixs
    where get !src !ix
-                = (pvecs `V.unsafeIndex` src) `VU.unsafeIndex` ix
+                = (pvecs V.! src) VU.! ix
 
   {-# INLINE_PDATA extractPR #-}
   extractPR (PWord8 arr) start len 
@@ -134,7 +134,7 @@ instance PR Word8 where
         
   {-# INLINE_PDATA indexdPR #-}
   indexdPR (PWord8s vec) ix
-        = PWord8 $ V.unsafeIndex vec ix
+        = PWord8 $ vec V.! ix
 
   {-# INLINE_PDATA appenddPR #-}
   appenddPR (PWord8s xs) (PWord8s ys)