Why Algorithms Suck and Analog Computers are the Future
Ik weet dat de kop van dit artikel misschien wat provocerend klinkt, maar het is wel waar: Algoritmisch rekenen is gewoon niet al te best als het gaat om problemen die immense hoeveelheden rekenkracht vereisen.
Kijk maar eens naar de laatste Top500-lijst van krachtige computers. Op dit moment is de krachtigste supercomputer de Sunway TaihuLight in het National Supercomputing Center in Wuxi, China. Deze kolos levert maar liefst 93 petaflops (een petaflop is gelijk aan een quadriljoen floating point operations per seconde), wat werkelijk onvoorstelbaar is.
Supercomputers en energieverbruik
Een dergelijke enorme rekenkracht heeft echter een prijs. In dit geval zijn er 10.649.600 verwerkingseenheden, zogeheten cores, nodig die 15.371 megawatt verbruiken – een hoeveelheid elektriciteit die een kleine stad van ongeveer 16.000 inwoners van energie zou kunnen voorzien, uitgaande van een gemiddeld energieverbruik dat gelijk is aan dat van San Francisco.
Als we onze aandacht afwenden van de krachtigste supercomputers en ons in plaats daarvan richten op de energiezuinigste, vinden we het systeem TSUBAME3.0 van het Tokyo Institute of Technology bovenaan de Green500-lijst. Het levert 14,11 gigaflops/watt met een totaal stroomverbruik van “slechts” 142 kilowatt, vereist door de 36288 kernen. In termen van energie-efficiëntie is dit ongeveer 2 keer beter dan TaihuLight. Maar 142 kilowatt is nog steeds verschrikkelijk veel elektrische energie.
Maar zijn er geen supercomputers die niet zoveel energie nodig hebben om te draaien? Die zijn er inderdaad: Het menselijk brein is een goed voorbeeld – de verwerkingskracht wordt geschat op 38 petaflops, ongeveer tweevijfde van die van TaihuLight. Maar alles wat het nodig heeft om te werken is ongeveer 20 watt aan energie. Watts, geen megawatts! En toch voert het taken uit die – tenminste tot nu toe – geen enkele machine ooit heeft kunnen uitvoeren.
“Zijn er geen supercomputers die niet zoveel energie nodig hebben om te werken? Die zijn er inderdaad: Het menselijk brein is een goed voorbeeld.”
Wat veroorzaakt dit verschil? Allereerst is het brein als het ware een gespecialiseerde computer, terwijl systemen als TaihuLight en TSUBAME3.0 veel algemenere machines zijn, die een grote verscheidenheid aan problemen kunnen aanpakken.
Machines als deze worden geprogrammeerd door middel van een algoritme, een zogenaamd programma. In principe is dit een reeks instructies die elke processor uitvoert door ze uit een geheugensubsysteem te lezen, instructies te decoderen, operanden op te halen, de gevraagde bewerking uit te voeren, de resultaten op te slaan enz.
Een zuinige supercomputer: Het menselijk brein
Al deze geheugenverzoeken vergen een aanzienlijke hoeveelheid energie en vertragen de zaak aanzienlijk. Het hebben van honderdduizenden afzonderlijke kernen vereist ook een ingewikkeld verbindingsweefsel om gegevens tussen kernen uit te wisselen als dat nodig is, wat ook bijdraagt aan de tijd en energie die nodig is om een berekening uit te voeren.
Een brein daarentegen werkt met een heel andere aanpak. Er is geen programma betrokken bij de werking ervan. Het wordt eenvoudigweg “geprogrammeerd” door de onderlinge verbindingen tussen zijn actieve componenten, meestal zogeheten neuronen.
De hersenen hoeven geen instructies of gegevens uit een geheugen op te halen, instructies te decoderen enz. Neuronen krijgen inputgegevens van andere neuronen, bewerken deze gegevens en genereren outputgegevens die aan ontvangende neuronen worden toegevoerd. OK – dit is een beetje overgesimplificeerd maar het is genoeg om ons tot de volgende vragen te brengen:
- 1. Is er geen elektronisch equivalent van zo’n computerarchitectuur?
- 2. Hebben we werkelijk supercomputers voor algemeen gebruik nodig?
- 3. Zou een gespecialiseerd systeem beter zijn om bepaalde problemen aan te pakken?
Het antwoord op de eerste vraag is: Ja, er bestaat een elektronisch equivalent van zo’n architectuur.
Het wordt een analoge computer genoemd.
Enter Analog Computers
“Analoog” is afgeleid van het Griekse woord “analogon”, dat “model” betekent. En dat is precies wat een analoge computer is: Een model voor een bepaald probleem dat vervolgens kan worden gebruikt om datzelfde probleem op te lossen door het te simuleren.
Zogenaamde directe analogen – die berusten op hetzelfde onderliggende principe als het te onderzoeken probleem – vormen de eenvoudigste klasse van dergelijke analoge methoden. Zeepbellen die worden gebruikt om minimale oppervlakken te genereren zijn hier een klassiek voorbeeld van.
“Een analoge computer is een model voor een bepaald probleem dat vervolgens kan worden gebruikt om datzelfde probleem op te lossen door het te simuleren.”
Een meer algemeen bruikbare klasse bevat indirecte analogieën die een mapping vereisen tussen het probleem en het computerdomein. Gewoonlijk zijn dergelijke analogieën gebaseerd op analoge elektronische schakelingen, zoals toppen, integratoren en vermenigvuldigers. Maar zij kunnen ook worden geïmplementeerd met behulp van digitale componenten, in welk geval zij digitale differentiaalanalysatoren worden genoemd.
Beide benaderingen hebben één kenmerk gemeen: er is geen opgeslagen programma dat de werking van zo’n computer bestuurt. In plaats daarvan programmeer je hem door de onderlinge verbindingen tussen de vele rekenelementen te veranderen – een beetje zoals een brein.
Van analoge naar hybride computers
Kijk eens naar mijn eigen analoge computerprototype, dat een voorbeeld is van een klassieke analoog-elektronische computer. Het kriskras van draden kan worden beschreven als het programma van de machine. In dit geval is hij ingesteld om de luchtstroming rond een zogenaamd Joukowsky-luchtprofiel te simuleren – geen triviale taak.
Alle rekenelementen van de machine werken in volledig parallellisme, zonder centraal of gedistribueerd geheugen waartoe toegang moet worden gezocht of waarop moet worden gewacht. Je programmeert de computer door de patchkabels in en uit te pluggen. Dit kan heel nuttig zijn voor een enkele onderzoeker en voor onderwijsdoeleinden, maar voor een echte analoge computer voor algemeen gebruik zou men zich moeten ontdoen van deze handmatige patch-procedure.
Gelukkig genoeg is het met de huidige elektronische technologie mogelijk geïntegreerde schakelingen te bouwen die niet alleen de basisrekenelementen bevatten, maar ook een dwarsbalk die kan worden geprogrammeerd vanaf een aangesloten digitale computer, waardoor het rattennest van draden geheel verdwijnt.
Zulke analoge computers bereiken voor bepaalde probleemklassen een extreem hoog rekenvermogen. Zij zijn onder meer onovertroffen voor het aanpakken van problemen op basis van differentiaalvergelijkingen en stelsels daarvan – wat van toepassing is op veel, zo niet de meeste van de meest relevante problemen in wetenschap en technologie van vandaag.
In een paper uit 2005 beschreef Glenn E.R. Cowan bijvoorbeeld een Very-Large-Scale-Integrated Analog Computer (VLSI), d.w.z. een analoge computer op een chip, om het zo maar eens te zeggen. Deze chip leverde maar liefst 21 gigaflops per watt voor een bepaalde klasse differentiaalvergelijkingen, wat beter is dan het meest energie-efficiënte systeem in de Green500-lijst van vandaag.
The Analog Future of Computing
Analog computing, dat tot ver in de jaren zeventig de belangrijkste vorm van high-performance computing was, is grotendeels in de vergetelheid geraakt sinds de huidige digitale computers met opgeslagen programma’s het hebben overgenomen. Maar de tijd is rijp om daar verandering in te brengen.
“De toepassingen van morgen vragen om sterkere rekenvermogens bij veel lagere energieverbruiksniveaus. Digitale computers kunnen dit niet leveren.”
De toepassingen van morgen vragen om sterkere rekenvermogens bij een veel lager energieverbruik. Maar digitale computers kunnen dit eenvoudigweg niet uit de doos leveren. Het wordt dus tijd om moderne analoge co-processoren te ontwikkelen die de traditionele computers ontlasten bij het oplossen van complexe differentiaalvergelijkingen. Het resultaat zouden zogenaamde hybride computers zijn.
Deze machines zouden een grotere rekenkracht kunnen bieden dan de huidige supercomputers bij een vergelijkbaar energieverbruik, of zouden kunnen worden gebruikt op gebieden waar slechts minieme hoeveelheden energie beschikbaar zijn, zoals geïmplanteerde besturingen in de geneeskunde en andere ingebedde systemen.
Toekomstige uitdagingen
Het is duidelijk dat analoge informatica een grote belofte inhoudt voor de toekomst. Een van de belangrijkste problemen zal zijn dat het programmeren van analoge computers volledig verschilt van alles wat studenten tegenwoordig op de universiteit leren.
In analoge computers zijn er geen algoritmen, geen loops, niets zoals zij het kennen. In plaats daarvan zijn er een paar elementaire, maar krachtige rekenelementen die op een slimme manier met elkaar moeten worden verbonden om een elektronisch analoog van een of ander wiskundig beschreven probleem op te zetten.
Technologische uitdagingen zoals krachtige interconnects of sterk geïntegreerde maar nauwkeurige rekenelementen lijken van ondergeschikt belang in vergelijking met deze educatieve uitdaging. Uiteindelijk zal het veranderen van de manier waarop mensen denken over programmeren de grootste hindernis zijn voor de toekomst van analoge informatica.