Streaming Applications on Embedded High-Performance Commercial Platforms
Stream programming using a methodology based on dataflow, and specifically the CAL actor language, is emerging as one way of simultaneously addressing the need for a concurrent programming model for today's increasingly parallel platforms as well as that of adequately representing the algorithms in application areas characterized by the processing of data streams. One current limitation of the dataflow programming model is that it presents designers with an unattractive trade-off between performance and expressiveness, as current compilation techniques for dataflow programs are predicated on the ability to schedule the activations of computational kernels statically, i.e. at compile time, which is only possible for a limited class of very regular dataflow programs (such as cyclo-static dataflow). In order to facilitate adoption, the project intends to dramatically change the trade-off between expressiveness and performance, by developing compilation techniques and tools for a very broad class of dataflow programs exhibiting data-dependent and timing-dependent behaviors. The goal is to match the performance of state-of-the-art synthesis for statically schedulable dataflow programs, and to have efficiency degrade gracefully with the amount of data-dependent behavior and dynamic network structures used by the programmer, tracking the performance of comparable handwritten code. The goal is also to develop a complete tool chain targeting representative examples of the increasing flow of commercially available manycore platforms.