GPU Programming in Haskell

つい最近までCUDAに苦しめられていたので、

GPU Kernels as Data-Parallel Array Computations in Haskell
http://www.cse.unsw.edu.au/~chak/papers/gpugen.pdf

Obsidian: GPU Programming in Haskell
http://www.cse.chalmers.se/~joels/writing/dccpaper_obsidian.pdf

を眺めた。

前者は、Gpugenという、割と抽象度の高いレイヤーでコードを書こうというアプローチで、Obsidianは、もうちょっと抽象度が低い。とりあえず、Gpugenのベンチマークが対数グラフなので極めてうさんくさい。一応、Black-Scholes方程式のシミュレーションで、生のCUDAとGpugenは遜色ないよという話らしいけど、使ったCUDAコードも明らかではないし。zipWithやmapに相当する関数が使えると書いてあるけど、この手の処理はCUDAでも簡単に書けてしまうし、微妙な感じがする。