Concurrent Collections (CnC): Easy and effective distributed computing

Kathleen Knobe and Frank Schlimbach
Seminar

Explicitly parallel languages and explicitly serial languages are each over-constrained, though in different ways. Concurrent Collections (CnC), on the other hand, maximizes the scheduling freedom for a given target (efficiency) and also among distinct targets (portability). The domain expert writing a CnC program focuses on the meaning of the application, not on how to schedule it.

To prepare an application for parallel execution, we first need to answer two questions: How should the data and computation be divided into chunks that are potential parallel? and What are the scheduling constraints among these chunks? A CnC program specifies exactly this information. The resulting program is "ready for parallelism." CnC isolates the work of the domain expert (interested in finance, chemistry, gaming...) from the tuning expert (interested in load balance, locality, scalability,...) This isolation minimizes the need for the domain expert to think about all the complications of parallel systems. CnC is a coordination language that specifies the required orderings among potentially parallel chunks of application. As a coordination language it must be paired with a computation language. Intel Concurrent Collections for C++ supports C++ programs.

The talk will cover an introduction to the CnC domain specification and performance results for the Intel distributed CnC/C++ system.

Biography for Kath Knobe:
Kathleen Knobe worked at Compass (aka Massachusetts Computer Associates) from 1980 to 1991 designing compilers for a wide range of parallel platforms including Thinking Machines, MasPar, Alliant, Numerix, and several government projects. In 1991 she decided to finish her education. After graduating from MIT in 1997, she joined Digital Equipment's Cambridge Research Lab (CRL). She stayed through the DEC/Compaq/HP mergers and when CRL was acquired by Intel. She currently works in the Software Solutions Group/Developer Products Group) at Intel.

In addition to CnC, her major projects include the Subspace Model of computation (a compiler internal form for parallelism), Data Optimization (compiler transformations for locality), Array Static Single Assignment form (a method of achieving for array elements the advantages that SSA has for scalars), Weak Dynamic Single Assignment form (a global method for eliminating overwriting of data to maximize scheduling flexibility), Stampede (a programming model for streaming media applications).

Biography for Frank Schlimbach:
Frank is a senior software engineer in DPD's Technology, Pathfinding and Innovation (TPI) group at Intel. His main interest is parallel/distributed computing, algorithms, and software development. He is currently responsible for advancing Intel Concurrent Collections for C++. Eight years ago he joined Intel to create new parallel/distributed performance analysis tools (Intel Trace Analyzer and Collector). Prior to this he earned his PhD at the University of Greenwich and he worked on MPI profiling tools at Pallas GmbH in Germany.