Miért szarok az algoritmusok és az analóg számítógépeké a jövő
Tudom, hogy a cikk címe kissé provokatívan hangzik, de igaz: Az algoritmikus számítástechnika egyszerűen nem skálázódik túl jól, ha óriási feldolgozási teljesítményt igénylő problémákról van szó.
Vessünk csak egy pillantást a nagy teljesítményű számítógépek legújabb Top500-as listájára. Jelenleg a legerősebb szuperszámítógép a Sunway TaihuLight a kínai Wuxiban található Nemzeti Szuperszámítógép Központban. Ez a behemót 93 petaflopot teljesít (egy petaflop egy kvadrillió lebegőpontos műveletnek felel meg másodpercenként), ami tényleg felfoghatatlan.
Szuperszámítógépek és az energiafogyasztás
Egy ilyen hatalmas feldolgozási teljesítménynek azonban ára van. Ebben az esetben 10.649.600 feldolgozóegységre, úgynevezett magra van szükség, amelyek 15.371 megawattot fogyasztanak – ez olyan mennyiségű villamos energia, amellyel egy körülbelül 16.000 lakosú kisvárost lehetne ellátni, San Franciscónak megfelelő átlagos energiafogyasztás alapján.
Ha elfordulunk a legerősebb szuperszámítógépektől, és helyette a leginkább energiahatékonyakra koncentrálunk, akkor a Tokiói Technológiai Intézet TSUBAME3.0 rendszerét a Green500-lista élén találjuk. Ez 14,11 gigaflops/watt teljesítményt nyújt, miközben 36288 magja által igényelt teljes energiafogyasztása “mindössze” 142 kilowatt. Az energiahatékonyságot tekintve ez körülbelül 2-szer jobb, mint a TaihuLight. De 142 kilowatt még mindig borzasztóan sok elektromos energia.
De nincsenek olyan szuperszámítógépek, amelyeknek nem kell ennyi energia a működéséhez? De igenis van: Az emberi agy remek példa erre – a feldolgozási teljesítményét körülbelül 38 petaflopra becsülik, ami a TaihuLight teljesítményének körülbelül kétötöde. Működéséhez azonban mindössze 20 watt energiára van szüksége. Watt, nem megawatt! És mégis olyan feladatokat hajt végre, amelyekre – legalábbis eddig – egyetlen gép sem volt képes.”
“Nincsenek olyan szuperszámítógépek, amelyeknek a működéséhez nem kell ennyi energia? Valóban vannak: Az emberi agy remek példa erre.”
Mi okozza ezt a különbséget? Először is, az agy úgymond egy speciális számítógép, míg az olyan rendszerek, mint a TaihuLight és a TSUBAME3.0 sokkal általánosabb célú gépek, amelyek a legkülönbözőbb problémák megoldására képesek.”
Az ilyen gépeket egy algoritmus, egy úgynevezett program segítségével programozzák. Ez alapvetően egy utasítássorozat, amelyet az egyes processzorok úgy hajtanak végre, hogy beolvassák egy memória alrendszerből, dekódolják az utasításokat, lekérik az operandusokat, elvégzik a kért műveletet, visszatárolják az eredményeket stb.
Egy gazdaságos szuperszámítógép: Az emberi agy
Mindezek a memóriakérések jelentős mennyiségű energiát igényelnek, és jelentősen lelassítják a dolgokat. Az egyes magok százezreinek megléte bonyolult összekapcsolási szövetet is igényel a magok közötti szükség szerinti adatcseréhez, ami szintén növeli a számítás elvégzéséhez szükséges időt és energiát.
Az agy ezzel szemben teljesen más megközelítéssel dolgozik. Működésében nem vesz részt program. Egyszerűen csak “programozzák” az aktív alkotóelemei, többnyire az úgynevezett neuronok közötti összeköttetések.
Az agynak nem kell semmilyen memóriából utasításokat vagy adatokat lehívnia, utasításokat dekódolnia stb. A neuronok bemeneti adatokat kapnak más neuronoktól, ezekkel az adatokkal operálnak, és kimeneti adatokat generálnak, amelyeket a fogadó neuronokba táplálnak. OK – ez egy kicsit leegyszerűsített, de elég ahhoz, hogy eljussunk a következő kérdésekhez:
- 1. Nincs egy ilyen számítógép-architektúrának elektronikus megfelelője?
- 2. Tényleg szükségünk van általános célú szuperszámítógépekre?
- 3. Lehet, hogy egy specializált rendszer jobb lenne bizonyos problémák megoldására?
Az első kérdésre a válasz: Igen, létezik egy ilyen architektúrának elektronikus megfelelője.
Az úgynevezett analóg számítógép.
Enter Analog Computers
Az “analóg” szó a görög “analogon” szóból származik, ami “modellt” jelent. És pontosan ez az, ami egy analóg számítógép: Egy bizonyos probléma modellje, amely aztán felhasználható éppen ennek a problémának a szimulációjával történő megoldására.
Az úgynevezett közvetlen analógok – amelyek ugyanarra az alapelvre támaszkodnak, mint a vizsgált probléma – alkotják az ilyen analóg módszerek legegyszerűbb osztályát. A minimális felületek előállítására használt szappanbuborékok klasszikus példát jelentenek erre.”
“Az analóg számítógép egy bizonyos probléma modellje, amelyet aztán éppen ennek a problémának a szimulációjával lehet megoldani.”
Az általánosabban használható osztály olyan közvetett analógiákat tartalmaz, amelyek leképezést igényelnek a probléma és a számítási tartomány között. Az ilyen analógiák jellemzően analóg elektronikus áramkörökön, például összegzőkön, integrátorokon és szorzókon alapulnak. De megvalósíthatók digitális alkatrészek felhasználásával is, ebben az esetben digitális differenciálanalizátoroknak nevezzük őket.
Egy közös jellemzőjük van mindkét megközelítésnek: nincs tárolt program, amely az ilyen számítógép működését vezérli. Ehelyett a sok számítóelem közötti összeköttetés megváltoztatásával programozzuk – olyan, mint egy agy.
Az analóg számítógépektől a hibrid számítógépekig
Gondoljunk csak a saját analóg számítógép prototípusomra, amely egy klasszikus analóg-elektronikus számítógép példája. A vezetékek kereszteződése úgy írható le, mint a gép programja. Jelen esetben egy úgynevezett Joukowsky-féle szárnyprofil körüli légáramlás szimulálására van beállítva, ami nem triviális feladat.
A gép minden számítóeleme teljes párhuzamosságban működik, nincs központi vagy elosztott memória, amihez hozzáférhetnénk, és amire várni kellene. A számítógépet a patchkábelek be- és kihúzásával programozzuk. Ez egy-egy kutató számára és oktatási célokra igen hasznos lehet, de egy igazi általános célú analóg számítógéphez meg kellene szabadulni ettől a kézi patchelési eljárástól.
A mai elektronikai technológiával szerencsére lehetséges olyan integrált áramköröket építeni, amelyek nemcsak az alapvető számítási elemeket tartalmazzák, hanem egy olyan keresztsávot is, amelyet egy csatlakoztatott digitális számítógépről lehet programozni, így a vezetékek patkányfészke teljesen megszűnik.
Az ilyen analóg számítógépek bizonyos problémaosztályok esetében rendkívül nagy számítási teljesítményt érnek el. Többek között felülmúlhatatlanok a differenciálegyenleteken és azok rendszerein alapuló problémák megoldására – ami a tudomány és a technológia számos, ha nem a legtöbb mai, leglényegesebb problémájára vonatkozik.
Glenn E. R. Cowan például egy 2005-ös tanulmányában leírta a Very-Large-Scale-Integrated Analog Computer (VLSI), azaz egy analóg számítógépet egy chipen, hogy úgy mondjam. Ez a chip a differenciálegyenletek egy bizonyos osztályának egy wattra vetítve 21 gigaflopot nyújtott, ami jobb, mint a mai Green500-listán szereplő leghatékonyabb energiafelhasználású rendszer.
A számítástechnika analóg jövője
Az analóg számítástechnika, amely a nagy teljesítményű számítástechnika uralkodó formája volt egészen az 1970-es évekig, nagyrészt feledésbe merült, mióta a mai tárolt programú digitális számítógépek átvették a helyét. De elérkezett az idő, hogy ez megváltozzon.
“A holnap alkalmazásai erősebb számítási teljesítményt igényelnek sokkal alacsonyabb energiafogyasztás mellett. A digitális számítógépek ezt nem tudják biztosítani.”
A holnap alkalmazásai erősebb számítási teljesítményt igényelnek sokkal alacsonyabb energiafogyasztási szint mellett. De a digitális számítógépek egyszerűen nem tudják ezt biztosítani. Itt az ideje tehát, hogy elkezdjük a modern analóg társprocesszorok fejlesztését, amelyek leveszik a hagyományos számítógépek válláról a bonyolult differenciálegyenletek megoldásának terhét. Az eredmény az úgynevezett hibrid számítógépek lennének.
Ezek a gépek a mai szuperszámítógépeknél nagyobb számítási teljesítményt nyújthatnának hasonló energiafogyasztás mellett, vagy olyan területeken lehetne őket használni, ahol csak nagyon kis mennyiségű energia áll rendelkezésre, mint például a beültetett vezérlők az orvostudományban és más beágyazott rendszerekben.
A jövő kihívásai
Az analóg számítástechnika nyilvánvalóan nagy ígéret a jövőre nézve. Az egyik fő megoldandó probléma az lesz, hogy az analóg számítógépek programozása teljesen különbözik mindattól, amit ma az egyetemen tanulnak a diákok.
Az analóg számítógépekben nincsenek algoritmusok, nincsenek ciklusok, semmi sincs úgy, ahogy ők ismerik. Ehelyett van néhány alapvető, de nagy teljesítményű számítási elem, amelyeket ügyesen össze kell kapcsolni, hogy valamilyen matematikailag leírt probléma elektronikus analógját felállítsák.
Az olyan technológiai kihívások, mint a nagy teljesítményű összeköttetések vagy a magasan integrált, de precíz számítási elemek jelentéktelennek tűnnek ehhez az oktatási kihíváshoz képest. Végső soron az emberek programozásról való gondolkodásmódjának megváltoztatása lesz a legnagyobb akadály az analóg számítástechnika jövője szempontjából.