Two Sessions: C++ Concurrency and Parallelism – 2012 State of the Art (and Standard)

It’s time for, not one, but two brand-new, up-to-date talks on the state of the art of concurrency and parallelism in C++. I’m going to put them together especially and only for C++ and Beyond 2012, and I’ll be giving them nowhere else this year:

  • C++ Concurrency – 2012 State of the Art (and Standard)
  • C++ Parallelism – 2012 State of the Art (and Standard)

And there’s a lot to tell. 2012 has already been a busy year for the pushing the boundaries of both “shipping-and-practical” and “proto-standard” concurrency and parallelism in C++:

  • In February, the spring ISO C++ standards meeting saw record attendance at 73 experts (normal is 50-55), and spent the full week primarily on new language and library proposals, with notable emphasis on the area of concurrency and parallelism. There was so much interest that I formed four Study Groups and appointed chairs: the largest on concurrency and parallelism (SG1, Hans Boehm), and three others on modules (SG2, Doug Gregor), filesystem (SG3, Beman Dawes), and networking (SG4, Kyle Kloepper).
  • Three weeks ago, we hosted another three-day face-to-face meeting for SG1 and SG4 – and at nearly 40 people the SG1 attendance rivaled that of a normal full ISO C++ meeting, with a who’s-who of the world’s concurrency and parallelism experts in attendance and further proposal presentations from companies like IBM, Intel, and Microsoft. There was so much interest that I had to form a new Study Group 5 for Transactional Memory (SG5), and appointed Michael Wong of IBM as chair.
  • Over the summer, we’ll all be working on updated proposals for the October ISO C++ meeting in Portland.

Things are heating up, and we’re narrowing down which areas to focus on.

I’ve spoken and written on these topics before. Here’s what’s different about these talks:

  • Brand new: This material goes beyond what I’ve written and taught about before in my Effective Concurrency articles and courses.
  • Cutting-edge current: It covers the best-practices state of the art techniques and shipping tools, and what parts of that are standardized in C++11 already (the answer to that one may surprise you!) and what’s en route to near-term standardization and why, with coverage of the latest discussions.
  • Mainstream hardware – many kinds of parallelism: What’s the relationship among multi-core CPUs, hardware threads, SIMD vector units (Intel SSE and AVX, ARM Neon), and GPGPU (general-purpose computation on GPUs, which I covered at C++ and Beyond 2011)? Which are most interesting, what technologies are available now, and what’s being considered for near-term standardization?
  • Blocking vs. non-blocking: What’s the difference between blocking and non-blocking styles, why on earth would you care, which kinds does C++11 support, and how are we looking at rounding it out in C++1y?
  • Task and data parallelism: What’s the difference between task parallelism and data parallelism, which kind of of hardware does each allow you to exploit, and why?
  • Work stealing: What’s the difference between thread pools and work stealing, what are the major flavors of work stealing, which of these (if any) does C++11 already support and is already shipping on some advanced commercial C++ compilers today (this answer will likely surprise you), and what needs to be done in the next round for a complete state-of-the-art parallelism story in C++1y?

The answers all matter to you – even the ones not yet in the C++ standard – because they are real, available in shipping products, and affect how you design your software today.

This will be a broad and deep dive. At C++ and Beyond 2011, the attendees (audience!) included some of the world’s leading experts on parallelism and compilers. At these sessions of C&B 2012, I expect anyone who wasn’t personally at the SG1 meeting this month, even world-class experts, will learn something new in these talks. I certainly did, and that’s why I’m motivated to turn the information into talks and share. This isn’t just cool stuff – it’s important and useful in production code today.

I hope to see many of you at C&B 2012. I’m excited about these topics, and about Scott’s and Andrei’s new material – you just can’t get this stuff anywhere else.

Asheville is going to be blast. I can’t wait.

Herb


P.S.: I haven’t seen this much attention and investment in C++ since last century – C++ conferences at record numbers, C++ compiler investments by the biggest companies in the industry (e.g., Clang), and much more that we’ve seen already…

… and a little bird tells me there’s a lot more major C++ news coming this year. Stay tuned, and fasten your seat belts. 2012 ain’t done yet, not by a long shot, and I’ll be able to say more about C++ as a whole (besides the specific topics mentioned above) for the first time at C&B in August. I hope to see you there.

FYI, C&B is already over 60% full, and early bird registration ends this Friday, June 1 – so register today.

9 thoughts on “Two Sessions: C++ Concurrency and Parallelism – 2012 State of the Art (and Standard)

  1. So although you appear at every MS conference streamed on C9(+ other videos) and repeat always the same stuff nobody from MS doesnt mind that you keep the cool stuff for your conf? :/ Meh, at least I hope they wont schedule you any more to give another HW Jungle/ not your grandmas C++ PR talk. My hope is that Charles digs up some “Concurrency STL” from ms dev team :)

  2. @Mr Anonymous

    Thanks for your kindly reply.

    Could I consider the situation as: “There still would be a Visual C++ 11 Express, which is able to create Metro project only.” ?

    After all, something is better than nothing. C++11 + WinRT is an acceptable regression : (

    Thank you very much : )

  3. @sunseraphic: I believe the full compiler toolchain is still available in Visual Studio 11 Express. I’m guessing they were removed from the Windows SDK to allow the compiler team to release more frequently than Windows does. If you want the command-line compiler and toolchain, feel free to install Visual Studio 11 Express at no cost. But the IDE itself won’t allow you to create desktop projects.

  4. Herb, Sounds like a very interesting set of talks and ones that do require discussion, however another more pressing issue of concern more so than the use of parallelism in C++, is whether or not someone from a less well off environment (financially), will be able to compile a cli ‘hello world’ program using future versions of visual studio express – sort of a msvc 11 and beyond?

  5. For posterity, and for the anonymous masses, please consider inviting someone to video the talk (say Charles from channel9). Even if you only intend to release it next year (as a teaser for that years conference.

  6. @sunseraphic

    These are not rumours anymore. But there’s been no explanation from Microsoft despite all the negative feedback.

  7. Hi, Herb

    There are a lot of rumors on the internet that Microsoft would provide neither Visual C++ 11 Express nor Visual C++ command-line tools in Windows SDK.

    It implies that who want to enjoy the C++11 features by using Visual C++ must pay hundreds of dollars to have a complete Visual Studio Suite.

    May you confirm this or give some comments, please?

    Sorry for post a question has nothing about the article.

  8. ” P.S.: I haven’t seen this much attention and investment in C++ since last century –C++ conferences at record numbers, C++ compiler investments by the biggest companies in the industry (e.g., Clang), and much more that we’ve seen already”

    Indeed. This makes Microsoft’s decision to drop XP support in VS11 and, worse, get rid of Visual C++ Express that much worse. I suspect that the younger generatiom has for years used VC++ Express to start their C++ journey creating console applications. Now they’ll be stuck on VC++ Express 2010 with its (very) limited C++11 support for the years to come.

    Sad, but I guess $$$ and fear for Apple are more important…

Comments are closed.