WaveScope: Stream Programming on Heterogeneous Wireless Devices
How do we maintain programmer productivity in an era with an exploding number of networked processing cores and increasing diversity among them? In this talk I offer a partial solution in the form of WaveScope, a programming environment for embedded, distributed stream-processing that we have used in a variety of sensor network applications. Sensor networks are a prime example of heterogeneous parallelism; they are distributed collections of phones, low-power embedded devices, and PCs containing a variety of processing cores. WaveScope is based on an asynchronous dataflow model and is suited for applications from signal processing to financial analysis and distributed data processing. A WaveScope program generates a graph of communicating actors; the compiler profiles these actors on various target platforms and then solves the partitioning problem: spreading actors across heterogeneous devices as well as across homogeneous multicores. To achieve performance and platform portability, the WaveScope solution involves a variety of compiler and runtime techniques; in this talk I will focus on multi-stage programming, domain specific optimizations, and program partitioning.