Trading Functionality for Power within Applications

Trading Functionality for Power within Applications
Slide Note
Embed
Share

This study explores the concept of trading functionality for power within applications, specifically focusing on power-constrained systems like mobile phones. Techniques such as HW DVFS and Smart DVFS are discussed to handle power consumption while maintaining performance. The idea of trading functionality instead of time is also proposed, with suggestions on using dynamic feedback to make informed tradeoffs between functionality and power consumption.

  • Power consumption
  • Functionality tradeoffs
  • Mobile applications
  • Energy efficiency
  • Dynamic feedback

Uploaded on Feb 23, 2025 | 0 Views


Download Presentation

Please find below an Image/Link to download the presentation.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author.If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.

You are allowed to download the files provided on this website for personal or commercial use, subject to the condition that they are used lawfully. All files are the property of their respective owners.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author.

E N D

Presentation Transcript


  1. Trading Functionality for Power within Applications Melanie Kambadur and Martha A. Kim {melanie | martha}@cs.columbia.edu Columbia University, New York, NY APPROX @ PLDI 2014

  2. Running on a power constrained system; app should consume <=80W at a time. Mobile Phone Application 2

  3. Total 100 80 Power (W) 60 40 Mobile Phone Application 20 0 0 2 4 Time (s) 6 8 10 12 14 3

  4. Total Too much power! 100 80 Power (W) 60 40 Mobile Phone Application 20 0 0 2 4 Time (s) 6 8 10 12 14 4

  5. Total Power ok now. 100 Could handle with HW DVFS (Dynamic Voltage and Frequency Scaling), but you get a slowdown 80 Power (W) 60 40 20 0 0 2 4 Time (s) 6 8 10 12 25% Increase 5

  6. Total 100 Smart DVFS (with OS/ Compiler/ language help) might decrease slowdown 80 Power (W) 60 40 20 0 0 2 4 Time (s) 6 8 10 12 10% Increase 6

  7. Total 100 Smart DVFS (with OS/ Compiler/ language help) might decrease slowdown save energy when there s no work to do) Majority of existing techniques trade power for runtime (and only 80 Power (W) 60 40 20 0 0 2 4 Time (s) 6 8 10 12 10% Increase 7

  8. Why not trade functionality instead of time? Mobile Phone Application Total Advertisement 100 80 Power (W) 60 40 Third Party Advertisement 20 0 0 2 4 Time (s) 6 8 10 12 14 8

  9. Why not trade functionality instead of time? Total Advertisement 100 Temporarily kill ad, and save energy as well as power! 80 Power (W) 60 40 20 0 0 2 4 Time (s) 6 8 0% Increase 10 12 9

  10. Use dynamic feedback to decide if and when to make functionality tradeoffs. Mobile Phone App Profile power Start ad if (too much power), then: Kill ad else, resume 10

  11. Specifically, use Energy Exchanges Mobile Phone App audit { } record(usage_t *u) if (u->power >= 80): Start ad Kill ad else continue 11

  12. Challenges to address Accuracy / Precision Efficiency of the profiling itself Interoperability with existing power tools Programmability / Usability 12

  13. Challenges to address Could handle w/ HW, but need to deal with new limitations: - too few counters - counter overflow - security Accuracy / Precision Efficiency Interoperability power saving tools Programmability 13

  14. Energy Exchanges made possible by C++ Library: NRGX.h Built on Intel RAPL counters Primitives to wrap code in power, energy, and runtime called audits Efficiently handles multiple audits Attempts to overcome HW limitations 14

  15. Example: bodytrack for (int i=0; i < frames; i=i+1) { // DO FRAME PROCESSING } Goal: keep program s entire execution within a predetermined energy budget 15

  16. Example: bodytrack for (int i=0; i < frames; i=i+1) { // DO FRAME PROCESSING } Goal: keep program s entire execution within a predetermined energy budget 16

  17. #define BUDGET 2000 // in Joules or relative to system double per_frame = BUDGET/frames; Allocate a total budget for the program, divide into per frame budget int framestep = 1; for (int i=0; i < frames; i=i+framestep) { audit { // DO FRAME PROCESSING } record (usage_t *this_frame); double energy = this_frame->energy; ALLOCATION -= energy; // if frame didn t take 90-100% of allocation, reset framestep if ((energy > per_frame) || (energy < 0.9*per_frame)) { per_frame = (ALLOCATION/(frames-I)); framestep = (int) ceil(energy/per_frame); } 17 }

  18. #define BUDGET 2000 // in Joules or relative to system double per_frame = BUDGET/frames; int framestep = 1; for (int i=0; i < frames; i=i+framestep) { audit { // DO FRAME PROCESSING } record (usage_t *this_frame); double energy = this_frame->energy; Dynamically adjust framestep to approximate the frame processing (by skipping frames) ALLOCATION -= energy; // if frame didn t take 90-100% of allocation, reset framestep if ((energy > per_frame) || (energy < 0.9*per_frame)) { per_frame = (ALLOCATION/(frames-I)); framestep = (int) ceil(energy/per_frame); } 18 }

  19. #define BUDGET 2000 // in Joules or relative to system double per_frame = BUDGET/frames; int framestep = 1; for (int i=0; i < frames; i=i+framestep) { Start profiling. audit { // DO FRAME PROCESSING Stop profiling, collect usage. } record (usage_t *this_frame); double energy = this_frame->energy; ALLOCATION -= energy; // if frame didn t take 90-100% of allocation, reset framestep Access usage record. if ((energy > per_frame) || (energy < 0.9*per_frame)) { per_frame = (ALLOCATION/(frames-i)); framestep = (int) ceil(energy/per_frame); } 19 }

  20. #define BUDGET 2000 // in Joules or relative to system double per_frame = BUDGET/frames; int framestep = 1; for (int i=0; i < frames; i=i+framestep) { Adjust framestep if we re not using 90-100% of per_frame budget. audit { // DO FRAME PROCESSING } record (usage_t *this_frame); double energy = this_frame->energy; BUDGET -= energy; // if frame didn t take 90-100% of allocation, reset framestep if ((energy > per_frame) || (energy < 0.9 * per_frame)) { per_frame = (BUDGET / (frames - i)); framestep = (int) ceil(energy / per_frame); } 20 }

  21. Result: energy stays within any budget BUDGET BUDGET 21

  22. Questions? Tech Report (more examples, implementation details) @ http://arcade.cs.columbia.edu/nrgx-tr14.pdf Email: melanie@cs.columbia.edu martha@cs.columbia.edu 22

More Related Content