Parallel Extensions A glimpse into the parallel universe By Eric De Carufel Microsoft.NET Solution...

12
Parallel Extensions A glimpse into the parallel universe By Eric De Carufel Microsoft .NET Solution Architect at Orckestra [email protected] [email protected] http://blog.decarufel.net

Transcript of Parallel Extensions A glimpse into the parallel universe By Eric De Carufel Microsoft.NET Solution...

Page 1: Parallel Extensions A glimpse into the parallel universe By Eric De Carufel Microsoft.NET Solution Architect at Orckestra eric.decarufel@orckestra.com.

Parallel Extensions

A glimpse into the parallel universe

By Eric De CarufelMicrosoft .NET Solution Architect at [email protected]@decarufel.nethttp://blog.decarufel.net

Page 2: Parallel Extensions A glimpse into the parallel universe By Eric De Carufel Microsoft.NET Solution Architect at Orckestra eric.decarufel@orckestra.com.

Agenda

• Introduction• Overview• Library Core• TPL (Task Parallel Library)• Parallel Linq (PLINQ)• Parallel Data Structures• Questions

Page 3: Parallel Extensions A glimpse into the parallel universe By Eric De Carufel Microsoft.NET Solution Architect at Orckestra eric.decarufel@orckestra.com.

Introduction

• Why do we have to bother? Moore’s law is over, no more free lunch Multi cores systems will be more and more available

• Type of Parallelism Asynchronous operation (better user experience) Data parallelism Task parallelism

• Options Manual treading

Thread, ThreadPool, BackgroundWorkerThread Asynchronous calls Event driven

• Problems Resource sharing Locking Non-deterministic sequence of execution Hard to debug

Page 4: Parallel Extensions A glimpse into the parallel universe By Eric De Carufel Microsoft.NET Solution Architect at Orckestra eric.decarufel@orckestra.com.

Overview

Page 5: Parallel Extensions A glimpse into the parallel universe By Eric De Carufel Microsoft.NET Solution Architect at Orckestra eric.decarufel@orckestra.com.

Task Parallel Library (TPL)

• Lightweight task framework (Task) Create(Action<T>) factory method Wait, WaitAll, WaitAny to catch exception ContinueWith to chain Tasks together

• Lazy function call Future<T>

• Task scheduler and manager TaskManager

Page 6: Parallel Extensions A glimpse into the parallel universe By Eric De Carufel Microsoft.NET Solution Architect at Orckestra eric.decarufel@orckestra.com.

Parallel API

• Parallel Loops Parallel.For Parallel.ForEach

• Lazy Initialisation LazyInit<T>

• Locking SpinWait SpinLock

• CountdownEvent

Page 7: Parallel Extensions A glimpse into the parallel universe By Eric De Carufel Microsoft.NET Solution Architect at Orckestra eric.decarufel@orckestra.com.

Parallel API

• Standard for loop for (int i = 0; i < N; i++)

{ a[i] = Compute(i);}

• Parallel for loop Parallel.For(0, N, i =>

{ a[i] = Compute(i);});

Page 8: Parallel Extensions A glimpse into the parallel universe By Eric De Carufel Microsoft.NET Solution Architect at Orckestra eric.decarufel@orckestra.com.

Parallel Linq (PLINQ)

• Parallel Query AsParallel()

• Return to sequential execution AsSequential()

• Preserve order AsOrdered()

• Order doesn’t matter AsUnordered()

Page 9: Parallel Extensions A glimpse into the parallel universe By Eric De Carufel Microsoft.NET Solution Architect at Orckestra eric.decarufel@orckestra.com.

Parallel Linq (PLINQ)

• var query = from c in Customers

where c.Name = “Smith” select c;

• var query = from c in Customers.AsParallel()

where c.Name = “Smith” select c;

Page 10: Parallel Extensions A glimpse into the parallel universe By Eric De Carufel Microsoft.NET Solution Architect at Orckestra eric.decarufel@orckestra.com.

Parallel Data Structures

• IConcurrentCollection Add(T item) Remove(out T item)

• ConcurrentStack Push(T item) TryPop(out T item)

• ConcurrentQueue Enqueue(T item) TryDequeue(out T item)

• BlockingCollection Add(T item), Remove(out T item) TryAdd(T item), TryRemove(out T item)

Page 11: Parallel Extensions A glimpse into the parallel universe By Eric De Carufel Microsoft.NET Solution Architect at Orckestra eric.decarufel@orckestra.com.

CLR Thread Pool: Work-Stealing

Worker Thread 1

Worker Thread p

Program Thread

Program Thread

User Mode Scheduler For Tasks

GlobalQueue

LocalQueue

LocalQueue

Task 1Task 1Task 2Task 2

Task 3Task 3Task 5Task 5Task 4Task 4

Task 6Task 6

Page 12: Parallel Extensions A glimpse into the parallel universe By Eric De Carufel Microsoft.NET Solution Architect at Orckestra eric.decarufel@orckestra.com.

What’s next

• Visual Studio 2010• .NET Framework 4.0• New multi cores computer (4, 16, 32, 64, …)

• Think parallel!