SPLASH 2014
Mon 20 - Fri 24 October 2014 Portland, Oregon, United States
Tue 21 Oct 2014 10:30 - 11:20 at Salon B - Invited Speaker: Frank Schlimbach - Session B Chair(s): Boyana Norris

The major difficulty of traditional approaches to writing parallel software stems from their serial heritage. Typical serial programs are over-constraint in the sense that they make decisions that are semantically unnecessary. At the same time they do not explicitly express the information that’s needed to deduce a correct parallel program execution. The programmer is left alone with the painful task of separating what in the given serial execution ordering is semantically required and what is only a serialization artefact. A more productive approach is to let the programmer explicitly identify what precludes parallel execution in the application and leave out all others. There are exactly two reasons that computations cannot execute in parallel. If one computation produces data that the other one consumes, the producer must execute before the consumer. If one computation determines if another will execute, the controller must execute before the controllee. CnC lets you define exactly these two types of dependences between computations. With this information a programmer, a compiler or a runtime system can then take care of a correct serial or parallel execution. Its high-level but yet precise formulation allows an extensive separation of semantic concerns and tuning concerns such as parallelization. This makes optimizations for a given platform as well as migrating between different targets simpler. Last but not least a CnC specification puts no artificial limits on the parallelization and so allows fully asynchronous execution, not even requiring barriers between modules.

Frank Schlimbach is a Senior Software Engineer at Intel. Throughout his academic and professional career his interest focused on parallel and distributed computing. Frank worked on distributed load-balancing schemes and developed tools for profiling parallel and distributed applications. In his current position Frank architects and develops the programming model Concurrent Collections for C++. Frank graduated in Computer Science at the University of Paderborn and earned his PhD at the University of Greenwich.