"Heterogeneous multi-core computing systems become very important for solving computational problems because of increased processing power they deliver and better energy efficiency. However, even experienced high performance programmers find it a challenge to fully exploit their potential due to the novelty and variety of available architectures. What's more, currently used programming languages, ...