Parallel Programming for C++ Developers: Tasks and Continuations, Part 2 of 2

Play Parallel Programming for C++ Developers: Tasks and Continuations, Part 2 of 2
Sign in to queue


The Parallel Computing Concurrency Runtime team write tools for the C++ community that make it easier to write reliable, performant and scalable concurrent and parallel code. In this conversation, Mike Chu , Dana Groff, Artur Laksberg, and Vinod Koduvayoor Subramanian talk about their latest addition to the Parallel Patterns Library which provides wait-free concurrency programming by specifying tasks, the ability to schedule tasks on events and continuations that specify a task or tasks which are run after one or more tasks finish.  What’s better is that much of this is available now through the ConcRT Extra’s “Sample Pack”.

Here, Vinod Koduvayoor Subramanian, a software engineer who pushes this stuff to the limit and is a champion of target customers (also known as software testing), explains chaining tasks, continuations at the whiteboard. It's fast-paced so pay attention! This is the second part of a recent conversation about what's in the latest sample pack and the thinking behind it. See the first part here.

Please download the sample pack, play with the new library, push it and provide feedback to the team. They really want and need your input to insure they deliver the right things for real world usage by C++ developers. Go native!



Right click to download this episode

The Discussion

  • User profile image

    Greeting, Im glad to hear that you had some new parallel sorting algoritms but its still not my favourite sort of all time Tongue Out If you really want to sort 2 million pixels, I'd highly suggest "ShearSort". It maintains data locality fairly well and would be insanely perfect for GPU sorting too since core communication happens predictivaly and at once for all little buckets, Way better than hugely recursive functions like a Quicksort even though IntroSort is fairly good for anything less than 10,000 element to sort. As soon at the amount needing to get sorted increases its till breaks down... call stacks grow too damn large with even those highly recursive things unless you have tail recursion in the PPL implementation being used.

    Thats a great example in The highly buggy Java which shows a ShrearSort advantage with only 10000 elements Tongue Out The more elements... the faster in comparison ShearSort is. It's plenty fun to mess with the parameters since you can use many algorithms listed below the sort to see how each work by tweaking the URL.

    I keep my own ShearSort around for fun because it's my personal favourite, but its sort of tricky too implement. My wish is to have a highly available ShearSort which ANYTONE can benefit from given the header file from ConcrtExtras.

    Also he did a good job, he seems slightly nervous but we're all developers here, more camera time should help him out on the whiteboard since hes quite a good member of the team.

    Thanks Charles for asking and trying to pry open their design decisions for things Tongue Out but honestly... I miss Rick Malloy... he was my Parallel C++ hero on C9.

  • User profile image

    There ARE comments in the code, though most of the useful documentations are between <remarks></remarks> tags, and there are even some TODOs like // TODO: any way to get rid of this lock?  Smiley

    Talking about GPU maybe we can look into the Data Parallel Extensions for C++ next time, something only for native developers.

  • User profile image

    @HeavensRevenge: Rick Molloy is no longer on the PCP team, but he is cranking code. Not sure about his current role, but I do know he's a native dev (SDE). Smiley


  • User profile image

    @Charles: He was the man, I'd buy him a beer, or a cola if he doesnt drink nomatter which team he's supercharging. AKA hes one of my fav guys to get on C9 along with Erik. 

  • User profile image

    [off-topic]Intel (finally) releasing their version of OpenCL for CPU, its alpha yet, but the slides explaining how they translate code to be parallelized (implicit and explicit) is very interesting

  • User profile image

    @HeavensRevenge - I'm still around; as Charles mentioned, I'm working as a dev these days in the Startup Business Group on the team that is responsible for AvatarKinect. 

    I still stay pretty connected to the PCP team, and its great to see more folks from the team here.

    The team has been discussing tasks and continuations for awhile and I'm glad to see them surfaced in the extras, the video and the book at

    And just for the record my drink of choice is a double ristretto.

Add Your 2 Cents