21
Reed Copsey, Jr. C Tech Development Corporation Blog - http://reedcopsey.com Twitter - http://twitter.com/ReedCopsey Copyright 2010 by Reed Copsey, Jr.

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

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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.