Energy-aware resource management for heterogeneous systems - Eduardo Luís Loureiro Fernandes (2016)
Nowadays computers, be they personal or a node contained in a multi machine environment, can contain different kinds of architectures: form the traditional CPU with a single execution core to the now common multi-core CPU, GPUs with thousands of cores, FPGAs, DSPs among others. It is also required to be aware that the various processing cores aren't equal. CPU cores are very different from GPU cores. With this a new problem emerges: leveraging this new architectures in an efficient way, without wasting energy and/or time. One way to achieve this is to distribute certain tasks to the most efficient architecture for that specific task. For instance some operations are extremely parallelizable, susceptible to be divided em various small tasks, like some operations in image processing. However changes are needed in already existing programs so that the maximum computing power that different architectures provide can be leveraged. One problem that many times is forgotten is the memory access times that heavily influence the execution times of some tasks. Previous work show that big advantages can be obtained in using some architectures to do some specific tasks. The proposed solution consists in scaling one or more applications described in a graph, where each vertex represents a task to execute and each edge represents the interdependencies of data needed for the diverse application tasks. In order to analyse if improvements are being obtained, energy consumption measurements will be carried out. Simulations will be used to check if the results correspond to what will be obtained. In the simulation component of this work tools like SimGrid will be used. With this work it is expected to obtain a positive impact on the way that tasks are distributed, obtaining power and time savings.