Accuracy-Aware Program Transformations

Report
Accuracy-Aware
Program Transformations
Sasa Misailovic
MIT CSAIL
Collaborators
Martin Rinard, Michael Carbin,
Stelios Sidiroglou, Henry Hoffmann,
Deokhwan Kim, Fan Long, Daniel Roy,
Zeyuan Allen Zhu, Michael Kling,
Jonathan Kelner, Anant Agarwal
Trade Accuracy
for Energy and Performance
[Rinard ICS’06, OOPSLA’07; Misailovic, Sidiroglou, Hoffmann, Rinard ICSE’10; Carbin, Rinard, ISSTA’10; Hoffmann, Sidiroglou,
Carbin, Misailovic, Agarwal, Rinard ASPLOS’11; Sidiroglou, Misailovic, Hoffmann, Rinard FSE’11; Misailovic, Roy, Rinard, SAS‘11;
Zhu, Misailovic, Kelner, Rinard POPL’12; Carbin, Kim, Misailovic, Rinard PLDI’12; Misailovic, Sidiroglou, Rinard, RACES‘12;
Misailovic, Kim, Rinard TECS PEC’13; Carbin, Kim, Misailovic, Rinard PEPM’13; Carbin, Misailovic, Rinard, OOPSLA ‘13; …]
Harness Approximate Computing
How to systematically generate
approximate programs? Automated Transformations
How to predict accuracy of the results of
approximate programs? Probabilistic Reasoning
How to find the most profitable
approximate programs? Explicit Search and
Mathematical Optimization
Transformations
Do less work
• Loop perforation
for (i = 0; i < n; i += 2) { … }
• Sampling, Task skipping
Do different kind of work
• Randomized substitution r = f_0(x)  f_1(x);
Exploit Execution Environment
r = var +. 2;
• Unreliable operation placement
• Unreliable memory regions, Lock elision
Where and when should we
apply the transformations?
What are the benefits and costs?
for (i = 0; i < n; i++) { … }
for (i = 0; i < n; i += 2) { … }
Optimization Framework
• Find Candidates
for Transformation
• Analyze Effects of the
Transformations
• Navigate Tradeoff Space
c
cc
[Misailovic, Sidiroglou, Hoffmann, Rinard ICSE’10; Hoffmann, Sidiroglou, Carbin, Misailovic,
Agarwal, Rinard ASPLOS’11; Sidiroglou, Misailovic, Hoffmann, Rinard FSE’11]
Explicit Search Algorithm for Perforation
Find Transformation Candidates:
• Profile program to find time-consuming for loops
Analyze the Effects of Transformation:
• Performance: Compare execution times
• Accuracy: Compare the quality of the results
• Safety: memory safety, well formed output
Navigate Tradeoff Space:
• Combine multiple perforatable loops
Prioritize loops by their individual performance and accuracy
Greedy or Exhaustive Search with Pruning
Mean Normalized Time
x264 Cumulative Loop Scores
Accuracy loss (%)
Computational Kernels:
Several perforatable computations
execute for the majority of the time
# Perforatable
Loops
% Time
X264
14
> 60%
Bodytrack
8
> 75%
Swaptions
4
> 99%
Ferret
2
> 40%
Blackscholes
1
> 98%
Canneal
1
> 5%
Streamcluster
1
> 98%
Benchmark
Computational
patterns:
• Distance metrics
• Data Statistics
• Iteration steps
• Monte-Carlo
Next Step: Analyses with Guarantees
Accuracy analysis: Results valid for a whole
range of inputs, not just those used in testing
Navigation: Explore the space of transformed
programs to find those with optimal tradeoffs
Accuracy Analysis:
Probabilistic Reasoning
For approximate program configuration 
  − ′ () >  < 
[Misailovic, Roy, Rinard SAS ’11; Zhu, Misailovic, Kelner, Rinard POPL ’12;
Misailovic, Sidiroglou, Rinard, RACES ‘12, Misailovic, Kim, Rinard TECS PEC ’13,
Carbin, Misailovic, Rinard, OOPSLA ’13, Misailovic, Rinard WACAS ‘14,
Misailovic, Carbin, Achour, Qi, Rinard MIT-TR ‘14]
[Zhu, Misailovic, Kelner, Rinard POPL 2012; Misailovic, Rinard WACAS 2014]
Optimization of Map-Fold Computations
outList = Map (
Func(x),
inputList
)
Accuracy Requirement:
∀ ∈ outList
  − ′ >  < 
Func0: (0,T0)
Func1: (1,T1)
Func2: (2,T2)
[Zhu, Misailovic, Kelner, Rinard POPL 2012; Misailovic, Rinard WACAS 2014]
Optimization of Map-Fold Computations
Func0: (0,T0)
Func1: (1,T1)
Func2: (2,T2)
Configuration: 0 , 1 , 2
Probability to execute each version of Func
Range:  ∈ 0,1 ,
Sum:
0 + 1 + 2 = 1
outList = Map(
Func0(x)
Func1(x)

′
Func2(x) ,
inputList
)


Accuracy Loss Constraint:
0 Δ0 + 1 Δ1 + 2 Δ2 ≤ 
Goal:
 0 0 + 1 1 + 2 2
Linear + Dynamic programming
[Misailovic, Carbin, Achour, Qi, Rinard MIT-TR 14]
Chisel: Automatic Generation of
Approximate Rely Programs
Developer’s reliability
specification
float<0.99*R(x)>
f(float in unrel x) {
y = g(x) +. h(x);
return y *. y;
}
Variable and
Operation
Annotations
[Misailovic, Carbin, Achour, Qi, Rinard MIT-TR 14]
Chisel: Automatic Generation of
Approximate Rely Programs
Developer’s
specification
float<0.99*R(x)>
f(float x ) {
ℓ
y = g(x) +
return y *
}
ℓ
ℓ
Configuration: ℓ0 , ℓ1 , ℓ2
Unreliable variable or unreliable operation
Range: ℓ ∈ 0,1
h(x);
Reliability Constraint:
ℓ0 log  + ℓ1 log + + ℓ2 log ∗ ≥ log 0.99
y;
Goal:
 ℓ0  + ℓ1 + + ℓ2 ∗
Integer Linear Programming
Navigate Search Space:
Mathematical Optimization
Find configuration  = ( , … ,  )
 Performance()

s. t.  Res − Res ′ () >  < 
[Zhu, Misailovic, Kelner, Rinard POPL ’12; Misailovic, Rinard WACAS ‘14
Misailovic, Carbin, Achour, Qi, Rinard, MIT-TR ‘14]
Looking Forward
Fully Exploit Optimization Opportunities:
both application- and hardware-level transformations
Reasoning About Uncertainty:
• logic-based techniques
• probabilistic techniques
• empirical techniques
Practical Aspects: provide intuition and control
for developers and domain experts
Takeaway
Accuracy-aware transformations
• Improve performance
• Reduce energy consumption
• Facilitate dynamic adaptation
and software specialization
Program analysis and search
can help find profitable, safe,
and predictable tradeoffs
Takeaway
Accuracy-aware transformations
• Improve performance
• Reduce energy consumption
• Facilitate dynamic adaptation
and software specialization
Program analysis and search
can help find profitable, safe,
and predictable tradeoffs

similar documents