Designing software to take advantage of heterogeneous hardware resources to perform efficient High Performance Computing (HPC) is complex and has many associated trade-offs, but also provides an opportunity for solving huge problems that a solo device cannot handle. Depending on the way tasks are mapped to the hardware, vastly different execution times for the same tasks are possible. This work exploits a task programming library for hybrid architecture, StarPU, with the objective of optimizing execution time in heterogeneous environments. We explore two abstraction concepts provided by StarPU: contexts and schedulers. Contexts map StarPU tasks to hardware resources defined by the programmer, and schedulers define the policies that will be used to execute tasks within given contexts. This research will involve the creation of two engines with unique strategies that will involve creating, combining and testing execution on different context and scheduler combinations, aiming to achieve performance gains like time and energy consumption in comparison to statically and dynamically mapped tasks.
Dynamic Intelligent Kernel Assignment in Heterogeneous Multi-GPU Systems