Loading…
CppCon 2016 has ended

Log in to bookmark your favorites and sync them to your phone or calendar.

case study [clear filter]
Monday, September 19
 

3:15pm PDT

Designing C++ portable SIMD support
SIMD extensions have been a feature of choice for processor manufacturers for a couple of decades. Designed to exploit data parallelism in applications at the instruction level, these extensions still require a high level of expertise or the use of potentially fragile compiler support or vendor-specific libraries. While a large fraction of their theoretical accelerations can be obtained using such tools, exploiting such hardware becomes tedious as soon as application portability across hardware is required.

Accessing such capabilities directly from C++ code could be a major improvements in a lot of use cases. Different take on this has been proposed either by the community or as an actual standard proposal. Solutions include pragma based annotations, standard algorithms policies, full blown compiler support and libraries.
In this talk we will present one such solution - the Boost.SIMD library (currently being proposed as such) which takes a library approach to this issues.

We will go over the basic notion required to grasp SIMD programming in general. Then, we'll discuss the different existing approaches. We will describe Boost.SIMD API and API design to demonstrate how it solves issues raised by the actual idiomatic way of writting SIMD enabled code. Design issues like standard algorithm integration, memory handling and how to fill the gaps in SIMD instructions sets will be discussed. Finally, we show its performances with respect to a subset of well known benchmarks.

Speakers
avatar for Joel Falcou

Joel Falcou

CTO, Numscale
Joel Falcou is NumScale CTO. NumScale mission is to assist businesses in the exploration and subsequently the mastery of high-performance computing systems. He is also an assistant professor at the University Paris-Sud and researcher at the Laboratoire de Recherche d’Informatique... Read More →


Monday September 19, 2016 3:15pm - 4:15pm PDT
Robinson (Room 409) Meydenbauer Center
  case study
 
Tuesday, September 20
 

2:00pm PDT

Implementing a Modern C++ MQTT Client for Embedded Devices
Many IoT (Internet of Things) devices have adopted MQTT (Message Queueing Telemetry Transport) as an efficient protocol for communication. Few IoT devices have embraced modern C++ as a viable language for implementations. MQTT is a reliable publish-subscriber based messaging protocol that can be found in diverse ecosystems such as servers, cell phones, and light bulbs. Unfortunately, existing open source libraries leave much to be desired and many are a rich source of bad practices when compared to modern techniques. This session will explore maqiatto, CiereLab’s open source MQTT client library written for embedded systems in modern C++ . There will be a brief demonstration of the library followed by digging into the design and implementation while providing the resource “cost” of various solutions. As we explore the C++14 code base to illustrate useful idioms and techniques for your own code we will answer the questions, what does is take to put modern C++ on a small OS-less device or a cell phone? Are there features to avoid? Join us and see how libraries can be elegantly designed and implemented for big or small targets alike.

Speakers
avatar for Michael Caisse

Michael Caisse

Ciere Consulting
Michael Caisse has been crafting code in C++ for 30-years. He is a regular speaker at various conferences and is passionate about teaching and training. Michael is the owner of Ciere which provides Software Contracting services, C++ training, and Project Recovery for failing multidisciplinary... Read More →


Tuesday September 20, 2016 2:00pm - 3:00pm PDT
Frey (Room 406) Meydenbauer Center
  case study

3:45pm PDT

Out of Memory? Business as usual: Examining applications that do not terminate on std::bad_alloc
System memory holds a special place in the hierarchy of program resources; its availability is the implied precondition for many innocuous lines of code, from std::string::substr() to passing std::function<> by value. The ability to always create another object is ingrained in the OOP mindset so much that it is often said that immediate termination is the cleanest way to handle memory allocation failures in most situations. Nevertheless, C++, when consistently applying RAII, makes it possible to treat memory allocation exactly as any other resource acquisition.

To what degree do actual applications take advantage of that possibility and what responses to allocation failures are there in the wild? This presentation will examine over 300 open source projects that incorporate explicit handling for std::bad_alloc, examine the causes (it’s not always “out of memory”), response strategies (it’s more than just rollback), and related practical considerations.

Speakers
avatar for Sergey Zubkov

Sergey Zubkov

Morgan Stanley
Sergey is a former biochemistry researcher and OS developer, who now works in finance and spends his free time editing cppreference.com and helping out with the C++ Core Guidelines.


Tuesday September 20, 2016 3:45pm - 4:15pm PDT
Kantner (Room 403) Meydenbauer Center

4:45pm PDT

Writing applications in modern C++ and Qt
I started writing my own Content Managment System for Meeting C++ last year. One of the goals for this project is to seperate the Qt GUI code from the layer that handles the logic and data storage, written in modern C++ and boost. This presentation will focus on my usage of modern C++ to implement the CMS.

Today my CMS has a little bit more then 10k loc, uses boost extensively and has a Qt GUI as the user facing frontend. In this talk I will focus on how boost powers the application and where I had to find my own solutions. I knew that with boostache there is a library for text templates, which later also inspired me to write a generic layer to use JSON for import and data storage in my CMS. The resulting generic_json library is currently a prototype, but a very interesting idea: uniting several json libraries into one interface. This way my own code is not hard wired to a specific JSON library.

Speakers
avatar for Jens Weller

Jens Weller

CEO, Meetingcpp GmbH
Jens Weller is the organizer and founder of Meeting C++. Doing C++ since 1998, he is an active member of the C++ Community. From being a moderator at c-plusplus.de and organizer of his own C++ User Group since 2011 in Düsseldorf, his roots are in the C++ Community. Today his main... Read More →


Tuesday September 20, 2016 4:45pm - 5:45pm PDT
Frey (Room 406) Meydenbauer Center
  case study
 
Thursday, September 22
 

9:00am PDT

C++ at the South Pole : Turning Particle-Astro-Physicist-Hackers into Software Engineers
Want to increase software literacy in your organization? In this talk I'll present programs I've developed over the last year to teach C++ software engineering principles to graduate students and postdocs on the IceCube South Pole Neutrino Observatory. I believe similar programs could be beneficial to all types of organizations, from scientific collaborations to professional software shops.

IceCube is a kilometer-scale high energy neutrino observatory located deep in the Antarctic ice at the geographic South Pole. IceCube studies physics in energy regimes ranging from the most energetic processes in the visible universe (several orders of magnitude greater than the collision energies at the Large Hadron Collider), to dark matter detection at the 100 GeV scale. It is a relatively large collaboration, consisting of roughly 300 physicists and engineers from 48 institutions from a dozen different countries. IceCube has been collecting data for over 11 years (going into our 6th season with the fully completed detector) and is expected to run for at least another decade.

Many large scientific projects, which often run for decades, rely on code developed by hackers, who's focus and passion is rarely software engineering. Their primary passion, understandably, is the field for which they found themselves writing code. To make matters worse, the amount of work and focus required to secure a career in their chosen field often leaves little time and energy to devote to honing the skills needed to develop production quality code. Many students and postdocs often have, at best, a cursory understanding of the programming language(s) that comprise the experiment's codebase.

C++ has become the primary programming language for High Energy Physics (HEP) and will likely continue to be for decades to come. Consider, for example, that ROOT, GEANT, and Pythia to name a few critical HEP libraries are written in C++. Over the last year on IceCube, I've developed several comprehensive internal training programs in an attempt to bridge the gap between the scientist-hacker and the professional C++ software engineer. In this session I'd like to present the challenges I've encountered over the last year and my plans for extending these programs to the High Energy Physics community through the HEP Software Foundation.

Speakers
avatar for Alex  Olivas

Alex Olivas

IceCube Software Coordinator, University of Maryland
I've been working for the University of Maryland at College Park for over 10 years on the IceCube project (a neutrino telescope at the South Pole), but am lucky enough to be able to work from the Rocky Mountains of Colorado. Though my background is in High Energy Physics, these days... Read More →


Thursday September 22, 2016 9:00am - 10:00am PDT
Frey (Room 406) Meydenbauer Center
  case study

9:00am PDT

The MAME (Multi-Arcade Machine Emulator) story: From C to Modern C++
In 1997, the MAME project was started as a DOS application written in C. Initially it could emulate a single arcade game, but today we have over 30,000 games. During the years, the code base grew but until 2009, there were no big steps. Then we started using C++. 

This case study will show how moving from C and plain C++ to modern C++ benefited both developers and end users, how we got better compatibility and portability, and better code. We will also discuss libraries that we feel are missing from the standard and the libraries that we are sharing with the community.


Speakers
avatar for Miodrag Milanović

Miodrag Milanović

Software Architect, Levi9
Born in 1978. Bachelor of Computer Science, work as wide-range developer in local company, for some years as C++ development for various international customers. From 2012 coordinator of MAME emulation project, pushing hard in modernization of two decade old code.


Thursday September 22, 2016 9:00am - 10:00am PDT
White (Room 407) Meydenbauer Center
  case study

2:00pm PDT

AAAARGH!? Adopting Almost Always Auto Reinforces Good Habits!?
Prominent members of the C++ community are advocating the "almost-always-auto" idiom, but there are understandable concerns from many about its implications. This case study will demonstrate how it may be applied in different situations, suggest ways to avoid performance penalties, introduce algorithms to minimize the "almost" part, and discuss the overall impact.

Speakers
avatar for Andy Bond

Andy Bond

Lead Software Engineer, Blizzard Entertainment
I've been programming professionally at Blizzard for over 16 years and am currently a Lead Software Engineer for Heroes of the Storm. While my day-to-day focus is on providing the best gameplay experience for our players, in my spare time I enjoy tinkering with the latest C++ features... Read More →


Thursday September 22, 2016 2:00pm - 3:00pm PDT
Bowie Hall (1st Floor Hall) Meydenbauer Center
  case study

2:00pm PDT

Constant Fun
This presentation discusses why it is useful to move some of the processing to compile time and shows some applications of doing so. In particular it shows how to create associative containers created at compile time and what is needed from the types involved to make it possible. The presentation also does some analysis to estimate the costs in terms for compile-time and object file size.

Specifically, the presentation discusses:
- implications of static and dynamic initialization – the C++ language rules for implementing constexpr functions and classes supporting constexpr objects.
- differences in error handling with constant expressions.
- sorting sequences at compile time and the needed infrastructure – creating constant associative containers with compile-time and run-time look-up.


Speakers
avatar for Dietmar Kühl

Dietmar Kühl

Engineer, Bloomberg LP
Dietmar Kühl is a senior software developer at Bloomberg L.P. working on the data distrubtion environment used both internally and by enterprise installations at clients. In the past, he has done mainly consulting for software projects in the finance area. He is a regular attendee... Read More →


Thursday September 22, 2016 2:00pm - 3:00pm PDT
Kantner (Room 403) Meydenbauer Center
  case study

4:45pm PDT

Control Freak++: Writing an Embedded RTPS Library in C++14
Software for embedded systems means writing code for a microprocessor with specs straight out of the 80s. But that doesn’t mean that embedded developers should be afraid of using the best tools that modern languages have to offer. This talk will explore embedded development through the source code of a modern C++ implementation of the RTPS (Real-Time Publish/Subscribe) wire protocol. Our targeting ARM STM32 microcontrollers (but generalizable to many platforms). We will put zero-cost abstractions to the test as we attempt to fit a system conforming to a 200-page OMG specification document onto an MCU with 384 KB of RAM and 2048 KB of flash. At a higher level, we will discuss the philosophy of using high-level abstractions in a low-level environment, and seek to settle the score with old-school C microcontroller hackers.

Speakers
avatar for Jackie Kay

Jackie Kay

Software Engineer, Marble Robotics
I write FOSS tools for the robotics community. Clang enthuasiast. Metaprogramming novice. Don't ask me about functors.


Thursday September 22, 2016 4:45pm - 5:45pm PDT
White (Room 407) Meydenbauer Center
  case study