Hvorfor algoritmer er elendige og analoge computere er fremtiden

Jeg ved godt, at overskriften på denne artikel kan lyde lidt provokerende, men det er sandt: Algoritmisk databehandling er bare ikke så godt til at skalere, når det drejer sig om problemer, der kræver enorme mængder af processorkraft.

Kig blot på den seneste Top500-liste over højtydende computere. I øjeblikket er den kraftigste supercomputer Sunway TaihuLight på National Supercomputing Center i Wuxi, Kina, den mest kraftfulde supercomputer. Denne mastodont leverer hele 93 petaflops (en petaflop svarer til en quadrillion floating point-operationer pr. sekund), hvilket virkelig er ufatteligt.

Supercomputere og energiforbrug

En sådan enorm regnekraft har imidlertid en pris. I dette tilfælde kræver det 10.649.600 regneenheder, såkaldte cores, der forbruger 15.371 megawatt – en mængde elektricitet, der kunne forsyne en lille by med ca. 16.000 indbyggere baseret på et gennemsnitligt energiforbrug svarende til San Franciscos.

Hvis vi vender opmærksomheden væk fra de mest kraftfulde supercomputere og i stedet fokuserer på de mest energieffektive, finder vi systemet TSUBAME3.0 på Tokyo Institute of Technology øverst på Green500-listen. Det leverer 14,11 gigaflops/watt med et samlet strømforbrug på “kun” 142 kilowatt, der kræves af dets 36288 kerner. Med hensyn til energieffektivitet er dette ca. 2 gange bedre end TaihuLight. Men 142 kilowatt er stadig en frygtelig stor mængde elektrisk energi.

Men findes der ikke supercomputere, som ikke kræver så meget energi at køre? Jo, det er der faktisk: Den menneskelige hjerne er et godt eksempel – dens processorkraft anslås at være ca. 38 petaflops, hvilket er ca. to femtedele af TaihuLights. Men alt, hvad den behøver for at fungere, er ca. 20 watt energi. Watt, ikke megawatt! Og alligevel udfører den opgaver, som – i hvert fald indtil nu – ingen maskine nogensinde har været i stand til at udføre.

“Findes der ikke supercomputere, der ikke kræver så meget energi at køre? Jo, det er der faktisk: Den menneskelige hjerne er et godt eksempel.”

Hvad skyldes denne forskel? For det første er hjernen så at sige en specialiseret computer, mens systemer som TaihuLight og TSUBAME3.0 er langt mere generelle maskiner, der kan løse en lang række problemer.

Maskiner som disse er programmeret ved hjælp af en algoritme, et såkaldt program. Grundlæggende er dette en sekvens af instruktioner, som hver processor udfører ved at læse dem fra et hukommelsessubsystem, afkode instruktioner, hente operander, udføre den ønskede operation, gemme resultaterne tilbage osv.

En økonomisk supercomputer: Den menneskelige hjerne

Alle disse hukommelsesanmodninger kræver en betydelig mængde energi og gør tingene betydeligt langsommere. At have hundredtusindvis af individuelle kerner kræver også et indviklet forbindelsesvæv til at udveksle data mellem kerner efter behov, hvilket også øger den tid og energi, der er nødvendig for at udføre en beregning.

En hjerne arbejder derimod med en helt anden tilgang. Der er intet program involveret i dens drift. Den er simpelthen “programmeret” af de indbyrdes forbindelser mellem dens aktive komponenter, for det meste såkaldte neuroner.

Hjernen behøver ikke at hente instruktioner eller data fra nogen hukommelse, afkode instruktioner osv. Neuroner får inputdata fra andre neuroner, opererer med disse data og genererer outputdata, som sendes til de modtagende neuroner. OK – dette er en smule forsimplet, men det er nok til at bringe os frem til følgende spørgsmål:

  1. 1. Findes der ikke en elektronisk pendant til en sådan computerarkitektur?
  2. 2. Har vi virkelig brug for supercomputere til generelle formål?
  3. 3. Kunne et specialiseret system være bedre til at løse visse problemer?

Svaret på det første spørgsmål er: Ja, der findes en elektronisk pendant til en sådan arkitektur.

Det kaldes en analog computer.

Indtast analoge computere

“Analog” stammer fra det græske ord “analogon”, der betyder “model”. Og det er præcis, hvad en analog computer er: En model for et bestemt problem, som derefter kan bruges til at løse netop dette problem ved at simulere det.

Såkaldte direkte analoge computere – der bygger på det samme underliggende princip som det problem, der undersøges – udgør den enkleste klasse af sådanne analoge metoder. Sæbebobler, der anvendes til at generere minimale overflader, er et klassisk eksempel herpå.

“En analog computer er en model for et bestemt problem, som derefter kan bruges til at løse netop dette problem ved hjælp af simulering af det.”

En mere generelt anvendelig klasse indeholder indirekte analogier, der kræver en afbildning mellem problemet og computerdomænet. Typisk er sådanne analogier baseret på analoge elektroniske kredsløb såsom summere, integratorer og multiplikatorer. Men de kan også implementeres ved hjælp af digitale komponenter, i hvilket tilfælde de kaldes digitale differentialanalysatorer.

Både fremgangsmåder har ét karakteristisk træk til fælles: Der er ikke noget lagret program, der styrer driften af en sådan computer. I stedet programmerer man den ved at ændre sammenkoblingen mellem dens mange beregningselementer – lidt ligesom en hjerne.

Fra analoge til hybride computere

Tænk på min egen prototype af en analog computer, som er et eksempel på en klassisk analog-elektronisk computer. Det kryds og tværs af ledninger kan beskrives som maskinens program. I dette tilfælde er den sat op til at simulere luftstrømmen omkring et såkaldt Joukowsky-vingeprofil – ikke nogen triviel opgave.

Dette billede er taget af Tibor Florestan Pluto og viser forfatterens egen analoge computerprototype.

Alle maskinens regneelementer arbejder i fuldstændig parallelitet uden central eller distribueret hukommelse, som man skal tilgå og vente på. Man programmerer computeren ved at sætte patchkablerne i og ud af stikket. Dette kan være ganske nyttigt for en enkelt forsker og til undervisningsformål, men for at få en ægte analog computer til almene formål ville man være nødt til at slippe for denne manuelle patch-procedure.

Glukkeligvis er det med nutidens elektroniske teknologi muligt at bygge integrerede kredsløb, der ikke blot indeholder de grundlæggende beregningselementer, men også en tværstang, der kan programmeres fra en tilsluttet digital computer, hvorved rottereden af ledninger helt kan elimineres.

Sådanne analoge computere når ekstremt høj beregningsevne for visse problemklasser. De er bl.a. uovertrufne til at løse problemer baseret på differentialligninger og systemer heraf – hvilket gælder for mange, hvis ikke de fleste af nutidens mest relevante problemer inden for videnskab og teknologi.

For eksempel beskrev Glenn E. R. Cowan i en artikel fra 2005 en Very-Large-Scale-Integrated Analog Computer (VLSI), dvs. en analog computer på en chip, så at sige. Denne chip leverede hele 21 gigaflops pr. watt til en bestemt klasse af differentialligninger, hvilket er bedre end dagens mest strømeffektive system på Green500-listen.

The Analog Future of Computing

Analog computing, som var den fremherskende form for højtydende computing et godt stykke ind i 1970’erne, er stort set gået i glemmebogen, siden nutidens digitale computere med lagrede programmer har taget over. Men tiden er moden til at ændre dette.

“Morgendagens applikationer kræver stærkere regnekraft ved et langt lavere energiforbrug. Det kan digitale computere ikke levere.”

Morgendagens applikationer kræver stærkere regnekraft til et meget lavere energiforbrug. Men digitale computere kan simpelthen ikke levere dette ud af boksen. Så det er på tide at begynde at udvikle moderne analoge co-processorer, der aflaster de traditionelle computere i forbindelse med løsningen af komplekse differentialligninger. Resultatet vil være såkaldte hybridcomputere.

Disse maskiner kunne tilbyde højere regnekraft end nutidens supercomputere ved et sammenligneligt energiforbrug eller kunne anvendes på områder, hvor der kun er små mængder energi til rådighed, som f.eks. implanterede controllere i medicin og andre indlejrede systemer.

Fremtidige udfordringer

Det er klart, at analog databehandling er meget lovende for fremtiden. Et af de største problemer, der skal løses, vil være, at programmering af analoge computere adskiller sig fuldstændig fra alt det, de studerende lærer på universitetet i dag.

I analoge computere findes der ingen algoritmer, ingen loops, intet som de kender det. I stedet er der et par enkle, men kraftfulde computerelementer, som skal forbindes snedigt for at opstille en elektronisk analog til et matematisk beskrevet problem.

Teknologiske udfordringer som kraftfulde forbindelser eller højt integrerede, men præcise computerelementer synes mindre vigtige i forhold til denne pædagogiske udfordring. I sidste ende vil ændringen af den måde, folk tænker programmering på, være den største hindring for fremtiden for analog databehandling.