  Reducing energy consumption is a challenge that is faced on a daily basis by
teams from the High-Performance Computing as well as the Embedded domain. This
issue is mostly attacked from an hardware perspective, by devising
architectures that put energy efficiency as a primary target, often at the cost
of processing power. Lately, computing platforms have become more and more
heterogeneous, but the exploitation of these additional capabilities is so
complex from the application developer's perspective that they are left unused
most of the time, resulting therefore in a supplemental waste of energy rather
than in faster processing times.
  In this paper we present a transparent, on-the-fly optimization scheme that
allows a generic application to automatically exploit the available computing
units to partition its computational load. We have called our approach
Heterogeneous Platform Accelerator (HPA). The idea is to use profiling to
automatically select a computing-intensive candidate for acceleration, and then
distribute the computations to the different units by off-loading blocks of
code to them.
  Using an NVIDIA Jetson TK1 board, we demonstrate that not only HPA results in
faster processing speed, but also in a considerable reduction in the total
energy absorbed.
