#include "fusion-phases.h"
module Data.Array.Parallel.Unlifted.Distributed.Data.Scalar
( DT(..), Dist(..)
, scalarD
, sumD)
where
import Data.Array.Parallel.Unlifted.Distributed.Data.Scalar.Base
import Data.Array.Parallel.Unlifted.Distributed.Data.Unit
import Data.Array.Parallel.Unlifted.Distributed.Combinators
import Data.Array.Parallel.Unlifted.Distributed.Primitive
import qualified Data.Array.Parallel.Unlifted.Distributed.What as W
import Data.Array.Parallel.Pretty
import qualified Data.Array.Parallel.Unlifted.Sequential.Vector as V
import Prelude as P
instance PprPhysical (Dist Int) where
pprp (DInt xs)
= text "DInt" <+> text (show $ V.toList xs)
scalarD :: DT a => Gang -> a -> Dist a
scalarD gang x
= mapD W.WScalar gang (const x) (unitD gang)
sumD :: (Num a, DT a) => Gang -> Dist a -> a
sumD g = foldD (W.What "sumD") g (+)