[Haskell-cafe] Accelerate package (CUDA). How to actually create an array?

briand at aracnet.com briand at aracnet.com
Tue May 17 16:32:55 CEST 2011


On Mon, 16 May 2011 20:33:12 +0400
Grigory Sarnitskiy <sargrigory at ya.ru> wrote:

> Hello!
> 
> I'm probing CUDA with Haskell, accelerate package to be exact. Sound stupid, but I couldn't find how to actually construct an array, for example Vector Float.
> 
> There is quite a number of examples provided with the package, but they seem not simple enough for me just to start.
> 
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe

Have a fish :-)


import Data.Array.Repa as A
import Data.Array.Repa.Index
import Data.Array.Repa.Shape as AS

newArray :: Int -> Array DIM2 Double
newArray n = 
--    A.fromList ((AS.shapeOfList [n, n])::(DIM2)) ((Prelude.map fromIntegral [1..n*n])::[Double])
    A.fromList (AS.shapeOfList [n, n]) (Prelude.map fromIntegral [1..n*n])

main = do
  let x = newArray 5
  let y = newArray 5
  let z = A.zipWith(+) x y
  putStrLn $ show x
  putStrLn $ show y
  putStrLn $ show z

*Main> main
[1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0,16.0,17.0,18.0,19.0,20.0,21.0,22.0,23.0,24.0,25.0]
[1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0,16.0,17.0,18.0,19.0,20.0,21.0,22.0,23.0,24.0,25.0]
[2.0,4.0,6.0,8.0,10.0,12.0,14.0,16.0,18.0,20.0,22.0,24.0,26.0,28.0,30.0,32.0,34.0,36.0,38.0,40.0,42.0,44.0,46.0,48.0,50.0]
*Main> 

I can't remember what Prelude.map collided with.

Brian




More information about the Haskell-Cafe mailing list