programming abstractions for approximate computing

35
Programming Abstractions for Approximate Computing Michael Carbin with Sasa Misailovic, Hank Hoffmann, Deokhwan Kim, Stelios Sidiroglou, Martin Rinard

Upload: tehya

Post on 21-Jan-2016

72 views

Category:

Documents


0 download

DESCRIPTION

Programming Abstractions for Approximate Computing. Michael Carbin with Sasa Misailovic , Hank Hoffmann , Deokhwan Kim, Stelios Sidiroglou , Martin Rinard MIT. Challenges for Programming. Expression (specifying approximations) Reasoning (verifying resulting program) - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Programming Abstractions for Approximate Computing

Programming Abstractions for Approximate Computing

Michael Carbin

with Sasa Misailovic, Hank Hoffmann, Deokhwan Kim, Stelios Sidiroglou, Martin

Rinard

MIT

Page 2: Programming Abstractions for Approximate Computing

Challenges for Programming

• Expression (specifying approximations)

• Reasoning (verifying resulting program)

• Debugging (reproducing failures)

• Deployment (changes in assumptions)

Page 3: Programming Abstractions for Approximate Computing

Challenges for Programming

• Expression (specifying approximations)

• Reasoning (verifying resulting program)

• Debugging (reproducing failures)

• Deployment (changes in assumptions)

Page 4: Programming Abstractions for Approximate Computing

Fundamental Questions

• Scope• What do we approximate and how?

• Specifications of “Correctness” • What is correctness?

• Reasoning• How do we reason about correctness?

Page 5: Programming Abstractions for Approximate Computing

What do we approximate?

• Domains have inherent uncertainty

• Execution time dominated by a fraction of code

Benchmark

Domain LOC LOC (Kernel)

Time in Kernel (%)

sor numerical 173 23 82.30%

blackscholes

finance 494 88 65.11%

dctimage processing

532 62 99.20%

idct 532 93 98.86%

scale 218 88 93.43%

[Misailovic, Carbin, Achour, Qi, Rinard MIT-TR 14]

Page 6: Programming Abstractions for Approximate Computing

Approximation Transformations

• Approximate HardwarePCMOS, Palem et al. 2005; Narayanan et al., DATE ’10; Liu et al. ASPLOS ’11; Sampson et al, PLDI ’11; Esmaeilzadeh et al. , ASPLOS ’12, MICRO’ 12

• Function SubstitutionHoffman et al., APLOS ’11; Ansel et al., CGO ’11; Zhu et al., POPL ‘12

• Approximate MemoizationAlvarez et al., IEEE TOC ’05; Chaudhuri et al., FSE ’12; Samadi et al., ASPLOS ’14

• Relaxed Synchronization (Lock Elision)Renganarayana et al., RACES ’12; Rinard, HotPar ‘13; Misailovic, et al., RACES ’12

• Code PerforationRinard, ICS ‘06; Baek et al., PLDI 10; Misailovic et al., ICSE ’10; Sidiroglou et al., FSE ‘11; Misailovic et al., SAS ‘11; Zhu et al., POPL ‘12; Carbin et al. PEPM ’13;

Page 7: Programming Abstractions for Approximate Computing

float sum = 0;for (int i = 0; i < n; i += 1) { sum = sum + a[i];} float avg = sum / n;

Example: Loop Perforation

Page 8: Programming Abstractions for Approximate Computing

float sum = 0;for (int i = 0; i < n; i += 1) { sum = sum + a[i];} float avg = sum / n;float avg = (sum * 2) / n;

Example: Loop Perforation

i += 2

• Skip iterations (or truncate or random subset)

• Potentially add extrapolations to reduce bias

Page 9: Programming Abstractions for Approximate Computing

TraditionalTransformation

.c .c

What is correctness?

Page 10: Programming Abstractions for Approximate Computing

ApproximateTransformation

.c .c

What is correctness?

Page 11: Programming Abstractions for Approximate Computing

What is correctness?

• Safety: satisfies standard unary assertions (type safety, memory safety, partial functionality)

• Accuracy: program satisfies relational assertions that constrain difference in results

Page 12: Programming Abstractions for Approximate Computing

Relational Assertions

• Contribution: program logic and verification system that supports verifying relationships between implementations

• x<o>: value of x in original implementation

• x<a>: value of x in approximate implementation

relate |x<o> - x<a>| / x<o> <= .1;

[Carbin, Kim, Misailovic, Rinard PLDI’12, PEPM ‘13]

Page 13: Programming Abstractions for Approximate Computing

float sum = 0;for (int i = 0; i < n; i += 1) { sum = sum + a[i];} float avg = sum / n;float avg = (sum * 2) / n;

Example: Loop Perforation

i += 2

Page 14: Programming Abstractions for Approximate Computing

• Worst-case error:

float sum = 0;for (int i = 0; i < n; i += 1) { sum = sum + a[i];} float avg = sum / n;float avg = (sum * 2) / n;

Example: Loop Perforation

i += 2

Page 15: Programming Abstractions for Approximate Computing

Novel Safety Verification Concept

• Assume validity of assertions in original program

• Use relations to prove that approximation does not change validity of assertions

• Lower verification complexity than verifying an assertion outright

assert (safe(*p))

p<o> == p<a>

safe(*p<o>)

safe(*p<a>)

∧ ⊨

Page 16: Programming Abstractions for Approximate Computing

Specifications and Reasoning

• Worst-case (for all inputs)• Non-interference [Sampson et al., PLDI ‘11]• Assertions [Carbin et al., PLDI ‘12; PEPM ‘13]• Accuracy [Carbin et al., PLDI ‘12]

• Statistical (with some probability)• Assertions [Sampson et al., PLDI ‘14]• Reliability [Carbin, Misailovic, and Rinard,

OOPSLA ‘13]• Expected Error [Zhu, Misailovic et al., POPL

‘13]• Probabilistic Error Bounds [Misailovic et al.,

SAS ‘13]

Page 17: Programming Abstractions for Approximate Computing

Questions from Computer Science

Page 18: Programming Abstractions for Approximate Computing

Question #1:

“Programmers will never do this.”- Unnamed Systems and PL Researchers

Page 19: Programming Abstractions for Approximate Computing

ChallengeR

easo

nin

g

Com

ple

xit

y

Types

Partial Specifications

Full FunctionalCorrectness

Expressivity

Page 20: Programming Abstractions for Approximate Computing

ChallengeR

easo

nin

g

Com

ple

xit

y

Types

Partial Specifications

Full FunctionalCorrectness

Expressivity

• Ordering of unary assertions still true (improved by relational verification)

Page 21: Programming Abstractions for Approximate Computing

Challenge

Worst-case AccuracyReliability

Probabilistic Accuracy BoundsProbabilistic Assertions

Error DistributionsExpected Error

Reaso

nin

g

Com

ple

xit

y

Expressivity

Performance/Energy Benefit

Assertions

Page 22: Programming Abstractions for Approximate Computing

float sum = 0;for (int i = 0; i < n; i += 1) { sum = sum + a[i];} float avg = sum / n;float avg = (sum * 2) / n;

Example: Loop Perforation (Misailovic et al., SAS ‘11)

i += 2

Page 23: Programming Abstractions for Approximate Computing

• Worst-case error:

• Probabilistic Error Bound (.95):

float sum = 0;for (int i = 0; i < n; i += 1) { sum = sum + a[i];} float avg = sum / n;float avg = (sum * 2) / n;

Example: Loop Perforation (Misailovic et al., SAS ‘11)

i += 2

Page 24: Programming Abstractions for Approximate Computing

Question #2:

“There’s no hope for building approximate hardware.”- Unnamed Computer Architect

Page 25: Programming Abstractions for Approximate Computing

Challenge

• Approx. PL community must work with hardware community to collaborate on models (not the PL community’s expertise)

• Approx. hardware community faces major challenge in publishing deep architectural changes: simulation widely panned

• Moving forward may require large joint effort

Page 26: Programming Abstractions for Approximate Computing

Question #3:

“I believe your techniques are fundamentally flawed.”- Unnamed Numerical Analyst

Page 27: Programming Abstractions for Approximate Computing

Challenge

• Numerical analysts have been wronged• Programming systems have failed to

provide support for making the statements they desire

• Approximate computing community risks repeating work done by numerical analysis• Opportunity for collaboration

• New research opportunities• It’s no longer just about floating-point

Page 28: Programming Abstractions for Approximate Computing

Broadly Accessible Motivations• Programming with uncertainty

(uncertain operations and data)

• Programming unrealizable computation (large scale numerical simulations)

• Useful computation from non-digital fabrics(analog, quantum, biological, and human)Opportunity to build reliable and

resilient computing systems built upon

anything

Page 29: Programming Abstractions for Approximate Computing

End

Page 30: Programming Abstractions for Approximate Computing

Conclusion

• Adoption hinges on tradeoff between expressivity, complexity and benefit

• Opportunity/necessity for tighter integration of PL and hardware communities

Page 31: Programming Abstractions for Approximate Computing

Open Challenges and Directions

Problem: benefits (performance/energy) may vary between different types of guarantees

Worst-case Accuracy

Reliability

Probabilistic Accuracy Bounds

Probabilistic Assertions

Error DistributionsExpected AccuracyReaso

nin

g

Com

ple

xit

y

Expressivity

Page 32: Programming Abstractions for Approximate Computing

Open Challenges and Directions

Expressivity and Reasoning Complexity

Type Checking

Partial Specifications

Full FunctionalCorrectness

Page 33: Programming Abstractions for Approximate Computing

Experimental Results

Benchmark LOC LOC (Kernel) Time in Kernel(%)

sor 23 173 82.30%

blackscholes 88 494 65.11%

dct 62 532 99.20%

idct 93 532 98.86%

scale 88 218 93.43%

Page 34: Programming Abstractions for Approximate Computing
Page 35: Programming Abstractions for Approximate Computing

Open Challenges Directions

• Traditional Tradeoff

Reasoning Complexity

Performance/Energy

Type Checking

Partial Specifications

Dynamic Analysis

Full FunctionalCorrectness