Mercurial > hg > Papers > 2014 > toma-master
changeset 72:c119afd8e948
describe rpar
author | Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 13 Feb 2014 13:27:38 +0900 |
parents | 98a55a935619 |
children | 7c3503a9bfcf |
files | slides/master.html |
diffstat | 1 files changed, 22 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/slides/master.html Thu Feb 13 13:02:59 2014 +0900 +++ b/slides/master.html Thu Feb 13 13:27:38 2014 +0900 @@ -107,20 +107,31 @@ <p> モナドの例:IOモナド、エラーモナド、STMモナド </p> </article> - <article> - <h3> - Haskell の並列処理 - </h3> - <p> - rparの例 - </p> - </article> +<article> + <h3> Haskell の並列処理 </h3> + <p> sumという1つ目の引数から2つ目の引数までの全ての数を足す関数があるとする </p> + <p> rpar の引数にすることで関数が並列に実行可能であることを示せる </p> + <p> do ~ returnで rpar を 1 つにまとめ、runEvalに渡すことで実行する </p> +<pre> +main = print (runEval test) + +test = do + a <- rpar (sum 0 10000) + b <- rpar (sum 10000 20000) + return (a,b) +</pre> + <p> a と b が並列に計算される</p> +</article> <article> <h3> Haskell の遅延評価 </h3> <p> 並列実行は遅延評価が問題になる </p> <p> haskell では値が必要となるまで式の評価が行われない </p> <p> 並列に実行するように指示しても、評価が行われなければ並列に動かない </p> + <p> さきほどの例ではprintを行うようにしていた</p> +<pre> +main = print (runEval test) +</pre> </article> <article> @@ -365,9 +376,11 @@ <article> <h3> まとめ </h3> - <p> 純粋関数型言語 Haskell を用いて並列データベースの実装をおこなった </p> + <p> Haskell を用いて信頼性の高い並列データベースの実装した </p> + <p> Haskell の並列処理は、最新のコンパイラで性能がでることがわかった </p> <p> 読み込みに関して 12 コアで実行した場合、10.37 倍 という性能向上率が確認できた </p> <p> また、Web 掲示板サービスを開発し、Java と比較して読み込みで 3.25 倍、書き込みで 3.78 倍の性能が確認できた </p> + <p> Network 越しの計測では並列性能があまり出ていないことがわかった </p> </article> <article>