Online Tuning of Stream Programs or How To Get The Most Out Of Your Multicore
Author:Walter F. Tichy
This talk introduces an autonomic mechanism for online tuning of stream programs. A stream program is a parallel program consisting of a number of filters that are interconnected in a flow graph. A given stream program is compiled to an online tunable form that exhibits tuning parameters. Tuning parameters are variables that influence a program's performance, but not its results. Examples of tuning parameters are the degree of parallelism, the degrees of replication and fusion of filters, or the choice of alternative implementations of kernels. During program execution, we use application heartbeats to monitor performance. Heartbeats are events emitted at certain points in the program the faster the heartbeat, the better the performance. An automatic optimizer uses heartbeat rates for making informed decisions on how to adjust tuning parameters to maximize performance.We evaluated the approach with five benchmarks on three different multicore platforms. Performance improvements range between 50% and 100% of the overall tuning potential, with negligible overhead.The approach could also be used for optimizing energy consumption or for choosing among heterogeneous cores.