23
Parallel Extensions A glimpse into the parallel universe Eric De Carufel eric.decarufel@orckestra .com [email protected] http://blog.decarufel.ne t

Parallel Extensions A glimpse into the parallel universe Eric De Carufel [email protected] [email protected]

Embed Size (px)

Citation preview

Page 1: Parallel Extensions A glimpse into the parallel universe Eric De Carufel eric.decarufel@orckestra.com eric@decarufel.net

Parallel Extensions

A glimpse into the parallel universe

Eric De [email protected]

[email protected]://blog.decarufel.net

Page 2: Parallel Extensions A glimpse into the parallel universe Eric De Carufel eric.decarufel@orckestra.com eric@decarufel.net

Core Expertise• Online retail and distribution

– Overture Solutions

• Enterprise Portals and ECM– Content Management, Collaboration, (Intranet)– Office Business Solutions – Partners Service Portals (Extranet)– Customer Service Portals (Internet)

• Business Process Automation– EAI, SOA, ESB

• Search– Fast ESP (A Microsoft Subsidiary)– SharePoint Server 2007 Search– Endeca IAP (Information Access Platform)

• Dynamics CRM 4.0– Sales Force Automation– xRM applications

Search platforms

E-Commerce platform

Enterprise platform

Integration platform

Business platforms

Page 3: Parallel Extensions A glimpse into the parallel universe Eric De Carufel eric.decarufel@orckestra.com eric@decarufel.net

PartnersStrategic Partners

Technology Partners

Consulting Partners

Page 4: Parallel Extensions A glimpse into the parallel universe Eric De Carufel eric.decarufel@orckestra.com eric@decarufel.net

Clients

Page 5: Parallel Extensions A glimpse into the parallel universe Eric De Carufel eric.decarufel@orckestra.com eric@decarufel.net

Who am’I?

• Eric De Carufel is solution architect at Orckestra• Over 15 years experience in software development

– Bell Canada, Centre de Recherceh d’emploi St-Denis, Fédération Québécoise de Karaté, AXA Canada Tech, Provigo (5 projects), Metro-Richelieu (2 projects), Imagina, be@com, Unipage, APLC, Viasystems, Montreal Jewish Hospital, AGTI, CCQ, Ogilvy Renault, Ivanhoé Cambridge, Microcell (Fido), Cirque du Soleil, TELUS, PSP Investment, CGI, Deutsche Bank, Orckestra, Sobeys, Jean-Coutu, Xtranormal

• Started with an ADAM computer by Coleco• Working with .NET since version 1.0

Page 6: Parallel Extensions A glimpse into the parallel universe Eric De Carufel eric.decarufel@orckestra.com eric@decarufel.net

Agenda

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

Page 7: Parallel Extensions A glimpse into the parallel universe Eric De Carufel eric.decarufel@orckestra.com eric@decarufel.net

Introduction

• Why do we have to bother?– Moore’s law is over, no more free lunch

• The Power Wall• The Complexity Wall (Instruction-Level

Parallelism)• The Memory Wall• The Reliability Wall

– Multi cores systems will be more and more available

Page 8: Parallel Extensions A glimpse into the parallel universe Eric De Carufel eric.decarufel@orckestra.com eric@decarufel.net

Introduction

• 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 9: Parallel Extensions A glimpse into the parallel universe Eric De Carufel eric.decarufel@orckestra.com eric@decarufel.net

Overview

Core

Task

Future<T>Task<T>

TaskManager

TPL

Parallel

LazyInit<T>

WriteOnce<T>

SpinLock

SpinWait

CountDownEvent

PLINQ

AsParallel

AsOrderred

AsUnorderred

Data Structures

ConcurrentQueue

ConcurrentStack

BlockingCollection

Page 10: Parallel Extensions A glimpse into the parallel universe Eric De Carufel eric.decarufel@orckestra.com eric@decarufel.net

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 11: Parallel Extensions A glimpse into the parallel universe Eric De Carufel eric.decarufel@orckestra.com eric@decarufel.net

DEMOTask Parallel Library (Task, Future, TaskManager)

Page 12: Parallel Extensions A glimpse into the parallel universe Eric De Carufel eric.decarufel@orckestra.com eric@decarufel.net

Parallel API

• Parallel Loops – Parallel.For– Parallel.ForEach

• Lazy Initialisation – LazyInit<T>

• Locking– SpinWait– SpinLock

• CountdownEvent

Page 13: Parallel Extensions A glimpse into the parallel universe Eric De Carufel eric.decarufel@orckestra.com eric@decarufel.net

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 14: Parallel Extensions A glimpse into the parallel universe Eric De Carufel eric.decarufel@orckestra.com eric@decarufel.net

DEMOParallel API (Parallel.For, Parallel.ForEach)

Page 15: Parallel Extensions A glimpse into the parallel universe Eric De Carufel eric.decarufel@orckestra.com eric@decarufel.net

Parallel Linq (PLINQ)

• Parallel Query – AsParallel()

• Return to sequential execution– AsSequential()

• Preserve order– AsOrdered()

• Order doesn’t matter– AsUnordered()

Page 16: Parallel Extensions A glimpse into the parallel universe Eric De Carufel eric.decarufel@orckestra.com eric@decarufel.net

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 17: Parallel Extensions A glimpse into the parallel universe Eric De Carufel eric.decarufel@orckestra.com eric@decarufel.net

DEMOParallel Linq (PLINQ)

Page 18: Parallel Extensions A glimpse into the parallel universe Eric De Carufel eric.decarufel@orckestra.com eric@decarufel.net

Parallel Data Structures

• IConcurrent Collection– 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 19: Parallel Extensions A glimpse into the parallel universe Eric De Carufel eric.decarufel@orckestra.com eric@decarufel.net

DEMOParallel Structure (IConcurrentCllection, BlockingCollection, …)

Page 20: Parallel Extensions A glimpse into the parallel universe Eric De Carufel eric.decarufel@orckestra.com eric@decarufel.net

CLR Thread Pool: Work-Stealing

Worker Thread 1

Worker Thread p

Program Thread

User Mode Scheduler For Tasks

GlobalQueue

LocalQueue

LocalQueue

Task 1Task 2Task 3

Task 5Task 4Task 6

Page 21: Parallel Extensions A glimpse into the parallel universe Eric De Carufel eric.decarufel@orckestra.com eric@decarufel.net

MORE DEMOContinueWith, Lambda, LazyInit

Page 22: Parallel Extensions A glimpse into the parallel universe Eric De Carufel eric.decarufel@orckestra.com eric@decarufel.net

What’s next

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

64, …)

• Think parallel!– Thread safety will save your life

Page 23: Parallel Extensions A glimpse into the parallel universe Eric De Carufel eric.decarufel@orckestra.com eric@decarufel.net

Call to action

• Parallel FX Team blog– http://blogs.msdn.com/pfxteam/

• Visual Studio 2010– Look for the next release

• Eric De Carufel– http://web.decarufel.net/contact