cs 251 fall 2019 cs 251 fall 2019 principles of
play

CS 251 Fall 2019 CS 251 Fall 2019 Principles of Programming - PowerPoint PPT Presentation

CS 251 Fall 2019 CS 251 Fall 2019 Principles of Programming Languages Principles of Programming Languages Ben Wood Ben Wood Parallelism (and Concurrency) https://cs.wellesley.edu/~cs251/f19/ 1 Parallelism Parallelism and Concurrency


  1. λ λ CS 251 Fall 2019 CS 251 Fall 2019 Principles of Programming Languages Principles of Programming Languages Ben Wood Ben Wood Parallelism (and Concurrency) https://cs.wellesley.edu/~cs251/f19/ 1 Parallelism

  2. Parallelism and Concurrency in 251 • Goal: encounter – essence, key concerns – non-sequential thinking – some high-level models – some mid-to-high-level mechanisms • Non-goals: – performance engineering / measurement – deep programming proficiency – exhaustive survey of models and mechanisms Parallelism 2

  3. Eliminate 1 big assumption: Evaluation happens as a sequence of ordered steps. Parallelism 3

  4. Co Concu curre rrency cy Pa Parallelism Coordinate access Use more resources to shared resources. to complete work faster. workers = computations data / work divide di ded d among sh share workers = resources data = resources Both can be expressed using a variety of primities. Parallelism 4

  5. Manticore Parallelism via Manticore • Extends SML with language features for parallelism/concurrency. • Mix research vehicle / established models. • Parallelism patterns: – data parallelism: • parallel arrays • parallel tuples – task parallelism: • parallel bindings • parallel case expressions • Unifying model: – futures / tasks • Mechanism: – work-stealing Parallelism 5

  6. Manticore Parallel Arrays: 'a parray literal parray [| e1 , e2 , …, en |] integer ranges [| elo to ehi by estep |] parallel mapping comprehensions [| e | x in elems |] parallel filtering comprehensions [| e | x in elems where pred |] Parallelism 6

  7. Manticore parallel array comprehensions [| e1 | x in e2 |] Evaluation rule: 1. Under the current environment, E, evaluate e2 to a parray v2 . 2. For each element vi in v2 , wi with no o con onstra raint on on re relative timing or order : 1. Create new environment Ei = x ↦ vi, E . 2. Under environment Ei , evaluate e1 to a value vi' 3. The result is [| v1', v2', …, vn' |] Parallelism 7

  8. Data Parallelism many argument data of same type pa parallelize ze ap appli licat cation o of s same ame o operat ation to to all data no ordering/ interdependence many result data of same type Parallelism 8

  9. Manticore Parallel Map / Filter fun mapP f xs = [| f x | x in xs |] : ('a -> 'b) -> 'a parray -> 'b parray fun filterP p xs = [| x | x in xs where p x |] : ('a -> bool) -> 'a parray -> 'a parray Parallelism 9

  10. Manticore Parallel Reduce fun reduceP f init xs = … : (('a * 'a) -> 'a) -> 'a -> 'a parray -> 'a sibling of fold f must be associative f ( , ) f ( , ) f ( , ) f ( , ) f ( , ) f ( , ) f ( , ) … … … … Parallelism 10

  11. Task Parallelism pa parallelize ze appl pplication on of of different ope operation ons wi within larg rger r computation some ordering/interdependence controlled explicitly Parallelism 11

  12. Manticore pivot Parallel Bindings sorted_lt sorted_eq sorted_gt concatP fun qsortP (a: int parray) : int parray = if lengthP a <= 1 then a else let val pivot = a ! 0 (* parray indexing *) St Start ev evaluating pval sorted_lt = in p in parallel el qsortP (filterP (fn x => x < pivot) a) bu but pval sorted_eq = do don’t wait filterP (fn x => x = pivot) a until unt il need needed ed. pval sorted_gt = qsortP (filterP (fn x => x > pivot) a) in concatP ( sorted_lt , concatP ( sorted_eq , sorted_gt )) end Wait until results are ready before using them. Wa Parallelism 12

  13. Manticore Parallel Cases datatype 'a bintree = Empty | Node of 'a * 'a bintree * 'a bintree fun find_any t e = case t of Empty => NONE Ev Eval aluat uate these in n par aral allel. | Node (elem, left, right) => if e = elem then SOME t else pcase find_any left e & find_any right e of If o If one ne f finis inishes w wit ith S SOME, r , retur urn it n it wi without waiting for r the other. SOME tree & ? => SOME tree | ? & SOME tree => SOME tree | NONE & NONE => NONE If If b both f finis inish w wit ith N NONE, r , retur urn N n NONE. Parallelism 13

  14. future = promise speculatively forced in parallel Futures: unifying model for Manticore parallel features signature FUTURE = sig type 'a future (* Produce a future for a thunk. Like Promise.delay . *) val future : (unit -> ’a) -> ’a future (* Wait for the future to complete and return the result. Like Promise.force . *) val touch : ’a future -> ’a (* More advanced features. *) datatype 'a result = VAL of 'a | EXN of exn (* Check if the future is complete and get result if so. *) val poll : ’a future -> ’a result option (* Stop work on a future that won't be needed. *) val cancel : ’a future -> unit Parallelism 14 end

  15. Futures: timeline visualization 1 time let val f = future (fn () => e) in work … (touch f) … end Parallelism 15

  16. Futures: timeline visualization 2 time let val f = future (fn () => e) in work … (touch f) … end Parallelism 16

  17. pval as future sugar let pval x = e in … x … end let val x = future (fn () => e ) in … (touch x ) … end *a bit more: implicitly cancel an untouched future once it becomes clear it won't be touched. Parallelism 17

  18. Parray ops as futures: rough idea 1 Suppose we represent parrays as lists* of of elements : [| f x | x in xs |] map touch ( map (fn x => future (fn () => f x )) xs) *not the actual implementation Parallelism 18

  19. Parray ops as futures: rough idea 2 Suppose we represent parrays as lists* of of element futures : [| f x | x in xs |] map (fn x => future (fn () => f (touch x) )) xs Ke Key semantic difference 1 vs 2? *not the actual implementation Parallelism 19

  20. Odds and ends • pcase: not just future sugar – Choice is a distinct primitive* not offered by futures alone. • Where do execution resources from futures come from? How are they managed? • Tasks vs futures: – function calls vs. val bindings. • Forward to concurrency and events… *at least when implemented well. Parallelism 20

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend