0
Fork/Join Framework      大崎 瑶
なぜ?Fork/Join• 並行性と並列性• 並列性を上げるには?• Work Stealingアルゴリズム
並行性と並列性• 並行性とは – プログラムが論理的に並行実行可能な状態 – プリエンプティブなスレッドのこと• 並列性とは – 並行性を持つプログラムが時間的に並列に実   行されること ものすごいオレオレ解釈だし、もうちょっと厳密な定義があ...
並行性ポイントは2つ プリエンプティブである(割り込みが可能)           この間に別のことが割り込める  メモリリソース(変数)を共有する          変数    同じ変数への同時のアクセスを制限する仕組みを持っている
並行性の例         IO待ちが発生           CPUが遊んでいる間に            ほかのことが出来るGUIのプログラミングでは並行動作するように設計するのが基本(でないと、IO待ちで操作がブロックされてしまう)
並列性並行性をもつプログラムが時系列的に並列に動作する 並行性のあるプログラムの          複数のCPU/Coreで実行される 並列実行                            並行性のあるプログラムの          ...
並列性を上げるには?• 並列性を下げる要因 =         スレッドの同期処理 – クリティカルセクション – 待ち合わせ                  Fork/Join Frameworkが – 並列度(Core数、スレッド数)  ...
Executorでは…         クリティカルパス        赤いとこ全部待ち時間
細粒度のタスク細粒度のタスクをうまくCPU/Coreに割り振ってあげれば効率的に使うことが出来る。でも、Executorではそれを自分でうまくスケジューリングしてあげなければならないし、オーバーヘッドも大きいそこで Fork/Join Fram...
タスクの細分化タスクを細分化するには分割統治法         あのフィボナッチだって、クイックソートだって         分割統治 Fork/Join Framework   java.util.concurrent.RecursiveTa...
サンプル(フィボナッチ数)サクラバ大先生の連載から拝借http://itpro.nikkeibp.co.jp/article/COLUMN/20110527/360769/?ST=develop&P=3
Work Stealingアルゴリズム分割統治アルゴリズム                                   分割                                   (Fork)               ...
ParallelArayextra166yではParallelArrayが提案されています。(Java8で登場)またまたサンプルを拝借して…http://itpro.nikkeibp.co.jp/article/COLUMN/20110627/...
まとめ• Fork/Join Frameworkは細粒度のタスクを並  列に実行するのに適しています。 – Work Stealingアルゴリズム• タスクを細粒度に分割するには分割統治  アルゴリズムがあります。• Java8ではParall...
Upcoming SlideShare
Loading in...5
×

Fork/Join Framework

1,008

Published on

0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,008
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
5
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Transcript of "Fork/Join Framework"

  1. 1. Fork/Join Framework 大崎 瑶
  2. 2. なぜ?Fork/Join• 並行性と並列性• 並列性を上げるには?• Work Stealingアルゴリズム
  3. 3. 並行性と並列性• 並行性とは – プログラムが論理的に並行実行可能な状態 – プリエンプティブなスレッドのこと• 並列性とは – 並行性を持つプログラムが時間的に並列に実 行されること ものすごいオレオレ解釈だし、もうちょっと厳密な定義がありそうな 気がしますが・・・
  4. 4. 並行性ポイントは2つ プリエンプティブである(割り込みが可能) この間に別のことが割り込める メモリリソース(変数)を共有する 変数 同じ変数への同時のアクセスを制限する仕組みを持っている
  5. 5. 並行性の例 IO待ちが発生 CPUが遊んでいる間に ほかのことが出来るGUIのプログラミングでは並行動作するように設計するのが基本(でないと、IO待ちで操作がブロックされてしまう)
  6. 6. 並列性並行性をもつプログラムが時系列的に並列に動作する 並行性のあるプログラムの 複数のCPU/Coreで実行される 並列実行 並行性のあるプログラムの 非並列実行 並列性があるほうが 実行時間が短い
  7. 7. 並列性を上げるには?• 並列性を下げる要因 = スレッドの同期処理 – クリティカルセクション – 待ち合わせ Fork/Join Frameworkが – 並列度(Core数、スレッド数) 解決しようとしているのはこ れ!
  8. 8. Executorでは… クリティカルパス 赤いとこ全部待ち時間
  9. 9. 細粒度のタスク細粒度のタスクをうまくCPU/Coreに割り振ってあげれば効率的に使うことが出来る。でも、Executorではそれを自分でうまくスケジューリングしてあげなければならないし、オーバーヘッドも大きいそこで Fork/Join Framework ですよ!!!
  10. 10. タスクの細分化タスクを細分化するには分割統治法 あのフィボナッチだって、クイックソートだって 分割統治 Fork/Join Framework java.util.concurrent.RecursiveTask<V> java.util.concurrent.RecursiveAction 分割統治といえば誰もがアルゴリズムの教科書で最初に習う 再帰処理ですよね!!!
  11. 11. サンプル(フィボナッチ数)サクラバ大先生の連載から拝借http://itpro.nikkeibp.co.jp/article/COLUMN/20110527/360769/?ST=develop&P=3
  12. 12. Work Stealingアルゴリズム分割統治アルゴリズム 分割 (Fork) 統治 (Join) タスクキュー(Deque) PopCPU1 Fork PushCPU2CPU3 StealCPU4
  13. 13. ParallelArayextra166yではParallelArrayが提案されています。(Java8で登場)またまたサンプルを拝借して…http://itpro.nikkeibp.co.jp/article/COLUMN/20110627/361738/?ST=develop&P=4
  14. 14. まとめ• Fork/Join Frameworkは細粒度のタスクを並 列に実行するのに適しています。 – Work Stealingアルゴリズム• タスクを細粒度に分割するには分割統治 アルゴリズムがあります。• Java8ではParallelArrayも登場。• ParallelArrayはLambdaによって使いやすく なる。
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×