f lex j ava : language support for safe and modular approximate programming jongse park, hadi...

46
Support for Safe and Modular Approximate Programming Jongse Park, Hadi Esmaeilzadeh, Xin Zhang, Mayur Naik, William Harris Alternative Computing Technologies (ACT) Lab Georgia Institute of Technology ESEC/FSE 2015

Upload: eileen-obrien

Post on 30-Dec-2015

216 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: F LEX J AVA : Language Support for Safe and Modular Approximate Programming Jongse Park, Hadi Esmaeilzadeh, Xin Zhang, Mayur Naik, William Harris Alternative

FLEXJAVA: Language Support for Safe and Modular

Approximate Programming

Jongse Park, Hadi Esmaeilzadeh, Xin Zhang, Mayur Naik, William Harris

Alternative Computing Technologies (ACT) Lab

Georgia Institute of Technology

ESEC/FSE 2015

Page 2: F LEX J AVA : Language Support for Safe and Modular Approximate Programming Jongse Park, Hadi Esmaeilzadeh, Xin Zhang, Mayur Naik, William Harris Alternative

Energy is a primary constraint

Mobile Internet of Things

Data Center

2

Page 3: F LEX J AVA : Language Support for Safe and Modular Approximate Programming Jongse Park, Hadi Esmaeilzadeh, Xin Zhang, Mayur Naik, William Harris Alternative

Data growth vs performance

• Performance growth trends: Esmaeilzadeh et al, “Dark Silicon and the End of Multicore Scaling,” ISCA 2011

• Data growth trends: IDC's Digital Universe Study, December 2012

3

Page 4: F LEX J AVA : Language Support for Safe and Modular Approximate Programming Jongse Park, Hadi Esmaeilzadeh, Xin Zhang, Mayur Naik, William Harris Alternative

Adding a third dimensionEmbracing Error

Erro

r

IoT

Mobile

Desktop

Data center

4

Page 5: F LEX J AVA : Language Support for Safe and Modular Approximate Programming Jongse Park, Hadi Esmaeilzadeh, Xin Zhang, Mayur Naik, William Harris Alternative

Navigating a three dimensional space

IoT

Mobile

Desktop

Data center

Erro

r

5

Page 6: F LEX J AVA : Language Support for Safe and Modular Approximate Programming Jongse Park, Hadi Esmaeilzadeh, Xin Zhang, Mayur Naik, William Harris Alternative

Approximate computingEmbracing error

Relax the abstraction of “near perfect” accuracy in

Allows errors to happen to improve performance resource utilization efficiency

Processing Storage Communication

6

Page 7: F LEX J AVA : Language Support for Safe and Modular Approximate Programming Jongse Park, Hadi Esmaeilzadeh, Xin Zhang, Mayur Naik, William Harris Alternative

New landscape of computingPersonalized and targeted computing

7

Page 8: F LEX J AVA : Language Support for Safe and Modular Approximate Programming Jongse Park, Hadi Esmaeilzadeh, Xin Zhang, Mayur Naik, William Harris Alternative

IoT ComputingMobile Computing

Cloud Computing

8

Page 9: F LEX J AVA : Language Support for Safe and Modular Approximate Programming Jongse Park, Hadi Esmaeilzadeh, Xin Zhang, Mayur Naik, William Harris Alternative

Classes ofapproximate applicationsPrograms with analog inputs

• Sensors, scene reconstruction

Programs with analog outputs• Multimedia

Programs with multiple possible answers• Web search, machine learning

Convergent programs• Gradient descent, big data analytics

9

Page 10: F LEX J AVA : Language Support for Safe and Modular Approximate Programming Jongse Park, Hadi Esmaeilzadeh, Xin Zhang, Mayur Naik, William Harris Alternative

Avoiding overkill designApproximate Computing

Physical Device

Circuit

Architecutre

Compiler

Programming Language

Application

Microarchitecture

PrecisionReliability

Efficie

ncy

Performance

CostCost

10

Page 11: F LEX J AVA : Language Support for Safe and Modular Approximate Programming Jongse Park, Hadi Esmaeilzadeh, Xin Zhang, Mayur Naik, William Harris Alternative

Cross-stack approach

ApplicationProgramming Language

Circuit

Microarchitecture

ArchitecutreCompiler

Physical Device

11

Page 12: F LEX J AVA : Language Support for Safe and Modular Approximate Programming Jongse Park, Hadi Esmaeilzadeh, Xin Zhang, Mayur Naik, William Harris Alternative

WH2 of Approximation

What to approximate?

How much to approximate?

How to approximate?

Language

Compiler

Runtime

Hardware12

Page 13: F LEX J AVA : Language Support for Safe and Modular Approximate Programming Jongse Park, Hadi Esmaeilzadeh, Xin Zhang, Mayur Naik, William Harris Alternative

13

Page 14: F LEX J AVA : Language Support for Safe and Modular Approximate Programming Jongse Park, Hadi Esmaeilzadeh, Xin Zhang, Mayur Naik, William Harris Alternative

Approximate program

14

Page 15: F LEX J AVA : Language Support for Safe and Modular Approximate Programming Jongse Park, Hadi Esmaeilzadeh, Xin Zhang, Mayur Naik, William Harris Alternative

Separation

15

Page 16: F LEX J AVA : Language Support for Safe and Modular Approximate Programming Jongse Park, Hadi Esmaeilzadeh, Xin Zhang, Mayur Naik, William Harris Alternative

Goal Design an automated and high-levelprogramming language for approximate computing

Criteria1) Safety2) Scalability 3) Modularity and reusability4) Generality

16

Page 17: F LEX J AVA : Language Support for Safe and Modular Approximate Programming Jongse Park, Hadi Esmaeilzadeh, Xin Zhang, Mayur Naik, William Harris Alternative

FLEXJAVA

Lightweight set of language extensions Reducing annotating effort Language-compiler co-design

Safety

Scalability

Modularity and reusability

Generality

17

Page 18: F LEX J AVA : Language Support for Safe and Modular Approximate Programming Jongse Park, Hadi Esmaeilzadeh, Xin Zhang, Mayur Naik, William Harris Alternative

FLEXJAVA Annotations

1. Approximation for individual data and operations loosen (variable) loosen_invasive (variable) tighten (variable)

2. Approximation for a code block begin_loose (“TECHNIQUE”, ARGUMENTS) end_loose (ARGUMENTS)

3. Expressing the quality requirement loosen (variable, QUALITY_REQUIREMENT); loosen_invasive (variable, QUALITY_REQUIREMENT); end_loose (ARGUMENTS, QUALITY_REQUIREMENT); 18

Page 19: F LEX J AVA : Language Support for Safe and Modular Approximate Programming Jongse Park, Hadi Esmaeilzadeh, Xin Zhang, Mayur Naik, William Harris Alternative

float computeLuminance (float r,

float g,

float b) {

float luminance = r * 0.3f + g * 0.6f + b * 0.1f;

loosen (luminance);

return luminance;

}

Safe and scalable approximation

19

Page 20: F LEX J AVA : Language Support for Safe and Modular Approximate Programming Jongse Park, Hadi Esmaeilzadeh, Xin Zhang, Mayur Naik, William Harris Alternative

float computeLuminance (float r,

float g,

float b) {

float luminance = r * 0.3f + g * 0.6f + b * 0.1f;

loosen (luminance);

return luminance;

}

Safe and scalable approximation

19

Page 21: F LEX J AVA : Language Support for Safe and Modular Approximate Programming Jongse Park, Hadi Esmaeilzadeh, Xin Zhang, Mayur Naik, William Harris Alternative

float computeLuminance (float r,

float g,

float b) {

float luminance = r * 0.3f + g * 0.6f + b * 0.1f;

loosen (luminance);

return luminance;

}

Safe and scalable approximation

19

Page 22: F LEX J AVA : Language Support for Safe and Modular Approximate Programming Jongse Park, Hadi Esmaeilzadeh, Xin Zhang, Mayur Naik, William Harris Alternative

float computeLuminance (float r,

float g,

float b) {

float luminance = r * 0.3f + g * 0.6f + b * 0.1f;

loosen (luminance);

return luminance;

}

Safe and scalable approximation

19

Page 23: F LEX J AVA : Language Support for Safe and Modular Approximate Programming Jongse Park, Hadi Esmaeilzadeh, Xin Zhang, Mayur Naik, William Harris Alternative

int fibonacci (int n) { int r; if (n <= 1) r = n; else r = fibonacci (n – 1) + fibonacci (n – 2); loosen (r); return r; }

Safe and scalable approximation

20

Page 24: F LEX J AVA : Language Support for Safe and Modular Approximate Programming Jongse Park, Hadi Esmaeilzadeh, Xin Zhang, Mayur Naik, William Harris Alternative

int fibonacci (int n) { int r; if (n <= 1) r = n; else r = fibonacci (n – 1) + fibonacci (n – 2); loosen (r); return r; }

Safe and scalable approximation

20

Page 25: F LEX J AVA : Language Support for Safe and Modular Approximate Programming Jongse Park, Hadi Esmaeilzadeh, Xin Zhang, Mayur Naik, William Harris Alternative

Modularity

int p = 1; for (int i = 0; i < a.length; i++) { p *= a[i]; } for (int i = 0; i < b.length; i++) { p += b[i]; loosen(p); }

21

Page 26: F LEX J AVA : Language Support for Safe and Modular Approximate Programming Jongse Park, Hadi Esmaeilzadeh, Xin Zhang, Mayur Naik, William Harris Alternative

Reuse and library support

static int square(int a) { int s = a * a; loosen(s); return s;}

main () { int x = 2 * square(3);

System.out.println(x);}

22

Page 27: F LEX J AVA : Language Support for Safe and Modular Approximate Programming Jongse Park, Hadi Esmaeilzadeh, Xin Zhang, Mayur Naik, William Harris Alternative

Reuse and library support

static int square(int a) { int s = a * a; loosen(s); return s;}

main () { int x = 2 * square(3); loosen(x); System.out.println(x);}

22

Page 28: F LEX J AVA : Language Support for Safe and Modular Approximate Programming Jongse Park, Hadi Esmaeilzadeh, Xin Zhang, Mayur Naik, William Harris Alternative

Reuse and library support

static int square(int a) { int s = a * a; loosen(s); return s;}

main () { int x = 2 * square(3); loosen(x); System.out.println(x);}

22

Page 29: F LEX J AVA : Language Support for Safe and Modular Approximate Programming Jongse Park, Hadi Esmaeilzadeh, Xin Zhang, Mayur Naik, William Harris Alternative

Reuse and library support

static int square(int a) { int s = a * a; loosen(s); return s;}

main () { int x = 2 * square(3); loosen(x); System.out.println(x);}

22

Page 30: F LEX J AVA : Language Support for Safe and Modular Approximate Programming Jongse Park, Hadi Esmaeilzadeh, Xin Zhang, Mayur Naik, William Harris Alternative

Reuse and library support

static int square(int a) { int s = a * a; return s;}

main () { int x = 2 * square(3); loosen(x); System.out.println(x);}

23

Page 31: F LEX J AVA : Language Support for Safe and Modular Approximate Programming Jongse Park, Hadi Esmaeilzadeh, Xin Zhang, Mayur Naik, William Harris Alternative

Reuse and library support

static int square(int a) { int s = a * a; return s;}

main () { int x = 2 * square(3); loosen(x); System.out.println(x);}

23

Page 32: F LEX J AVA : Language Support for Safe and Modular Approximate Programming Jongse Park, Hadi Esmaeilzadeh, Xin Zhang, Mayur Naik, William Harris Alternative

Reuse and library support

static int square(int a) { int s = a * a;

return s;}

main () { int x = 2 * square(3);

loosen_invasive(x); System.out.println(x);}

24

Page 33: F LEX J AVA : Language Support for Safe and Modular Approximate Programming Jongse Park, Hadi Esmaeilzadeh, Xin Zhang, Mayur Naik, William Harris Alternative

Reuse and library support

static int square(int a) { int s = a * a;

return s;}

main () { int x = 2 * square(3);

loosen_invasive(x); System.out.println(x);}

24

Page 34: F LEX J AVA : Language Support for Safe and Modular Approximate Programming Jongse Park, Hadi Esmaeilzadeh, Xin Zhang, Mayur Naik, William Harris Alternative

Reuse and library support

static int square(int a) { int s = a * a;

return s;}

main () { int x = 2 * square(3);

loosen_invasive(x); System.out.println(x);}

24

Page 35: F LEX J AVA : Language Support for Safe and Modular Approximate Programming Jongse Park, Hadi Esmaeilzadeh, Xin Zhang, Mayur Naik, William Harris Alternative

Reuse and library support

static int square(int a) { int s = a * a;

return s;}

main () { int x = 2 * square(3);

loosen_invasive(x); System.out.println(x);}

24

Page 36: F LEX J AVA : Language Support for Safe and Modular Approximate Programming Jongse Park, Hadi Esmaeilzadeh, Xin Zhang, Mayur Naik, William Harris Alternative

Reuse and library support

static int square(int a) { int s = a * a;

return s;}

main () { int x = 2 * square(3);

loosen_invasive(x); System.out.println(x);}

24

Page 37: F LEX J AVA : Language Support for Safe and Modular Approximate Programming Jongse Park, Hadi Esmaeilzadeh, Xin Zhang, Mayur Naik, William Harris Alternative

Truffle: Architecture support for approximate computing [ASPLOS’12]

NPU: Neural acceleration [MICRO’12]Har

dwar

e

Loop perforation and loop early-termination [ESEC/FSE’11, PLDI’10]

Function substitution [PLDI’10]Soft

war

e

Flikker: Saving DRAM refresh power [ASPLOS’11]

RFVP and load value prediction [PACT’14, MICRO’14]Mem

ory

Generality

25

Page 38: F LEX J AVA : Language Support for Safe and Modular Approximate Programming Jongse Park, Hadi Esmaeilzadeh, Xin Zhang, Mayur Naik, William Harris Alternative

Generality

begin_loose(“PERFORATION”, 0.10);

for (int i = 0; i < n; i++) {

}

end_loose();

26

Page 39: F LEX J AVA : Language Support for Safe and Modular Approximate Programming Jongse Park, Hadi Esmaeilzadeh, Xin Zhang, Mayur Naik, William Harris Alternative

Generality

begin_loose(“NPU”);

p = Math.sin(x) + Math.cos(y);

q = 2 * Math.sin(x + y);

end_loose();

27

Page 40: F LEX J AVA : Language Support for Safe and Modular Approximate Programming Jongse Park, Hadi Esmaeilzadeh, Xin Zhang, Mayur Naik, William Harris Alternative

Approximation Safety Analysis

Find the maximal set of safe-to-approximate data/operations

1. For each annotation, loosen(v), find the set of data and operations that affect v

2. Merge all the sets

3. Exclude the data and operations that affect control flow

4. Exclude the data and operations that affect address calculations

The rest of the program data and operations are precise28

Page 41: F LEX J AVA : Language Support for Safe and Modular Approximate Programming Jongse Park, Hadi Esmaeilzadeh, Xin Zhang, Mayur Naik, William Harris Alternative

Source code

FLEXJAVA annotations

Programm

ing

ApproximationSafety Analysis

Safe-to-approximatedata/operations

Source-codeHighlighting Tool

Compilation

HighlightedSource Code

FeedbackWorkflow

29

Page 42: F LEX J AVA : Language Support for Safe and Modular Approximate Programming Jongse Park, Hadi Esmaeilzadeh, Xin Zhang, Mayur Naik, William Harris Alternative

Benchmark

smm# lines: 38

SciMark2 benchmark

Matrix-vector multiplication

mc# lines: 59

SciMark2 benchmark

Mathematical approximation

fft# lines: 168

SciMark2 benchmark

Signal processing

sor# lines: 36

SciMark2 benchmark

Successive Over-relaxation

lu# lines: 283

SciMark2 benchmark

Matrix factorization

raytracer# lines: 174

Graphics

3Dimage

renderer

jmeint# lines: 5,962

3D gaming

Triangleintersection

kernel

hessian# lines: 10,174Image processing

Interestpoint

detection

sobel# lines: 163

Image processing

Imageedge

detection

zxing# lines: 26,171Image processing

Bar code decoder

30

Page 43: F LEX J AVA : Language Support for Safe and Modular Approximate Programming Jongse Park, Hadi Esmaeilzadeh, Xin Zhang, Mayur Naik, William Harris Alternative

Number of Annotations

2× to 17× reduction in the number of annotations31

Lower is Better

Page 44: F LEX J AVA : Language Support for Safe and Modular Approximate Programming Jongse Park, Hadi Esmaeilzadeh, Xin Zhang, Mayur Naik, William Harris Alternative

User-study: Annotation Time

8× average reduction in annotation time

10 subjects (programmers)Time for annotating fft using EnerJ and FLEXJAVA

32

Lower is Better

Page 45: F LEX J AVA : Language Support for Safe and Modular Approximate Programming Jongse Park, Hadi Esmaeilzadeh, Xin Zhang, Mayur Naik, William Harris Alternative

Language-compiler co-design toAutomate approximate programming Reduce programmer effort

FLEXJAVA

Safety

Scalability

Modularity and reusability

Generality

33

Page 46: F LEX J AVA : Language Support for Safe and Modular Approximate Programming Jongse Park, Hadi Esmaeilzadeh, Xin Zhang, Mayur Naik, William Harris Alternative

Replication Package

http://act-lab.org/artifacts/flexjava/

1. Annotated benchmarks 2. Compiler with approximate safety analysis3. Source code highlighting tool

Open source git repository:https://bitbucket.org/act-lab/flexjava.code

34