Upgrade to Pro — share decks privately, control downloads, hide ads and more …

EnerJ

Adrian Sampson
September 26, 2011

 EnerJ

"Approximate Data Types for Safe and General Low-Power Computation"
EnerJ is a programming language extension enabling safe approximate computation. The paper was in PLDI 2011.

Adrian Sampson

September 26, 2011
Tweet

Other Decks in Technology

Transcript

  1. EnerJ Approximate Data Types for Safe and General Low-Power Computation

    Adrian Sampson Werner Dietl Emily Fortuna Danushen Gnanapragasam Luis Ceze Dan Grossman sa pa PLDI 2011 University of Washington
  2. Perfect correctness is not required information retrieval machine learning sensory

    data scientific computing physical simulation games augmented reality computer vision
  3. Anant Agarwal, Martin Rinard, Stelios Sidiroglou, Sasa Misailovic, and Henry

    Hoffmann. Using code perforation to improve performance, reduce energy consumption, and respond to failures. Technical report, MIT, 2009. [1] B.E.S. Akgul, L.N. Chakrapani, P. Korkmaz, and K.V. Palem. Probabilistic CMOS technology: A survey and future directions. In IFIP Intl. Conference on VLSI, 2006. [2] M. de Kruijf and K. Sankaralingam. Exploring the synergy of emerging workloads and silicon reliability trends. In SELSE, 2009. [3] Larkhoon Leem, Hyungmin Cho, Jason Bau, Quinn A. Jacobson, and Subhasish Mitra. ERSA: Error resilient system architecture for probabilistic applications. In DATE, 2010. [4] Xuanhua Li and Donald Yeung. Exploiting soft computing for increased fault tolerance. In ASGI, 2006. [5] Song Liu, Karthik Pattabiraman, Thomas Moscibroda, and Benjamin G. Zorn. Flicker: Saving refresh-power in mobile devices through critical data partitioning. Technical Report MSR-TR-2009-138, Microsoft Research, 2009. [6] Sriram Narayanan, John Sartori, Rakesh Kumar, and Douglas L. Jones. Scalable stochastic processors. In DATE, 2010. [7] Vicky Wong and Mark Horowitz. Soft error resilience of probabilistic inference applications. In SELSE, 2006. [8]
  4. Storage AND NOR NAND Logic Algorithms Е EnerJ Flikker ASPLOS

    2011 Kinds of imprecision Relax ISCA 2010 Green PLDI 2010
  5. Critical Non-Critical error-sensitive error-resilient ✓ ✗ references jump targets JPEG

    header pixel data neuron weights audio samples video frames
  6. Safety Separate critical and non-critical program components. Generality A range

    of approximation strategies supported with a single abstraction.
  7. Java language extension using type annotations Type qualifiers: @Approx @Precise

    & Endorsement Operator overloading Prevention of implicit flows Objects: qualifier polymorphism
  8. ✓ ✗ int a = ...; int p = ...;

    @Approx @Precise p = a; a = p; Type qualifiers
  9. endorse( ) ✓ ✗ int a = expensiveCalc(); int p;

    @Approx @Precise p = a; Endorsement: escape hatch quickChecksum(p); output(p);
  10. int a = ...; int p = ...; @Approx @Precise

    p + p; p + a; a + a; + : @Precise int, @Precise int → @Precise int + : @Approx int, @Approx int → @Approx int Logic approximation: overloading
  11. ✗ int a = ...; int p = ...; @Approx

    @Precise if ( p = 2; } a == 10) { Control flow
  12. ✓ int a = ...; int p = ...; @Approx

    @Precise if ( p = 2; } a == 10 ) { endorse( ) Control flow
  13. float mean() { calculate mean } float[] nums = ...;

    class FloatSet { new @Approx FloatSet() new @Precise FloatSet() } Objects
  14. float mean() { calculate mean } float[] nums = ...;

    class FloatSet { @Context } Objects
  15. float mean() { calculate mean } float[] nums = ...;

    class FloatSet { @Context } @Approx float mean_APPROX() { take mean of first ½ } @Approx FloatSet someSet = ...; someSet.mean();
  16. CPU Hypothetical hardware Memory Registers Functional Units Data Cache Lower

    SRAM supply voltage Lower DRAM refresh rate Reduced VDD Smaller FP mantissa
  17. 0% 25% 50% 75% 100% FFT SOR MonteCarlo SMM LU

    ZXing jME ImageJ Raytracer 33% 34% 19% 4% 23% 14% 20% 25% 33% Annotated declarations SciMark2 algorithms other kernels full application Annotations are sparse & straightforward to insert
  18. 0% 25% 50% 75% 100% FFT SOR MonteCarlo SMM LU

    ZXing jME ImageJ Raytracer Base Mild Medium Aggressive Total energy used Saved 10%—50% of total execution energy (in simulation)
  19. 0% 25% 50% 75% 100% FFT SOR MonteCarlo SMM LU

    ZXing jME ImageJ Raytracer Base Mild Medium Aggressive Quality-of-service tradeoff: output error “Mild” configuration is a good fit for all Some applications can tolerate more approximation