
Roman Leshchinskiy:
Bas van Dijk wrote:
A bit offtopic but slightly related: I just added a GSoC project proposal about adding a nVidia CUDA backend to Data Parallel Haskell: http://hackage.haskell.org/trac/summer-of-code/ticket/1537 It would be great if this physics engine or matrix library could run on a CUDA enabled nVidia "graphics" card!
As Don said, we're working on that. However, this is a lot more work than just a summer project. The reason is that you can't run arbitrary NDP computations on the GPU, just a fairly restricted subset. This means that you need to decide what to put on the GPU during code generation which, in turn, means a significant amount of compiler hacking. It's really more than enough work for a PhD thesis.
To elaborate on that, our current, more moderate goal is to implement a sort of embedded, array DSL into Haskell/GHC, so that all array DSL code is compiled down to CUDA and linked into the rest of the Haskell application using the FFI. This requires the design of the array DSL (partially done), a small addition to GHC (not done), and a compiler from GHC Core to CUDA (partially done). All this is part of a PhD project, and we hope to have something to show later this year. Step 2, then, is to implement a backend to DPH using that array DSL. Doing that efficiently is going to be another significant project (much more than can be achieved in a GSoC project). Manuel