Data.Array.Accelerate defines an embedded language of array computations for high-performance computing in Haskell. Computations on regular, multi-dimensional arrays are expressed in the form of parameterised collective operations such as maps, reductions, and permutations. These computations are online-compiled and executed on a range of architectures.
Simon Marlow's book Parallel and Concurrent Programming in Haskell contains a chapter on Accelerate.
Simon Marlow recently taught a course on parallel & concurrent programming in Haskell at the EDF/CEA/INRIA Summer School 2012, "Functional Programming for Parallel and Concurrent Applications". One of the lectures teaches GPU programming using Accelerate; check out his slides and accompanying exercises (page 14 onwards).