Abstract
Heterogeneous multi-core platforms are increasingly popular due to their perceived superior performance over homogenous systems. The best performance, however, can only be achieved if tasks can be accurately distributed to the right devices. OpenCL tasks can be dispatched to take advantage of all the available devices in a system. If we instead allow the system to make scheduling decisions and assign applications to devices based on profiling database and device loading, we can both increase overall system throughput and decrease individual application runtimes. In this paper, we present our methodologies in supporting stateful over heterogeneous platforms in order to maximize overall throughput. The key to our approach is accurately estimating when an application would finish execution on a given device based on historical runtime information. In addition, our scheduling mechanism includes stateful support for OpenCL applications, allowing us to make scheduling decisions more effective. We evaluate our approach with a set of OpenCL applications running on a system with multicore CPUs and GPUs. The result of our experiment shows that our load-balancing mechanism is 1.61 speedup over Round-Robin mechanism. Our schemes are effective in supporting the dispatching of stateful and stateless OpenCL tasks over heterogeneous environments.