Events

CppCon 2014 is done -- Jon Kalb

Wrapup:

CppCon 2014 is done

by Jon Kalb

From the article:

Some of the announcements made at the close of the conference include the fact that conference tee shirts are now available on our on-line store, presentation notes will be available on git hub, and our dates for next year will be September 20 – 25, 2015.

Before looking to next year and CppCon 2015, I’d like to thank all the people that made CppCon 2014 such a big success. First I’d like to thank the sponsors whose support is critical to the existence of the conference. I’d also like to thank all the presenters whose content made the conference what it is; the keynotes, the regular program presenters, the panelists and moderators, the Open Content presenters, and the Lightning Talk presenters. These presenters are busy, smart people, but they’ve taken the time to create presentations that excited attendees from all over the world.

I’ve a very big thanks for the conference staff who did so many things in so many ways to make this week-long experience valuable for our almost six hundred attendees.

Finally, and most importantly, I want to thank the attendees. They are the real value and attraction of this conference.

I can’t wait to see you all again next year.

Jon

Trip Report: CppCon 2014

CppCon 2014 was a blast. It lived up to its goal of being an inclusive event "by the C++ community for the C++ community" -- for the world's top experts and for students, from formal talks to lightning rounds and hallway hacking.

The festival atmosphere went on around the clock all week long, starting with daily 8:00am welcome/lightning talks, through the daily keynotes with live music followed by six tracks of sessions, through to well-attended evening sessions and panels ending at 10:00pm every night with people still lingering, reluctant to leave. All of us were running on little sleep because we didn't want to miss anything, but somehow it didn't seem to matter -- we should have been exhausted, but instead people kept commenting about how we felt energized instead.

It was a week for everyone: Talks and panels featured both established experts and first-time presenters and self-published authors. Session levels ranged from cutting-edge metaprogramming, to Stroustrup's keynote of "Keep Simple Things Simple!" Lightning talks overflowed, then overflowed again. Technical material ranged from modern C++ language topics, to Mars Rover flight control software, to the current hot trend of C++ being adopted as the "write once, target anywhere" language of choice for cross-platform iOS/Android/Mac/Windows apps at Dropbox, Office, Facebook, and more; we'll be sure to hear a lot more about that in the coming months and years.

All week long, advanced developers found themselves able to talk through design questions together with peers they wouldn't have met otherwise, and come up with solutions they couldn't find at home. At the same time, scores of students and other newcomers to C++ enjoyed the broad content and relaxed environment. It's telling that the book that the on-site bookstore kept selling out of was not some esoteric template tome, but Stroustrup's 180-page overview A Tour of C++. The C++ community is growing and inclusive, with lots of advanced folks and also new people, and both CppCon and C++ itself are very much for all of them.

Even top authors and experts broke new ground they wouldn't have been able to do if not face to face. Thanks to discussions at CppCon, it looks like a number of us, including Scott Meyers and Bjarne Stroustrup, are converging on "forwarding references" as the new and better term for "universal references," and confirm the simple default parameter-passing advice for modern C++ (spoiler: same as C++98). See the final slides of my closing plenary session for details on these developments.

As we return home in the afterglow, remember that all sessions were recorded and videos will be posted online in the next month or so. Slide handouts are already mostly posted for your reading pleasure. And CppCon 2015 will be on September 20-25 next year... mark your calendars.

Huge thanks again to the 150+ speakers, planners, and volunteers without whom this wonderful "C++ festival" (as several people spontaneously called it) would not have been possible. I had guardedly high hopes for the event, but I think it exceeded all our expectations. This was the most exciting and enlightening week I've experienced in my 20 years of C++, and I'm still catching my breath. I can't wait until September 2015.

CppCon: Call for Lightning Talks, Take 2 -- Boris Kolpackov

CppCon minus one week:

Call for Lightning Talks, Take 2

by Boris Kolpackov

From the announcement:

As part of getting ready to come to CppCon 2014, please consider presenting a Lightning Talk. All attendees (as well as anyone nearby who is taking advantage of the free evening content without registering) are eligible to present a 5 or 15 minute session on Tuesday evening. While the first Call for Lightning Talks has more details on what we’re looking for, we’re open to talks from new speakers, from experienced speakers, from those who work mainly in another language and are visiting C++, from those who work in C++ all the time -- everyone! If there’s one tool you just love using, one technique or best practice you’d like to share with others, or one thing you think is pretty darn funny, please see if you can make it into a 5 or 15 minute talk and share it Tuesday evening. There will be a projector and there will be an audience so why not “give it a go” and see what happens?

We’ll be selecting the 8 sessions on Monday, Day 1 of the conference. Just email [email protected] and tell us what you want to talk about, what length you need and a little bit about yourself -- one sentence is fine. Your topic should be relevant to CppCon attendees but doesn’t need to be about C++ -- we’d love to see “Why C++ developers should also know [language]” for example. Even if you don’t plan to submit, plan to attend, it’s sure to be fun!
 

C++ User Group Meetings in September

This time for September - the monthly overview on C++ User Group Meetings:

C++ User Group Meetings in September

by Jens Weller

From the article:

The monthly overview over the upcoming C++ User Group Meetings. This time a few new user groups meet, and as summer comes to an end more meetings might get scheduled in the next days. But due to me going to CppCon, I have to post this a bit earlier then usual.

The list of upcoming meetings:

    3.9 C++ UG London - Cross Platform Games: iOS to Android
    10.9 C++ UG San Francisco/ Bay area - Presentation and Q&A
    11.9 C++ UG Dresden
    15.9 C++ UG NRW/Dortmund
    17.9 C++ UG Düsseldorf - Treffen der C++ User Gruppe NRW
    17.9 C++ UG Hamburg - Praktische Übersicht über Valgrind
    17.9 C++ UG Seattle/northwest - Parallelism in the Standard C++: What to Expect in C++ 17
    20.9 C++ UG Pune, India - C++ and Boost Pune first meetup
    23.9 C++ UG Chicago - See you in September
    24.9 C++ UG San Francisco/ Bay area - Workshop and Discussion Group
    25.9 C++ UG Rhein-Neckar - September Meeting
    25.9 C++ UG London
    26.9 C++ UG Istanbul
    2.10 C++ UG Paris - C++ & Python

A coding dojo for Meeting C++

I've just added something new to Meeting C++:

A coding dojo for Meeting C++

by Jens Weller

From the article:

I've just added something new to this years Meeting C++ schedule: a coding dojo...

Shortly after the announcement of this years conference Sven Johannsen and Detlef Wilkening approached me at a user group meeting, if it would be possible to include a coding dojo into Meeting C++. coding dojos are fun, and we already had two at my own user group, so I liked the idea. But first wanted to see how the general audience would vote on it as part of the talks.

The Idea was received well, but couldn't get high enough to justify a talk session being used. So, now the coding dojo will be placed in the lunch break of the first day. As this break is a bit longer anyway, you are able to have lunch and participate in the coding dojo. It will be moderated by Detlef Wilkening and Sven Johannsen.

CppCon Program Highlights, 15 of N: Standardization, and Domain Experiences

The CppCon 2014 conference program has been posted for the upcoming September conference. We've received requests that the program continue to be posted in "bite-sized" posts, a few sessions at a time, to make the 100+ sessions easier to absorb, so here is another set of talks. This series of posts will conclude once the entire conference program has been posted in this way.

 

Finally, rounding out the conference program, we have five final talks to announce in this blog stream... the last, pending any late-breaking additions. The first two sessions are about C++ standardization, covering what the committee is doing now that C++14 has been approved, and what's coming next including well in advance of C++17. The final three are about using C++ in specific domains, ones that are not only interesting to hear about (from Cinder creative graphics in C++, to the very small with MIT/Harvard gene sequencing, to the very large of simulating the universe, no less) but also instructive for C++ developers in general as the sessions cover modern C++11/14 techniques and solutions that are broadly applicable across many other domains as well.

In this post:

  • The Committee Experience
  • What the committee did next!
  • Creative Coding with C++
  • Gamgee: A C++14 library for genomics data processing and analysis
  • Simulating the Universe using modern C++

 

The Committee Experience

What happens behind the closed doors of the ISO Standard Committee? And just how closed are they? The session collects some anecdotes and relates what it is like to get involved in the process of standardizing C++, from the perspective of someone attending their first meeting - me 10 years ago! - to now. We will hear some of the highs and lows along the way to C++11, some misconceptions of what might be involved, and get some idea of what happens during a typical standard meeting, and between. By the end you will have some idea of how the standard itself is actually formed, and hopefully spark the interest of folks who might be interested in getting involved themselves...

What the committee did next!

After inking 8 years to produce the C++11 standard (arguably 13) there was a feeling we should be able to produce new work faster, more incrementally. With the renewed interest in C++, we have more participation on the committee, and have looked to harness that enthusiasm in new ways. In the last 3 years we have spun up at least a dozen new study groups, and have 8 or mode Technical Specifications in various stages of development that we hope to ship over the next 12-24 months. So what are all these new groups and specifications about? Come to this session and get a vision of where C++ is headed in the immediate and short-term future.

Speaker: Alisdair Meredith, Bloomberg and Library Working Group chair. Alisdair Meredith is a software developer at BloombergLP in New York, and the C++ Standard Committee Library Working Group chair. He has been an active member of the C++ committee for just over a decade, and by a lucky co-incidence his first meeting was the kick-off meeting for the project that would become C++11, and also fixed the contents of the original library TR. He is currently working on the BDE project, BloombergLP's open source libraries that offer a foundation for C++ development, including a standard library implementation supporting the polymorphic allocator model proposed for standardization.

 

Creative Coding with C++

Realtime graphics, computer vision, hardware hacking, and audio synthesis are just a few of the crafts that fall under the banner term of "creative coding". In this session we'll talk about some of the creative projects putting C++ in places you might not expect it - everywhere from the Smithsonian's permanent design collection to robotic Coca-Cola dispensers on California beaches. We'll look at a wide spectrum of projects ranging from those of the "maker" community to commercial work from full-time professionals earning their livings in advertising and design agencies. And finally we'll take a look at how you can use the C++ you already know to jumpstart your own creative coding projects using the open source toolkit Cinder.

Speaker: Andrew Bell, Technology Research Fellow, The Barbarian Group. Andrew Bell is a Technology Research Fellow working at the creative agency The Barbarian Group. He maintains Cinder, a C++ open source creative coding framework, as his full-time job. When he's not coding on Cinder he can be found doing everything from writing emails about Cinder to being asleep, and yet somehow he remains single. In his career he has also coded too much in other capacities, specifically for the visual effects companies The Mill and Method.

 

Gamgee: A C++14 library for genomics data processing and analysis

Our group has defined the standards for DNA and RNA sequencing data processing and analysis for disease research and clinical applications. In the last 5 years we have published our tools in the GATK (genome analysis toolkit) which is completely written in java. With the scaling of next generation sequencing and the immense amount of that needs to be processed we hit a performance wall and found ourselves limited by the language to make optimizations and rewrite the algorithms in a way that would conform better to modern hardware.

Enter Gamgee. A free and open source C++14 library that offers much of the functionality of the GATK framework with the performance necessary to scale to the hundreds of petabytes of todays complex diseases projects. We will show how the tools developed using the Gamgee library replaced legacy java GATK tools in the production pipeline of the Broad Institute. We will also talk about how the algorithms have changed to take advantage of the native libraries and modern hardware features such as SSE/AVX and GPUs.

Speaker: Mauricio Carneiro, Group Lead, Computational Technology Development, Broad Institute of MIT and Harvard. Dr. Carneiro leads the computational technology development team at the Broad Institute of MIT and Harvard. He has contributed to major advances in DNA sequencing analysis with compression algorithms, statistical methods, heterogeneous compute optimizations and a systematic approach to the institute's computational development, distribution and support. His team is also responsible for the evaluation of new sequencing technologies and has provided several methods and tools to handle new data types in the world of next generation sequencing through the Genome Analysis Toolkit (GATK). Dr. Carneiro joined the Broad Institute in December 2010 after completing a Ph.D. in computational biology from Harvard University. He holds two championships in the International Collegiate Programming Contest organized by the Association for Computing Machinery (ACM) in 2002 and 2003, respectively, and a Programming Excellence Award from the ACM Upsilon Pi Epsilon Society in 2003. In his previous life, he was a video game developer and has led the development of the world's first massive online location based multiplayer game: Alien Revolt.Website: http://www.broadinstitute.org/~carneiro/Twitter handle: @mauricinho

 

Simulating the Universe using modern C++

What is the link between C++11/14, parallelism and the open question of the origin of the accelerated expansion of the Universe ? Answer: numerical cosmology and all the techniques to make the best out of supercomputers to shed a new light on unsolved problem in physics. In this talk, I will present the numerical lessons coming from the Full Universe Run, a numerical experiment realized in 2012 on the entire Curie thin-nodes Supercomputer to simulate the evolution of cosmological structures during the last 13.7 billion years. I will focus on how this experiment has changed our view on software design in astrophysics and how we started to implement new approaches using C++11, template metaprogramming, constant expressions and std::thread in order to maximize both genericity and performance. I will also discuss optimization issues related to data locality, cache efficiency and spatial trees which are extensively used in our domain. I will also try to give some inputs on the cultural challenges raised by the introduction of C++11/14 in our domain. This talk will be concluded by thoughts on the needs of computational physicists and how C++17 may help us to solve some of the open problems we are currently facing.

Speaker: Vincent Reverdy, Ph.D. student, Observatory of Paris. Vincent Reverdy is a Ph.D. student in numerical cosmology at the Observatory of Paris. He studies the propagation of light according to general relativity in order to probe the unexplained accelerated expansion of the Universe. In this context, he is using supercomputing facilities on a daily basis and he develops scientific codes for these facilities, mainly in C++. He is working now on approaches based on template metaprogramming to make the best out of supercomputers and to facilitate the implementation of non-standard cosmological models. Since the Bristol committee meeting, he also follows and contributes to the online discussions on the evolution of C++.

CppCon Evening Panel Topics Confirmed -- Boris Kolpackov

Announced this morning, as part of the free-and-open-to-all part of the CppCon program:

Evening Panel Topics Confirmed

by Boris Kolpackov 

From the announcement:

We have now confirmed details for the Monday [8:30pm], Wednesday [8:30pm], and Friday [2:00pm] panels:

Monday: "Meet the Authors"

Moderator: Chandler Carruth

Panelists: Ade Miller, Alex Allain, Kate Gregory, Pablo Halpern, Scott Meyers, Peter Sommerlad, Herb Sutter

Come to this panel to put your questions to many of the world’s top C++ published authors, and hear them discuss what they think is most important about C++ today. The CppCon 2014 program includes many of the world’s top C++ published authors, so we’re taking advantage of their being in town to bring them together in our opening panel for a discussion and Q&A session.

Wednesday: "Grill the Committee"

Moderator: Jon Kalb

Panelists: Chandler Carruth, Nevin Liber, Alisdair Meredith, Herb Sutter, Michael Wong

What would you like to know about how the C++ Standard happens? The panel is made up of members of the C++ Standards Committee and the audience asks what’s on their mind.

Friday: "Paying for Lunch: C++ in the ManyCore Age"

Moderator: Herb Sutter

Panelists: Jared Hoberock, Artur Laksberg, Ade Miller, Gor Nishanov, Michael Wong, Pablo Halpern

If you’re serious about efficient computation, from efficient battery-sipping apps on mobile devices to efficient use of compute cloud nodes, you need to know how to exploit the massive parallelism already available in all of today’s mainstream devices. Even small tablets and smartphones already contain multiple CPU/GPU cores and vector units. CppCon 2014 includes lots of talks about implementing such parallelism in C++ using existing products and techniques, and the standardization committee is actively working on standardizing several C++ extensions for concurrency and parallelism, including resumable functions, a Parallel STL, and transactional memory support. In this panel, we bring together several experts, including the primary authors of these products and standard specifications – in other words the who’s-who driving C++ parallelism forward – to discuss this topic across all devices and form factors, large and small.

CppCon Program Highlights, 14 of N: Parallel Computation on GPUs

The CppCon 2014 conference program has been posted for the upcoming September conference. We've received requests that the program continue to be posted in "bite-sized" posts, a few sessions at a time, to make the 100+ sessions easier to absorb, so here is another set of talks. This series of posts will conclude once the entire conference program has been posted in this way.

 

In addition to other performance-focused CppCon talks posted yesterday, CppCon 2014 also has thorough coverage of a very specific form of high performance parallel code -- using GPUs for general-purpose computation (aka GPGPU). This is important because every desktop machine and notebook, and nearly every tablet and smartphone, contains not only multiple CPU cores and vector units, but also a "compute-class" GPU -- these three forms of hardware parallelism are part of the mainstream hardware platform for the foreseeable future in all form factors. If you have a computationally intensive app or an app that could benefit from faster local processing, and you're not exploiting the GPU, you're leaving performance (and battery life) on the table and should be sure to attend these sessions.

In this post:

  • Writing Data Parallel Algorithms on GPUs
  • Another fundamental shift in Parallelism Paradigm? OpenMP 4.0 for GPU/Accelerators and other things
  • Introduction to C++ AMP (GPGPU Computing)

 

Writing Data Parallel Algorithms on GPUs

Today most PCs, tablets and phones support multi-core processors and most programmers have some familiarity with writing (task) parallel code. Many of those same devices also have GPUs but writing code to run on a GPU is harder. Or is it?

Getting to grips with GPU programming is really about understanding things in a data parallel way. This talk will look at some of the common patterns for implementing algorithms on today's GPUs using examples from the C++ AMP Algorithms Library. Along the way it will cover some of the unique aspects of writing code for GPUs and contrast them with a more conventional code running on a CPU.

Speaker: Ade Miller. Ade Miller writes C++ for fun. He wrote his first N-body model in BASIC on an 8-bit microcomputer 30 years ago and never really looked back. Recently, he's written two books on parallel programming with C++; "C++ AMP: Accelerated Massive Parallelism with Microsoft Visual C++" and "Parallel Programming with Microsoft Visual C++". Ade spends the long winters in Washington contributing to the open source C++ AMP Algorithms Library and well as a few other projects. His summers are mostly spent crashing expensive bicycles into trees.

 

Another fundamental shift in Parallelism Paradigm? OpenMP 4.0 for GPU/Accelerators and other things

Another fundamental shift in Parallelism Paradigm? Sure. When was the last time you heard that before?

But seriously, as the number of threads/cores continue to increase, there is a growing pressure on applications to exploit more of the available parallelism in their codes, including coarse-, medium-, and fine-grain parallelism. OpenMP has been one of the dominant shared-memory programming models but is evolving beyond that with a new Mission Statement (no, really!) making it well suited for exploiting medium- and fine-grained parallelism.

OpenMP 4.0 exhibits many of these features to support the next step in both consumer, high-performance and exascale computing, with one of the world's first programming model for high-level language support for GPU/Accelerators and vector SIMD across not 1 but 3 high-level languages: C++, C, and that language whose name we dare not speak, but starts with F.

Speaker: Michael Wong, OpenMP CEO/Architect, IBM/OpenMP. Anything including C++, Transactional Memory, Parallel Programming, OpenMP, stars, tennis, travel, and the best food.

 

Introduction to C++ AMP (GPGPU Computing)

Meet C++ AMP (Accelerated Massive Parallelism), an abstraction layer on top of accelerators such as GPUs. In its current version it allows you to run code on any DX11 GPU, independent of the vendor, and it will even distribute workload across GPUs of different vendors simultaneously. C++ AMP was originally designed by Microsoft but is now an open standard. C++ AMP can deliver orders of magnitude performance increase with certain algorithms by utilizing the GPU to perform mathematical calculations. This talk will give a high level overview of what C++ AMP is and what it can do for you. It is time to start taking advantage of the computing power of GPUs!

Speaker: Marc Gregoire, Nikon Metrology. Marc Gregoire has worked as a software engineer consultant for 6 years for Siemens and Nokia Siemens Networks on critical 2G and 3G software running on Solaris for telecom operators. This required working in international teams stretching from South America and USA to EMEA and Asia. Now, Marc is working for Nikon Metrology on 3D scanning software. Marc is the author of "Professional C++, Second and Third Edition", published by Wiley/Wrox, is the founder of the Belgian C++ Users Group (www.becpp.org), and has written a number of articles which have been published on CodeGuru and/or his personal blog. He also creates freeware and shareware programs that are distributed through his website at www.nuonsoft.com, and maintains a blog on www.nuonsoft.com/blog/.