parallel programming in visual studio 2010

16
Parallel Programming in Visual Studio 2010 Sasha Goldshtein Senior Consultant, Sela Group http:// blogs.microsoft.co.il/

Upload: fcogama

Post on 10-May-2015

1.309 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Parallel Programming In Visual Studio 2010

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

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

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

Architecture

• Pipeline• Partitioning• Grid

Page 5: Parallel Programming In Visual Studio 2010

Explicit Parallelism

• Task.Factory.StartNew• Parent-child relationships• Continuations• Futures• Exception handling• Cancellation

Page 6: Parallel Programming In Visual Studio 2010

Implicit Parallelism

• Parallel.For, Parallel.ForEach• Parallel.Invoke• Custom partitioner

Page 7: Parallel Programming In Visual Studio 2010

Very Implicit Parallelism

• Parallel LINQ• Ordered vs. Unordered• foreach vs. ForAll• Cancellation

Page 8: Parallel Programming In Visual Studio 2010

Synchronization Mechanisms

• Barrier• CountdownEvent• ManualResetEventSlim• SemaphoreSlim• SpinLock• SpinWait• Lazy initialization

Page 9: Parallel Programming In Visual Studio 2010

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

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

Debugging in Visual Studio 2010

• Parallel Stacks• Parallel Tasks

Page 12: Parallel Programming In Visual Studio 2010

Profiling in Visual Studio 2010

• Core utilization• Thread blocking, Thread migration

Page 13: Parallel Programming In Visual Studio 2010

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

Summary

• The next generation parallel technologies and tools are here

• Download Visual Studio 2010 Beta 1

Page 15: Parallel Programming In Visual Studio 2010

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

Thank You!

Sasha GoldshteinSenior Consultant, Sela Group

http://blogs.microsoft.co.il/blogs/sasha