StarPU is a scheduling framework for heterogeneous architectures which uses all available computing units in a uniform way. We achieve high performance by using a powerful data-caching and data-prefetching engine and by using autotuning performance prediction models which permit to easily implement advanced scheduling policies.