Download - GPars Workshop
![Page 1: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/1.jpg)
Copyright © 2013 Russel Winder 1
GPars Workshop
Russel Winder
email: [email protected]: [email protected]
twitter: @russel_winder
http://www.russel.org.uk
![Page 2: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/2.jpg)
Copyright © 2013 Russel Winder 2
Aims, Goals and Objectives
● Gain practical experience of the various models of concurrent and parallel behaviour available in GPars; actors, dataflow, data parallelism, etc.
● Have some fun.
![Page 3: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/3.jpg)
Copyright © 2013 Russel Winder 3
Subsidiary Aims, Goals and Objects
● Show that shared mutable memory multi-threading should return to being an operating systems development technique and not continue to be pushed as an applications programming technique – remember…
![Page 4: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/4.jpg)
Copyright © 2013 Russel Winder 4
…people should tremblein fear at the prospect of using
Shared mutable memorymulti-threading.
![Page 5: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/5.jpg)
Copyright © 2013 Russel Winder 5
Structure
Introduction.
Actors.
Dataflow.
Data Parallelism.
Analysis.
Closing.
![Page 6: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/6.jpg)
Copyright © 2013 Russel Winder 6
Protocol
Short presentation.
(Short presentation Practical period)→ 3
Interaction.
Short presentation.
Questions or comments welcome at any time.
![Page 7: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/7.jpg)
Copyright © 2013 Russel Winder 7
Interstitial Advertisement
![Page 8: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/8.jpg)
Copyright © 2013 Russel Winder 8
Introduction
![Page 9: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/9.jpg)
Copyright © 2013 Russel Winder 9
It is no longer contentious thatThe Multicore Revolution
is well underway.
![Page 10: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/10.jpg)
Copyright © 2013 Russel Winder 10
Quad core laptops and phones.
Eight and twelve core workstations.
Servers with “zillions” of cores.
![Page 11: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/11.jpg)
Copyright © 2013 Russel Winder 11
Parallel capable hardware is the norm.
![Page 12: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/12.jpg)
Copyright © 2013 Russel Winder 12
Software technology in use is now lagginghardware technology by decades.
![Page 13: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/13.jpg)
Copyright © 2013 Russel Winder 13
Operating systems manage coreswith kernel threads.
Operating systems are fundamentally shared mutable memory multi-threaded systems.
Operating systems rightly use all the lock, semaphore, monitor, etc. technologies.
![Page 14: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/14.jpg)
Copyright © 2013 Russel Winder 14
Computationally intensive systems orsubsystems definitely have to be parallel.
Other systems likely use concurrencybut not parallelism.
![Page 15: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/15.jpg)
Copyright © 2013 Russel Winder 15
Concurrency
Execution as co-routines:
Sequences of code give up the executionto pass it to another coroutine.
![Page 16: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/16.jpg)
Copyright © 2013 Russel Winder 16
More Concurrency
Concurrency is a technique founded in auniprocessor view of the world.
Time-division multiplexing.
![Page 17: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/17.jpg)
Copyright © 2013 Russel Winder 17
Parallelism
Having multiple executions activeat the same time.
![Page 18: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/18.jpg)
Copyright © 2013 Russel Winder 18
Concurrency is a tool for structuring execution where asingle processor is used by multiple computations.
Parallelism is about making a computation completefaster than using a single processor.
![Page 19: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/19.jpg)
Copyright © 2013 Russel Winder 19
![Page 20: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/20.jpg)
Copyright © 2013 Russel Winder 20
![Page 21: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/21.jpg)
Copyright © 2013 Russel Winder 21
![Page 22: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/22.jpg)
Copyright © 2013 Russel Winder 22
![Page 23: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/23.jpg)
Copyright © 2013 Russel Winder 23
![Page 24: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/24.jpg)
Copyright © 2013 Russel Winder 24
![Page 25: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/25.jpg)
Copyright © 2013 Russel Winder 25
![Page 26: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/26.jpg)
Copyright © 2013 Russel Winder 26
Squirrel behaviour emulatessynchronized software behaviour.
![Page 27: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/27.jpg)
Copyright © 2013 Russel Winder 27
Locks deny parallelism.
![Page 28: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/28.jpg)
Copyright © 2013 Russel Winder 28
The whole purpose of a lock is toprevent parallelism.
![Page 29: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/29.jpg)
Copyright © 2013 Russel Winder 29
Parallelism is performance improvement.
Performance improvement requires parallelism.
![Page 30: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/30.jpg)
Copyright © 2013 Russel Winder 30
Locks deny performance improvement.
![Page 31: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/31.jpg)
Copyright © 2013 Russel Winder 31
Locks are needed only ifthere is mutable shared state.
![Page 32: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/32.jpg)
Copyright © 2013 Russel Winder 32
Avoid mutable shared state.
![Page 33: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/33.jpg)
Copyright © 2013 Russel Winder 33
…but how…
![Page 34: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/34.jpg)
Copyright © 2013 Russel Winder 34
Use appropriate architectural models.
![Page 35: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/35.jpg)
Copyright © 2013 Russel Winder 35
It's all about controllingconcurrency and parallelismwith tools that applicationsprogrammers find usable.
![Page 36: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/36.jpg)
Copyright © 2013 Russel Winder 36
Shared mutable memory multi-threadingis an operating system technique.
![Page 37: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/37.jpg)
Copyright © 2013 Russel Winder 37
Applications and tools programmersneed computational models with
integrated synchronization.
![Page 38: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/38.jpg)
Copyright © 2013 Russel Winder 38
Use processes and message passing.
![Page 39: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/39.jpg)
Copyright © 2013 Russel Winder 39
It's all easier if processesare single threaded.
![Page 40: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/40.jpg)
Copyright © 2013 Russel Winder 40
ActorsIndependent processes communicating via asynchronous exchange of messages.
DataflowOperators connected by channels with activity triggered by arrival of data on the channels.
Data ParallelismTransform a sequence to another sequence where all individual actions happen at the same time.
![Page 41: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/41.jpg)
Copyright © 2013 Russel Winder 41
Active ObjectsAn object that is actually an actor but looks like a full service object.
AgentsA wrapper for some shared mutable state.
Software Transactional MemoryWrappers for mutable values that uses transactions rather than locks.
Fork/JoinAn toolkit for tree structured concurrency and parallelism.
![Page 42: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/42.jpg)
Copyright © 2013 Russel Winder 42
Actors
![Page 43: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/43.jpg)
Copyright © 2013 Russel Winder 43
ActorsIndependent processes communicating via asynchronous exchange of messages
![Page 44: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/44.jpg)
Copyright © 2013 Russel Winder 44
Need an example.
![Page 45: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/45.jpg)
Copyright © 2013 Russel Winder 45
The Sleeping Barber Problem
![Page 46: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/46.jpg)
Copyright © 2013 Russel Winder 46
The Sleeping Barber Problem
● The barber's shop has a single cutting chair and a row of waiting seats.
● The barber sleeps in the cutting chair unless trimming a customer.
● Customers arrive at the shop at intervals.
● If the barber is asleep, the customer wakes the barber takes the cutting chair and gets a trim.
● If the barber is cutting, a new customer checks to see if there is a free waiting seat.
● If there is join the queue to be trimmed.
● If there isn't leave disgruntled.
Problem originally dueto Edsgar Dijkstra.
![Page 47: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/47.jpg)
Copyright © 2013 Russel Winder 47
A new customer enters the shop,check to see if they can go straightto the cutting chair, if not can theytake a waiting chair, if not leave.
The waiting chairs
The cutting chair.
The barber's shop.
![Page 48: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/48.jpg)
Copyright © 2013 Russel Winder 48
Wikipedia article presents the classic operating systems approach using locks and semaphores.
http://en.wikipedia.org/wiki/Sleeping_barber_problem
![Page 49: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/49.jpg)
Copyright © 2013 Russel Winder 49
Code!
![Page 50: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/50.jpg)
Copyright © 2013 Russel Winder 50
Dataflow
![Page 51: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/51.jpg)
Copyright © 2013 Russel Winder 51
DataflowOperators connected by channels with activity triggered by arrival of data on the channels.
![Page 52: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/52.jpg)
Copyright © 2013 Russel Winder 52
Code!
![Page 53: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/53.jpg)
Copyright © 2013 Russel Winder 53
If you want the code, clone the Git repository:
http://www.russel.org.uk/Git/SleepingBarber.git
![Page 54: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/54.jpg)
Copyright © 2013 Russel Winder 54
Or if you just want to browse:
http://www.russel.org.uk/gitweb
![Page 55: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/55.jpg)
Copyright © 2013 Russel Winder 55
Data Parallelism
![Page 56: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/56.jpg)
Copyright © 2013 Russel Winder 56
Data ParallelismTransform a sequence to another sequence where all individual actions happen at the same time.
![Page 57: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/57.jpg)
Copyright © 2013 Russel Winder 57
Need an example.
![Page 58: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/58.jpg)
Copyright © 2013 Russel Winder 58
![Page 59: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/59.jpg)
Copyright © 2013 Russel Winder 59
What is the Value of ?
Easy, it's known exactly.
It's .
Obviously.
![Page 60: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/60.jpg)
Copyright © 2013 Russel Winder 60
It's simples Александр Орлов 2009
![Page 61: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/61.jpg)
Copyright © 2013 Russel Winder 61
Approximating
● What is it's value represented as a floating point number?● We can only obtain an approximation.● A plethora of possible algorithms to choose from, a
popular one is to employ the following integral equation.
4=∫0
1 1
1x2dx
![Page 62: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/62.jpg)
Copyright © 2013 Russel Winder 62
One Possible Algorithm
● Use quadrature to estimate the value of the integral – which is the area under the curve.
=4n∑i=1
n 1
1i−0.5n
2
With n = 3 not much to do, but potentially lots of error. Use n = 107 or n = 109?
Embarrassingly parallel.
![Page 63: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/63.jpg)
Copyright © 2013 Russel Winder 63
Because addition is commutative andassociative, expression can be
decomposed into sums of partial sums.
![Page 64: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/64.jpg)
Copyright © 2013 Russel Winder 64
a + b + c + d + e + f
=
( a + b ) + ( c + d ) + ( e + f )
![Page 65: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/65.jpg)
Copyright © 2013 Russel Winder 65
Scatter – Gather
map reduce
![Page 66: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/66.jpg)
Copyright © 2013 Russel Winder 66
Code!
![Page 67: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/67.jpg)
Copyright © 2013 Russel Winder 67
If you want the code, clone the Git repository:
http://www.russel.org.uk/Git/Pi_Quadrature.git
![Page 68: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/68.jpg)
Copyright © 2013 Russel Winder 68
Or if you just want to browse:
http://www.russel.org.uk/gitweb
![Page 69: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/69.jpg)
Copyright © 2013 Russel Winder 69
An End
![Page 70: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/70.jpg)
Copyright © 2013 Russel Winder 70
Multicore and multiprocessor are nowthe norm, not the exception.
![Page 71: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/71.jpg)
Copyright © 2013 Russel Winder 71
Parallelism only matters ifcomputational performance matters.
![Page 72: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/72.jpg)
Copyright © 2013 Russel Winder 72
Unstructured synchronizationof concurrent systems
is not a feasible approach.
![Page 73: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/73.jpg)
Copyright © 2013 Russel Winder 73
Actors, dataflow, and data parallelism(and CSP, agents, fork/join,…)
are the future of applications structure.
![Page 74: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/74.jpg)
Copyright © 2013 Russel Winder 74
Passing messages betweenprocesses is the way forward.
![Page 75: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/75.jpg)
Copyright © 2013 Russel Winder 75
Shared memory concurrencyis a dead end for applications.
![Page 76: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/76.jpg)
Copyright © 2013 Russel Winder 76
![Page 77: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/77.jpg)
Copyright © 2013 Russel Winder 77
![Page 78: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/78.jpg)
Copyright © 2013 Russel Winder 78
![Page 79: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/79.jpg)
Copyright © 2013 Russel Winder 79
![Page 80: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/80.jpg)
Copyright © 2013 Russel Winder 80
![Page 81: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/81.jpg)
Copyright © 2013 Russel Winder 81
![Page 82: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/82.jpg)
Copyright © 2013 Russel Winder 82
Squirrels deny parallelism.
![Page 83: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/83.jpg)
Copyright © 2013 Russel Winder 83
Squirrels deny performance enhancement.
![Page 84: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/84.jpg)
Copyright © 2013 Russel Winder 84
Don't be a squirrel.
![Page 85: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/85.jpg)
Copyright © 2013 Russel Winder 85
Do not use explicit locking algorithms.
![Page 86: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/86.jpg)
Copyright © 2013 Russel Winder 86
Use computational architectures that promoteparallelism and hence performance
improvement:
ActorsDataflow
Data Parallelism
![Page 87: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/87.jpg)
Copyright © 2013 Russel Winder 87
Use
Go on, you know you want to…
![Page 88: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/88.jpg)
Copyright © 2013 Russel Winder 88
Interstitial Advertisement
![Page 89: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/89.jpg)
Copyright © 2013 Russel Winder 89
The End
![Page 90: GPars Workshop](https://reader034.vdocuments.us/reader034/viewer/2022051609/546e5644af7959fb1f8b5b37/html5/thumbnails/90.jpg)
Copyright © 2013 Russel Winder 90
GPars Workshop
Russel Winder
email: [email protected]: [email protected]
twitter: @russel_winderwebsite: http://www.russel.org.uk