Parallel Extensions

Post on 20-Mar-2016

47 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Parallel Extensions. A glimpse into the parallel universe. Eric De Carufel eric.decarufel@orckestra.com eric@decarufel.net http://blog.decarufel.net. Online retail and distribution Overture Solutions Enterprise Portals and ECM Content Management, Collaboration, (Intranet) - PowerPoint PPT Presentation

Transcript

Parallel Extensions

A glimpse into the parallel universe

Eric De Carufeleric.decarufel@orckestra.com

eric@decarufel.nethttp://blog.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

PartnersStrategic Partners

Technology Partners

Consulting Partners

Clients

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

Agenda

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

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

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

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

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

DEMOTask Parallel Library (Task, Future, TaskManager)

Parallel API

• Parallel Loops – Parallel.For– Parallel.ForEach

• Lazy Initialisation – LazyInit<T>

• Locking– SpinWait– SpinLock

• CountdownEvent

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);});

DEMOParallel API (Parallel.For, Parallel.ForEach)

Parallel Linq (PLINQ)

• Parallel Query – AsParallel()

• Return to sequential execution– AsSequential()

• Preserve order– AsOrdered()

• Order doesn’t matter– AsUnordered()

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;

DEMOParallel Linq (PLINQ)

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)

DEMOParallel Structure (IConcurrentCllection, BlockingCollection, …)

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

MORE DEMOContinueWith, Lambda, LazyInit

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

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

top related