1 ¡ 6/16/2010 ¡ Work ¡Stealing ¡Scheduler ¡ WORK ¡STEALING ¡ SCHEDULER ¡
2 ¡ 6/16/2010 ¡ Work ¡Stealing ¡Scheduler ¡ Announcements ¡ • Text ¡books ¡ • Assignment ¡1 ¡ • Assignment ¡0 ¡results ¡ • Upcoming ¡Guest ¡lectures ¡
3 ¡ 6/16/2010 ¡ Work ¡Stealing ¡Scheduler ¡ Recommended ¡Textbooks ¡ PaQerns ¡for ¡Parallel ¡ The ¡Art ¡of ¡MulLprocessor ¡ ¡ Programming ¡ Programming ¡ Timothy ¡MaQson, ¡et.al. ¡ Maurice ¡Herlihy, ¡Nir ¡Shavit ¡ Parallel ¡Programming ¡with ¡ ¡ MicrosoT ¡.NET ¡ hQp://parallelpaQerns.codeplex.com/ ¡
4 ¡ 6/16/2010 ¡ Work ¡Stealing ¡Scheduler ¡ Available ¡on ¡Website ¡ • Assignment ¡1 ¡(due ¡two ¡weeks ¡from ¡now) ¡ • Paper ¡for ¡Reading ¡Assignment ¡1 ¡(due ¡next ¡week) ¡
5 ¡ 6/16/2010 ¡ Work ¡Stealing ¡Scheduler ¡ Assignment ¡0 ¡ • Thanks ¡for ¡submiXng ¡ ¡ • Provided ¡important ¡feedback ¡to ¡us ¡
6 ¡ 6/16/2010 ¡ Work ¡Stealing ¡Scheduler ¡ Percentage ¡Students ¡Answering ¡Yes ¡ 100 ¡ 80 ¡ 60 ¡ 40 ¡ 20 ¡ 0 ¡
7 ¡ 6/16/2010 ¡ Work ¡Stealing ¡Scheduler ¡ Number ¡of ¡Yes ¡Answers ¡Per ¡Student ¡ 14 ¡ 12 ¡ 10 ¡ 8 ¡ 6 ¡ 4 ¡ 2 ¡ 0 ¡ 0 ¡ 1 ¡ 2 ¡ 3 ¡ 4 ¡ 5 ¡ 6 ¡ 7 ¡ 8 ¡
8 ¡ 6/16/2010 ¡ Work ¡Stealing ¡Scheduler ¡ Upcoming ¡Guest ¡Lectures ¡ • Apr ¡12: ¡Todd ¡Mytkowicz ¡ ¡ • How ¡to ¡(and ¡not ¡to) ¡measure ¡performance ¡ • Apr ¡19: ¡Shaz ¡Qadeer ¡ • Correctness ¡SpecificaLons ¡and ¡Data ¡Race ¡DetecLon ¡
9 ¡ 6/16/2010 ¡ Work ¡Stealing ¡Scheduler ¡ Last ¡Lecture ¡Recap ¡
10 ¡ 6/16/2010 ¡ Work ¡Stealing ¡Scheduler ¡ Last ¡Lecture ¡Recap ¡ • Parallel ¡computaLon ¡can ¡be ¡represented ¡as ¡a ¡DAG ¡ • Nodes ¡represent ¡sequenLal ¡computaLon ¡ • Edges ¡represent ¡dependencies ¡ SequenLal ¡ ¡Sort ¡ Split ¡ Merge ¡ SequenLal ¡Sort ¡ Time ¡
11 ¡ 6/16/2010 ¡ Work ¡Stealing ¡Scheduler ¡ Last ¡Lecture ¡Recap ¡ • ¡ ¡
12 ¡ 6/16/2010 ¡ Work ¡Stealing ¡Scheduler ¡ Last ¡Lecture ¡Recap ¡ • ¡ ¡
13 ¡ 6/16/2010 ¡ Work ¡Stealing ¡Scheduler ¡ Last ¡Lecture ¡Recap ¡ • ¡ ¡
14 ¡ 6/16/2010 ¡ Work ¡Stealing ¡Scheduler ¡ This ¡Lecture ¡ • Design ¡of ¡a ¡greedy ¡scheduler ¡ • Task ¡abstracLon ¡ • TranslaLng ¡high-‑level ¡abstracLons ¡to ¡tasks ¡
15 ¡ 6/16/2010 ¡ Work ¡Stealing ¡Scheduler ¡ This ¡Lecture ¡ • Design ¡of ¡a ¡greedy ¡scheduler ¡ • Task ¡abstracLon ¡ • TranslaLng ¡high-‑level ¡abstracLons ¡to ¡tasks ¡ .NET ¡ .NET ¡ Program ¡ Scheduler ¡ … ¡ Intel ¡ TBB ¡ TBB ¡ Program ¡
16 ¡ 6/16/2010 ¡ Work ¡Stealing ¡Scheduler ¡ (Simple) ¡Tasks ¡ • A ¡node ¡in ¡the ¡DAG ¡ • ExecuLng ¡a ¡task ¡generates ¡dependent ¡subtasks ¡ Sort(4) ¡ Split(8) ¡ Merge(8) ¡ Sort(4) ¡ Split(16) ¡ Merge(16) ¡ Sort(4) ¡ Split(8) ¡ Merge(8) ¡ Sort(4) ¡
17 ¡ 6/16/2010 ¡ Work ¡Stealing ¡Scheduler ¡ (Simple) ¡Tasks ¡ • A ¡node ¡in ¡the ¡DAG ¡ • ExecuLng ¡a ¡task ¡generates ¡dependent ¡subtasks ¡ • Note: ¡Task ¡C ¡is ¡generated ¡by ¡A ¡or ¡B, ¡whoever ¡finishes ¡last ¡ A ¡ Sort(4) ¡ C ¡ Split(8) ¡ Merge(8) ¡ Sort(4) ¡ B ¡ Split(16) ¡ Merge(16) ¡ Sort(4) ¡ Split(8) ¡ Merge(8) ¡ Sort(4) ¡
18 ¡ 6/16/2010 ¡ Work ¡Stealing ¡Scheduler ¡ Design ¡Constraints ¡of ¡the ¡Scheduler ¡ • The ¡DAG ¡is ¡generated ¡dynamically ¡ • Based ¡on ¡inputs ¡and ¡program ¡control ¡flow ¡ • The ¡graph ¡is ¡not ¡known ¡ahead ¡of ¡Lme ¡ • The ¡amount ¡of ¡work ¡done ¡by ¡a ¡task ¡is ¡dynamic ¡ • The ¡weight ¡of ¡each ¡node ¡is ¡not ¡know ¡ahead ¡of ¡Lme ¡ • Number ¡of ¡processors ¡P ¡can ¡change ¡at ¡runLme ¡ • Hardware ¡processors ¡are ¡shared ¡with ¡other ¡processes, ¡kernel ¡
19 ¡ 6/16/2010 ¡ Work ¡Stealing ¡Scheduler ¡ Design ¡Requirements ¡of ¡the ¡Scheduler ¡
20 ¡ 6/16/2010 ¡ Work ¡Stealing ¡Scheduler ¡ Design ¡Requirements ¡of ¡the ¡Scheduler ¡ • Should ¡be ¡greedy ¡ • A ¡processor ¡cannot ¡be ¡idle ¡when ¡tasks ¡are ¡pending ¡ • Should ¡limit ¡communicaLon ¡between ¡processors ¡ • Should ¡schedule ¡related ¡tasks ¡in ¡the ¡same ¡processor ¡ • Tasks ¡that ¡are ¡likely ¡to ¡access ¡the ¡same ¡cachelines ¡
21 ¡ 6/16/2010 ¡ Work ¡Stealing ¡Scheduler ¡ AQempt ¡0: ¡Centralized ¡Scheduler ¡ • “Manager ¡distributes ¡tasks ¡to ¡others” ¡ • Manager: ¡assigns ¡tasks ¡to ¡workers, ¡ensures ¡no ¡worker ¡ is ¡idle ¡ • Workers: ¡On ¡task ¡compleLon, ¡submit ¡generated ¡tasks ¡ to ¡the ¡manager ¡
22 ¡ 6/16/2010 ¡ Work ¡Stealing ¡Scheduler ¡ AQempt ¡1: ¡Centralized ¡Work ¡Queue ¡ • “All ¡processors ¡share ¡a ¡common ¡work ¡queue” ¡ • Every ¡processor ¡dequeues ¡a ¡task ¡from ¡the ¡work ¡queue ¡ • On ¡task ¡compleLon, ¡enqueue ¡the ¡generated ¡tasks ¡to ¡ the ¡work ¡queue ¡
23 ¡ 6/16/2010 ¡ Work ¡Stealing ¡Scheduler ¡ AQempt ¡2: ¡Work ¡Sharing ¡ • “Loaded ¡workers ¡share” ¡ • Every ¡processor ¡pushes ¡and ¡pops ¡tasks ¡into ¡a ¡local ¡ work ¡queue ¡ • When ¡the ¡work ¡queue ¡gets ¡large, ¡send ¡tasks ¡to ¡other ¡ processors ¡
24 ¡ 6/16/2010 ¡ Work ¡Stealing ¡Scheduler ¡ Disadvantages ¡of ¡Work ¡Sharing ¡ • If ¡all ¡processors ¡are ¡busy, ¡ ¡each ¡will ¡spend ¡Lme ¡trying ¡ to ¡offload ¡ • “Perform ¡communicaLon ¡when ¡busy” ¡ • Difficult ¡to ¡know ¡the ¡load ¡on ¡processors ¡ • A ¡processor ¡with ¡two ¡large ¡tasks ¡might ¡take ¡longer ¡than ¡a ¡ processor ¡with ¡five ¡small ¡tasks ¡ • Tasks ¡might ¡get ¡shared ¡mulLple ¡Lmes ¡before ¡being ¡ executed ¡ • Some ¡processors ¡can ¡be ¡idle ¡while ¡others ¡are ¡loaded ¡ • Not ¡greedy ¡
25 ¡ 6/16/2010 ¡ Work ¡Stealing ¡Scheduler ¡ AQempt ¡3: ¡Work ¡Stealing ¡ • “Idle ¡workers ¡steal” ¡ • Each ¡processor ¡maintains ¡a ¡local ¡work ¡queue ¡ • Pushes ¡generated ¡tasks ¡into ¡the ¡local ¡queue ¡ • When ¡local ¡queue ¡is ¡empty, ¡steal ¡a ¡task ¡from ¡another ¡ processor ¡
26 ¡ 6/16/2010 ¡ Work ¡Stealing ¡Scheduler ¡ Nice ¡ProperLes ¡of ¡Work ¡Stealing ¡ • ¡ ¡
27 ¡ 6/16/2010 ¡ Work ¡Stealing ¡Scheduler ¡ Nice ¡ProperLes ¡of ¡Work ¡Stealing ¡ • ¡ ¡
28 ¡ 6/16/2010 ¡ Work ¡Stealing ¡Scheduler ¡ Work ¡Stealing ¡Queue ¡Datastructure ¡ • A ¡specialized ¡deque ¡(Double-‑Ended ¡Queue) ¡with ¡three ¡ operaLons: ¡ • Push ¡: ¡Local ¡processor ¡adds ¡newly ¡created ¡tasks ¡ ¡ • Pop ¡ ¡ ¡: ¡Local ¡processor ¡removes ¡task ¡to ¡execute ¡ • Steal ¡: ¡Remote ¡processors ¡remove ¡tasks ¡ Push ¡
29 ¡ 6/16/2010 ¡ Work ¡Stealing ¡Scheduler ¡ Work ¡Stealing ¡Queue ¡Datastructure ¡ • A ¡specialized ¡deque ¡(Double-‑Ended ¡Queue) ¡with ¡three ¡ operaLons: ¡ • Push ¡: ¡Local ¡processor ¡adds ¡newly ¡created ¡tasks ¡ ¡ • Pop ¡ ¡ ¡: ¡Local ¡processor ¡removes ¡task ¡to ¡execute ¡ • Steal ¡: ¡Remote ¡processors ¡remove ¡tasks ¡ Push ¡ Pop? ¡ Pop? ¡ Steal? ¡ Steal? ¡
30 ¡ 6/16/2010 ¡ Work ¡Stealing ¡Scheduler ¡ Work ¡Stealing ¡Queue ¡Datastructure ¡ • A ¡specialized ¡deque ¡(Double-‑Ended ¡Queue) ¡with ¡three ¡ operaLons: ¡ • Push ¡: ¡Local ¡processor ¡adds ¡newly ¡created ¡tasks ¡ ¡ • Pop ¡ ¡ ¡: ¡Local ¡processor ¡removes ¡task ¡to ¡execute ¡ • Steal ¡: ¡Remote ¡processors ¡remove ¡tasks ¡ Push ¡ Pop ¡ Steal ¡
Recommend
More recommend