Parallel Programming In Visual Studio 2010
Transcript of Parallel Programming In Visual Studio 2010
![Page 1: Parallel Programming In Visual Studio 2010](https://reader035.fdocuments.us/reader035/viewer/2022062319/554f893fb4c905d25b8b4e1f/html5/thumbnails/1.jpg)
Parallel Programming in Visual Studio 2010Sasha Goldshtein
Senior Consultant, Sela Grouphttp://blogs.microsoft.co.il/blogs/sasha
![Page 2: Parallel Programming In Visual Studio 2010](https://reader035.fdocuments.us/reader035/viewer/2022062319/554f893fb4c905d25b8b4e1f/html5/thumbnails/2.jpg)
Agenda
• Overview and Roadmap• Architecture, Design Patterns• Explicit and Implicit Parallelism• Synchronization Mechanisms• Coordination Data Structures• Debugging and Profiling• Other Technologies
![Page 3: Parallel Programming In Visual Studio 2010](https://reader035.fdocuments.us/reader035/viewer/2022062319/554f893fb4c905d25b8b4e1f/html5/thumbnails/3.jpg)
Overview and Roadmap
• Shipping in .NET 4.0– Task Parallel Library– Parallel LINQ– Task Scheduler
• Shipping in Visual Studio 2010– Debugging and profiling enhancements– Don’t forget the native tools (ConcRT)
• Disclaimer: This is Beta software
Visual Studio 2010 &Visual Studio 2010 & Framework 4.0Framework 4.0
![Page 4: Parallel Programming In Visual Studio 2010](https://reader035.fdocuments.us/reader035/viewer/2022062319/554f893fb4c905d25b8b4e1f/html5/thumbnails/4.jpg)
Architecture
• Pipeline• Partitioning• Grid
![Page 5: Parallel Programming In Visual Studio 2010](https://reader035.fdocuments.us/reader035/viewer/2022062319/554f893fb4c905d25b8b4e1f/html5/thumbnails/5.jpg)
Explicit Parallelism
• Task.Factory.StartNew• Parent-child relationships• Continuations• Futures• Exception handling• Cancellation
![Page 6: Parallel Programming In Visual Studio 2010](https://reader035.fdocuments.us/reader035/viewer/2022062319/554f893fb4c905d25b8b4e1f/html5/thumbnails/6.jpg)
Implicit Parallelism
• Parallel.For, Parallel.ForEach• Parallel.Invoke• Custom partitioner
![Page 7: Parallel Programming In Visual Studio 2010](https://reader035.fdocuments.us/reader035/viewer/2022062319/554f893fb4c905d25b8b4e1f/html5/thumbnails/7.jpg)
Very Implicit Parallelism
• Parallel LINQ• Ordered vs. Unordered• foreach vs. ForAll• Cancellation
![Page 8: Parallel Programming In Visual Studio 2010](https://reader035.fdocuments.us/reader035/viewer/2022062319/554f893fb4c905d25b8b4e1f/html5/thumbnails/8.jpg)
Synchronization Mechanisms
• Barrier• CountdownEvent• ManualResetEventSlim• SemaphoreSlim• SpinLock• SpinWait• Lazy initialization
![Page 9: Parallel Programming In Visual Studio 2010](https://reader035.fdocuments.us/reader035/viewer/2022062319/554f893fb4c905d25b8b4e1f/html5/thumbnails/9.jpg)
Coordination Data Structures
• Lock-free data structures• Concurrent queue• Concurrent stack, dictionary• Concurrent bag (work-stealing)• ThreadLocal<T>
![Page 10: Parallel Programming In Visual Studio 2010](https://reader035.fdocuments.us/reader035/viewer/2022062319/554f893fb4c905d25b8b4e1f/html5/thumbnails/10.jpg)
Concurrency Design Patterns
• Worker patterns– Producer-consumer (BlockingCollection<T>)– Completion port / thread pool (Task)– Automatic pipelining / partitioning– APM coordination (Task.Factory.FromAsync)
• Smart collections patterns– Safe/unsafe, read/write– Cyclic buffer
![Page 11: Parallel Programming In Visual Studio 2010](https://reader035.fdocuments.us/reader035/viewer/2022062319/554f893fb4c905d25b8b4e1f/html5/thumbnails/11.jpg)
Debugging in Visual Studio 2010
• Parallel Stacks• Parallel Tasks
![Page 12: Parallel Programming In Visual Studio 2010](https://reader035.fdocuments.us/reader035/viewer/2022062319/554f893fb4c905d25b8b4e1f/html5/thumbnails/12.jpg)
Profiling in Visual Studio 2010
• Core utilization• Thread blocking, Thread migration
![Page 13: Parallel Programming In Visual Studio 2010](https://reader035.fdocuments.us/reader035/viewer/2022062319/554f893fb4c905d25b8b4e1f/html5/thumbnails/13.jpg)
Incubation and Other Technologies
• STM.NET• Axum (ex. Maestro)• CHESS• Windows 7 256-core support• Windows 7 User-Mode Scheduler
![Page 14: Parallel Programming In Visual Studio 2010](https://reader035.fdocuments.us/reader035/viewer/2022062319/554f893fb4c905d25b8b4e1f/html5/thumbnails/14.jpg)
Summary
• The next generation parallel technologies and tools are here
• Download Visual Studio 2010 Beta 1
![Page 15: Parallel Programming In Visual Studio 2010](https://reader035.fdocuments.us/reader035/viewer/2022062319/554f893fb4c905d25b8b4e1f/html5/thumbnails/15.jpg)
Additional Resources
• msdn.com/concurrency• code.msdn.microsoft.com/ParExtSamples• msdn.microsoft.com/en-us/library/
dd460693(VS.100).aspx• channel9.msdn.com/tags/Parallel+Extensions/
![Page 16: Parallel Programming In Visual Studio 2010](https://reader035.fdocuments.us/reader035/viewer/2022062319/554f893fb4c905d25b8b4e1f/html5/thumbnails/16.jpg)
Thank You!
Sasha GoldshteinSenior Consultant, Sela Group
http://blogs.microsoft.co.il/blogs/sasha