Reed Copsey, Jr. C Tech Development Corporation Blog...
Transcript of Reed Copsey, Jr. C Tech Development Corporation Blog...
![Page 1: Reed Copsey, Jr. C Tech Development Corporation Blog ...reedcopsey.com/blog/wp-content/uploads/2010/02/Parallel-Patterns-Implemented-in-NET.pdfMoore’s Law In 1965 Gordon Moore predicted](https://reader030.fdocuments.in/reader030/viewer/2022040322/5e5b92a7a4aa8874ec38e3c9/html5/thumbnails/1.jpg)
Reed Copsey, Jr.
C Tech Development Corporation
Blog - http://reedcopsey.com
Twitter - http://twitter.com/ReedCopsey
Copyright 2010 by Reed Copsey, Jr.
![Page 2: Reed Copsey, Jr. C Tech Development Corporation Blog ...reedcopsey.com/blog/wp-content/uploads/2010/02/Parallel-Patterns-Implemented-in-NET.pdfMoore’s Law In 1965 Gordon Moore predicted](https://reader030.fdocuments.in/reader030/viewer/2022040322/5e5b92a7a4aa8874ec38e3c9/html5/thumbnails/2.jpg)
Why Parallelism is Important –
Moore’s Law
In 1965 Gordon Moore predicted that
“the number of transistors on a chip will
double every 24 months.”
The free lunch is over
No more doubling of CPU frequency
More work = Upgraded Computer
Moore’s Law now applies to CPU cores
Copyright 2010 by Reed Copsey, Jr.
![Page 3: Reed Copsey, Jr. C Tech Development Corporation Blog ...reedcopsey.com/blog/wp-content/uploads/2010/02/Parallel-Patterns-Implemented-in-NET.pdfMoore’s Law In 1965 Gordon Moore predicted](https://reader030.fdocuments.in/reader030/viewer/2022040322/5e5b92a7a4aa8874ec38e3c9/html5/thumbnails/3.jpg)
Trends in Computers
2006 – Dual Core
2007 – Quad Core
2008 – 2x Quad Core
2009 – 2x Dual and Quad Core with Hyper-Threading (2 Threads/Core)
2010 – 2x Six Core Systems with Hyper-Threading (24 Hardware Threads!)
2011+ – More Cores, with 4 and 8 Threads per Core!
Copyright 2010 by Reed Copsey, Jr.
![Page 4: Reed Copsey, Jr. C Tech Development Corporation Blog ...reedcopsey.com/blog/wp-content/uploads/2010/02/Parallel-Patterns-Implemented-in-NET.pdfMoore’s Law In 1965 Gordon Moore predicted](https://reader030.fdocuments.in/reader030/viewer/2022040322/5e5b92a7a4aa8874ec38e3c9/html5/thumbnails/4.jpg)
Hardware Threads over Time
2 2 4 4
6 8 8
12
2 4
8
16
24
32
64
96
0
20
40
60
80
100
120
2004 2006 2008 2009 2010 2012 2013 2014
Cores
Total Threads
Copyright 2010 by Reed Copsey, Jr.
![Page 5: Reed Copsey, Jr. C Tech Development Corporation Blog ...reedcopsey.com/blog/wp-content/uploads/2010/02/Parallel-Patterns-Implemented-in-NET.pdfMoore’s Law In 1965 Gordon Moore predicted](https://reader030.fdocuments.in/reader030/viewer/2022040322/5e5b92a7a4aa8874ec38e3c9/html5/thumbnails/5.jpg)
DEMO:
Copyright 2010 by Reed Copsey, Jr.
![Page 6: Reed Copsey, Jr. C Tech Development Corporation Blog ...reedcopsey.com/blog/wp-content/uploads/2010/02/Parallel-Patterns-Implemented-in-NET.pdfMoore’s Law In 1965 Gordon Moore predicted](https://reader030.fdocuments.in/reader030/viewer/2022040322/5e5b92a7a4aa8874ec38e3c9/html5/thumbnails/6.jpg)
Design Patterns for Parallelism
Design Pattern
“A reusable solution to a commonly occurring problem”
Common Language and Jargon Required
Applies to Parallelism
Copyright 2010 by Reed Copsey, Jr.
![Page 7: Reed Copsey, Jr. C Tech Development Corporation Blog ...reedcopsey.com/blog/wp-content/uploads/2010/02/Parallel-Patterns-Implemented-in-NET.pdfMoore’s Law In 1965 Gordon Moore predicted](https://reader030.fdocuments.in/reader030/viewer/2022040322/5e5b92a7a4aa8874ec38e3c9/html5/thumbnails/7.jpg)
Common Terms for Parallelism
Task
Unit of Execution (UE)
Synchronization
Common Errors:
Race Conditions – Ordering matters
Deadlock
Copyright 2010 by Reed Copsey, Jr.
![Page 8: Reed Copsey, Jr. C Tech Development Corporation Blog ...reedcopsey.com/blog/wp-content/uploads/2010/02/Parallel-Patterns-Implemented-in-NET.pdfMoore’s Law In 1965 Gordon Moore predicted](https://reader030.fdocuments.in/reader030/viewer/2022040322/5e5b92a7a4aa8874ec38e3c9/html5/thumbnails/8.jpg)
Steps to Parallel Programming
1. Find Concurrent Tasks
2. Understand Dependencies
3. Group Tasks to Simplify
4. Implement Using Patterns
Copyright 2010 by Reed Copsey, Jr.
![Page 9: Reed Copsey, Jr. C Tech Development Corporation Blog ...reedcopsey.com/blog/wp-content/uploads/2010/02/Parallel-Patterns-Implemented-in-NET.pdfMoore’s Law In 1965 Gordon Moore predicted](https://reader030.fdocuments.in/reader030/viewer/2022040322/5e5b92a7a4aa8874ec38e3c9/html5/thumbnails/9.jpg)
Finding Concurrent Tasks
Data Parallelism
Task Parallelism
Asynchronous Programming Patterns
Copyright 2010 by Reed Copsey, Jr.
![Page 10: Reed Copsey, Jr. C Tech Development Corporation Blog ...reedcopsey.com/blog/wp-content/uploads/2010/02/Parallel-Patterns-Implemented-in-NET.pdfMoore’s Law In 1965 Gordon Moore predicted](https://reader030.fdocuments.in/reader030/viewer/2022040322/5e5b92a7a4aa8874ec38e3c9/html5/thumbnails/10.jpg)
Imperative Data Parallelism
Effective, but Difficult. More effective, and easier.
.NET 2.0/3.5
ThreadPool via
QueueUserWorkItem
Self-Managed
Difficult to do well
.NET 4.0
Parallel Class
(System.Threading.Tasks)
○ Smart Partitioning
Improved ThreadPool
○ Work Stealing
○ Hill Climbing
Copyright 2010 by Reed Copsey, Jr.
![Page 11: Reed Copsey, Jr. C Tech Development Corporation Blog ...reedcopsey.com/blog/wp-content/uploads/2010/02/Parallel-Patterns-Implemented-in-NET.pdfMoore’s Law In 1965 Gordon Moore predicted](https://reader030.fdocuments.in/reader030/viewer/2022040322/5e5b92a7a4aa8874ec38e3c9/html5/thumbnails/11.jpg)
DEMO:
Copyright 2010 by Reed Copsey, Jr.
![Page 12: Reed Copsey, Jr. C Tech Development Corporation Blog ...reedcopsey.com/blog/wp-content/uploads/2010/02/Parallel-Patterns-Implemented-in-NET.pdfMoore’s Law In 1965 Gordon Moore predicted](https://reader030.fdocuments.in/reader030/viewer/2022040322/5e5b92a7a4aa8874ec38e3c9/html5/thumbnails/12.jpg)
Declarative Data Parallelism
PLINQ
Supports all LINQ to Objects syntax
IEnumerable<T> -> ParallelQuery<T>
.AsParallel()
Copyright 2010 by Reed Copsey, Jr.
![Page 13: Reed Copsey, Jr. C Tech Development Corporation Blog ...reedcopsey.com/blog/wp-content/uploads/2010/02/Parallel-Patterns-Implemented-in-NET.pdfMoore’s Law In 1965 Gordon Moore predicted](https://reader030.fdocuments.in/reader030/viewer/2022040322/5e5b92a7a4aa8874ec38e3c9/html5/thumbnails/13.jpg)
DEMO:
Copyright 2010 by Reed Copsey, Jr.
![Page 14: Reed Copsey, Jr. C Tech Development Corporation Blog ...reedcopsey.com/blog/wp-content/uploads/2010/02/Parallel-Patterns-Implemented-in-NET.pdfMoore’s Law In 1965 Gordon Moore predicted](https://reader030.fdocuments.in/reader030/viewer/2022040322/5e5b92a7a4aa8874ec38e3c9/html5/thumbnails/14.jpg)
Task Parallelism
.NET 2.0/3.5
Thread Class
ThreadPool
BackgroundWorker
Synchronization via locking
.NET 4.0
Parallel.Invoke
Task class
○ Continuations
○ Cancellation
○ AggregateException
○ Child Tasks
Parallel Stacks Debugging
Copyright 2010 by Reed Copsey, Jr.
![Page 15: Reed Copsey, Jr. C Tech Development Corporation Blog ...reedcopsey.com/blog/wp-content/uploads/2010/02/Parallel-Patterns-Implemented-in-NET.pdfMoore’s Law In 1965 Gordon Moore predicted](https://reader030.fdocuments.in/reader030/viewer/2022040322/5e5b92a7a4aa8874ec38e3c9/html5/thumbnails/15.jpg)
Common Issues
Beware the UI thread
SynchronizationContext for portability
○ Use context.Post and context.Send instead of
Control.BeginInvoke() and Dispatcher.Invoke()
Exception Handling
Debugging difficulties
Synchronization
Sharing Effectively
Copyright 2010 by Reed Copsey, Jr.
![Page 16: Reed Copsey, Jr. C Tech Development Corporation Blog ...reedcopsey.com/blog/wp-content/uploads/2010/02/Parallel-Patterns-Implemented-in-NET.pdfMoore’s Law In 1965 Gordon Moore predicted](https://reader030.fdocuments.in/reader030/viewer/2022040322/5e5b92a7a4aa8874ec38e3c9/html5/thumbnails/16.jpg)
DEMO:
Copyright 2010 by Reed Copsey, Jr.
![Page 17: Reed Copsey, Jr. C Tech Development Corporation Blog ...reedcopsey.com/blog/wp-content/uploads/2010/02/Parallel-Patterns-Implemented-in-NET.pdfMoore’s Law In 1965 Gordon Moore predicted](https://reader030.fdocuments.in/reader030/viewer/2022040322/5e5b92a7a4aa8874ec38e3c9/html5/thumbnails/17.jpg)
Asynchronous Programming Patterns
.NET 2.0/3.5
IAsyncResult
○ Delegate.BeginInvoke
IAsyncResult
○ BeginXXX() and EndXXX()
○ Example: WebRequest -
BeginGetResponse() and
EndGetResponse()
.NET 4
Use Task / Task<T> directly
on delegate
TaskFactory.FromAsync
○ Wrap IAsyncResult method
Fork/Join
○ Task.Invoke
○ Task.StartNew() with
Task.Result
Copyright 2010 by Reed Copsey, Jr.
![Page 18: Reed Copsey, Jr. C Tech Development Corporation Blog ...reedcopsey.com/blog/wp-content/uploads/2010/02/Parallel-Patterns-Implemented-in-NET.pdfMoore’s Law In 1965 Gordon Moore predicted](https://reader030.fdocuments.in/reader030/viewer/2022040322/5e5b92a7a4aa8874ec38e3c9/html5/thumbnails/18.jpg)
Common Threading Issues
Closures
True Sharing
False Sharing
64 or 128 byte Cache Lines
Memory Allocations in Delegates
Algorithm is only as scalable as the GC
Server GC (throughput) vs. Workstation GC
(latency)
Copyright 2010 by Reed Copsey, Jr.
![Page 19: Reed Copsey, Jr. C Tech Development Corporation Blog ...reedcopsey.com/blog/wp-content/uploads/2010/02/Parallel-Patterns-Implemented-in-NET.pdfMoore’s Law In 1965 Gordon Moore predicted](https://reader030.fdocuments.in/reader030/viewer/2022040322/5e5b92a7a4aa8874ec38e3c9/html5/thumbnails/19.jpg)
DEMO:
Copyright 2010 by Reed Copsey, Jr.
![Page 20: Reed Copsey, Jr. C Tech Development Corporation Blog ...reedcopsey.com/blog/wp-content/uploads/2010/02/Parallel-Patterns-Implemented-in-NET.pdfMoore’s Law In 1965 Gordon Moore predicted](https://reader030.fdocuments.in/reader030/viewer/2022040322/5e5b92a7a4aa8874ec38e3c9/html5/thumbnails/20.jpg)
Books for More Information
Copyright 2010 by Reed Copsey, Jr.
![Page 21: Reed Copsey, Jr. C Tech Development Corporation Blog ...reedcopsey.com/blog/wp-content/uploads/2010/02/Parallel-Patterns-Implemented-in-NET.pdfMoore’s Law In 1965 Gordon Moore predicted](https://reader030.fdocuments.in/reader030/viewer/2022040322/5e5b92a7a4aa8874ec38e3c9/html5/thumbnails/21.jpg)
Online Resources
Parallel Computing Developer Center
http://msdn.microsoft.com/en-us/concurrency/default.aspx
Microsoft Parallel Team Blogs
“Patterns of Parallel Programming”
article by Stephen Toub
My Blog: http://reedcopsey.com
Copyright 2010 by Reed Copsey, Jr.