Toward ¡General-‑Purpose ¡ Code ¡Accelera4on ¡with ¡ Analog ¡Computa4on ¡ Amir ¡Yazdanbakhsh o ¡ ¡ ¡ ¡ ¡ Renee ¡St. ¡Amant + ¡ Bradley ¡Thwaites o ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡Jongse ¡Park o ¡ Hadi ¡Esmaeilzadeh o ¡ ¡ ¡ ¡ ¡ ¡ ¡Arjang ¡Hassibi + ¡ Luis ¡Ceze * ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡Doug ¡Burger ζ ¡ O ¡ Georgia ¡Ins4tute ¡of ¡Technology ¡ + ¡ The ¡University ¡of ¡Texas ¡at ¡Aus4n ¡ * ¡ University ¡of ¡Washington ¡ ζ ¡ MicrosoR ¡Research ¡
Approximate ¡Compu4ng ¡(Hardware) ¡ Truffle ¡ [ASPLOS ¡2012] ¡ Probabilis4c ¡CMOS ¡ [Rice, ¡Georgia ¡Tech] ¡ Stochas4c ¡processors ¡ [Illinois] ¡ Flikker ¡ [ASPLOS ¡2011] ¡ ¡ Execute ¡approximable ¡region(s) ¡of ¡the ¡code ¡on ¡ the ¡‘Analog’ ¡circuit. ¡ ¡
Neural ¡algorithmic ¡transforma4on ¡ Analog ¡ ¡ Algorithmic ¡ Neural ¡ Transforma4on ¡ Model ¡ A-‑NPU ¡ Analog ¡Neural ¡ Core ¡ Processing ¡Unit ¡ 3 ¡
Programming ¡Model ¡ float ¡grad ¡[[candidate]] ¡(float[3][3] ¡p) ¡ { ¡ ¡ ¡… ¡ } ¡ void ¡edgeDetection( ¡ ¡Image ¡&src, ¡Image ¡&dst) ¡{ ¡ ¡ ¡ ¡ edgeDetection ¡ ¡grayscale(src); ¡ ¡ ¡for ¡( int ¡y ¡= ¡…) ¡ ¡ ¡ for ¡( int ¡x ¡= ¡…) ¡{ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡dst[x][y] ¡= ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ grad (window(src, ¡x, ¡y)); ¡ ¡ ¡ ¡ ¡ ¡} ¡ ¡} ¡ 4 ¡
Neuron ¡and ¡its ¡Conceptual ¡Analog ¡ Circuit ¡ x 0 x i x n … … x 0 x i x n DAC DAC DAC … … I ( x 0 ) I ( x i ) I ( x n ) w n w 0 w i R ( w 0 ) R ( w i ) R ( w n ) X ( x i w i ) V to I V to I V to I X ( I ( x i ) R ( w i )) ADC X X y = sigmoid( ( x i w i )) y ≈ sigmoid( ( I ( x i ) R ( w i )))
A ¡Single ¡Analog ¡Neuron ¡ s w 0 s x 0 s w n s x n w 0 x 0 w n x n Current' Current' Steering' Steering' DAC DAC … I ( | x 0 | ) I ( | x n | ) Resistor' Resistor' R ( | w 0 | ) R ( | w n | ) Ladder Ladder V ( | w 0 x 0 | ) V ( | w n x n | ) Diff' Diff' Pair Pair I + ( w 0 x 0 ) I + ( w n x n ) I − ( w n x n ) I − ( w 0 x 0 ) s y + Flash + Diff' ADC Amp y - ; V + ⇣X ⌘ V − ⇣X ⌘ w i x i w i x i ⇣ ⇣X ⌘⌘ y ≈ sigmoid V w i x i
Mixed-‑signal ¡neural ¡accelerator ¡(A-‑NPU) ¡ Config'FIFO Input'FIFO Row'Selector Weight'Buffer Weight'Buffer Weight'Buffer Weight'Buffer … 8"Wide 8"Wide 8"Wide 8"Wide Analog- Analog- Analog- Analog- Neuron Neuron Neuron Neuron Column'Selector Output'FIFO
Speedup ¡with ¡A-‑NPU ¡ 24.5 48.0 14.0 14.1 10.9 14.9 10 Core*+*DENPU Core*+*AENPU 7.9 Core*+*Ideal*NPU 8 Applica'on*Speedup 6.2 6 5.4 3.7 3.6 4 3.1 2.5 2.4 2.3 1.9 1.8 1.6 2 1.5 1.3 1.2 1.1 0.8 0.5 0 blackscholes = inversek2j jmeint jpeg kmeans sobel geomean ~1.5x ¡ ¡average ¡speedup ¡over ¡D-‑NPU ¡ Up ¡to ¡24.5x ¡speedup ¡over ¡all-‑CPU ¡execu4on ¡ ¡ 8.5 8.5 1.8
Energy ¡saving ¡with ¡A-‑NPU ¡ 42.5 51.2 52.5 25.8 30.0 31.4 17.8 18.8 10 Core*+*DENPU Core*+*AENPU Core*+*Ideal*NPU 8 Applica'on*Energy*Reduc'on 7.3 6.5 6.3 6 5.1 4 2.8 2.8 2.7 2.3 2.3 2.2 1.7 1.7 1.6 2 1.3 1.3 1.1 0 blackscholes = inversek2j jmeint jpeg kmeans sobel geomean 6.3x ¡average ¡energy ¡reduc4on ¡ 48.0 24.5 Very ¡close ¡to ¡the ¡ideal ¡NPU ¡ ¡ 2.4 0.8 8.5 3.3 2.5 2.4
Applica4on ¡quality ¡degrada4on ¡ 100% Floa'ng*Point*DENPU AENPU*+*Ideal*Sigmoid AENPU 80% Quality*degrada'on 60% 40% 20% 0% blackscholes = inversek2j jmeint jpeg kmeans sobel geomean Quality ¡loss ¡in ¡all ¡but ¡one ¡applica4on ¡is ¡less ¡than ¡10% ¡ Customized ¡quality ¡metric ¡for ¡each ¡applica4on ¡
Recommend
More recommend