Programming Abstractions for Approximate Computing Michael Carbin with

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

Challenges for Programming • Expression (specifying approximations) • Reasoning (verifying resulting program) • Debugging (reproducing failures) • Deployment (changes in assumptions)

Challenges for Programming • Expression (specifying approximations) • Reasoning (verifying resulting program) • Debugging (reproducing failures) • Deployment (changes in assumptions)

Fundamental Questions • Scope • What do we approximate and how? • Specifications of “Correctness” • What is correctness? • Reasoning • How do we reason about correctness?
![[Misailovic, Carbin, Achour, Qi, Rinard MIT-TR 14] What do we approximate? • Domains have [Misailovic, Carbin, Achour, Qi, Rinard MIT-TR 14] What do we approximate? • Domains have](http://slidetodoc.com/presentation_image/9b8cef0117b190303751da1f8fafe1f9/image-5.jpg)
[Misailovic, Carbin, Achour, Qi, Rinard MIT-TR 14] What do we approximate? • Domains have inherent uncertainty Benchmark Domain LOC (Kernel) Time in Kernel (%) sor numerical 173 23 82. 30% blackscholes finance 494 88 65. 11% dct 532 62 99. 20% 532 93 98. 86% 218 88 93. 43% idct scale image processing • Execution time dominated by a fraction of code

• Approximation Transformations Approximate Hardware PCMOS, 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 Substitution Hoffman et al. , APLOS ’ 11; Ansel et al. , CGO ’ 11; Zhu et al. , POPL ‘ 12 • Approximate Memoization Alvarez 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, Hot. Par ‘ 13; Misailovic, et al. , RACES ’ 12 • Code Perforation Rinard, ICS ‘ 06; Baek et al. , PLDI 10; Misailovic et al. , ICSE ’ 10;

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

Example: Loop Perforation float sum = 0; for (int i = 0; i < n; i += 1) { sum = sum + a[i]; i += 2 } float avg = sum / n; float avg = (sum * 2) / n; • Skip iterations (or truncate or random subset) • Potentially add extrapolations to reduce bias

What is correctness? . c Traditional Transformation ≡

What is correctness? . c Approximate Transformation

What is correctness? • Safety: satisfies standard unary assertions (type safety, memory safety, partial functionality) • Accuracy: program satisfies relational assertions that constrain difference in results

Relational Assertions • Contribution: program logic and verification system that supports verifying relationships between implementations relate |x<o> - x<a>| / x<o> <=. 1; • x<o>: value of x in original implementation • x<a>: value of x in approximate implementation [Carbin, Kim, Misailovic, Rinard PLDI’ 12, PEP

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

Example: Loop Perforation float sum = 0; for (int i = 0; i < n; i += 1) { sum = sum + a[i]; i += 2 } float avg = sum / n; float avg = (sum * 2) / n; • Worst-case error:

Novel Safety Verification Concept • Assume validity of assertions in original program • Use relations to prove that approximation does not change validity of assertions p<o> == p<a> ∧ safe(*p<o>) safe(*p<a>) assert (safe(*p)) • Lower verification complexity than verifying an assertion outright

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]

Questions from Computer Science

Question #1: “Programmers will never do this. ” - Unnamed Systems and PL Researchers

Reasoning Complexity Challenge Partial Specifications Types Expressivity Full Functional Correctness

Reasoning Complexity Challenge Partial Specifications Full Functional Correctness Types Expressivity • Ordering of unary assertions still true (improved by relational verification)

Challenge Probabilistic Accuracy Bounds. Probabilistic Assertions Reliability Worst-case Accuracy Reasoning Complexity Assertions Expected Error Expressivity Performance/Energy Benefit Error Distributions

Example: Loop Perforation (Misailovic et al. , SAS ‘ 11) float sum = 0; for (int i = 0; i < n; i += 1) { sum = sum + a[i]; i += 2 } float avg = sum / n; float avg = (sum * 2) / n;

Example: Loop Perforation (Misailovic et al. , SAS ‘ 11) float sum = 0; for (int i = 0; i < n; i += 1) { sum = sum + a[i]; i += 2 } float avg = sum / n; float avg = (sum * 2) / n; • Worst-case error: • Probabilistic Error Bound (. 95):

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

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

Question #3: “I believe your techniques are fundamentally flawed. ” - Unnamed Numerical Analyst

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

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

End

Conclusion • Adoption hinges on tradeoff between expressivity, complexity and benefit • Opportunity/necessity for tighter integration of PL and hardware communities

Open Challenges and Directions Reasoning Complexity Probabilistic Accuracy Bounds Worst-case Accuracy Probabilistic Assertions Reliability Expected Accuracy Error Distributions Expressivity Problem: benefits (performance/energy) may vary between different types of guarantees

Open Challenges and Directions Expressivity and Reasoning Complexity Type Checking Partial Specifications Full Functional Correctness

Experimental Results Benchmark 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%


Open Challenges Directions • Traditional Tradeoff Dynamic Analysis Type Checking Partial Specifications Full Functional Correctness Performance/Energy Reasoning Complexity
- Slides: 35