Parallel and Concurrent Programming in Haskell 読書会 第4回

2013/Sep/29に開催された"Parallel and Concurrent Programming in Haskell" (by Simon Marlow) の読書会第4回についての呟きをまとめました。今回は、GPUプログラミングのためのAccelerateライブラリを読んでParallelは終了、Concurrentに入りMVarとforkIO、例外処理に関して。
3
コスモ @cosmo__

Data.Array.Accelerate.CUDAややこしそう #PCPjH

2013-09-29 16:56:16
Jun Inoue @jun0inoue

#PCPjH Floyd-Warshal で Int を入力に取ると、各 i に対して「f i を計算する kernel 」を生成する(=O(n)個の kernel を生成する) という意味になる。でも欲しいのは「各 i に対して f i を計算する」kernel を一つだけ。

2013-09-29 16:56:47
コスモ @cosmo__

Data.Array.Accelerateの(>->)演算子は上手くパイプラインを抽象化してくれるのかな #PCPjH

2013-09-29 16:59:48
コスモ @cosmo__

CUDA使うときにOSの制限により長時間カーネルを走らせるとエラーになってしまうのでめんどくさかった記憶が。Linuxだと画面出力しているGPUでやらかすと画面更新が止まります。焦ります #PCPjH

2013-09-29 17:04:20
shelarcy(しぇらーしぃ) @shelarcy

OpenCL 版欲しい → この本では特に言及されてませんが、accelerate パッケージのドキュメントにあるように「ICC/Cilk + OpenCL 版」が現在進行形で開発されています。 https://t.co/euZo3VyyrC #PCPjH

2013-09-29 17:09:47
コスモ @cosmo__

最近のGPUはDoubleをサポートしているけど、まだまだFloatしかサポートしてないGPU多いですよね。。。 #PCPjH

2013-09-29 17:10:34
shelarcy(しぇらーしぃ) @shelarcy

会場で ICC/Cilk + OpenCL 版のみを OpenCL 版として紹介したのは、もう一つの OpenCL 版 [https://t.co/hMQPcLLQwu ] は長らくメンテされていないためです…… #PCPjH

2013-09-29 17:18:14
Jun Inoue @jun0inoue

#PCPjH ? 演算子って ImplicitParams と衝突しないのか。試した範囲ではちゃんとパースされるっぽいけど。

2013-09-29 17:18:29
Jun Inoue @jun0inoue

#PCPjH Accelerate の Mandelbrot が CPU と比較されてないのでピンとこないと文句が出ております。

2013-09-29 17:36:52
Jun Inoue @jun0inoue

#PCPjH この mandelbrot って、どうも繰り返し毎に device から host に戻って device 呼び出し直してるように見えるんだけど、n 回漸化式適用するまでずっと GPU 側で繰り返せないのかな?

2013-09-29 17:38:20
rf @rf0444

#PCPjH Parallel 編終了。Concurrent 編へ。

2013-09-29 17:38:26
shelarcy(しぇらーしぃ) @shelarcy

休憩終わり。 Part II. Concurrent Haskell から再開 #PCPjH

2013-09-29 17:45:47
Jun Inoue @jun0inoue

#PCPjH Concurrent 編開始。スレッドは forkIO で作る。動作は pthreads のスレッド作成とかと一緒。

2013-09-29 17:55:04
Jun Inoue @jun0inoue

#PCPjH Concurrent Haskell では main thread が main から返ると他のスレが全部直ちにヌッ殺されて終了する。ウェイトしてほしけりゃ自分で書きな!

2013-09-29 17:59:20
Jun Inoue @jun0inoue

#PCPjH スレ同士の通信は MVar。MVar というのは何回でも読み書きできる IVar です。IVar は一回しか読み書きできない MVar です。#循環定義

2013-09-29 18:00:35
Jun Inoue @jun0inoue

#PCPjH MVar に重複して書き込むと遅かったほうが早かった方の値が取り出されるまでブロックする。

2013-09-29 18:01:12
Jun Inoue @jun0inoue

#PCPjH Accelerate の章と比べてわかりやすさの落差が凄い。

2013-09-29 18:01:32
Jun Inoue @jun0inoue

#PCPjH MVar でも相変わらず deadlock は検出してもらえます。

2013-09-29 18:03:18
コスモ @cosmo__

Fire-and-forgetってのは http://t.co/ZFDHvEtfIo にあるように発火したらあとは自動で追いかけるような何からしい? #PCPjH

2013-09-29 18:11:37
Jun Inoue @jun0inoue

#PCPjH 複合的なデータをMVar に突っ込んで takeMVar / putMVar するだけで排他アクセスが実現する! #おいしい

2013-09-29 18:23:15