This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Power/Energy Awareness in GCC


On 15.04.2013 20:21, Tobias Burnus wrote:
> http://gcc.gnu.org/ml/gcc/2013-03/msg00259.html ("Identifying Compiler
> Options to Minimise Energy Consumption for Embedded Platforms"). 
I did this study last summer (paper at http://arxiv.org/abs/1303.6485).
We looked at how existing optimizations affected energy consumption and
execution time -- they are very correlated and most of the time it is
easier and just as effective to make the application execute faster.


On 16/04/13 07:44, Andrey Belevantsev wrote:
> To be honest, I can only repeat the same things I said to James on the
> 2012 Cauldron -- I don't think you can achieve much of power savings
> from within the compiler, at least until the hardware design will change.
There does seem to be a few things that can be done in the compiler. For
example making use of the NEON unit on ARM processors reduces the energy
consumption. Also aggressively reducing memory accesses can have a large
effect - accessing off-chip memory is very expensive in terms of energy.
However, I agree, the compiler is limited in what it can do and is
unlikely to have a large effect in the bit-switching case.


Ghassan Shobaki wrote:
> We are currently working on a research
> project on instruction scheduling for low power (experimenting with
> different algorithms for minimizing switching power) and would like to
> find out if GCC already has such a scheduler and how it can be enabled,
> so that we can experiment with it.
I came across a paper which did something similar a while ago:
"Instruction scheduling based on energy and performance constraints ".
This may be worth taking a look at.


James

On 16/04/13 07:44, Andrey Belevantsev wrote:
> On 15.04.2013 20:21, Tobias Burnus wrote:
>> Ghassan Shobaki wrote:
>>> We are currently working on a research
>>> project on instruction scheduling for low power (experimenting with
>>> different algorithms for minimizing switching power) and would like to
>>> find out if GCC already has such a scheduler and how it can be enabled,
>>> so that we can experiment with it.
>>
>> Your project sounds similar to the following project:
>> http://gcc.gnu.org/ml/gcc/2013-03/msg00259.html ("Identifying Compiler
>> Options to Minimise Energy Consumption for Embedded Platforms").
>
> We also did similar research in the past, mainly investigating how
> compiler feedback (via instrumentation and profiling) can assist
> dynamic voltage scaling in the OS (we had fully offline DVS as well as
> the patches to the Linux scheduler), but we also did some experiments
> with controlling bit-switching in the scheduler and some other work.
>
> You can find the relevant papers with some preliminary DVS work and
> bit-switching experiments at
> http://www.doc.ic.ac.uk/~phjk/GROW09/papers/06-PowerBelevantsev.pdf
> and with more DVS research and experiments from GROW 2010 at
> http://gcc.gnu.org/wiki/GROW-2010?action=AttachFile&do=get&target=2010-GROW-Proceedings.pdf.
>
> To be honest, I can only repeat the same things I said to James on the
> 2012 Cauldron -- I don't think you can achieve much of power savings
> from within the compiler, at least until the hardware design will
> change.  The scheduling freedom in minimizing bit-switching is very
> limited and this is not going to buy much.  Any information that a
> compiler can produce for you will be about program behavior related to
> CPU and memory, and no matter how well you use it, again you will not
> save much power as nowadays CPU will not be the largest power consumer
> in an embedded system (if you save e.g. 10% CPU power consumption
> which is 10% of total system consumption, that's only 1%).  One can
> achieve more by turning off a display or a networking device.
>
> But I will be happy to be proven wrong :-) So good luck with the
> research.
>
> Andrey


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]