Jeepers Gpars, It's All So Easily Parallel

Jeepers Gpars, It's All So Easily Parallel

Jeepers GPars, It's All So Easily Parallel Russel Winder email: [email protected] xmpp: [email protected] twitter: russel_winder Aims, Goals and Objectives ● Get people enthusiastic to use dataflow, actors and Communicating Sequential Processes (CSP) as their application structuring architecture. ● Get people enthusiastic to use GPars in all their Java and Groovy programming. ● Arrive at an hostelry in good time to have a nice drink and good conversation. Copyright © 2011 Russel Winder 2 Structure ● The Beginning. ● The Middle. ● The End. ● The Extra Questions. ● The Whisky. Copyright © 2011 Russel Winder 3 Protocol ● Interaction is allowed. Actually it may well, possibly, be mandatory. ● If an interjection leads to a “too long” side track, we will stack (or possibly even stash†) it for later. †Depending on whether you want a code oriented or a version control oriented metaphor. Copyright © 2011 Russel Winder 4 The Beginning Copyright © 2011 Russel Winder 5 In the Beginning: The Hardware Processor Single ALU Memory Copyright © 2011 Russel Winder 6 In the Beginning: The Software Load a program into the memory and run it to completion. Copyright © 2011 Russel Winder 7 Multitasking Operating Systems Load many programs into memory and have one of then run at any one time. Copyright © 2011 Russel Winder 8 Concurrency ● Multitasking operating systems introduce the need for concurrency in a shared memory context. ● Tools for managing this are created: ● Locks ● Semaphores ● Monitors Copyright © 2011 Russel Winder 9 Higher Level Models ● Dataflow Model: ● Bert Sutherland, 1966. ● Actor Model: ● First published in 1973 by Carl Hewett, Peter Bishop and Richard Steiger – IJCAI. ● Communicating Sequential Processes (CSP): ● First published in a paper by Tony Hoare in 1978, but only really became well known with the 1983 book. Copyright © 2011 Russel Winder 10 The Interregnum Begins Programmers were taught that concurrent applications needed the same tools and techniques that operating system implementation needed: Shared memory multi-threading. Copyright © 2011 Russel Winder 11 The Interregnum Reified 1995, Java reifies shared memory multithreading as the obviously known right way of dealing with concurrency… Copyright © 2011 Russel Winder 12 …after all C and C++ have been using pthreads (or the like) for many years. Copyright © 2011 Russel Winder 13 The Interregnum Reified, A Bit More 1995, Java reifies the mindset that concurrent programming is all about shared memory multithreading by putting it in the language… Copyright © 2011 Russel Winder 14 …it takes till 2011 for C++ to do the same. Copyright © 2011 Russel Winder 15 The Interregnum Continues Programmers discover that shared-memory multithreading is hard† to get right: that trying to get things right with lock, semaphores and monitors is not entirely easy‡. Copyright © 2011 Russel Winder 16 †By hard, what is actually meant is usually: Absolutely ####### impossible! Copyright © 2011 Russel Winder 17 ‡Clearly “not entirely easy” is a euphemism, see the previous slide for the more appropriate description. Copyright © 2011 Russel Winder 18 Concurrency Eschewed Programmers know concurrent and parallel programming is hard, so they don't do it. Copyright © 2011 Russel Winder 19 Why Bother? Processor speeds double every couple of years, so single thread applications get twice as fast every two years, so who cares about concurrency and parallelism? Copyright © 2011 Russel Winder 20 Oh Dear Processor speeds have to stop getting faster, Moore's Law still working, processor manufacturers start increasing the core count to use all the extra transistors they have. Copyright © 2011 Russel Winder 21 Multicore Revolution: The Early Period Core Core Core Core Core Core Core Core Memory Copyright © 2011 Russel Winder 22 The Hardware Con Job Each processor has N ALUs and so executes N instructions per unit time so is N times faster than a single core processor. Copyright © 2011 Russel Winder 23 The Realization For compute intensive applications, increased parallelism is now the only way to create increased application performance. Copyright © 2011 Russel Winder 24 The Mechanisms Kernel threads mean that applications can harness real parallelism with threads not just time-division multiplexing concurrency. Copyright © 2011 Russel Winder 25 The Problem Creating large, correct programs using shared memory multi-threading is: Absolutely ####### impossible! Copyright © 2011 Russel Winder 26 The Middle Copyright © 2011 Russel Winder 27 Strategy ● Use high-level concurrency structures: ● Actors ● Dataflow ● Communicating Sequential Processes (CSP) ● Data Parallelism Copyright © 2011 Russel Winder 28 Actor Model ● A collection of processes that communicate by sending messages to each other. ● No global shared state. Copyright © 2011 Russel Winder 29 Dataflow Model ● A collection of processes that communicate by sending messages to each other. ● No global shared state. Copyright © 2011 Russel Winder 30 Communicating Sequential Processes ● A collection of processes that communicate by sending messages to each other. ● No global shared state. Copyright © 2011 Russel Winder 31 So what is the difference? It's all in the message passing and hence synchronization. And turning threads into a hidden and managed resource. Copyright © 2011 Russel Winder 32 The Abstract Model Copyright © 2011 Russel Winder 33 Actor Model ● Each actor has a message queue. ● Actors can send messages asynchronously to any other actor. ● Actors read messages from their message queues, do some work and send messages to other actors. Copyright © 2011 Russel Winder 34 Dataflow Model ● Each operator has a set of inputs: single assignment variables, or a queue of such things. ● Operator block until a given state of its inputs and then “fires” creating values on its outputs. Copyright © 2011 Russel Winder 35 Communicating Sequential Processes ● Each process has a set of input channels. ● A process takes data from one of its channels synchronously (rendezvous), computes and then writes to one of its output channels. Copyright © 2011 Russel Winder 36 Data Parallelism ● Data is in some array-like data structure. ● At each stage of a computation, a transformation is applied to all the items in the data structure. Copyright © 2011 Russel Winder 37 Sample Problems ● Sleeping Barber ● π by Quadrature Copyright © 2011 Russel Winder 38 The Sleeping Barber Problem A barber sleeps in the cutting chair unless cutting someone's hair. Customers enter the shop: if the barber is asleep, the customer awakens the barber, sits in the chair and gets a cut; if the barber is cutting the customer checks to see if there is a free waiting chair, and if there is sits to wait their turn or if not leaves the shop, uncut. On finishing a cut, the barber checks the waiting chairs to see if there is a new customer to cut. If there is, the customer moves to the cutting chair and gets a cut, if there isn't the barber takes the cutting chair and sleeps. Problem believed to be originally due to Edsger Dykstra, 1965. It is a model of a process management problem in operating systems. http://en.wikipedia.org/wiki/Sleeping_barber_problem Copyright © 2011 Russel Winder 39 Operating Systems to Simulation Implementing a solution to the problem in an operating systems context is essentially a “solved” problem. Extend the problem to be an example of concurrency and possible parallelism in simulation of a queueing problem, and as a vehicle for trying various technologies. Copyright © 2011 Russel Winder 40 The Abstract Model Customer World Customer Shop Waiting Chairs Customer or Customer SuccessfulCustomer Barber SuccessfulCustomer Copyright © 2011 Russel Winder 41 π By Quadrature 1 1 =∫ dx 4 0 1x2 4 n 1 = ∑ n i=1 i−0.5 2 1 n Copyright © 2011 Russel Winder 42 The Code Sleeping Barber : http://www.russel.org.uk/Bazaar/SleepingBarber π By Quadrature: http://www.russel.org.uk/Bazaar/Pi_Quadrature Copyright © 2011 Russel Winder 43 The End Copyright © 2011 Russel Winder 44 Actors, dataflow, CSP, data parallelism are the high- level abstractions. Shared memory multi-threading is low-level infrastructure. Copyright © 2011 Russel Winder 45 C++, Java, Groovy, Python, etc. are high-level programming languages. Assembly language is low-level infrastructure. Copyright © 2011 Russel Winder 46 Advertising Python for Rookies Sarah Mount, James Shuttleworth and Russel Winder Thomson Learning Now called Cengage Learning. Developing Java Software Third Edition Russel Winder and Graham Roberts Wiley BuyBuy thesethese books!books! Copyright © 2011 It'z Interactive Ltd 47 The Extra Questions Copyright © 2011 Russel Winder 48 The Whisky Copyright © 2011 Russel Winder 49.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    49 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us