packages feed

accelerate-0.8.0.0: examples/simple/src/SAXPY.hs

{-# LANGUAGE ParallelListComp #-}

module SAXPY (saxpy, saxpy_ref) where

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

import Data.Array.Unboxed
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]