Summary of new PPL features
In Visual Studio 2010, we saw the introduction of C++ parallelization libraries. We also introduced concepts to leverage concurrency by expressing sophisticated dataflow pipelines. In Visual Studio 11 Developer Preview, these libraries have been extended to provide better performance, more control, and richer support for the parallel patterns developers need most.
More parallel patterns
std:: patterns |
concurrency:: patterns |
parallel_buffered_sort parallel_radix_sort |
|
parallel_transform |
|
parallel_reduce |
|
|
More concurrency-safe containers and data structures
std:: containers |
concurrency:: containers |
concurrent_priority_queue |
|
concurrent_unordered_map |
|
concurrent_unordered_multimap |
|
concurrent_unordered_set |
|
concurrent_unordered_multiset |
Richer Task Model
We have enriched the C++ task model by adding support for task continuations, which lets a developer express “when you’re done with this task, continue with that one, and in the meantime I’ll go away to do some other work”. Doing other work can mean processing the message loop, or scheduling other tasks – all of which can run in parallel.
Scheduler and resource management enhancements
In my previous post, I mentioned the performance improvements gained by simply recompiling the application. Some of the improvements come from applying better scheduling techniques and enhancing task locality.
Lastly, the Resource Manager now respects process affinity mask set prior to the use of parallel libraries. One can also programmatically set this at the Resource Manager level by calling LimitTaskExecutionResources() API. This feature is particularly aimed at enabling server-side developers who would like to partition and dedicate CPU resources for each application.
Cheers!
Rahul V. Patil
Lead Program Manager