Visual Studio 2010 and .NET Framework 4 Training Workshop
Jun 17, 2015
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