packages feed

accelerate-0.4.0: examples/simple/SAXPY.hs

{-# LANGUAGE ParallelListComp #-}

module SAXPY (saxpy, saxpy_ref) where

import Prelude   hiding (replicate, zip, map, filter, max, min, not, zipWith)
import qualified Prelude

import Data.Array.Unboxed
import Data.Array.IArray

import Data.Array.Accelerate

saxpy :: Float -> Vector Float -> Vector Float -> Acc (Vector Float)
saxpy alpha xs ys
  = let
      xs' = use xs
      ys' = use ys
    in 
    zipWith (\x y -> constant alpha * x * y) xs' ys'

saxpy_ref :: Float -> UArray Int Float -> UArray Int Float -> UArray Int Float
saxpy_ref alpha xs ys
  = listArray (bounds xs) [alpha * x * y | x <- elems xs | y <- elems ys]