Download: PDF.

“EnerJ: Approximate Data Types for Safe and General Low-Power Computation” by A. Sampson, W. Dietl, E. Fortuna, D. Gnanapragasam, L. Ceze, and D. Grossman. In Programming Language Design and Implementation (PLDI), June 2011, pp. 164-174.

Abstract

Energy is increasingly a first-order concern in computer systems. Exploiting energy-accuracy trade-offs is an attractive choice in applications that can tolerate inaccuracies. Recent work has explored exposing this trade-off in programming models. A key challenge, though, is how to isolate parts of the program that must be precise from those that can be approximated so that a program functions correctly even as quality of service degrades.

We propose using type qualifiers to declare data that may be subject to approximate computation. Using these types, the system automatically maps approximate variables to low-power storage, uses low-power operations, and even applies more energy-efficient algorithms provided by the programmer. In addition, the system can statically guarantee isolation of the precise program component from the approximate component. This allows a programmer to control explicitly how information flows from approximate data to precise data. Importantly, employing static analysis eliminates the need for dynamic checks, further improving energy savings. As a proof of concept, we develop EnerJ, an extension to Java that adds approximate data types. We also propose a hardware architecture that offers explicit approximate storage and computation. We port several applications to EnerJ and show that our extensions are expressive and effective; a small number of annotations lead to significant potential energy savings (10%-50%) at very little accuracy cost.

Keywords: EnerJ, energy, precise, approximate

Download: PDF.

BibTeX entry:

@inproceedings{EnerJ11,
   author = {A. Sampson and W. Dietl and E. Fortuna and D. Gnanapragasam
        and L. Ceze and D. Grossman},
   title = {{EnerJ: Approximate Data Types for Safe and General Low-Power
        Computation}},
   booktitle = {{Programming Language Design and Implementation (PLDI)}},
   month = jun,
}

Back to the publications by date or by topic.


(This webpage was created with bibtex2web.)