Date: January 20, 2017
Speaker: Dr. Kathleen Knobe, Rice University
Location: DBH 6011
Time: 11am – 12pm
Host: Aparna Chandramowlishwaran
Title: CnC: A dependence programming language
Abstract: Developing and maintaining parallel programs is hard. One reason is that applications express both computations and orderings among the computations. Some orderings are dependences and are required by the semantics. Some are for tuning for a specific goal and platform. Some are purely arbitrary. To modify the application as it evolves, the required orderings must be identified and maintained. If this process is too conservative and views unnecessary orderings as required, we might loose performance. If it to aggressive and views necessary orderings as arbitrary, we might get erroneous results. Furthermore this repeated process takes time and so lowers productivity.
We improve both productivity and performance by isolating two types concerns. One concern is the meaning of the application, that is, getting the ordering requirements right. The other is improving performance for a specific target and for a specific optimization goal. The domain expert (in physics, medicine, economics,…) specifies the semantic requirements of the application in a way that is maximally analyzable but avoids any tuning decisions. The tuning expert (often a computer scientist) starts with the domain specification and tunes it for a specific the target platform and specific tuning goals. These goals might be, for example, to minimize memory usage, minimize time to execute, minimize power/energy consumption or some platform specific goal.
The idea is to make the requirements of the application (the dependences) explicit and to maximize the analyzability for any optimizer, the flexibility for any runtime system and the reusability of the domain specification under different conditions. Even if the domain expert and the tuning expert are the same person, this separation of concerns allows the developer to focus on one thing at a time.
This allows the design of CnC to be oblivious of the style of tuning and the style of the runtime. Tuning can be of whatever style is appropriate for the platform and the goal. Because of this, we were able to implement a variety of quite different optimizations and very different execution styles for CnC domain specs.
CnC is not a parallel programming model. There is no thinking about parallelism involved. But it isn’t a serial model either. There are no arbitrary serial orderings. We refer CnC programming as dependence programming. The CnC domain spec is very close to a dependence graph.
The talk will introduce the CnC concepts, show a variety of implemented tuning approaches, describe the current state of the project and indicate our future plans.
Bio: 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 (with Bill Dally) in 1997, she joined Digital Equipment’s Cambridge Research Lab (CRL). She stayed through the DEC/Compaq/HP mergers and when CRL was absorbed into Intel. She is now a senior research scientist at Rice University.
Return to the Fall 2016 CS Seminar Series Schedule