DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses...
-
Upload
ralph-anderson -
Category
Documents
-
view
215 -
download
0
Transcript of DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses...
![Page 1: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :](https://reader035.fdocuments.us/reader035/viewer/2022062517/56649f295503460f94c41c0a/html5/thumbnails/1.jpg)
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 :](https://reader035.fdocuments.us/reader035/viewer/2022062517/56649f295503460f94c41c0a/html5/thumbnails/2.jpg)
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 :](https://reader035.fdocuments.us/reader035/viewer/2022062517/56649f295503460f94c41c0a/html5/thumbnails/3.jpg)
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 :](https://reader035.fdocuments.us/reader035/viewer/2022062517/56649f295503460f94c41c0a/html5/thumbnails/4.jpg)
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 :](https://reader035.fdocuments.us/reader035/viewer/2022062517/56649f295503460f94c41c0a/html5/thumbnails/5.jpg)
Definitions
PatternsPattern languagesProgramming roles
![Page 6: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :](https://reader035.fdocuments.us/reader035/viewer/2022062517/56649f295503460f94c41c0a/html5/thumbnails/6.jpg)
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 :](https://reader035.fdocuments.us/reader035/viewer/2022062517/56649f295503460f94c41c0a/html5/thumbnails/7.jpg)
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 :](https://reader035.fdocuments.us/reader035/viewer/2022062517/56649f295503460f94c41c0a/html5/thumbnails/8.jpg)
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 :](https://reader035.fdocuments.us/reader035/viewer/2022062517/56649f295503460f94c41c0a/html5/thumbnails/9.jpg)
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 :](https://reader035.fdocuments.us/reader035/viewer/2022062517/56649f295503460f94c41c0a/html5/thumbnails/10.jpg)
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 :](https://reader035.fdocuments.us/reader035/viewer/2022062517/56649f295503460f94c41c0a/html5/thumbnails/11.jpg)
THE PROBLEM
![Page 12: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :](https://reader035.fdocuments.us/reader035/viewer/2022062517/56649f295503460f94c41c0a/html5/thumbnails/12.jpg)
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 :](https://reader035.fdocuments.us/reader035/viewer/2022062517/56649f295503460f94c41c0a/html5/thumbnails/13.jpg)
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 :](https://reader035.fdocuments.us/reader035/viewer/2022062517/56649f295503460f94c41c0a/html5/thumbnails/14.jpg)
Finding Concurrency
Decomposition AnalysisDependency AnalysisDesign Evaluation
![Page 15: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :](https://reader035.fdocuments.us/reader035/viewer/2022062517/56649f295503460f94c41c0a/html5/thumbnails/15.jpg)
Decomposition Analysis
Task Decomposition Data Decomposition
![Page 16: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :](https://reader035.fdocuments.us/reader035/viewer/2022062517/56649f295503460f94c41c0a/html5/thumbnails/16.jpg)
Dependency Analysis
Group TasksOrder TasksData Sharing
![Page 17: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :](https://reader035.fdocuments.us/reader035/viewer/2022062517/56649f295503460f94c41c0a/html5/thumbnails/17.jpg)
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 :](https://reader035.fdocuments.us/reader035/viewer/2022062517/56649f295503460f94c41c0a/html5/thumbnails/18.jpg)
DEMO
![Page 19: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :](https://reader035.fdocuments.us/reader035/viewer/2022062517/56649f295503460f94c41c0a/html5/thumbnails/19.jpg)
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 :](https://reader035.fdocuments.us/reader035/viewer/2022062517/56649f295503460f94c41c0a/html5/thumbnails/20.jpg)
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 :](https://reader035.fdocuments.us/reader035/viewer/2022062517/56649f295503460f94c41c0a/html5/thumbnails/21.jpg)
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 :](https://reader035.fdocuments.us/reader035/viewer/2022062517/56649f295503460f94c41c0a/html5/thumbnails/22.jpg)
Strategies for exploiting concurrency
Agenda parallelismResult parallelismSpecialist parallelism
![Page 23: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :](https://reader035.fdocuments.us/reader035/viewer/2022062517/56649f295503460f94c41c0a/html5/thumbnails/23.jpg)
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 :](https://reader035.fdocuments.us/reader035/viewer/2022062517/56649f295503460f94c41c0a/html5/thumbnails/24.jpg)
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 :](https://reader035.fdocuments.us/reader035/viewer/2022062517/56649f295503460f94c41c0a/html5/thumbnails/25.jpg)
DEMO
![Page 26: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :](https://reader035.fdocuments.us/reader035/viewer/2022062517/56649f295503460f94c41c0a/html5/thumbnails/26.jpg)
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 :](https://reader035.fdocuments.us/reader035/viewer/2022062517/56649f295503460f94c41c0a/html5/thumbnails/27.jpg)
Result parallelism
Geometric DecompositionRecursive DataData Parallelism
![Page 28: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :](https://reader035.fdocuments.us/reader035/viewer/2022062517/56649f295503460f94c41c0a/html5/thumbnails/28.jpg)
DEMO
![Page 29: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :](https://reader035.fdocuments.us/reader035/viewer/2022062517/56649f295503460f94c41c0a/html5/thumbnails/29.jpg)
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 :](https://reader035.fdocuments.us/reader035/viewer/2022062517/56649f295503460f94c41c0a/html5/thumbnails/30.jpg)
Specialist parallelism
Pipeline Event-based Coordination
![Page 31: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :](https://reader035.fdocuments.us/reader035/viewer/2022062517/56649f295503460f94c41c0a/html5/thumbnails/31.jpg)
DEMO
![Page 32: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :](https://reader035.fdocuments.us/reader035/viewer/2022062517/56649f295503460f94c41c0a/html5/thumbnails/32.jpg)
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 :](https://reader035.fdocuments.us/reader035/viewer/2022062517/56649f295503460f94c41c0a/html5/thumbnails/33.jpg)
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 :](https://reader035.fdocuments.us/reader035/viewer/2022062517/56649f295503460f94c41c0a/html5/thumbnails/34.jpg)
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 :](https://reader035.fdocuments.us/reader035/viewer/2022062517/56649f295503460f94c41c0a/html5/thumbnails/35.jpg)
Synchronization
Memory synchronization / fencesBarriersMutual exclusion
![Page 36: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :](https://reader035.fdocuments.us/reader035/viewer/2022062517/56649f295503460f94c41c0a/html5/thumbnails/36.jpg)
Deadlocks
Mutual exclusionHold and waitNo preemptionCircular wait
![Page 37: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :](https://reader035.fdocuments.us/reader035/viewer/2022062517/56649f295503460f94c41c0a/html5/thumbnails/37.jpg)
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 :](https://reader035.fdocuments.us/reader035/viewer/2022062517/56649f295503460f94c41c0a/html5/thumbnails/38.jpg)
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 :](https://reader035.fdocuments.us/reader035/viewer/2022062517/56649f295503460f94c41c0a/html5/thumbnails/39.jpg)
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 :](https://reader035.fdocuments.us/reader035/viewer/2022062517/56649f295503460f94c41c0a/html5/thumbnails/40.jpg)
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 :](https://reader035.fdocuments.us/reader035/viewer/2022062517/56649f295503460f94c41c0a/html5/thumbnails/41.jpg)
Conclusions
![Page 42: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :](https://reader035.fdocuments.us/reader035/viewer/2022062517/56649f295503460f94c41c0a/html5/thumbnails/42.jpg)
Embrace parallelism!
Thank you!
![Page 43: DEV 315 –Name –Problem –Context –Forces –Solution –Invariant –Examples –Known Uses –Related patterns : Characteristics :](https://reader035.fdocuments.us/reader035/viewer/2022062517/56649f295503460f94c41c0a/html5/thumbnails/43.jpg)
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 :](https://reader035.fdocuments.us/reader035/viewer/2022062517/56649f295503460f94c41c0a/html5/thumbnails/44.jpg)
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 :](https://reader035.fdocuments.us/reader035/viewer/2022062517/56649f295503460f94c41c0a/html5/thumbnails/45.jpg)
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 :](https://reader035.fdocuments.us/reader035/viewer/2022062517/56649f295503460f94c41c0a/html5/thumbnails/46.jpg)
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 :](https://reader035.fdocuments.us/reader035/viewer/2022062517/56649f295503460f94c41c0a/html5/thumbnails/47.jpg)
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 :](https://reader035.fdocuments.us/reader035/viewer/2022062517/56649f295503460f94c41c0a/html5/thumbnails/48.jpg)
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 :](https://reader035.fdocuments.us/reader035/viewer/2022062517/56649f295503460f94c41c0a/html5/thumbnails/49.jpg)