Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie

Door , , 96 reacties
Submitter: storeman

Onderzoekers hebben een nieuw type chip ontwikkeld die rekennauwkeurigheid inlevert voor een aanzienlijk lager energieverbruik. De chip is vooral geschikt voor taken waarbij een kleine hoeveelheid fouten geen probleem vormt.

Normaal werken chips op een relatief hoog voltage om te voorkomen dat ruis van een nul een één maakt, of omgekeerd. Er is echter exponentieel meer energie nodig voor het verhogen van de correctheid van de uitkomsten van de berekeningen, waardoor het in bepaalde gevallen aantrekkelijk is om een chip te maken die de meeste antwoorden niet exact berekent.

Krishna PalemVolgens de onderzoekers, onder leiding van Krishna Palem, zijn er veel applicaties denkbaar waarbij het geen probleem is dat de uitkomsten niet honderd procent kloppen. Bij het decoderen van bijvoorbeeld audio of video zorgen kleine rekenfouten niet direct voor zichtbare of hoorbare fouten. Ook bij het genereren van 'random' getallen is een maximale precisie niet noodzakelijk.

De onderzoekers zijn in staat om te bepalen wat de kans is dat een circuit het juiste antwoord oplevert. Dit maakt het mogelijk om gericht chips te ontwerpen met een bepaald energieverbruik en een bepaalde precisie. Zo kan er bijvoorbeeld voor gekozen worden om alleen de minst significante bits, zoals de 3 in het getal 21.693 met een lagere precisie uit te rekenen.

Krishna Palem gelooft dat de techniek, pcmos genaamd, binnen drie à vier jaar zijn weg kan vinden richting draagbare elektronica zoals mobiele telefoons. De onderzoekers hebben al met succes een chip ontworpen die streaming video kan decoderen en werken nu aan een cryptografieprocessor en een grafische chip.

Moderatie-faq Wijzig weergave

Reacties (96)

Zelf als je nauwkeurig moet rekenen kan dit nog hulp bieden.

Bij (iterative) lineare solvers A*x = b komt het vaak niet zo zeer aan op de nauwkeurigheid waarmee A bepaald. Dwz om x = inv(A)*b te benaderen, kom je ook in de buurt van de daadwerkelijke x, door A bij schatting te bepalen. Iteratieve solvers maken hier handig gebruik van. (En in de tijd dat matrix vector berekeningen nog met de hand gedaan werden, was dit ook al een welkome eigenschap)

Door nu meerdere van deze energie zuinge chips te combineren zou je A*x nog verder kunnen parralleseren, waarbij je x energie zuinig kunt benaderen.

Je zou dan nog een correctie met een "normale" energie ongunstige processor kunnen toepassen om de nauwkeurigheid van x verder te vergroten.

Kortom in een goed geparrallesisseerbare omgeving zou je deze onnauwkeurige maar energieguntige stukjes zand nog steeds kunnen gebruiken om toch uiteindelijk tot een nauwkeurig resultaat te komen.

(Hetzelfde geldt echter voor het gebruik van GPU's waarbij de memory controle achterwege blijft en waarbij een extra slag door de CPU eigenlijk gewenst is om je gevonden resultaat te verififieren, of verder te verfijnen.)
Als ze dat zouden doen en op de markt brengen, dan wordt je toch echt heel erg verdrietig? Het is nou juist de taak van een processor dat hij alles uitrekend. Waarom zou hij het dan opeens fout mogen zijn?

Ik heb soms het idee dat deze generatie niets meer geeft om kwaliteit.
Ik denk dat je dat verkeerd opvat.

Een processor in een PC kan het niet permiteren lijkt mij om fouten te gaan zitten maken. Denk maar aan een Overclockte CPU op een te laag voltage waardoor je chrashes krijgt en dergelijk. Het ergste geval een BSOD / reboot.

Nu gaat het er dus om mobiele apparatuur die niet meteen chrasht als een rekeninstructie met een foute uitkomst er is. Zoals dat voorbeeld in het nieuwsitem over die video-encoding, dat kan toch prima dan als er geen zienswaardige of hoorbare fouten in optreden? Als je daarmee je energieverbruik lager kan zetten maar wel meer kan berekenen dan is dat toch goed?

Je zou deze CPU's ook prima in kunnen zetten voor dedicated werk, ipv een 32/64bits Processor die van alle gemakken feilloos moet kunnen werken.
Ik weet niet of 1 van jullie er ooit bij stil heeft gestaan... Een cpu maakt aan de lopende band fouten. Dit buiten de bugs die CPU's op zijn tijd bevatten. Omdat een PC nu eenmaal binair werkt is het niet mogelijk om alle getallen achter de komma weer te geven en op te tellen. Er zit altijd een bepaalde precisie in de berekening ga je daarboven dan ben je weg, kun je overflow of underflows krijgen en ben je niet meer precies. En dit is helemaal niet erg.. Programmeurs zijn zich daar eigenlijk continue van bewust en bouwen daar hun software op. Een double heeft een precisie van zoveel bits, een int minder en wel zoveel bits.. Het voorstel is hier eigenlijk gewoon om die grenzen te gaan opzoeken en er van gebruik te maken. Iets wat in embedded systems veel vaker gebeurd..

"Oke.. een char is dit geval minder precisie maar het beeldscherm heeft minder pixels.. oke who cares?"

[Reactie gewijzigd door martijnvanegdom op 10 maart 2008 21:36]

Ik denk niet dat je dit kunt zien als "fouten" aangezien de toepassingen heel goed weten waar ze mee te maken hebben. Gehele getallen kunnen precies worden weergegeven, tot een bepaalde grootte. Floating point getallen is een ander verhaal, maarja, schrijf jij eens pi exact op of sqrt(2)?
Bij deze dan:
- (ln (-1) i)

Met bovenstaande string had mijn CPU echt geen moeite, hoor. En toch heb ik precies gedaan wat je vroeg, π exact opschrijven.

Ok, genoeg flauwe grappen. Wanneer ik 9 door 2 deel en het resultaat in een integer opsla, dan zal ik inderdaad geen 4,5 kunnen uitlezen. In dat opzicht zou je kunnen betogen dat een processor die fouten maakt, niets nieuws is. Dit gedrag is echter voorspelbaar: zou ik die berekening een loopje zetten, dan heeft mijn integer een dag later nog steeds de waarde 4. Dit bericht beschrijft echter een geheel ander principe. Er zijn wel voldoende bits beschikbaar om het antwoord correct te noteren, maar de processor werkt op zo'n laag voltage, dat deze bits onder invloed van ruis kunnen omklappen. Negen gedeeld door twee zou ineens -4 kunnen opleveren.
en zolang je dan maar uitgaat van |4| is dat geen probleem? Begrijp ik het dan een beetje goed?
Hoe een float zich gedraagt is exact te voorspellen. De afrondingsfouten waarjij het over hebt zijn meer 'by design'. Zou je 1000x dezelfde berekening uitvoeren dan zal daar ook weer 1000x hetzelfde antwoord uitkomen met dezelfde afwijking van het werkelijke antwoord.

Waar het in dit artikel om gaat zijn juist de omvallende bitjes. Dat je 1000x een berekening doet en dat daar enkele keren gewoon een ander antwoord uit komt. Dit zijn dingen die je niet in Excel wilt hebben, maar voor het decoderen van geluid of video maakt het niet zo veel uit zolang het binnen bepaalde grenzen blijft. Voor Random generatie is het trouwens ideaal.
Als iemand vraagt "Hoe laat is het?" ben je dan alleen maar tevreden als het antwoord tot op de milliseconde nauwkeurig is, of is "5 voor half 9" ook wel goed (om 20:26). Kan jij op de snelheidsmeter van je auto zien of je 119,345 km/u rijdt of dat het misschien 120,861 is? Als iemand de maten van je kamer vraagt, krijgt die dan in vierkante millimeters antwoord? (Met uiteraard de kamertemperatuur op 3 cijfers achter de komma nauwkeurig erbij, want er zal ongetwijfeld variatie in zitten).
Kortom: soms hoeft niet alles met de hoogste precisie gedaan te worden om toch een voldoende correct antwoord te hebben.
heb je liever een horloge dat je om het jaar misschien bij moet stellen, of stel je je tevreden met het bijstellen om de 2 dagen ?

is een ritje van utrecht naar berlijn nou 564 km, of 631 km?

soms wil je wel precies. tja, en soms niet.
Een horloge bevat gegevens die over langere tijd uitgerekt wordt, zodat ze na een bepaalde tijd een (voorspelbare) afwijking kunnen hebben. Berekeningen in processoren hebben dat niet, en leven, als ze geluk hebben, een aantal milliseconden. Als er hier en daar een fout in zit heeft dat (meestal) geen merkbare invloed op de langere duur, wat wel het geval is bij een horloge.
ho ho, het ging om 631 of 632 km. de verschillen die jij hier geeft zin véél groter dan in het artikel genoemd worden.
En als je precies wilt koop je een duur stroomvretend horloge, en als je een milliseconde kan missen een goedkoper nietstroomvretend.
Dat noemen ze een atoomklok ;) Maar zelfs die klokken zijn niet precies.

[Reactie gewijzigd door KoeNijn op 10 maart 2008 23:39]

.. en met een dual-processor systeem met een beetje slimme energieleverning zou je een (meestal) zuiniger systeem kunnen bouwen dat (meestal) sneller is door de minder belangrijke berekeningen aan de extra proc over te laten.
Jij hebt het nog over hele getallen... ik denk meer dat je moet denken aan:
heb je liever een horloge dat je om het jaar misschien bij moet stellen, of stel je je tevreden met het bijstellen om de 2.312534 dagen ?

is een ritje van utrecht naar berlijn nou 564.3567247 km, of 631.25843368 km?
Deze chip berekend denk ik meer/liever hele getallen dan floating point getallen (een floating point getal is bijvoorbeeld 15.256744 (getallen met komma's dus))

:)
jouw processortje snapt ook geen floating point hoor, daar zitten nog wat laagjes emulatie enzo tussen ;)

leuke ontwikkeling, al is hij niet zomaar overal toepasbaar. er zijn genoeg toepassingen die geen hoge precisie vereisen
Ja dr Claw, (je overdrijft wel een beetje met je verschillen ;) ) maar dat veel energie wordt bespaard maar precisie compenseerd kan ook als voordeel hebben dat je minder hoeft af te koelen en dus ook nóg meer energie bespaard. Ik vindt het top!
Je moet het vooral zien in het kader van decoden van muziek, plaatjes en video. Kleine fouten daarin leiden slechts tot iets meer ruis... Voorbeeld: 832247 * 892126 = 742469187122. 832000 * 892000 = 742144000000. Door bij beide getallen alles onder de duizendtallen te negeren kunnen we veel sneller rekenen, en toch is de afwijking maar 0,04%. Als je nu kijkt waarmee je je mobiel snel leegtrekt dan is dat voornamelijk juist in die multimedia toepassingen. Aangezien het uiteindelijk toch door onze verre-van-perfecte ogen en oren (en op een klein scherm of met oordopjes) moet worden verwerkt maakt dat kleine beetje ruis niet zoveel uit. De veel langere accuduur echter...

[Reactie gewijzigd door Bugu op 10 maart 2008 20:34]

Ahh filosofie op tweakers.net!
Het is nou juist de taak van een processor dat hij alles uitrekend. Waarom zou hij het dan opeens fout mogen zijn?

Ik heb soms het idee dat deze generatie niets meer geeft om kwaliteit.
Is de taak van de processor om met een nauwkeurigheid van 100% zijn werk te doen? Een machine die producten voortbrengt die schijnbaar perfect zijn en onder dezelfde omstandigheden eideloos gereproduceerd worden?

Definieert dit goed of fout en kwaliteit?

Voor menig functie is dit waar. Zelfs in bovengenoemde beschrijving van audio en video decoderen gaat het nog om acceptabele fouten.

Daag jezelf uit om een onnauwkeurigheid niet per definitie als een fout te zien. Onze evolutie is gebaseerd op onnauwkeurigheden (of zo je wilt fouten). Zo zijn ook voor genetische algoritmes onnauwkeurigheden essentieel om tot een kwalitatief goede oplossing te komen. Crossover en mutatie hebben veel te winnen bij een machine die niet identieke resultaten produceert.

Velen geven de voorkeur aan het geluid van vinyl. De imperfecties worden tot op een zeker niveau gezien als een kwaliteit.

Tot slot is het vaak een wens om te ontkomen aan een machine-esthetiek in een computer gegenereerde omgeving. Variatie in texturen en particles zijn dan essentieel en juist dit kost de machines van nu en hun menselijke bedieners extra moeite. Gebruik de onnaukeurigheid om een menselijke wereld te creeeren met al haar imperfecties.
Velen geven de voorkeur aan het geluid van vinyl. De imperfecties worden tot op een zeker niveau gezien als een kwaliteit.
-nee- er wordt de voorkeur gegeven aan de afwezigheid van de digitale fouten. De analoge fouten worden liefst ook geminimaliseerd.

er is onderzoek geweest, in japan meen ik, waar werd aangetoont dat mensen het verschil kunnen horen tussen het al dan niet aanwezig zijn van boventonen (harmonischen) tot 50kHz. -Dat staat dus niet op een cd.-
En niet te vergeten de zweving (volume variaties) die je krijgt in de hogere tonen die in de buurt van de sample frequentie liggen.
Extreem voorbeeld: toon op halve sample frequentie: sample je op de toppen van de sinus of op de nuldoorgang?
algemeen resultaat: een wisselende fase verschuiving en een volume variatie van 0 tot 100% die afhankelijk is van het verschil met de sample frequentie

p.s. ik heb veel cd's als wav op hd staan, niet als mp3
Wat maakt het nou uit voor toepassingen waar helemaal niet zo'n nauwkeurigheid nodig is? Het is niet zo dat hij het heeft over computerprocessoren ofzo.
En noem nou eens een typisch voorbeeld van een toepassing waarbij die nauwkeurigheid niet nodig is?

MP3 spelers gebruiken tegenwoordig vaak 1 processor voor het "besturingssysteem" en het decoderen etc. In dat besturingssysteem wil je geen fouten, dat ie vastloopt doordat er bitjes omvallen, of dat ie de verkeerde muziek afspeelt.

Voor de meeste microcontrollers (die toch al zuinig zijn), gaat het ook niet, gezien je niet wilt hebben dat ze hun taken verkeerd uit gaan vallen.

Videodecodering en beeldbewerking wil je juist correct hebben omdat je fouten echt wel kan zien, en als het verkeerde bitje omvalt kan het een wereld van verschil zijn.


Ik zie hier cht het nut niet van in. Ze zeggen wel mooi dat ze dit op de minst significante bits toepassen, maar er is nooit te garanderen dat die minst significante bits niet belangrijk zijn bij alle berekeningen.

[Reactie gewijzigd door knirfie244 op 11 maart 2008 09:13]

Vermits deze processoren mijn vakgebied zijn neem ik graag de handschoen op...

De meeste high end mp3 spelers gebruiken een aparte processor om de decoding te doen. Deze zijn ontworpen om ook nog vb aac encoding te kunnen doen (owv herbruikbaarheid en hoge volumes). Deze dsp achtige processoren moeten minder controletaken uitvoeren en hebben de potentie om op lagere voltages te kunnen draaien. Vergis je niet, dit is HEEL wat waard, zelfs 0.1mW/Mhz is significant te noemen in chips voor mobiele toepassingen.

Enkele restricties:
*Niet de hele dsp zal op lagere voltages draaien. programma geheugen,decoder en controller typisch NIET. Maar een mac of alu WEL.
*de meeste applicaties zijn hier niet voor geschikt. Je zal ze moeten grondig herstructureren zodat je stukken van je programma met lage precisie kan uitrekenen. Want je wilt natuurlijk niet dat de msb bit van het volume fout staat en je oorvlies eruit blaast...

fouten tolerantie hedendaage:
*vooral in GSMs worden veel benaderings algoritmes gebruikt welke fouten tolereren. (trade-off v fouten tov berekeningstijd)
*veel floating point berekeningen zijn (mwv lage precisie) ook maar benaderingen.(trade-off v fouten tov berekeningstijd)
*de meeste physical libraries firma's onderzoeken dit (TI, intel, artisan,...) niet alleen voor dsp's maar zelfs voor controle processoren, in combinatie met error correction, detection & error recovery. We zijn er hier al jaren mee bezig...

In je mobieltje, in de TV, bijna OVERAL gebruikt men een lagere precisie zonder problemen.Of het kleine kleurverschil op de foto komt van lossy compression, lens onzuiverheden, ccd fouten, kosmische straling of van lagere voltages, maakt het iets uit?

Toekomstig gebruik:
Het nut ervan is beperkt maar zeer zeker aanwezig. We komen stil aan mobieltjes met 100Giga operations per second capaciteiten, nodig voor 4G, video decoding,image processing ... Vooral in dat segment van signaalverwerking is dit nuttig.
Vermits elk algoritme herschreven wordt als het op een andere processor moet draaien, kan de programmeur met zekerheid weten wanneer welke bits minder significant te noemen zijn.
Voor mij bij sommige games denk ik. Als ik al schietend achter een poppetje aan ren, ga ik echt niet stil staan omdat het water, de grasspriet, de kogel, de straat, of whatever nu toch net even een groene ipv een rode pixel bevat... (maar goed een 'game-tweaker' zal hier wsl wel van wakker liggen)

Zoals in het artikel ook staat, in het decoderen van geluid en beeld mag voor mij best wel eens een afwijking zitten. Een tweede processor kan de besturingssysteem-processor ontlasten van zijn taken om onnauwkeurige berekeningen te doen.
Een mp3 is een codering die van zijn eigen al bepaalde zaken weglaat. Wat maakt het dan uit dat er nog een foutje inzit dat niet hoorbaar is, het is ook niet zo dat als je Tiesto draait je Frans Bauer te horen krijgt. Of wat maakt het uit dat als je een video afspeelt, dat het hoofdpersonage in haar gezicht een pixel heeft die 164 roodwaarde heeft ipv 165. Niet alsof je oppeens Matthew Perry ipv Angelina Jolie te zien krijgt.

Het gaat hier om fouten die voor het menselijk oog/oor niet op te merken zijn.
Zie het als een 2de core (of in jaren 90 termen een co-processor ;) ). Het OS gebruikt de exacte processor maar voor het uitvoeren van de decodering van een mp3 of video de co-processor. Dan kan zelfs de processor voor het OS lager geklokt worden als je alleen maar muziek aan het luisteren bent....

Lijkt me dus ideaal, straks maar 1x per maand de ipod opladen !
Netwerkchips bijvoorbeeld. Netwerken (vooral wireless) hebben per definitie al last van loss, dus of je dan af en toe een packet verkeerd decodeert maakt ook niet uit. Gooi het weg en er volgt wel een hertransmissie.
Dat zou dan in the long run waarschijnlijk toch meer energie kosten.
Op netwerkchips juist niet, lijkt me. Dat is een beetje je eigen ruiten ingooien aangezien er op de meeste netwerkchips (wireless of niet) allerlei checks zitten die bij 1 verkeerd bitje al over de fout gaan.
Daarnaast zit het grote energie verbruik bij wireless devices bij het verzenden van dingen (niet de berekeningen daarvoor, maar het daadwerkelijk versturen van radiogolfjes), energiewinst bij het decoden van berichten zal je waarschijnlijk niet eens merken.
Bij online gaming kun je ook prima spelen met een beperkt packetloss, evenals online streams bekijken. Het is niet kritisch voor de uitkomst omdat de uitkomst niet opvalt in het grotere geheel.
Goh ... laten we even de WSN's in beschouwing nemen, een toepassing waar energie zowat de belangrijkste factor is.
Of de temperatuur nu wordt doorgestuurd als 28,7 °C of 28,3°C ... het maakt niet zoveel uit in de meeste toepassingen, want standaard worden er tien metingen gedaan, daarvan het gemiddelde genomen en dan wordt dat gemiddelde doorgestuurd.
Bij WSN's wordt trouwens al een gelijkaardige oplossing gebruikt.

Bij video en audio op draagbare mediaspelers maakt het ook niet veel uit. Je verliest door het comprimeren sowieso al een stuk van de originele kwaliteit, maar daar geeft de eindgebruiker ook niet om, omdat een kleurwaarde RGB van (152, 63, 133) nu ook weer niet ongelooflijk veel verschilt van (145, 61, 125). Teken het maar eens uit ... op grote vlakken zie je het verschil nauwelijks ... wat geeft het dan als dit gebeurt op een pixel ?

Het is gewoon een techniek die echt wel zijn nut kan hebben, maar langs de andere kant ook niet echt heel nieuw is. Het vernieuwende aan deze technologie is eerder dat de programmeur kan kiezen welke delen in zijn applicatie juist met een lagere precisie moeten worden uitgerekend.
De taak van de processor is in sommige gevallen niet het 'precies uitrekenen'.
Het gaat om deze gevallen om verspilling van extra kwaliteit, en daarmee verspilling van stroom. Als het voor het eindresultaat niet uitmaakt, dan is het toch een win-win situatie?
Dat heeft helemaal niks met generaties te maken.
Het is wel belangrijk da tje weet of iets nauwkeurig is, zolang je ook over die informatie beschikt, kan de kwaliteit best af en toe lager gemaakt worden. Als je vanaf het ontwerp bij je processor rekening kan houden met het aangeven van nodige nauwkeurigeheid, en automatisch het stroomverbruik laag houdt, heb je idd een enorm leuke win-win situatie.
Je moet je software ook aanpassen: die moet aangeven wat significant is en dus welke uitkomsten worden geaccepteerd.

[Reactie gewijzigd door Fireshade op 11 maart 2008 13:53]

Mijn voorganger heeft wel gelijk. Kijk naar dingen als gsm's of pda's. Wat maakt het daar uit als er mss een miniscuul foutje in de data (beeld/geluid) zit? Wil je echt films gaan renderen op een computer, dan zal je die dingen echt niet willen hebben, maar daar zullen ze ook niet voor ingezet worden.
men heeft het daarom ook over decoderen en niet encoderen, dat laatste doe je natuurlijk zo precies mogelijk
Wat ben je met kwaliteit waar je niets van merkt maar die wel stroom vreet ;)
Jij gebruikt dus nooit:
- GSM?
- een fototoestel in JPEG mode?
- een fototoestel in RAW mode (ook maar beperkt aantal bits/kleur)?
- een MP3 speler?

Wanneer je nu een processor hebt die bij dat soort taken zo kan decoderen dat je het verschil niet/nauwelijks merkt (net zoals bij een goede kwaliteit mp3/AAC/ogg in vergelijking met lossless (wat ook maar een beperkte resolutie heeft), wat maakt het dan uit? Zeker als je daarmee bijvoorbeeld 8 uur in plaats van 5 uur film kan kijken op je pmp.
Met fout bedoelen ze dat de precisie omlaag gaat...
Volgens mij niet de precisie, maar echte fouten.

Dus niet het aantal getallen achter de komma reduceren, maar accepteren dat een 1 in een 0 kan veranderen. Dus dat bijvoorbeeld 10101010 in de processor ineens (onvoorspelbaar) als 00101010 wordt waargenomen.

Dit kan dus 1 pixel zijn die ineens een hele andere kleur krijgt of een plotseling "hoog" signaal op je speakers (kraak) als dat niet wenselijk is.
Ja, inderdaad, behalve dan dat ze aangeven dat dit op de lagere niveaus zal gebeuren, dus 10101010 zou kunnen veranderen in 10101011 of 10101000.
Dit vind ik wel erg kort door de bocht.

In het bericht staat dat er exponentieel meer energie verbruikt wordt voor het vorhogen van de precisie. Maar neem mijn N95 telefoon, waar ik video op kijk en welke ik gebruik om MP3 op te luisteren. De batterij gaat nu een dag mee, maar als deze 2 dagen mee zou gaan, dan is dit toch een gewldige winst?

Ik zie juist veel potentie voor een ontwikkeling als deze.
Ik heb soms het idee dat deze generatie niets meer geeft om kwaliteit.
Het feit dat er Youtube filmpjes worden getoond op TV (EditieNL) ondersteunt dat idee, maar het gaat om kwaliteit waar het van nut is. Als je op de fiets of in de trein zit heeft een mp3tje met een hogere bitrate dan 128kbps toch geen nut, en zo zijn er meer dingen te bedenken.
ja, en wat is de volgende stap? Processoren die af en toe een berekening overslaan, omdat de gebruiker het toch niet merkt? Een GPU die hier en daar wat polygonen weglaat?
Een GPU die hier en daar wat polygonen weglaat?
Slecht voorbeeld ;). Idealiter laat je in je 3d-scene sowieso al zoveel mogelijk polygonen weg; dat scheelt namelijk met de framerate (die dan hoger wordt). Je rendert alles van 1 kant (normal mapping), rekent uit wat zichtbaar is en wat niet (backface/occlusion culling) en tekent alleen wat nodig is.
Dit zou wel eens een revolutionaire manier van rekenen kunnen worden in de toekomst. Ik heb altijd het idee gehad dat de mensch bij het maken van de geautomatiseerde versie van zichzelf (robot, computer), veels te kritisch is. Een mens werkt immers ook met fouten, je leert de beste keus te maken en de betrouwbaarste methode te kiezen. Eventueel staaf je je uitkomst nog met andere feiten om zo de kans op het juiste antwoord te verhogen. Een computer op een fiets zou zich suf rekenen, maar een mens doet een tikke links, tikkie rechts.. iets te veel, beetje corrigeren.. maar het gaat allemaal wel goed.
Over je voorbeeld met tikkie links tikiie rechts het volgende:
(a) Met fuzzy logic kan dit deels al. Het balanceren van een stok op je wijsvinger is een instabiel systeem, vooral als de stok kort is. De recht-toe-recht-aan wiskunde geeft aleen instabiele oplossingen, doordat je iedere keer "overcorrigeerd". (toegegeven je kunt stabilisrende termen toevoegen) Met fuzzy logic kun je de besturing zo inrichten dat je niet over corrigeerd. Zo hadden ze bij Omron een gecomputeriseerde "vinger" staan die een stok balanceerde

(zie bijv : http://www.newscientist.c...-ignored-in-the-west.html en / of http://omron.nl/ )

(b) je moet dan natuurlijk nog steeds wel zorgen dat de controle slag die je maakt voldoende nauwkeurig is.

Maar het idee om computers te "leren omgaan" met foutmarges/onzekerheden is een zeer boeiende gedachte, omdat het systeem dan zelf de correctie kan uitvoeren.

[Reactie gewijzigd door vladimirN op 10 maart 2008 20:53]

Mooi toch dat de helft van alle antwoorden waarin wordt gezegd dat ze zoiets echt niet willen allemaal voorbeelden aandragen van situaties waarin je dit inderdaad niet wil. Het gaat er nu juist om dat dit kan worden toegepast bij berekeningen waarbij 100% precisie _niet_ van belang is.

Bij bijvoorbeeld GSM audio (lage bitrate audio dus) ga je echt geen verschil horen als eens een bitje omvalt. En bij een pseudo rng kan het ook echt geen kwaad als er wat meer randomness wordt toegevoegd.

Dit is gewoon een goed idee om energie te besparen en dit hoeft de kwaliteit van een product niet te beïnvloeden (mits het goed wordt gebruikt natuurlijk)
Volgens mij snappen de meeste mensen totaal niet het idee van deze processor en zitten ze te klagen dat de de 'onprecisie' er voor zorgt dat hun HD films brak zijn, hun Flac bestanden brak zijn enz. Terwijl dit helemaal niet het geval is.

Als er bijvoorbeeld van 1 pixel een kleur moet worden uitgerekend en dit gaat bijvoorbeeld normaal met een preciesie van 10 getallen achter de komma, dan doet dit systeem dat met mischien 7 a 8 bijvoorbeeld achter de komma.

Er bestaat dan een ZEER KLEINE kans dat in een frame van je film 1 pixel van RGB(150,150,150) veranderd naar RGB(150,151,150). Iets wat met het menselijk ook NIET te zien is. Maar wat wel snelheidwinst oplevert. (minder precies, dus sneller, en minder verbruik qua stroom)

Zo en zo merk je het totaal niet dan aangezien je ongeveer 25 fps in een film heeft, en je 1920 * 1080 (voorbeeld) pixels hebt, als er dan per frame 1 pixel NIET zichtbaar verkleurd is op een andere positie. Dan zal NIEMAND dat zien.

Dus de mensen die zitten te 'zeuren' van 'huilie straks ziet alles er brak uit'. Snappen overduidelijk niet het idee hierachter.

[Reactie gewijzigd door ZpAz op 11 maart 2008 11:05]

Het lijkt me geen goede ontwikkeling. Als je er voor wilt zorgen dat je computer stabiel en betrouwbaar is moet je maximale precisie hebben. Hoe meer flexibiliteit / onbetrouwbaarheid je de techniek geeft hoe moeilijker het wordt om stabiele software te maken.
Het gaat er bij deze dan ook helemaal niet om dat je er een OS op zou willen draaien, bij het decoderen van video/audio is het echt geen enkel probleem als er wat foutjes worden gemaakt bij het decoderen. Het gaat hier daarnaast om hardware. De software die op de hoofdprocessor draait zal weten dat de resultaten van deze chip niet precies zijn, maar dan nog maakt dat niet uit. Het betekend op zn hoogst dat er ergens in een toch met compressie overladen film of muziekbestandje een minder accuraat geluid/beeld te luisteren/zien is. Dit heeft helemaal niets te maken met stabiele software.
Het gaat hier niet om processoren die zomaar "lukraak" wat rekenen, in de hoop dat de uitkomst afdoende precies is. Sterker nog, in het artikel wordt zelfs aangegeven dat het (waarschijnlijk op programmeer-niveau) mogelijk is om aan te geven vanaf welke positie in een getal de significantie niet meer ter zake doet. In praktijk zal het dan waarschijnlijk zo zijn dat de cpu precies rekent, tenzij anders aangegeven.

Dit wil dus zeggen dat de moeilijkheid ligt in het bepalen van de significantie van uitkomsten van berekeningen, wat eerder een theoretisch vraagstuk is, dan iets wat de cpu zelf moet bepalen. In het geval van een aansturing van een kerncentrale zul je bijvoorbeeld wel graag een zeer hoge precisie hebben, terwijl het uitdrukken van de lengte van personen niet per sé tot op de micron nauwkeurig hoeft.

De onderliggende wiskundige theorie die hier van toepassing is, is granular computinghttp://en.wikipedia.org/wiki/Granular_computing. Deze theorie houdt zich bezig met de bepaling en correcte berekening van resultaten op basis van een beperkte significatie (information granules). En zoals eerder aangegeven, dit houdt inderdaad verband met fuzzy logic, rough sets, etc. Door de ondersteuning van imprecisie in de cpu, krijg je dus de mogelijkheid deze theorie in praktijk in te zetten.
Niet echt aan te raden dit soort initiatieven. Leuk bedacht, maar straks krijg je te lezen op de doosjes 'nauwkeurigheid 95%' 'nauwkeurigheid 50%'. En er is al zoveel keuze. Geef mij maar gewoon de oude vertrouwde manier, dan maar iets minder zuinig.
Wat ook opgemerkt dient te worden. Men heeft het ook over regelbare spanningen. Op deze manier kun je de processor dus terugclocken op het moment dat de nauwkeurigheid niet gewenst is, en bij preciesere taken kan de spanning omhoog om de gewenste nauwkeurigheid te benaderen. Dit laat het licht nog net iets anders op de zaak vallen.
En toch werk je er al dagelijks mee zonder dat je het weet.

Wat dacht je van de zoekresultaat van google, of zelfs van GOT? Daar staat ook maar bij dat de zoekresultaten "ongeveer xxx-pagina's is, terwijl het toch xx pagina's zijn.

Dus in principe wel logisch om het op zulke manieren te doen.

Ik hoop alleen wel dat het op een wat hoger niveau aangesproken kan worden, de mate van nauwkeurigheid dan.

Dat de programmeur of OS dat regelt
Nog een voorbeeld:

Weerstanden met een tolerantie van 10% tot 0.05% in de waarde.

kleurcode weestand

En toch worden ook de minder nauwkeurige goed gebruikt..
Wat dacht je van de zoekresultaat van google, of zelfs van GOT? Daar staat ook maar bij dat de zoekresultaten "ongeveer xxx-pagina's is, terwijl het toch xx pagina's zijn
Ik heb me bij google toch redelijk vaak mateloos aan zitten ergeren en lopen zoeken naar manier om toch al die andere zoekresultaten te zien.

Ik zie ook liever dat de gebruiker dat soort zaken kan regelen.
Ook bij het genereren van 'random' getallen is een maximale precisie niet noodzakelijk.
Zou het bij een random number generator niet juist positief zijn?
Dat ligt eraan, als het gaat om alleen een random nummer dan wel. Als het gaat om de verdeling achter een random nummer (waar je hem toch vaak voor trekt) dan eigenlijk toch weer niet. Het ligt echter volledig aan het gebruik ervan. Bijvoorbeeld, indien je een random ja of nee wil dan kan je programmeren: IF Rnd > 0.50 do "ja" else "nee". Echter als het erom gaat dat je uiteindelijk een ongeveer 50/50 verdeling wil hebben over 100.000 personen met een ja of nee dan is die fout misschien lastig als hij zorgt voor te vaak ja t.o.v. nee.
Niet is als de afwijking ook random is, bovendien ligt het aan de afwijking. Als deze bij een random getal 0.000001 is dan zou dat in jouw voorbeeld in 2 van de 100.000 mogelijkheden een verschil opleveren van ja of nee(bij 0.499999 met een afwijking naar boven en 0.500000 met een afwijking omlaag).
Een nog interessantere ontwikkeling zou zijn als ze er meteen foutdetectie bij doen. Dat hoeft mogelijk niet zoveel te kosten als de nauwkeurigheid direct opvoeren. Natuurlijk zit er ook een schaduwkant aan: soms detecteer je een fout, en moet je een berekening opnieuw uitvoeren. Maar als je 10% minder energie gebruikt in ruil voor 1% herstelde fouten (en dus een 1% langzamere chip), dan lijkt de winst me duidelijk.
Slordig rekenen?
Dat concept hadden ze toch al 's geprobeerd bij Intel? :+

Op dit item kan niet meer gereageerd worden.



Apple iOS 10 Google Pixel Apple iPhone 7 Sony PlayStation VR AMD Radeon RX 480 4GB Battlefield 1 Google Android Nougat Watch Dogs 2

© 1998 - 2016 de Persgroep Online Services B.V. Tweakers vormt samen met o.a. Autotrack en Carsom.nl de Persgroep Online Services B.V. Hosting door True