ACCEPT: We Built an Open-Source Approximation Compiler Framework - - PowerPoint PPT Presentation

accept
SMART_READER_LITE
LIVE PREVIEW

ACCEPT: We Built an Open-Source Approximation Compiler Framework - - PowerPoint PPT Presentation

ACCEPT: We Built an Open-Source Approximation Compiler Framework So You Don't Have To Adrian Sampson Andr Baixo Benjamin Ransford Thierry Moreau Joshua Yip Luis Ceze Mark Oskin sa pa University of Washington http:// accept.rocks


slide-1
SLIDE 1

sa pa

University of Washington Adrian Sampson André Baixo Benjamin Ransford Thierry Moreau Joshua Yip Luis Ceze Mark Oskin

ACCEPT:

We Built an Open-Source Approximation Compiler Framework So You Don't Have To

slide-2
SLIDE 2

sa pa

University of Washington Adrian Sampson André Baixo Benjamin Ransford Thierry Moreau Joshua Yip Luis Ceze Mark Oskin

http://accept.rocks

slide-3
SLIDE 3

Great approximation idea Publish paper! Actual implementation

slide-4
SLIDE 4

The boring stuff.

slide-5
SLIDE 5

Annotation language Programmer feedback Coarse region inference Auto-tuning & Pareto frontier collection Benchmarks

slide-6
SLIDE 6

ACCEPT, an open-source framework for approximate computing

slide-7
SLIDE 7

ACCEPT: features & benefits!

Based

  • n LLVM!

Undergrad approved! Permissive license! Includes benchmarks & metrics! Actually has docs!

slide-8
SLIDE 8

for (int k = k1; k < k2; k++) { APPROX float distance = dist(points->p[k], points->p[0]); ... }

EnerJ type qualifiers for the Clang compiler

slide-9
SLIDE 9

Optimization feedback loop

$ accept log loop at streamcluster.cpp:651 can offload to NPU $

for (int k = k1; k < k2; k++) { APPROX float distance = dist(points->p[k], points->p[0]); ... }

analysis library finds coarse-grain, safe-to-approximate regions client optimizations use analysis to relax approximable code reports tell developers where annotations are preventing optimization

slide-10
SLIDE 10

Optimization feedback loop

loop at streamcluster.cpp:651 blockers: 1 * streamcluster.cpp:652: store to myhiz APPROX float myhiz; loop at streamcluster.cpp:651 can perforate loop

slide-11
SLIDE 11

Region analysis

fine, data-centric annotations coarse, code-centric annotations

slide-12
SLIDE 12

Neural acceleration

  • n a commercial FPGA
slide-13
SLIDE 13

Finding coarse approximate regions

dominator post-dominator

slide-14
SLIDE 14

Annotated Program

Candidate Candidate Candidate Candidate Candidate Candidate

Performance Output Quality

Auto-tuning for optimal trade-offs

slide-15
SLIDE 15

Annotated Program

Candidate Candidate Candidate Candidate Candidate Candidate

Performance Output Quality

Auto-tuning for optimal trade-offs

slide-16
SLIDE 16

Auto-tuning for optimal trade-offs

General search heuristic based on a bin-packing approximation algorithm Automatically separate
 training & testing inputs Collect Pareto-optimal configurations

slide-17
SLIDE 17

Use ACCEPT to avoid reinventing

Program annotations Tools to help you annotate A benchmark suite Quality-aware auto-tuning Coarse-grained region identification

slide-18
SLIDE 18

Next steps

Integration with system simulators Extensible auto-tuning strategy Online monitoring Profile-driven optimizations Your optimization here?

slide-19
SLIDE 19

http://accept.rocks