Pure functional programming to the GPU

There are several embedded languages in Haskell that target CUDA and/or OpenCL.

The most high level is accelerate, a subset of Haskell for array processing, embedded in Haskell. It works with CUDA.

Conal Elliott has a shader language embedded in Haskell, for graphics programming


There are some attempts, such as Obsidian (Haskell) and SaC (Single Assignment C).

More about this and some other attempts are described in this paper: Functional Programming for High-Performance Computing on Heterogeneous Architectures