![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](https://reader038.vdocuments.net/reader038/viewer/2022110404/56649e8e5503460f94b91648/html5/thumbnails/1.jpg)
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](https://reader038.vdocuments.net/reader038/viewer/2022110404/56649e8e5503460f94b91648/html5/thumbnails/2.jpg)
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](https://reader038.vdocuments.net/reader038/viewer/2022110404/56649e8e5503460f94b91648/html5/thumbnails/3.jpg)
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](https://reader038.vdocuments.net/reader038/viewer/2022110404/56649e8e5503460f94b91648/html5/thumbnails/4.jpg)
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](https://reader038.vdocuments.net/reader038/viewer/2022110404/56649e8e5503460f94b91648/html5/thumbnails/5.jpg)
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](https://reader038.vdocuments.net/reader038/viewer/2022110404/56649e8e5503460f94b91648/html5/thumbnails/6.jpg)
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](https://reader038.vdocuments.net/reader038/viewer/2022110404/56649e8e5503460f94b91648/html5/thumbnails/7.jpg)
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](https://reader038.vdocuments.net/reader038/viewer/2022110404/56649e8e5503460f94b91648/html5/thumbnails/8.jpg)
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](https://reader038.vdocuments.net/reader038/viewer/2022110404/56649e8e5503460f94b91648/html5/thumbnails/9.jpg)
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](https://reader038.vdocuments.net/reader038/viewer/2022110404/56649e8e5503460f94b91648/html5/thumbnails/10.jpg)
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](https://reader038.vdocuments.net/reader038/viewer/2022110404/56649e8e5503460f94b91648/html5/thumbnails/11.jpg)
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](https://reader038.vdocuments.net/reader038/viewer/2022110404/56649e8e5503460f94b91648/html5/thumbnails/12.jpg)
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](https://reader038.vdocuments.net/reader038/viewer/2022110404/56649e8e5503460f94b91648/html5/thumbnails/13.jpg)
✗
√
✗
√
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](https://reader038.vdocuments.net/reader038/viewer/2022110404/56649e8e5503460f94b91648/html5/thumbnails/14.jpg)
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](https://reader038.vdocuments.net/reader038/viewer/2022110404/56649e8e5503460f94b91648/html5/thumbnails/15.jpg)
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](https://reader038.vdocuments.net/reader038/viewer/2022110404/56649e8e5503460f94b91648/html5/thumbnails/16.jpg)
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](https://reader038.vdocuments.net/reader038/viewer/2022110404/56649e8e5503460f94b91648/html5/thumbnails/17.jpg)
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](https://reader038.vdocuments.net/reader038/viewer/2022110404/56649e8e5503460f94b91648/html5/thumbnails/18.jpg)
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](https://reader038.vdocuments.net/reader038/viewer/2022110404/56649e8e5503460f94b91648/html5/thumbnails/19.jpg)
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](https://reader038.vdocuments.net/reader038/viewer/2022110404/56649e8e5503460f94b91648/html5/thumbnails/20.jpg)
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](https://reader038.vdocuments.net/reader038/viewer/2022110404/56649e8e5503460f94b91648/html5/thumbnails/21.jpg)
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](https://reader038.vdocuments.net/reader038/viewer/2022110404/56649e8e5503460f94b91648/html5/thumbnails/22.jpg)
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](https://reader038.vdocuments.net/reader038/viewer/2022110404/56649e8e5503460f94b91648/html5/thumbnails/23.jpg)
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](https://reader038.vdocuments.net/reader038/viewer/2022110404/56649e8e5503460f94b91648/html5/thumbnails/24.jpg)
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](https://reader038.vdocuments.net/reader038/viewer/2022110404/56649e8e5503460f94b91648/html5/thumbnails/25.jpg)
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](https://reader038.vdocuments.net/reader038/viewer/2022110404/56649e8e5503460f94b91648/html5/thumbnails/26.jpg)
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](https://reader038.vdocuments.net/reader038/viewer/2022110404/56649e8e5503460f94b91648/html5/thumbnails/27.jpg)
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](https://reader038.vdocuments.net/reader038/viewer/2022110404/56649e8e5503460f94b91648/html5/thumbnails/28.jpg)
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](https://reader038.vdocuments.net/reader038/viewer/2022110404/56649e8e5503460f94b91648/html5/thumbnails/29.jpg)
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](https://reader038.vdocuments.net/reader038/viewer/2022110404/56649e8e5503460f94b91648/html5/thumbnails/30.jpg)
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](https://reader038.vdocuments.net/reader038/viewer/2022110404/56649e8e5503460f94b91648/html5/thumbnails/31.jpg)
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](https://reader038.vdocuments.net/reader038/viewer/2022110404/56649e8e5503460f94b91648/html5/thumbnails/32.jpg)
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](https://reader038.vdocuments.net/reader038/viewer/2022110404/56649e8e5503460f94b91648/html5/thumbnails/33.jpg)
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](https://reader038.vdocuments.net/reader038/viewer/2022110404/56649e8e5503460f94b91648/html5/thumbnails/34.jpg)
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](https://reader038.vdocuments.net/reader038/viewer/2022110404/56649e8e5503460f94b91648/html5/thumbnails/35.jpg)
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](https://reader038.vdocuments.net/reader038/viewer/2022110404/56649e8e5503460f94b91648/html5/thumbnails/36.jpg)
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](https://reader038.vdocuments.net/reader038/viewer/2022110404/56649e8e5503460f94b91648/html5/thumbnails/37.jpg)
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](https://reader038.vdocuments.net/reader038/viewer/2022110404/56649e8e5503460f94b91648/html5/thumbnails/38.jpg)
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](https://reader038.vdocuments.net/reader038/viewer/2022110404/56649e8e5503460f94b91648/html5/thumbnails/39.jpg)
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](https://reader038.vdocuments.net/reader038/viewer/2022110404/56649e8e5503460f94b91648/html5/thumbnails/40.jpg)
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](https://reader038.vdocuments.net/reader038/viewer/2022110404/56649e8e5503460f94b91648/html5/thumbnails/41.jpg)
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](https://reader038.vdocuments.net/reader038/viewer/2022110404/56649e8e5503460f94b91648/html5/thumbnails/42.jpg)
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](https://reader038.vdocuments.net/reader038/viewer/2022110404/56649e8e5503460f94b91648/html5/thumbnails/43.jpg)
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](https://reader038.vdocuments.net/reader038/viewer/2022110404/56649e8e5503460f94b91648/html5/thumbnails/44.jpg)
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](https://reader038.vdocuments.net/reader038/viewer/2022110404/56649e8e5503460f94b91648/html5/thumbnails/45.jpg)
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](https://reader038.vdocuments.net/reader038/viewer/2022110404/56649e8e5503460f94b91648/html5/thumbnails/46.jpg)
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