module Data.Array.Parallel.Unlifted.Distributed.Data.Scalar.Base
where
import Data.Array.Parallel.Unlifted.Distributed.Primitive.DPrim
import Data.Array.Parallel.Unlifted.Distributed.Primitive
import Data.Word
import qualified Data.Array.Parallel.Unlifted.Sequential.Vector as V
import qualified Data.Vector.Unboxed.Mutable as MV
import Prelude as P
instance DPrim Integer
instance DT Integer
instance DPrim Char where
mkDPrim = DChar
unDPrim (DChar a) = a
mkMDPrim = MDChar
unMDPrim (MDChar a) = a
instance DT Char where
data Dist Char = DChar !(V.Vector Char)
data MDist Char s = MDChar !(MV.STVector s Char)
indexD = primIndexD
newMD = primNewMD
readMD = primReadMD
writeMD = primWriteMD
unsafeFreezeMD = primUnsafeFreezeMD
sizeD = primSizeD
sizeMD = primSizeMD
instance DPrim Int where
mkDPrim = DInt
unDPrim (DInt a) = a
mkMDPrim = MDInt
unMDPrim (MDInt a) = a
instance DT Int where
data Dist Int = DInt !(V.Vector Int)
data MDist Int s = MDInt !(MV.STVector s Int)
indexD = primIndexD
newMD = primNewMD
readMD = primReadMD
writeMD = primWriteMD
unsafeFreezeMD = primUnsafeFreezeMD
sizeD = primSizeD
sizeMD = primSizeMD
measureD n = "Int " P.++ show n
instance DPrim Word8 where
mkDPrim = DWord8
unDPrim (DWord8 a) = a
mkMDPrim = MDWord8
unMDPrim (MDWord8 a) = a
instance DT Word8 where
data Dist Word8 = DWord8 !(V.Vector Word8)
data MDist Word8 s = MDWord8 !(MV.STVector s Word8)
indexD = primIndexD
newMD = primNewMD
readMD = primReadMD
writeMD = primWriteMD
unsafeFreezeMD = primUnsafeFreezeMD
sizeD = primSizeD
sizeMD = primSizeMD
instance DPrim Float where
mkDPrim = DFloat
unDPrim (DFloat a) = a
mkMDPrim = MDFloat
unMDPrim (MDFloat a) = a
instance DT Float where
data Dist Float = DFloat !(V.Vector Float)
data MDist Float s = MDFloat !(MV.STVector s Float)
indexD = primIndexD
newMD = primNewMD
readMD = primReadMD
writeMD = primWriteMD
unsafeFreezeMD = primUnsafeFreezeMD
sizeD = primSizeD
sizeMD = primSizeMD
instance DPrim Double where
mkDPrim = DDouble
unDPrim (DDouble a) = a
mkMDPrim = MDDouble
unMDPrim (MDDouble a) = a
instance DT Double where
data Dist Double = DDouble !(V.Vector Double)
data MDist Double s = MDDouble !(MV.STVector s Double)
indexD = primIndexD
newMD = primNewMD
readMD = primReadMD
writeMD = primWriteMD
unsafeFreezeMD = primUnsafeFreezeMD
sizeD = primSizeD
sizeMD = primSizeMD