The IT world has come across the problem regarding the limited clock speed of traditional processors years ago. The computing power cannot be increased beyond a certain level using only one processor. Realizing the problem, large silicon vendors started to produce CPUs with multiple cores.
While it was a logical step to do, it raised, and still raises a lot of questions nowadays. The appearance of parallel computing capable hardware makes only one side of the equation. On the other side there is the software, which runs on it. Without properly operating multithreaded programs the optimal utilization of the hardware cannot be reached. Therefore we cannot pass by the issue of parallelism in our programs and software frameworks.
Embedded system applications also demand more and more computing power day-by-day, while the available battery power barley grows. To fulfill the increasing requirements, heterogeneous systems started to spread in this domain also.
I am documenting in my thesis the development of a project that tries to strengthen the position of heterogeneous systems in today's software technology.