Parallel Computing For Managed Developers

Preview:

DESCRIPTION

.NET 4.0 take on Parallel Tasks

Citation preview

Visual Studio 2010and

.NET Framework 4

Training Workshop

Visual Studio 2010and

.NET Framework 4

Training Workshop

Parallel Computingfor

Managed Developers

Parallel Computingfor

Managed Developers

NameTitleOrganizationEmail

ObjectivesObjectives

Understand the importance of the “parallel computing shift”

Understand the technologies introduced in the .NET Framework 4 that are easing this transition

“I used to think that cyberspace was fifty years away. What I thought was fifty years away, was only ten years away. And what I thought was ten years away... it was already here. I just wasn't aware of it yet.”

- Bruce Sterling

Baby NamesBaby Names

“Moore’s Law scaling should easily let us hit the 80-core mark in mainstream processors within the next ten years and quite possibly even sooner.”

- Justin Ratner, CTO, Intel

The Parallel Computing Initiative

The Parallel Computing Initiative

Letting the brightest developers solve business problems, not concurrency problems.

“Concurrency for the masses”

Concurrency LandscapeConcurrency Landscape

For Visual Studio 2010 and the .NET Framework 4…

System.Threading Parallel Extensions

Unified Cancellation Model

New System.Threading PrimitivesNew System.Threading Primitives

A Barrier is a synchronization primitive that enforces the stopping of execution between a number of threads or processes at a given point and prevents further execution until all threads or processors have reached the given point.

A CountdownEvent is a synchronization primitive that enables ongoing tracking of a given workload in order to determine if processing of that workload is finished or not.

YUCK!

BarrierBarrier“Let’s all caravan over to Seattle! We’ll meet at

the gas station and leave from there.” - Charlie

Mac

Charlie

Dennis

Seattle

Barrier

Gas Station

Unified CancellationUnified Cancellation

“Sir, we are ready to seat you…” - Hostess

CancellationTokenSource

CancellationToken

System.Threading and the new Unified Cancellation

Model

System.Threading and the new Unified Cancellation

Model

Parallel Extensions is a .NET Library that supports declarative and imperative data parallelism, imperative task parallelism, and a set of data structures that make coordination easier.

1. Parallel LINQ (PLINQ)

2. Task Parallel Library (TPL)

3. Coordination Data Structures (CDS)

From Threads To TasksFrom Threads To Tasks

“Work Stealing” in Action“Work Stealing” in Action

Worker Thread

1

Worker Thread

pProgram

ThreadTask 1

Task 2Task 3

Task 5Task 4

Parallel Static ClassParallel Static Class

When program statements are independent…

…they can be parallelized

StatementA();StatementB();StatementC();

Parallel.Invoke( () => StatementA(), () => StatementB(), () => StatementC() );

Parallel Static ClassParallel Static Class

PLINQPLINQ

Parallel LINQ (PLINQ) enables developers to easily leverage manycore with a minimal impact to existing LINQ programming model

var q = from p in people        where p.Name == queryInfo.Name && p.State == queryInfo.State && p.Year >= yearStart && p.Year <= yearEnd        orderby p.Year ascending        select p;

.AsParallel()

PLINQPLINQ

RecapRecap

For Visual Studio 2010 and the .NET Framework 4.0…

System.Threading Parallel Extensions

Unified Cancellation Model

Recommended