|Date||May 2, 2014|
|Speaker||Kath Knobe (Intel.com)|
|Topic||Programing in CnC for POarallel Execution|
|Abstract:|| Parallel programming is difficult for anyone but it’s particularly difficult for the domain expert who wants to focus on their domain (say finance, medical imaging or chemistry) and not on computer science. Most programming models require the user to think about and express what units of computation to execute in parallel. This is hard and depends on the target architecture. Instead, CnC requires the user to think about and express the ordering constraints among the units of computation. This is easier and depends only on the application. In fact, the user must know these constraints even to write a correct serial program. There are exactly two relationships that cause ordering constraints: producer/consumer (one computation produces data that another uses) and controller/controllee (one computation determines if another will execute). CnC is simply a way of expressing these ordering constraints. This approach not only simplifies the programmer’s problem but because the resulting program is less constrained the execution can be more efficient.
The talk will introduce CnC and present our experience with CnC LULESH, a shock hydro-dynamics application. This work was done for the DOE Exascale software stack (S-Stack) project. If time permits we may also touch on the tuning capabilities in CnC.
In addition to CnC, her professional interests focus on parallelism through compiler technology, runtime system design, and language design. 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).