CUDA おん Haskell
ご挨拶
ご無沙汰しております。小川でございます。
最近はICEBOXを食べる意欲も減衰するほどめっきり寒くなりました。
寒がりの私には本社のUbuntuマシン(ゆたんぽ)は有難い存在です。
今回は寒さも吹き飛ばす為にGPUをまわしましょう。
CUDAをHaskellから使う方法を調査してみました。
CUDA
CUDA(Compute Unified Device Architecture)はNVIDIAが提供する並列コンピューティングアーキテクチャです。
GPUをグラフィック以外の汎用計算に用いることで、処理速度を向上することが出来ます。
実行環境
今回は次の環境でサンプルを動かしてみました。
バージョン | |
---|---|
Ubuntu | 14.04 LTS |
Haskell Stack | 1.2.0 |
nvcc | 7.0.27 |
※Ubuntu は導入済みであるとします。
Accelerate Haskell
CUDAを利用する事も出来るライブラリがGitHubにて公開されております。
Wiki に Quick Tour などが整備されており、また accelerate-sample というサンプルも公開されている親切設計です。
基本的な構文のサンプルコードを公開されている方もいらっしゃいました。
とても参考になります。
github.com
1次元配列の要素に全てを1足す簡単なサンプルです。
import Data.Array.Accelerate ((:.)((:.)) import qualified Data.Array.Accelerate as Acc import qualified Data.Array.Accelerate.CUDA as CUDA someFunc :: IO () someFunc = do let xs = Acc.fromList(Acc.Z :. 10) [1..10] :: Acc.Vector Int print $ CUDA.run $ Acc.map (+1) (Acc.use xs) -- Result -- Vector (Z :. 10) [2,3,4,5,6,7,8,9,10,11]
インストール | サンプル実行手順
# Haskell Stack のインストール sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 575159689BEFB442 lsb_release -a echo 'deb http://download.fpcomplete.com/ubuntu trusty main'|sudo tee /etc/apt/sources.list.d/fpco.list sudo apt-get update && sudo apt-get install stack -y # Accelerate-Example を動かすためのソフトウェアをインストール sudo apt-get install llvm-3.5-dev sudo apt-get install libedit-dev sudo apt-get install freeglut3-dev sudo apt-get install fftw3-dev # Accelerate-Example をダウンロード git clone https://github.com/AccelerateHS/accelerate-examples.git cd accelerate-examples ln -s stack-7.10.yaml stack.yaml # ビルド | Rayサンプルを実行 stack setup --upgrade-cabal stack build stack exec accelerate-ray
終わりに
Welcome to HaCUDAll World.
次の執筆時はCUDA、DeepLearningあたりを書こうと思います。
それでは良いゆたんぽライフを!