Ungefärlig beräkning
Approximate computing är ett framväxande paradigm för energieffektiv och/eller högpresterande design. Den innehåller en uppsjö av beräkningstekniker som returnerar ett möjligen felaktigt resultat snarare än ett garanterat korrekt resultat, och som kan användas för applikationer där ett ungefärligt resultat är tillräckligt för dess syfte. Ett exempel på en sådan situation är för en sökmotor där det inte finns något exakt svar för en viss sökfråga och därför kan många svar vara acceptabla. På samma sätt kan enstaka släpp av vissa bildrutor i en videoapplikation gå oupptäckt på grund av perceptuella begränsningar hos människor. Ungefärlig beräkning är baserad på observationen att i många scenarier, även om att utföra exakta beräkningar kräver stora mängder resurser, kan tillåtande av gränsad approximation ge oproportionerliga vinster i prestanda och energi, samtidigt som man uppnår acceptabel resultatnoggrannhet. [ förtydligande behövs ] Till exempel, i k -betyder klustringsalgoritm , kan endast 5 % förlust av klassificeringsnoggrannhet ge 50 gånger energibesparing jämfört med den helt korrekta klassificeringen.
Nyckelkravet vid approximativ beräkning är att approximation endast kan införas i icke-kritiska data, eftersom approximering av kritiska data (t.ex. kontrolloperationer) kan leda till katastrofala konsekvenser, såsom programkrasch eller felaktig utdata.
Strategier
Flera strategier kan användas för att utföra ungefärlig beräkning.
- Ungefärliga kretsar
- Ungefärliga aritmetiska kretsar: adderare , multiplikatorer och andra logiska kretsar kan minska hårdvarukostnader. Till exempel kan en ungefärlig multi-bit adderare ignorera bärkedjan och sålunda tillåta alla dess subadders att utföra additionsoperationer parallellt.
- Ungefärlig lagring och minne
- Istället för att lagra datavärden exakt kan de lagras ungefär, t.ex. genom att trunkera de lägre bitarna i flyttalsdata . En annan metod är att acceptera mindre tillförlitligt minne. För detta, i DRAM och eDRAM , kan uppdateringsfrekvenstilldelningar sänkas eller kontrolleras. I SRAM kan matningsspänningen sänkas eller styras. Ungefärlig lagring kan användas för att minska MRAM: s höga skrivenergiförbrukning. I allmänhet bör alla feldetekterings- och korrigeringsmekanismer inaktiveras.
- Approximation på mjukvarunivå
- Det finns flera sätt att approximera på mjukvarunivå. Memoisering kan tillämpas. Vissa iterationer av slingor kan hoppas över (benämns loopperforering ) för att uppnå ett resultat snabbare. Vissa uppgifter kan också hoppas över, till exempel när ett körtidsvillkor tyder på att dessa uppgifter inte kommer att vara användbara ( uppgift hoppar över) . Monte Carlo-algoritmer och randomiserade algoritmer handlar om korrekthet för garantier för körningstid. Beräkningen kan omformuleras enligt paradigm som enkelt tillåter acceleration på specialiserad hårdvara, t.ex. en neural bearbetningsenhet.
- Ungefärligt system
- I ett approximativt system approximeras olika delsystem av systemet såsom processor, minne, sensor och kommunikationsmoduler synergistiskt för att erhålla en mycket bättre systemnivå QE-avvägningskurva jämfört med individuella approximationer för vart och ett av undersystemen.
Användningsområden
Ungefärlig datoranvändning har använts i en mängd olika domäner där applikationerna är feltoleranta, såsom multimediabehandling , maskininlärning , signalbehandling , vetenskaplig beräkning . Därför drivs ungefärlig beräkning mestadels av applikationer som är relaterade till mänsklig perception/kognition och har inneboende felresiliens. Många av dessa applikationer är baserade på statistisk eller probabilistisk beräkning, till exempel olika approximationer kan göras för att bättre passa de önskade målen. En anmärkningsvärd applikation inom maskininlärning är att Google använder detta tillvägagångssätt i sina Tensor-processorenheter (TPU, en anpassad ASIC).
Härledda paradigm
Huvudfrågan vid approximativ beräkning är identifieringen av den del av applikationen som kan approximeras. När det gäller storskaliga applikationer är det mycket vanligt att personer som har expertis på ungefärliga beräkningstekniker inte har tillräcklig expertis på applikationsdomänen (och vice versa). För att lösa detta problem har programmeringsparadigm föreslagits. De har alla gemensamt den tydliga rolluppdelningen mellan applikationsprogrammerare och applikationsdomänexpert . Dessa tillvägagångssätt möjliggör spridning av de vanligaste optimeringarna och ungefärliga beräkningsteknikerna.