Vissza az előzőleg látogatott oldalra (nem elérhető funkció)Vissza a tananyag kezdőlapjára (P)Ugrás a tananyag előző oldalára (E)Ugrás a tananyag következő oldalára (V)Fogalom megjelenítés (nem elérhető funkció)Fogalmak listája (nem elérhető funkció)Oldal nyomtatása (nem elérhető funkció)Oldaltérkép megtekintése (D)Keresés az oldalon (nem elérhető funkció)Súgó megtekintése (S)

Informatika oktatása / Egy számítógép modell – A számítógépről népszerűsítő stílusban /7. Hatodik felvonás

Egy számítógép modell – A számítógépről népszerűsítő stílusban

7. Hatodik felvonás

amelyben Lóti Futi & Co. osztódik,

sőt még telefont is kap.

(Függöny föl!)

Katonai célú feladatok gyakran vezetnek hatalmas adatmennyiségen (mátrixokon) elvégzendő bonyolult számításokra. Persze nem kell okvetlenül hadi példát keresni, ahhoz hogy ilyen feladatot magunk is el tudjunk képzelni. Gondoljunk egy civil, meteorológiai pl. légköráramlási feladatra, amelyhez egy parciális differenciál egyenletrendszert kell megoldani (nagyméretű mátrixokon történő operációt jelent)!

Szól a rendező

Már az előző felvonásban is felvetődött annak lehetősége, hogy több Lóti Futi jusson szerephez. Nézzük meg ennek vonzatait! A parallel végrehajtás erejét és nehézségeit ízlelgessük egy mindenki által követhető példán, egy aritmetikai kifejezés párhuzamosítása ürügyén:

Egy szövegközi ábra: képlet

Első lépésünk az, hogy – ismerve a kiértékelés sorrendjét – megrajzoljuk a végrehajtási fáját, melyről – reményünk szerint – sokkal egyértelműbben leolvashatók a dolgok:

A fenti képlethez tartozó végrehajtási fát ábrázolja a kép.Végrehajtási fa

A gráf alapján ránézésre megmondható, mik azok, amik párhuzamosan elvégezhetők:

Így összesen 4 lépésben, maximum 4 processzort használva oldottuk meg az eredetileg 8 lépésben megoldható kiértékelést.

Megjegyzés
  • A fenti gráfot maga Lóti képezheti, így a párhuzamosítás automatizálható. (Csak azt kell tudnia, hogy az egyes műveleteknek mi a fontossági sorrendje.)
  • Láthatólag optimalizálási lehetőségek is vannak, amit szintúgy Futi is észlelhet. (Ugyanazt a részfát elegendő egyszer kiszámolni.)
  • Igazolható, hogy L darab kétváltozós műveleti jelet tartalmazó formula legfeljebb 1+c*log2(L) lépésben – párhuzamosítva – kiszámítható; itt a c egy alkalmasan választott, de L-től független konstans, és a log2 a kettesalapú logaritmus függvényt jelöli. (Ezt állítja Brent tétele.) Például egy n-ed fokú polinom 2*log2(n) lépésben. E tétel általánosítható (akár programokra is)! [GPLL]
  • Hogy ez a párhuzamosítás mennyi baj forrása lehet, amelynek elkerülését magának Lótinak kell megoldania, álljon itt néhány gondolatébresztő példa:
    • mi van, ha ugyanaz a fióktartalom kell többnek is (ilyen nyilvánvalóan előfordulhat, például az x változóra való hivatkozáskor)?
    • a probléma megoldására természetes ötlet, hogy ilyenkor valamilyen definiált sorrendben juthatnak hozzá a tartalomhoz; de (!) mi van akkor, ha az egyik (kiszámítási) folyamat vár a másik miatt egy adatra, míg a másik folyamat az egyik miatt áll sorban adatért (mintegy „halálos ölelésbe” kerültek, holtpontra jutottak)?
    • szokásos eljárás, hogy az egy példányban levő erőforrások kezelését két – nem párhuzamosítható – ún. primitív utasítás (lefoglal, elenged) segítségével végezzük (kölcsönös kizárás),
    • ennek egy képszerű – és talán ezért népszerű – változata a szemaforokkal történő vezérlés; lényege, hogy a konkurencia tárgyát használni szándékozó folyamatok szabad utat csak akkor kapnak, ha elsőként érkeznek a kritikus igénnyel, egyébként sorba állíttatnak...
    • szinkronizációval vezéreljük a folyamatokat, ha különböző elsőbbségűek (pl. ha egy termelő és egy fogyasztó van a folyamatban: nyilván nem lehet fogyasztani addig, amíg nincs mit); ekkor is – persze – a fenti eszközöket használhatjuk föl ennek megszervezésére.

Térjünk vissza az alap, lóti-futis problémára! Hogyan kell „koreografálni” a tisztelt társulatot, melynek több „dudása is lehet ugyanabban a csárdában”. Kézenfekvőnek tűnik, hogy egy mátrixra vezető feladat megoldása esetén kihasználjuk azt számítási sajátosságot, hogy sok azonos számítással juthatunk el a végeredményhez. Ezért nagyszámú, azonos számítási képességű lótis társulást bízzunk meg ennek megoldásával! Valahogy úgy, hogy a mátrixot több partícióra szétvágva, külön-külön Lótihoz rendeljük a rá vonatkozó műveletsort, amiket most már egymástól függetlenül, s főleg párhuzamosan végezhetnek el.

Az ábra egy tömbprocesszor sematikus ábráját tárja elénk.Processzorok mátrixa

Lehet egy másik elképzelésünk a másik feladattípus esetére. Bár a lényeg megint a párhuzamos végrehajthatóság: Lótik mint futószalag mentén elhelyezkedő intelligens betanított munkások dolgoznak ugyanazon a feladaton. Ez a kalákaszerű munkaszervezés persze csak akkor hatékony, ha nagy mennyiségű adatra ugyanazt a bonyolult metódust kell alkalmazni. Ha egy képpel kell megvilágítani ezt a módszert, akkor egy olyan intelligens csövet kell magunk elé képzelni, amelyen helyenként kidudorodások vannak; a cső száján beöntve az adatokat, a cső dudorain átjutva és átalakulva a másik végén csöpög (vagy éppen hömpölyög) ki az eredményesszencia (illetve -folyam). (A Lóti Futik és háztartásuk egyébként hasonlónak mondhatók az eddig megismertekhez. Ami bonyolultabb az egyik és a másik esetben is: az összhang megteremtése, a kommunikációjuk megszervezése.)

Az ábra egy pipeline-processzor sematikus ábráját tárja elénk.Processzorok futószalag mentén

Végül egy harmadik elképzelés is adódik, ami talán a legkevésbé tűnik újszerűnek: több, önálló Lóti & Co. kapcsolatba hozása pl. közönséges telefonvonalon keresztül. Ekkor viszont a kommunikáció – amit az előbb eléggé kifejtetlenül hagytunk, az most – komoly problémává duzzadt, hiszen köztudomásúan zajosak és megbízhatatlanok a telefonvonalak. Gondoskodni kell az információ hibátlan, magabiztos célba jutásáról. Ehhez néhány, jól körülhatárolt feladatú szereplőre van szükség (aki a Lóti Futiék számjegyes [digitális] jeleit a telefonvonalakon szokásos folytonos [frekvenciamodulált, analóg] jelekké alakítja, majd vissza), és olyan kódolási módszerre, ami önmagában garantálja a hiba érzékelését, sőt javíthatóságát. Ez igen egyszerűen megvalósítható úgy, hogy pusztán ellenőrzési céllal plusz információkkal „hígítjuk föl” az átviendő anyagot. Például legkézenfekvőbb elképzelés: mindent kétszer küldeni. Ahol nem ugyanaz ismétlődött, ott hibának kell lennie...

Így tehát érzékelhető legalább a hiba (?). Ennél a gyanúsan kézenfekvő módszernél kitalálhatunk jobbat is, ami nemcsak az esetleges hiba tényét jelezheti, hanem azt is, hogy hol a hiba helye (hibák helyei), sőt miből torzult el az átvitel során. Alapgondolatul csak ennyit: kódolásra felhasználandó kódszámokat leszűkítjük; az így fölszabadultak csak rendellenes körülmények között képződhetnek. Ez teszi fölismerhetővé a hibát. A visszaállíthatóság érdekében, ezeknek a „kódlukaknak” az elhelyezkedését úgy választjuk meg, hogy a szokásos torzulások lehetőleg valamelyik nem megengedett kódhoz vezessenek. Ezzel reménykedhetünk abban, hogy nemcsak egyszeres hibákra, hanem kettő-, vagy többszörösre is rábukkanhatunk. Ára persze: a kód nagy redundanciája, azaz a hasznos és a tényleges kódszélesség arányának eltolódása. [CGDPKA]

A dolognak még csak az elején tartunk, hiszen az információáramlásnak csak a legalacsonyabb, fizikai szintjével foglalkoztunk. Hátra van még az abból a tényből fakadó problémák megoldása, hogy több, szuverén lótis társaság együttműködését kell megszerveznünk. Ilyen kérdésekre kell választ adnunk:

Ezért a fenti információkódolási módszert célszerű felfejleszteni egy speciális, kommunikációs célú nyelvvé, amelyben a kapcsolatfelvétel és -elbontás, az üzenetcímzés és az ismétléskérés mellett sok, az élet felvetette problémához van szókincse. Ezt a sajátos nyelvet (protokollt) – természetesen – egy külön e célra „teremtett” Teli Foni fogja ismerni, és beszélni. A dolog külön érdekessége az, hogy miként kapcsoljuk ún. hálózatba ezeket az individuális lótis háztartásokat. Valamilyen hierarchiába, vagy teljesen egyenrangúakként; mindenkit mindenkivel, vagy gyűrűsen csak a szomszédosakat összekötve (ez esetben is megvan a lehetőség a távolabbi szomszédokkal való kapcsolatteremtésre, így persze nem „első kézből” kapja az üzenetet).

Az ábra két gyakori hálózati topológiát mutat be gráfokkal.Hálózatban

Szót érdemel a hálózatban rejlő előnyök taglalása. Fölsorolunk néhányat – különösebb magyarázat nélkül – gondolatébresztőként:

Vissza a tartalomjegyzékhez

Szünet

A felvonásközi elmélkedés következik. A „tanulságok”:

Feladat

1. A következő aritmetikai formuláknak felrajzolva a végrehajtási fáját elemezzük a párhuzamos kiszámítás szempontjából!

(A) Egy szövegközi ábra: képlet

(B) A következőben a két kifejezés párhuzamosan számítandó ki!

  • (1) Egy szövegközi ábra: képlet
  • (2) Egy szövegközi ábra: képlet

Figyelem: a (2)-ben az (1)-beli 'a' változó szerepel! Érdemes kiszámolni az effektív időnyereséget abból a feltevésből kiindulva, hogy pl. a +,– műveletek egy egységnyi idejűek, a *,/ három, a . ² (ti. négyzetre emelés) öt, az √ és a sin tíz, valamint az := (ti. az értékadás) három egységnyiek.

2. Érdemes elmélyedni a következő problémán. Nem ejtettünk ugyan külön szót arról, hogy a számítógép ókor-ókor hibázni is képes, de mindenki számára ez hihető. Adott egy olyan nagy horderejű feladat, amely megoldásánál nem tűrhető el az esetleges tévedés. (Közismert példákra utalva: repülőgép robotpilótáját megtestesítő számítógép, bankhálózat nyilván tartórendszere, vagy nukleáris erőmű vezérlőrendszere stb.) Készítsünk olyan lótis epizódot, amelynek kiinduló ötlete az, hogy a többprocesszoros rendszerben ugyanazt a programot ugyanazon adatokon párhuzamosan mindegyik processzor elvégzi a biztonság kedvéért, és egy ellenőrző mechanizmus dönt a fölmerülő vitás helyzetekben! (Ezek az ún. hibatűrő rendszerek.)

Vissza a tartalomjegyzékhez

Új Széchenyi terv
A projekt az Európai Unió támogatásával, az Európai Szociális Alap társfinanszirozásával valósul meg.

A tananyag az ELTESCORM keretrendszerrel készült