dev 315 –name –problem –context –forces –solution –invariant –examples –known uses...

49
Designing Applications in the era of Many-core Computing Tiberiu Covaci Senior Technical Trainer Many-core DEV 315

Upload: ralph-anderson

Post on 05-Jan-2016

217 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :

Designing Applications in the era of Many-core Computing

Tiberiu CovaciSenior Technical TrainerMany-core

DEV 315

Page 2: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :

Who am I?

Tiberiu ’Tibi’ CovaciSoftware engineer, over 20 years experienceMCT since 2004, teaching .NETResearcher at KTH SwedenINETA Speaker & Country Lead for SwedenTelerik MVP/Insider@tibor19 #msteched

Page 3: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :

Current state

Clock speed has reached an upper limit and can not be increasedMoore’s law is alive and kickingProcessors makers are doing multicoreMulticore software is hard

Amdahl's law (optional)

Three reasons why it is hardConclusion, we and no one else has any idea how to do multicore software, but it is a glorious and shiny future.

Page 4: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :

Agenda

DefinitionsHow to create parallel applicationFinding concurrency Strategies for exploiting concurrencyAlgorithm structuresSupporting structuresSharing state

Page 5: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :

Definitions

PatternsPattern languagesProgramming roles

Page 6: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :

Patterns

A generally accepted solution to a recurring problem

Page 7: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :

Patterns

A generally accepted solution to a recurring problem

– Name– Problem– Context– Forces– Solution

– Invariant– Examples– Known Uses– Related patterns

Characteristics:

Page 8: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :

Patterns

A generally accepted solution to a recurring problem

– Name– Problem– Context– Forces– Solution

– Invariant– Examples– Known Uses– Related patterns

Characteristics:

Page 9: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :

Pattern language

Collection of related patterns one flowing in to the other as you solve the problem

Page 10: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :

Programming roles

Application programmerApplication framework developerParallel programming framework developersPlatform programmers

Page 11: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :

THE PROBLEM

Page 12: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :

How to create parallel applications

Finding ConcurrencyOriginal Problem

Original Problem

Algorithm Stru

ctureTasks, shared and local data

Corresponding source code

Task t1 = Task.Factory.StartN

ew(…);

Units of execution & new shared data for extracted dependencies

Supporting Structures & Implementation Mechanisms

Page 13: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :

Finding Concurrency

Finding Concurrency

Tasks, shared and local data

Original Problem

Original Problem

Page 14: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :

Finding Concurrency

Decomposition AnalysisDependency AnalysisDesign Evaluation

Page 15: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :

Decomposition Analysis

Task Decomposition Data Decomposition

Page 16: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :

Dependency Analysis

Group TasksOrder TasksData Sharing

Page 17: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :

Design Evaluation

Is the decomposition and the dependency analysis good enough so we can continue?

Page 18: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :

DEMO

Page 19: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :

Step 1 Step 2 Step 3 Step 4

Peel and Dice Oninons

Fry the Onion

Sprinkle Paprika

Add Water

Dice TheMeat

Add Some Spices

Cut And Clean The Chilies

Cook 40 minutes

Peel and Dice Potatoes

Cook 10 minutes

Cut The Peppers

Cook 5 minutes

Page 20: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :

Peel and Dice Oninons

Fry the Onion

Sprinkle Paprika

Add Water

Dice TheMeat

Add Some Spices

Cut And Clean The Chilies

Cook 40 minutes

Peel and Dice Potatoes

Cook 10 minutes

Cut The Peppers

Cook 5 minutes

Page 21: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :

Strategies for exploiting concurrency

Finding ConcurrencyOriginal Problem

Original Problem

Algorithm Stru

ctureTasks, shared and local data

Units of execution & new shared data for extracted dependencies

Page 22: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :

Strategies for exploiting concurrency

Agenda parallelismResult parallelismSpecialist parallelism

Page 23: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :

Agenda parallelism

Algorithms are naturally expressed in terms of the actions to be carried out by the program

Page 24: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :

Agenda parallelism

Task ParallelismDelightfully parallelSeparable dependencies

Divide and conquer

Page 25: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :

DEMO

Page 26: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :

Result parallelism

Algorithms are defined in terms of data structures and how they are decomposed

Page 27: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :

Result parallelism

Geometric DecompositionRecursive DataData Parallelism

Page 28: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :

DEMO

Page 29: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :

Specialist parallelism

A fixed set of tasks that data flows through

Page 30: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :

Specialist parallelism

Pipeline Event-based Coordination

Page 31: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :

DEMO

Page 32: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :

Finding ConcurrencyOriginal Problem

Original Problem

Algorithm Stru

cture

Tasks, shared and local data

Corresponding source code

Task t1 = Task.Factory.StartNew

(…);

Units of execution & new shared data for extracted dependencies

Supporting Structures & Implementation Mechanisms

Supporting Structures & Implementation mechanism

Page 33: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :

Supporting Structures & Implementation mechanism

Program StructuresData StructuresUnit of Execution ManagementCommunicationSynchronization

Page 34: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :

Sharing State and Synchronization

Don’t share!Read only dataData isolationSynchronization

Page 35: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :

Synchronization

Memory synchronization / fencesBarriersMutual exclusion

Page 36: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :

Deadlocks

Mutual exclusionHold and waitNo preemptionCircular wait

Page 37: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :

Source: More Patterns for Parallel Application Programs, Berna L. Massingill, Timothy G. Mattson and Beverly A. Sanders

Master/Worker

SPMD Loop Parallel

Fork/Join

DistributedArray Map

Reduce

Actors

SOA Facade

Repository

MPMD

Pipeline

Producer/Consumer

Shared Queue

Divide & Conquer

Page 38: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :

Summary

DefinitionsHow to create parallel applicationFinding concurrency Strategies for exploiting concurrencyAlgorithm structures

Page 39: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :

Summary

Supporting structuresSharing stateDeadlocksHow to make GoulashHow to get help in the kitchen

Page 40: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :

Where do we go from here?

http://msdn.com/concurrencyhttp://software.intel.com/en-us/multi-core/http://[email protected]

Page 41: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :

Conclusions

Page 42: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :

Embrace parallelism!

Thank you!

Page 43: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :

Related Content

DEV303 - Modern Native C++ Development for Maximum ProductivityDEV323 | A Taste of F#: Today and Future

DEV277-HOL Introduction to the Parallel Extensions Library

Find Me Later At Ask an Architect Booth

Page 44: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :

Questions?

http://msdn.com/concurrencyhttp://software.intel.com/en-us/multi-core/http://[email protected]

Page 45: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :

DEV Track Resources

http://www.microsoft.com/visualstudio http://www.microsoft.com/visualstudio/en-us/lightswitch http://www.microsoft.com/expression/http://blogs.msdn.com/b/somasegar/http://blogs.msdn.com/b/bharry/http://www.microsoft.com/sqlserver/en/us/default.aspxhttp://www.facebook.com/visualstudio

Page 46: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :

Resources

www.microsoft.com/teched

Sessions On-Demand & Community Microsoft Certification & Training Resources

Resources for IT Professionals Resources for Developers

www.microsoft.com/learning

http://microsoft.com/technet http://microsoft.com/msdn

Learning

http://northamerica.msteched.com

Connect. Share. Discuss.

Page 47: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :

Complete an evaluation on CommNet and enter to win!

Page 48: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :

Scan the Tag to evaluate this session now on myTech•Ed Mobile

Page 49: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :