• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Fork/Join Framework
 

Fork/Join Framework

on

  • 1,263 views

 

Statistics

Views

Total Views
1,263
Views on SlideShare
1,105
Embed Views
158

Actions

Likes
2
Downloads
3
Comments
0

1 Embed 158

http://dstn.appresso.com 158

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Fork/Join Framework Fork/Join Framework Presentation Transcript

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