Martin Dybdal: > On 20 February 2012 16:39, Paul Sujkov <psuj...@gmail.com> wrote: >> Ah, it seems that I see now what's going wrong way. I'm not using the 'run' >> function from the CUDA backend, and so by default I guess the code is >> interpreted (the test backend used for semantics check). However, it's not >> perfectly clear how to use CUDA backend explicitly. > > Neither the interpreter or the CUDA code are used in your example. > Everything in Data.Array.Accelerate are front-end stuff, your arrays > are allocated on the host, so it is here there is an inefficiency. > > The "use" method inserts a statement in the syntax tree generated by > the front-end, which the back-end can use as a hint to transfer that > array to the GPU, while compiling the rest of the program into CUDA > code. The Data.Array.Accelerate.CUDA.run function is the one that > actually moves the arrays to the GPU. > > I haven't tried executing your code and I'm not sure why the front-end > is that slow.
The 'fromList' function is mostly meant for testing or to initialise small arrays. It is not particularly optimised. (Going via a vanilla list is just a bad idea if you want performance.) For efficient data marshalling have a look at the modules under Data.Array.Accelerate.IO. Manuel _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe