7. Szisztolikus rendszerek (Eberhard Zehendner)



Hasonló dokumentumok
Gráfelmélet/Diszkrét Matematika MSc hallgatók számára. Párosítások

1 Rendszer alapok. 1.1 Alapfogalmak

JANUS PANNONIUS TUDOMÁNYEGYETEM. Schipp Ferenc ANALÍZIS I. Sorozatok és sorok

MATEMATIKA TANTERV Bevezetés Összesen: 432 óra Célok és feladatok

LINEÁRIS ALGEBRA PÉLDATÁR MÉRNÖK INFORMATIKUSOKNAK

6. modul Egyenesen előre!

Visszatérítő nyomaték és visszatérítő kar

Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma) Gráfelmélet II. Gráfok végigjárása

Mikrohullámok vizsgálata. x o

(1. és 2. kérdéshez van vet-en egy 20 oldalas pdf a Transzformátorokról, ide azt írtam le, amit én kiválasztanék belőle a zh-kérdéshez.

(11) Lajstromszám: E (13) T2 EURÓPAI SZABADALOM SZÖVEGÉNEK FORDÍTÁSA

Lehet vagy nem? Konstrukciók és lehetetlenségi bizonyítások Dr. Katz Sándor, Bonyhád

OBJEKTUMORIENTÁLT TERVEZÉS ESETTANULMÁNYOK. 2.1 A feladat

9. ÉVFOLYAM. Tájékozottság a racionális számkörben. Az azonosságok ismerete és alkalmazásuk. Számok abszolútértéke, normál alakja.

MATEMATIKA JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ

5 Egyéb alkalmazások. 5.1 Akkumulátorok töltése és kivizsgálása Akkumulátor típusok

Lineáris programozás. Modellalkotás Grafikus megoldás Feladattípusok Szimplex módszer

Tűgörgős csapágy szöghiba érzékenységének vizsgálata I.

2) = 0 ahol x 1 és x 2 az ax 2 + bx + c = 0 ( a,b, c R és a 0 )

Lineáris algebra I. Kovács Zoltán. Előadásvázlat (2006. február 22.)

MATEMATIKA I. RÉSZLETES ÉRETTSÉGI VIZSGAKÖVETELMÉNY A) KOMPETENCIÁK

MATEMATIKA ÉRETTSÉGI VIZSGA ÁLTALÁNOS KÖVETELMÉNYEI

5. Előadás. Megyesi László: Lineáris algebra, oldal. 5. előadás Lineáris függetlenség

MATEMATIKA 9. osztály Segédanyag 4 óra/hét

KOVÁCS BÉLA, MATEMATIKA I.

Matematika emelt szintû érettségi témakörök Összeállította: Kovácsné Németh Sarolta (gimnáziumi tanár)

MATEMATIKA FELADATGYŰJTEMÉNY

23. Kombinatorika, gráfok

MATEMATIKA évfolyam

4-1. ábra. A tipikus jelformáló áramkörök (4-17. ábra):

Gyakorlatok. P (n) = P (n 1) + 2P (n 2) + P (n 3) ha n 4, (utolsó lépésként l, hl, u, hu-t léphetünk).

9. Áramlástechnikai gépek üzemtana

Sztojka Miroszláv LINEÁRIS ALGEBRA Egyetemi jegyzet Ungvár 2013

Kódolás, hibajavítás. Tervezte és készítette Géczy LászlL. szló 2002

Kombinatorika évfolyam. Szerkesztette: Surányi László Ábrák: Hraskó András december 6.

Analízisfeladat-gyűjtemény IV.

Dekonvolúció, Spike dekonvolúció. Konvolúciós föld model

Parciális differenciálegyenletek numerikus módszerei számítógépes alkalmazásokkal Karátson, János Horváth, Róbert Izsák, Ferenc

Adatszerkezetek és algoritmusok Geda, Gábor

2. Digitális hálózatok...60

ÉS TESZTEK A DEFINITSÉG

(11) Lajstromszám: E (13) T2 EURÓPAI SZABADALOM SZÖVEGÉNEK FORDÍTÁSA. (51) Int. Cl.: A61B 17/17 ( ) 11. ábra

KOVÁCS BÉLA, MATEMATIKA I.

22. szakkör (Csoportelméleti alapfogalmak 1.)

Vári Péter-Rábainé Szabó Annamária-Szepesi Ildikó-Szabó Vilmos-Takács Szabolcs KOMPETENCIAMÉRÉS 2004

(11) Lajstromszám: E (13) T2 EURÓPAI SZABADALOM SZÖVEGÉNEK FORDÍTÁSA

TERMELÉSMENEDZSMENT. Gyakorlati segédlet a műszaki menedzser szak hallgatói számára. Összeállította: Dr. Vermes Pál főiskolai tanár 2006.

Béres Mária TANÍTÓI KÉZIKÖNYV. Színes matematika tankönyvsorozat 2. osztályos elemeihez

Tevékenység: Gyűjtse ki és tanulja meg a kötőcsavarok szilárdsági tulajdonságainak jelölési módját!

I. Gondolkodási módszerek: (6 óra) 1. Gondolkodási módszerek, a halmazelmélet elemei, a logika elemei. 1. Számfogalom, műveletek (4 óra)

Árvainé Libor Ildikó Murátiné Szél Edit. Tanítói kézikönyv. tanmenetjavaslattal. Sokszínû matematika. 4

Széchenyi István Egyetem, 2005

Helyi tanterv. Batthyány Kázmér Gimnázium Matematika emelt ( óra/hét) 9-12 évfolyam Készült: 2013 február

Bevezetés. Párhuzamos vetítés és tulajdonságai

MATEMATIKA JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ

hogy a megismert fogalmakat és tételeket változatos területeken használhatjuk Az adatok, táblázatok, grafikonok értelmezésének megismerése nagyban

Kúpfogaskerék lefejtése léc-típusú szerszámmal

Matematika. Specializáció évfolyam

Elsôfokú egyenletek, egyenletrendszerek, egyenlôtlenségek

FAUR KRISZTINA BEÁTA, SZAbÓ IMRE, GEOTECHNIkA

A Feldmann ~ Sapiro - elv igazolása

mágnes mágnesesség irányt Föld északi déli pólus mágneses megosztás influencia mágneses töltés

Az enyhe értelmi fogyatékos fővárosi tanulók 2009/2010. tanévi kompetenciaalapú matematika- és szövegértés-mérés eredményeinek elemzése

Ferde fényképezés. Szalkai István Pannon Egyetem, Veszprém, June 18, 2015

Időtervek: III./2. Hálóterv (CPM) időelemzése

Mőszaki adatok. Mőszaki követelmények

Scherlein Márta Dr. Hajdu Sándor Köves Gabriella Novák Lászlóné MATEMATIKA 1. MÓDSZERTANI AJÁNLÁSOK MÁSODIK FÉLÉV

BUDAPESTI KÖZGAZDASÁGTUDOMÁNYI EGYETEM. Puskás Csaba, Szabó Imre, Tallos Péter LINEÁRIS ALGEBRA JEGYZET

Kétszemélyes négyes sor játék

Gráfokkal megoldható hétköznapi problémák

2. Halmazelmélet (megoldások)

LÁNG CSABÁNÉ SZÁMELMÉLET. Példák és feladatok. ELTE IK Budapest javított kiadás

Slovenská komisia Fyzikálnej olympiády. Szlovákiai Fizikai Olimpiász Bizottság

Relációs algebra 1.rész

A PC vagyis a személyi számítógép. XV. rész. 1. ábra. A billentyűzet és funkcionális csoportjai

Kosztolányi József Kovács István Pintér Klára Urbán János Vincze István. tankönyv. Mozaik Kiadó Szeged, 2013

A törtek és egységtörtek fogalmának megerősítése az igazságosság fogalmának segítségével

E6 laboratóriumi mérés Fizikai Tanszék

A lineáris programozás 1 A geometriai megoldás

Tanmenet Matematika 8. osztály HETI ÓRASZÁM: 3,5 óra ( 4-3) ÉVES ÓRASZÁM: 126 óra

3. RADIOAKTÍV MINTÁK AKTIVITÁSÁNAK MEGHATÁROZÁSA

Következõ: Lineáris rendszerek jellemzõi és vizsgálatuk. Jelfeldolgozás. Lineáris rendszerek jellemzõi és vizsgálatuk

(11) Lajstromszám: E (13) T2 EURÓPAI SZABADALOM SZÖVEGÉNEK FORDÍTÁSA

SZÉCHENYI ISTVÁN EGYETEM MŰSZAKI TUDOMÁNYI KAR RENDSZERELEMZÉS I.

= szinkronozó nyomatékkal egyenlő.

MATEMATIKA Kiss Árpád Országos Közoktatási Szolgáltató Intézmény Vizsgafejlesztő Központ

Bevezetés a számításelméletbe I. feladatgyűjtemény. Szeszlér Dávid, Wiener Gábor

VHR-23 Regisztráló műszer Felhasználói leírás

Matematikai és matematikai statisztikai alapismeretek

Relációs algebra áttekintés és egy táblára vonatkozó lekérdezések

KOVÁCS BÉLA, MATEMATIKA I.

(11) Lajstromszám: E (13) T2 EURÓPAI SZABADALOM SZÖVEGÉNEK FORDÍTÁSA

Tevékenység: Olvassa el a fejezetet! Gyűjtse ki és jegyezze meg a ragasztás előnyeit és a hátrányait! VIDEO (A ragasztás ereje)

2. előadás: További gömbi fogalmak

A 2011/2012. tanévi FIZIKA Országos Középiskolai Tanulmányi Verseny első fordulójának feladatai és megoldásai fizikából. I.

A rádió* I. Elektromos rezgések és hullámok.

MATEMATIKA ÉVFOLYAM

Eszterházy Károly Főiskola Matematikai és Informatikai Intézet. Adatszerkezetek és algoritmusok. Geda Gábor

BEVEZETÉS A FUZZY-ELVŰ SZABÁLYOZÁSOKBA. Jancskárné Dr. Anweiler Ildikó főiskolai docens. PTE PMMIK Műszaki Informatika Tanszék

MUNKAANYAG. Szabó László. Szilárdságtan. A követelménymodul megnevezése:

Átírás:

7. Szisztolikus rendszerek (Eberhard Zehendner) A szisztolikus rács a speciális feladatot ellátó számítógépek legtökéletesebb formája legegyszerubb esetben csupán egyetlen számítási muvelet ismételt végrehajtására alkalmas. Ennek ellenére számos, gyakorlati szempontból is jelentos alkalmazási területe van, foként az iteratív módszereket alkalmazó numerikus matematika, kombinatorikus optimizálás, lineáris algebra, algoritmikus gráfelmélet, kép- és jelfeldolgozás, nyelv- és szövegfeldolgozás stb. területén. Egy szisztolikus rács felépítése egészen pontosan megfeleltetheto egy végrehajtásra váró algoritmus szerkezetének úgy, hogy minden egyes számítás helye és idopontja egyszer és mindenkorra meghatározott, az egymással kommunikáló cellák közvetlenül és permanens módon egymáshoz vannak kapcsolva, így kommunikációs csatornák létrehozása feleslegessé válik. Az algoritmust közvetlenül hardver valósítja meg. Emiatt a szisztolikus algoritmusokat ebben az összefüggésben hardver-algoritmusként is szokták emlegetni. A szisztolikus algoritmusok kifejezés tehát nem egy bizonyos, jól körülhatárolt számítási feladatra adott megoldások sokaságát jelenti (mint például a rendezési algoritmusok esetében), hanem sokkal inkább egy sajátos feladatmeghatározási-, programozási-, illetve számítási stílust határoz meg. Igen sokféle, különbözo felhasználási területhez tartozó algoritmus lehet szisztolikus jellegu, ami nem jelenti feltétlenül azt, hogy ezen területek összes ismert algoritmusa szisztolikus feldolgozásra alkalmas alakra hozható lenne. Ennek a fejezetnek nem célja, hogy a szisztolikus algoritmusokat, vagy akár csak a legfontosabb szisztolikus algoritmusokat bemutassa. A cél az, hogy néhány egyszeru, de tipikus példa segítségével megalapozzuk a szisztolikus algoritmusok általános megértését. A fejezet öt alfejezetbol áll. Az alapfogalmak (7.1. alfejezet) után a térido leképezést (7.2. alfejezet), majd a be/kiviteli sémát (7.3. alfejezet) mutatjuk be. A 7.4. alfejezetben a vezérlési szempontokat, a 7.5. alfejezetben pedig a lineáris szisztolikus rácsokat tárgyaljuk. 7.1. A szisztolika alapfogalmai Maga a szisztolikus elnevezés a szisztolikus architektúrák muködési elvébol származik. Szisztolikus munkamódon a futószalag-elv, illetve a térbeli párhuzamosság intenzív együttes alkalmazását kell értenünk, melyet egy globális, és teljes mértékben szinkronizált órajel irányít. Ez eredményezi az adatfolyamoknak az összekapcsolt cellák hálózatán keresztül történo ritmikus áramlását, az emberi szervezetben keringo vérhez hasonlóan, melyet a szív a vérereken keresztül a test különbözo pontjai felé küld. A futószalag-elv nem csupán egyet-

7.1. A szisztolika alapfogalmai 269 b 45 b 42 b 41 b 32 b 31 b 22 b 21 b 12 b 11 b 44 b 43 b 34 b 33 b 24 b 23 b 14 b 13 b 35 b 25 b 15 B a 14 a 13 a 12 a 11 a 24 a 23 a 22 a 21 c 11 c 12 c 13 c 14 c 15 c 21 c 22 c 23 c 24 c 25 A * + C a 34 a 33 a 32 a 31 c 31 c 32 c 33 c 34 c 35 (a) (b) 7.1. ábra. Téglalap alakú szisztolikus rács mátrixszorzáshoz: (a) A rács felépítése és a beviteli séma; (b) cellaszerkezet. len irányban érvényesül, hanem a különbözo irányba haladó, a szisztolikus rács celláiban egymást keresztezo adatfolyamok mindegyikére vonatkozik. Egy szisztolikus rendszer általában egy gazdagépbol, illetve a tulajdonképpeni szisztolikus rácsból áll. A gazdagépnek elvileg alárendelt szerepe van; csupán a szisztolikus rács muködésbe hozatalára, továbbá adatokkal való ellátására szolgál. A szisztolikus rács egy sajátos, cellákból álló hálózatként is felfogható, mely a masszív párhuzamosságnak köszönhetoen az adatorientált muveleteket igen nagy sebességgel hajtja végre. Egy szisztolikus rács celláinak egységes muködése révén végrehajtott program adja magát a szisztolikus algoritmust. Bármennyire is különböznek egymástól a szisztolikus rácsok, mégis jó néhány közös tulajdonsággal rendelkeznek: ezek a diszkrét idoséma, a szinkron munkamód, a szabályos (általában két dimenziós) mértani felépítés, csak közvetlenül szomszédos cellák között fennálló kommunikáció, valamint a legegyszerubb vezérlési mechanizmusok alkalmazása. A fejezet további részében a szisztolikus rácsokkal kapcsolatos alapveto jelenségeket fogjuk egy jellemzo példán keresztül bemutatni és megvilágítani. Egy számítási feladatra gyakran többféle megoldás kínálkozik, azaz különbözo szisztolikus rácsokat találhatunk, melyek közül a legjobbak általában igen bonyolultak. A továbbiakban ezért nem a legjobb változat bemutatását tuztük ki célul, hanem a legfontosabb elvek tömör és intuitív módon való bemutatását. 7.1.1. Bevezet példa: mátrixok szorzása A 7.1. ábrán egy 15 cellából álló, téglalap alakú szisztolikus rács látható, amely egy 3 N méretu A mátrixnak egy N 5 méretu B mátrixszal való összeszorzására alkalmas. Az N paraméter a 7.1. ábrán látható szisztolikus rács felépítése szempontjából semmiféle szerepet nem játszik, viszont lényeges a beviteli séma, valamint az algoritmus futási ideje szempont-

27 7. Szisztolikus rendszerek (Eberhard Zehendner) jából.

7.1. A szisztolika alapfogalmai 271 A beviteli séma az N = 4 értéknek felel meg. A 7.1. ábra a következo konkrét feladat megoldását mutatja: ahol továbbá A = B = C = 4 c ij = k=1 A B = C, a 11 a 12 a 13 a 14 a 21 a 22 a 23 a 24 a 31 a 32 a 33 a 34, b 11 b 12 b 13 b 14 b 15 b 21 b 22 b 23 b 24 b 25 b 31 b 32 b 33 b 34 b 35 b 41 b 42 b 43 b 44 b 45 c 11 c 12 c 13 c 14 c 15 c 21 c 22 c 23 c 24 c 25 c 31 c 32 c 33 c 34 c 35, a ik b kj (1 i 3,1 j 5). A szisztolikus rács cellái adatokat cserélhetnek egymás között az oket összeköto kapcsolatokon keresztül, melyeket a 7.1(a) ábrán a cellákat összeköto nyilakkal jelöltünk. A szisztolikus rács a peremcelláin keresztül kommunikál a külvilággal. A szisztolikus rács minden egyes cellája ugyanazt a kapcsolódási mintát követi a környezettel való kommunikáció során. A szisztolikus rács teljesen szabályos felépítése (a cellák elhelyezése, illetve a kapcsolatok szerkezete) szabályos adatfolyamokat eredményez a különbözo kapcsolódási tengelyek mentén. A 7.1(b) ábra egy cella belso szerkezetét szemlélteti. Egy cella egy szorzóból, egy összeadóból, három regiszterbol és négy csatornából, illetve az ezeket összekapcsoló vezetékekbol áll. Minden cellának ugyanolyan a felépítése. Az A, B és C regiszterek mindegyike egy szám tárolására képes. A regiszterek jelölését itt értelem szerint választottuk meg, de tulajdonképpen tetszés szerint jelölhetjük oket. Az A, illetve B regiszterek az ún. bemeneti csatornáktól kapják értékeiket. A 7.1(b) ábrán a cella bal, illetve felso szélén található apró körökkel jelöltük ezeket. Egy ilyen csatorna csatlakozási felületet képez a cellához kívülrol illeszkedo kapcsolathoz. Az A, illetve B regiszterek aktuális értékét a szorzó operandusként fogja felhasználni, ezzel egyidoben az értékek továbbadódnak a cella kimeneti csatornáin keresztül (lásd az ábra jobb, illetve alsó szélén elhelyezkedo köröket). A szorzás eredményét az összeadó veszi át, mely második paraméterét a C regisztertol kapja. Az összeadás eredménye felül fogja írni C korábbi értékét.,

272 7. Szisztolikus rendszerek (Eberhard Zehendner) 7.1.2. A feladat és a rács paraméterei A 7.1. ábrán bemutatott szisztolikus rács 15 cellája 3 sorból és 5 oszlopból álló téglalap alakú mintát alkot (akárcsak a C mátrix). Ennek méretei megegyeznek az A mátrix sorainak, illetve a B mátrix oszlopainak számával. Tehát esetünkben a szisztolikus rács mérete a megoldásra váró feladatban szereplo adatszerkezetek méretéhez igazodik. Általános esetben, ha egy N 1 N 3 méretu A mátrixot egy N 3 N 2 méretu B mátrixszal kellene összeszoroznunk, egy N 1 sorral, illetve N 2 oszloppal rendelkezo szisztolikus rácsra lenne szükségünk. A 7.1. ábrán látható felépítés természetesen azt is megengedi, hogy egy több, mint N 1 sorral vagy több, mint N 2 oszloppal rendelkezo szisztolikus rácsot használjunk. Ez abban az esetben lényeges, amikor egy rögzített méretu szisztolikus rácsot szeretnénk használni különbözo méretu mátrixok összeszorzására. Ekkor minden esetben csupán azt az N 1 sorból, illetve N 2 oszlopból álló téglalap alakú részt használnánk, mely a példában a rács bal felso sarkában található. Jóllehet a többi cella is ugyanúgy fog muködni, ám a feladat megoldásához nem járulnak hozzá (de hibát sem okoznak). Az N 1, N 2, N 3 méretek a megoldásra váró feladat paramétereit képezik, mivel a megoldás során végrehajtott muveletek száma mind a három értéktol függ; ezek tehát a feladat paraméterei. Ellenben a szisztolikus rács mérete, illetve felépítése csak az N 1 és N 2 méretektol függ, ezek tehát egyúttal a rács paraméterei is lesznek. Megjegyzés. A 7.2. alfejezetben a mátrixok szorzását megvalósító újabb szisztolikus ráccsal ismerkedhetünk meg, melynek méretei mindhárom (N 1, N 2, N 3 ) paramétertol függnek. 7.1.3. Térbeli koordináták A továbbiakban a szisztolikus rács minden egyes cellájához szeretnénk egy egyértelmu térbeli koordinátát hozzárendelni, ennek segítségével jellemezve a cella mértani elhelyezkedését a rács egészéhez képest. Egy téglalap alakú szisztolikus rács esetén legegyszerubb, ha erre a célra a megfelelo sor-, illetve oszlopszámokat használjuk. A 7.1. ábrán c 11 -gyel jelölt cella tehát az (1,1) koordinátákat kapja, a c 21 -gyel jelölt pedig a (2,1) koordinátákat, és így tovább. Az így meghatározott térbeli koordinátákat a fejezet hátralevo részében adottnak tekintjük. Elvileg lényegtelen, hogy hol helyezkedik el a koordinátarendszer kezdopontja, milyen irányban helyezkednek el a koordinátatengelyek, melyik irány felel meg az elso, és melyik a második koordinátának. A példában a mátrix komponenseinek jelölésére a megadott számozást választottuk, ennek alapján az elso koordináta a fentrol lefelé, 1-gyel kezdodoen számozott soroknak felel meg, míg a második komponens a balról jobbra, szintén 1-gyel kezdodoen számozott oszlopoknak. Természetesen másképp is megválaszthattuk volna a koordinátarendszert. A fenti séma azonban kitunoen megfelel az alábbi szisztolikus rácsnak: az egy adott cellában kiszámított c ij mátrixkomponens indexei pontosan megegyeznek a cella koordinátáival. Az A mátrix beviteli adatként megadott sorainak száma pontosan ugyanaz, mint azon cellák elso koordinátája, amelyeken ezek az adatok keresztülhaladnak; ugyanez érvényes a második koordinátára, a B mátrix oszlopaival kapcsolatban. Az összes kapcsolat (és ezzel együtt a rajtuk keresztülhaladó összes adatfolyam) tengelypárhuzamos és a koordináták növekvo irányába mutat.

7.1. A szisztolika alapfogalmai 273 Nem mindig ennyire egyértelmu, hogyan rendelhetünk megfelelo térbeli koordinátákat a cellákhoz; példaként álljon itt a 7.3(a) ábrán látható szisztolikus rács. A koordinátarendszer megválasztásától függetlenül fontos, hogy a cellák koordinátái szembeötlo módon tükrözzék a szisztolikus rács szabályos felépítését. Emiatt használunk tulajdonképpen mindig egész koordinátákat. Ezért jó, ha az egymástól minimális euklideszi távolságra fekvo cellák koordinátái csupán egyetlen komponensben különböznek, és a különbség értéke 1. 7.1.4. Generikus operátorok sorba fejtése Minden, a 7.1. ábrán látható aktív (i, j) cella pontosan a C eredménymátrix c ij elemét számolja ki. Tehát a cellának az alábbi skalárszorzatot kell kiértékelnie: 4 k=1 a ik b kj. Ez iteratív módon történik: minden lépésben egy újabb a ik b kj szorzatot számítunk ki, ami hozzáadódik az addigi részösszeghez. A részösszeget a számítások elején természetesen nulláznunk kell (vagy egy tetszés szerinti kezdoértéket határozhatunk meg). Az imperatív programozási nyelvek klasszikus jelölésmódját követve a következoképpen írhatjuk le, hogy mi történik. MÁTRIXSZORZÁS(N 1,N 2,N 3 ) 1 for i 1 to N 1 2 do for j 1 to N 2 3 do c(i, j) 4 for k 1 to N 3 5 do c(i, j) c(i, j) + a(i,k) b(k, j) 6 return C Ha N 1 = N 2 = N 3, akkor ennek az algoritmusnak a végrehajtása során Θ(N 3 ) összeadást, Θ(N 3 ) szorzást és Θ(N 3 ) értékadást kell végrehajtani, ezért egy soros processzoron a futási ideje Θ(N 3 ). A összegzo operátor az úgynevezett generikus operátorok közé tartozik, melyekhez tetszoleges számú operandus rendelheto. A 7.1. ábrán látható szisztolikus rács esetén minden egyes összeadás, mely ugyanannak az összegnek a kiszámításához tartozik, ugyanabban a cellában hajtódik végre. Ugyanakkor sok olyan példa is van, melyben egy generikus operátor egyes muveletei különbözo cellák közt oszlanak meg (lásd például a 7.3. ábrán bemutatott szisztolikus rácsot). Megjegyzés. Néhány további példa generikus operátorokra: szorzat, minimum, maximum, továbbá az ÉS, VAGY, illetve KIZÁRÓ-VAGY logikai muveletek. Szükség van tehát a generikus operátorok sorba fejtésére, mielott a végrehajtandó muveleteket hozzárendelhetnénk a szisztolikus rács celláihoz. Ezeket az operátorokat azonban másképp kell kezelnünk, mint a megszokott, rögzített számú operandussal rendelkezo operátorokat ilyen például a két operandusú összeadás mivel ezek beosztásánál bizonyos fokú szabadsággal rendelkezünk.

274 7. Szisztolikus rendszerek (Eberhard Zehendner) 7.1.5. Értékadásmentes jelölés A szisztolikus programok leírására az imperatív forma helyett, akárcsak a MÁTRIXSZORZÁS algoritmus esetében, inkább egy értékadásmentes jelölést használunk, mely egy egyenlet megoldásán alapszik. Ily módon elkerüljük a mellékhatásokat és közvetlen módon ki tudjuk fejezni a párhuzamosságot. Az alábbi esetben zavaró a c(i, j) változó értékének felülírása. Ezért bevezetjük helyette a c(i, j, k) példányok sorozatát, mely a c(i, j) változónak a MÁTRIXSZORZÁS algoritmus lépéseinek végrehajtása során felvett értékeit jelöli. Ezáltal egy úgynevezett rekurzív egyenlet jön létre. A MÁTRIXSZORZÁS algoritmusban bemutatott mátrixszorzást például a következo módon lehet értékadásmentes alakban kifejezni: Bemeneti muveletek c(i, j,) = 1 i N 1,1 j N 2. Számítások c(i, j,k) = c(i, j,k 1) + a(i,k) b(k, j) 1 i N 1,1 j N 2,1 k N 3. Kimeneti muveletek c ij = c(i, j, N 3 ) 1 i N 1,1 j N 2. A (7.1) rendszer leírja a végrehajtott szisztolikus algoritmus pontos felépítését. A legfelso egyenlet az összes bemeneti adatot jellemzi, a legalsó pedig az összes kimeneti adatot; a szisztolikus rácsban ezek az egyenletek nem számítási, hanem ki/bemeneti muveleteknek felelnek meg. A középso egyenlet írja le a tulajdonképpeni számításokat. A rendszer minden egyes egyenletéhez hozzátartozik egy, az egyenlet jobb oldalán látható kvantikálás, mely az i és j iterációs változók által felvett értékek halmazát határozza meg (a középso egyenlet esetében k változóét is). Minden ilyen halmazt értéktartománynak nevezünk. A középso egyenlet i, j, k iterációs változói egy (i, j, k) iterációs vektort alkotnak. A ki/bemenet esetében az iterációs vektoroknak csupán i és j komponense van. Ahhoz, hogy egy zárt jelölésmódot kapjunk, kiegészíthetjük ezeket a vektorokat egy k komponenssel, melynek rögzített az értéke. A bemeneti adatokat k = -val jelöljük, a kimeneti adatokat pedig k = N 3 -mal. A következoket kapjuk: Bemeneti muveletek c(i, j,k) = 1 i N 1,1 j N 2,k =. Számítások c(i, j,k) = c(i, j,k 1) + a(i,k) b(k, j) 1 i N 1,1 j N 2,1 k N 3. Kimeneti muveletek c ij = c(i, j,k) 1 i N 1,1 j N 2,k = N 3. Figyeljük meg, hogy a be/kimeneti adatokhoz tartozó értéktartományok formálisan szintén háromdimenzióssá váltak ugyan, a megszokott értelemben azonban csak kétdimenziósak. (7.1) (7.2)

7.1. A szisztolika alapfogalmai 275 7.1.6. Elemi számítások A (7.2) rendszer egyenleteibol közvetlen módon leolvashatók azok az elemi, azaz tovább már nem osztható muveletek, melyeket a szisztolikus rács cellái fognak elvégezni. Ezek pontosan azok a rendszer valamely egyenletében leírt muveletek, melyek az egyenlethez rendelt kvantikálás egy rögzített pontjára vonatkoznak. Amennyiben egy egyenletben több részmuvelet fordul elo, ezeket együvé tartozónak, azaz egyetlen összetett muveletnek tekintjük, és ugyanabban a lépésben, ugyanaz a cella fogja oket együttesen végrehajtani. A (7.2) rendszer középso egyenletében két muvelet jelenik meg: az a(i, k) b(k, j) szorzás, illetve a hozzá tartozó c(i, j,k) = c(i, j,k 1) + összeadás. Az együvé tartozó egyes muveleteket, vagyis az összeadást és szorzást a 7.1(b) ábrán látható szisztolikus rács cellája egy összetett szorzás-összeadás muvelet során fogja elvégezni. Minden egyes ilyen elemi számításhoz hozzárendelhetünk egy jelet. Nyugodtan nevezhetjük ezeket is koordinátáknak. Hogy megfelelo koordinátákat kapjunk, kézenfekvo megoldásnak kínálkozik az adott értéktartományból vett (i, j, k) iterációs vektorok használata. A fentieket alkalmazva a (7.1) rendszerre, a c(i, j, k) = c(i, j, k 1) + a(i, k) b(k, j) számításhoz például az (i, j, k) koordinátahármast rendelhetjük hozzá. Ugyanígy a c(i, j, k) = bemeneti muvelethez is ugyanazt az (i, j, k) koordinátahármast rendelhetjük hozzá; persze itt minden esetre érvényes, hogy k =. Egyébként a példában szereplo értéktartományokat úgy választottuk meg, hogy azok diszjunkt halmazok legyenek. Mivel a számítások, illetve a ki/bemeneti muveletek jelölésére is ugyanúgy iterációs vektorokat használunk, nincs többé szükség arra, hogy ezt a két fogalmat megkülönböztessük. Ez egyúttal azt is jelenti, hogy az értelmezési tartomány valamely pontjához tartozó muveletek ismét egy összetett muveletet képeznek akkor is, ha ezek különbözo egyenletekbol származnak, és lehet, hogy semmi közük egymáshoz. A továbbiakban az egyszeruség kedvéért koordinátaként mindig iterációs vektorokat fogunk használni. 7.1.7. Diszkrét id szeletek A szisztolikus cellák által végzett egyes elemi számítási folyamatok mindig diszkrét idoszeletekben mennek végbe. Egy szisztolikus rács esetében minden ilyen idoszelet ugyanolyan hosszú. Ezen felül a szisztolikus rács minden egyes cellája teljes mértékben szinkron módon muködik, azaz mindegyikük egyidoben fejezi be az adott lépéshez tartozó kommunikációs, illetve a számítási muveleteket. Az egyes cellák egyes idoszeletei megszakítás nélkül követik egymást. Megjegyzés. Természetesen Albert Einstein felismerései óta tudjuk, hogy zikailag nem tudunk igazi egyidejuséget létrehozni. A valóságban itt arról van szó, hogy a szisztolikus rács cellái idoben egymáshoz igazodva dolgoznak. Technikailag ez úgy valósítható meg, hogy a cellákat egy közös ütemjel vézérli, mely a rács összes regiszterét összeköti. Az ilyen módon elért egyidejuség keretében a cellák közti kommunikáció eléggé egyidoben megy végbe ahhoz, hogy az egymáshoz kapcsolódó írási, illetve olvasási folyamat során ne vesszenek el adatok. Ennélfogva mindenképpen az a helyénvaló, ha az elméleti fejtegetések során elvi egyidejuséget tételezünk fel. Emiatt a zikai idot diszkrét idoszeletekre oszthatjuk, folytatólagosan megszámozva az idoszeleteket. Nem lényeges, hogy az idotengely kezdopontja hol helyezkedik el, hiszen az ido múlása minden egyes cella számára szinkron módon történik. Kézenfekvo a t =

276 7. Szisztolikus rendszerek (Eberhard Zehendner) idot úgy megválasztani, hogy ez éppen annak az idoszeletnek feleljen meg, melynek során a legelso bemeneti adat elérkezik valamely cellához. Ezt az egyezményt használva, a (7.1) rendszer (i, j,k)-val jelölt összetett muveletének elvégzése az i + j + k 3 idopontban történik. Másrészt ugyanúgy megfelelne az is, ha az (i, j,k) koordinátákat az i + j + k idoponthoz rendelnénk hozzá; a különbség az eddigiekhez képest csupán annyi, hogy ekkor az ido globálisan három egységgel lenne eltolódva. Tételezzük tehát fel a továbbiakban, hogy egy bizonyos (i, j,k) számítás az i + j + k idopontban megy végbe. A legelso számításra ekkor a t = 3 idopontban kerül sor, a legutolsó pedig a t = N 1 +N 2 +N 3 idopontban. A teljes végrehajtási ido tehát N 1 +N 2 +N 3 2 idoszeletet tesz ki. 7.1.8. Küls és bels kommunikáció Szisztolikus rácsok esetén a számításokhoz szükséges adatok a számítás kezdetén általában még nincsenek a rács celláiban. Ezeket a rácsba a külvilágból kell betölteni. A külvilág egy központi memóriához való hozzáféréssel rendelkezo gazdagépbol áll, melyet egy vezérloegység vezérel. A vezérloegység a megfelelo idopontban kiolvassa a memóriából a szükséges adatokat, megfelelo módon továbbítja azokat a szisztolikus rácsnak, illetve a kiszámolt eredményeket visszaírja a memóriába. A k-nak megfelelo idoszeletben az a ik és b kj operandusoknak minden egyes (i, j) cella rendelkezésére kell állniuk. De a 7.1. ábrán látható szisztolikus rács esetén mindössze az elso oszlop cellái kapják az A mátrix elemeit közvetlenül a külvilágtól bemeneti adatként. Az összes többi cella arra van utalva, hogy a szükséges a ik értékeket egy szomszédos cellától kapja meg. Ez, ahogy a 7.1(a) ábrán is látható, a szomszédos cellák között levo vízszintes kapcsolatokon keresztül történik. Az a ik érték rendre keresztülhalad az (i,1), (i,2),..., (i, N 2 ) cellákon. Ennek megfeleloen a b kj érték az (1, j) cellán keresztül kerül a rácsba, onnan pedig a függoleges összeköttetéseken keresztül halad tovább a (2, j), (3, j),... cellákon át, egészen az (N 1, j) celláig. Az ábrán látható nyilak hegye azt mutatja, hogy egy ilyen kapcsolat milyen irányban muködik. Az osztott/párhuzamos architektúrák esetén gyakorta gondot okoz, hogy egy értéket egy idoegység alatt nagy távolságra továbbítsunk. Ebbol következik, hogy a mi esetünkben az a ik érték továbbítása az (i, j) cellától az (i, j +1) cella felé nem ugyanazon az idoszeleten belül történik, melyben az (i, j) cella ezt az értéket az (i, j 1) cellától vagy a külvilágtól átvette, hanem egy idoszelettel késobb. Ugyanez érvényes a b kj érték továbbítására is. Ez a késleltetés a részletes cellaszerkezetet bemutató 7.1(b) ábrán világosan látható: minden bemeneti adattól kiinduló útvonal, mely egy cellán vezet keresztül, áthalad egy regiszteren, és minden egyes regiszter pontosan egy idoszeletnyi késleltetést eredményez. Megjegyzés. Szisztolikus architektúrák esetében általában elo van írva, hogy a különbözo cellákat összeköto útvonalak mindig legalább egy regiszteren keresztül vezessenek akkor is, ha csupán szomszédos cellák közti adatátvitelrol van szó. A szisztolikus rács globális ütemjele összekapcsolja a cellák regisztereit. Mindez a szisztolikus rács kapcsolatain keresztüláramló, jellemzoen ritmikus adatforgalomhoz vezet. A szisztolé (magyarul szívösszehúzódás) orvosi kifejezés pontosan emiatt, a lükteto vérerekkel szemben fennálló képi rokonság okán vált e fogalom névadójává. Hogy az adatoknak ezt a késleltetett továbbadását szemléltessük, tovább bovítjük a (7.1) rendszert úgy, hogy a többszörösen olvasott értékek mint például az a ik számára külön-

7.1. A szisztolika alapfogalmai 277 bözo példányokat vezetünk be (ez egy, a szisztolikus algoritmusok tervezésére alkalmas tipikus eljárásmód): Bemeneti muveletek a(i, j,k) = a ik 1 i N 1, j =,1 k N 3, b(i, j,k) = b kj i =,1 j N 2,1 k N 3, c(i, j,k) = 1 i N 1,1 j N 2,k =. Számítások a(i, j,k) = a(i, j 1,k) 1 i N 1,1 j N 2,1 k N 3, b(i, j,k) = b(i 1, j,k) 1 i N 1,1 j N 2,1 k N 3, c(i, j,k) = c(i, j,k 1) 1 i N 1,1 j N 2,1 k N 3 + a(i, j 1,k) b(i 1, j,k). Kimeneti muveletek c ij = c(i, j,k) 1 i N 1,1 j N 2,k = N 3. A c ij kiszámítását célzó minden egyes c(i, j,k) részösszeg egy bizonyos idoszelet során számítódik ki, és azt csupán egyetlen alkalommal, ti. a következo idoszeletben, használjuk. Az (i, j) cellának tehát szüksége van egy regiszterre (a 7.1(b) ábrán ez a C), amely megorzi a c(i, j,k) értéket egy idoszelet erejéig. A c(i, j,k) értékre a továbbiakban nem lesz szükség, ezért a megfelelo regiszter tartalma felülírható a c(i, j, k + 1) értékkel. A skalárszorzat kiszámításának végeztével a regiszterben a c(i, j, N 3 ) érték, azaz a kiszámításra váró c ij eredmény marad meg. A számítások kezdetén a regisztert nulláznunk kell (vagy egy tetszoleges kezdoértéket adhatunk neki). Az a ik és b kj értékeket ezzel szemben nem szükséges az (i, j) cellában tárolnunk. Amint a 7.1(a) ábrán vázolt adatbeviteli sémán látható, az A mátrix minden sorának bevitele egy idoegységgel késleltetve van az elozohöz képest. Ugyanúgy, a B mátrix minden egyes oszlopa egy idoegységgel késleltetve van az elozohöz képest. Így az a(i, j 1,k) és b(i 1, j,k) értékek pontosan abban az idoszeletben érkeznek az (i, j) cellához, amikor ott a c(i, j,k) érték kiszámítása történik, értékük az A, illetve B regiszterbe íródik, innen viszont azonnal felhasználjuk oket a szorzás elvégzésére, illetve értékük továbbadódik a szomszédos celláknak. Amint az (i, j) cellában megtörtént az a ik és b kj értékek összeszorzása, ebben a cellában már nincs szükség az értékükre. Emiatt nem fontos az értéküket a cellában tovább orizni, így az A és B a következo idoszelet során új értéket fog kapni. Ezekbol a fejtegetésekbol máris kiderül, hogy ahhoz, hogy egy cella tárolókapacitását a minimálisra csökkentsük, ügyelnünk kell arra, hogy a számítási, illetve kommunikációs folyamatokat úgy irányítsuk térben és idoben, hogy az azonnali felhasználás, illetve továbbadás révén az adatokat a leheto legrövidebb ideig kelljen csupán tárolni. A szisztolikus rács általános felépítésén túl ezt lényegében azzal érhetjük el, hogy egy megfelelo ki/beviteli sémát választunk, illetve megfelelo módon állapítjuk meg a cellákon belüli késleltetési idoket. A példában látható ki/beviteli séma geometriai elrendezése az A és B mátrixok szétdarabolásának eredményeként született. A bemeneti adatfolyamokban ezáltal szabaddá vált helyeket null-értékekkel töltjük fel, különben elrontanánk a c ij értékek kiszámítását. A bemeneti adatfolyamok hossza a feladat N 3 paraméterétol függ. (7.3)

278 7. Szisztolikus rendszerek (Eberhard Zehendner) A C mátrix elemeinek kiszámítása a 7.1. ábra alapján stacionárius módon történik, ami azt jelenti, hogy valamely mátrixelem végleges értéke kiszámításának lépései ugyanabban a cellában mennek végbe. A stacionárius változók egyáltalán nem mozdulnak a számítások során a szisztolikus rácson belül. Az eredményeket végül továbbítanunk kell a rács peremén levo cellákhoz, mivel csak ezeken keresztül tudjuk átadni oket a külvilágnak. Ráadásul gyelembe kell vennünk azt is, hogy a c ij kiszámítására szolgáló regisztereket kezdoértékkel kell ellátnunk. E két különleges kiegészíto feladat megoldása elég nagy idobeli, illetve anyagi ráfordítást igényel, de ezt a 7.4. alfejezetben még pontosabban megvizsgáljuk majd. 7.1.9. Futószalag-elv feldolgozás A jellemzo módon diszkrét, egyforma hosszúságú, globálisan szinkronizált idoszeletekkel való munkamódnak, illetve a cellák egymástól regiszterek segítségével történo szigorú idobeli elszigeteltségének köszönhetoen, a szisztolikus rácsokat a futószalag-elvu feldolgozás egy sajátos alkalmazásának tekinthetjük. A cellák regiszterei ez esetben a jól ismert futószalag-regisztereknek felelnek meg. A klasszikus értelemben vett futószalag kétségkívül mindig lineáris felépítésu, míg a szisztolikus rácsok szerkezete (amint az a példából is látszik) gyakorta kétdimenziós. Egy többdimenziós szisztolikus rácsot felfoghatunk úgy, mint ami több, egymásba fonódó futószalag szövedékébol áll. Természetesen egyértelmu, hogy az egydimenziós futószalagelvu feldolgozásra érvényes alapveto sajátosságok a többdimenziós szisztolikus rácsoknál ugyanúgy fellelhetoek. A futószalagelvu feldolgozás egyik tipikus velejárója, hogy a hatékonyság kisebb a számítások kezdetén, illetve végén. Eleinte a futószalag üres, egyetlen fokozata sem dolgozik. Ezt követoen csupán az elso fokozat rendelkezik adatokkal és ez végez számításokat; az összes többi fokozatnak továbbra sincs semmi tennivalója. A következo idoszeletben az elso fokozat adatokat ad át a következonek, ugyanakkor maga is újabb adatokat kap; csak ez a két fokozat dolgozik. Ez így megy tovább mindaddig, amíg végül minden fokozat megtelik adatokkal, és a futószalag dolgozza fel ezeket, vagyis elso ízben állíthatjuk a futószalagrol, hogy teljes hatékonysággal dolgozik. Néhány ilyen teljes telítettségu lépés után, melynek idotartama az adatfolyamok méretétol függ, egyszer csak elfogy a bemeneti adat, a futószalag elso fokozata tehát abbahagyja a muködést. A következo idoszeletben a második fokozat is abbahagyja a munkát, majd ugyanígy tovább, míg legvégül egyetlen fokozat sem dolgozik már. A kezdo, illetve végso munkaszakasz csökkenti a teljes futószalag átlagteljesítményét, és ennek a teljesítménycsökkenésnek a viszonylagos értéke annál nagyobb, minél több fokozata van a futószalagnek az adatfolyamok hosszához képest. Ugyanezt a jelenséget a maga sajátos mivoltában kitunoen vizsgálhatjuk a 7.1. ábrán bemutatott szisztolikus rács esetében. Itt is találunk a számítások kezdetén, illetve végén szinte tétlenül álló cellákat. Az elso idoszeletben csupán az (1, 1) cella végez hasznos munkát; az összes többi cella is dolgozik ugyan, de csak üresjáratban. A második lépésben ehhez hozzáadódnak még az (1,2) és (2,1) cellák; ezt az idoszeletet szemlélteti a 7.2(a) ábra. Mindez ugyanígy folytatódik, míg végül az (N 1, N 2 ) cella is hozzá nem járul a számításokhoz. Amint a legutolsó tényleges adat elhagyta az (1,1) cellát, ez többé nem járul hozzá a számításokhoz, csupán a már kiszámolt c 11 értéket fogja újra és újra reprodukálni. Lépésrol lépésre egyre több cella hagyja abba az aktív tevékenységet, míg legvégül már csak az (N 1, N 2 ) cella végzi el az utolsó fontos számítást; a 7.2(b) ábra szemlélteti ezt a végso idoszeletet.

7.2. Tér-ido-leképezés és szisztolikus rács 279 b 41 b 32 b 23 b 31 b 22 b 13 a 14 a 13 a 12 b 21 a 11 b 12 x c 15 a 23 a 22 a 21 b 11 x c 24 c 25 a 32 a 31 x c 33 c 34 a 34 b 45 (a) (b) 7.2. ábra. Két kiragadott helyzetkép a 7.1. ábrához (részletek). Megjegyezzük, hogy a képletekben a szorzás jelölésére pontot használunk, az ábrákon azonban csillagot. Gyakorlatok 7.1-1. Hogyan kellene módosítani a 7.1(a) ábrán bemutatott beviteli adatsémát, ha ugyanazon szisztolikus rács segítségével egy (2 6)-os és egy (6 3)-as mátrixot szeretnénk összeszorozni? Átszervezhetok-e a számítások oly módon, hogy az eredménymátrix a szisztolikus rács jobb alsó sarkába kerüljön? 7.1-2. Miért fontos a 7.1. ábra szerinti mátrixszorzás szempontjából, hogy a beviteli folyamokban a nem használt helyekre értékeket helyezzünk? Miért nem lényeges ugyanez a B mátrix esetében? 7.1-3. Ha a 7.1. ábrán látható szisztolikus rácsot futószalagként kellene értelmezzük, hány fokozatra lenne szükségünk ahhoz, hogy megfeleloképpen tudjuk leírni ennek viselkedését? 7.2. Tér-id -leképezés és szisztolikus rács Az elozo alfejezetben leírt bevezeto elegendo ugyan egy egyszeru fogalom megalkotásához, de akkor már nem elég, ha a szisztolikus rács tulajdonságait mennyiségileg pontosan szeretnénk megragadni és értékelni. Különösen a paraméteres feladat-meghatározás bevezetése igényel matematikai segédeszközöket. Ezért ez az alfejezet az egyenletes szisztolikus algoritmusok lineáris leképezésekre alapozó elméletének központi kérdéseivel foglalkozik.

28 7. Szisztolikus rendszerek (Eberhard Zehendner) C * + A B (a) (b) 7.3. ábra. Hexagonális szisztolikus rács mátrixszorzáshoz: (a) a rács felépítése és az adatok bevitelének/kivitelének elve; (b) cellaszerkezet. 7.2.1. Példa: mátrixszorzás stacionárius változók nélkül A (7.3) rendszer nem csak a 7.1. ábrán bemutatott szisztolikus rács segítségével számolható ki, hanem sok más szisztolikus ráccsal is. A 7.3. ábra példa egy ilyen szisztolikus rácsra. Bár ugyanazt a függvényt értékeli ki, mint a 7.1. ábrán látható rendszer, a képi megjelenése teljesen más: a cellák száma itt lényegesen nagyobb, 15 helyett összesen 36; a rács körvonala hexagonális, téglalap alakú helyett; minden cellának három bemenete és három kimenete van; az adatok bevitele lényegesen másképp történik, mint a 7.1(a). ábrán; végül: itt a C mátrix elemei is végighaladnak a rácson. A 7.3(b) ábrán látható cellaszerkezet elso látásra nem tunik lényegesen különbözonek a 7.1(b) ábrához képest. A különbségek azért mégis jelentosek: az új cellában nincs ciklikus út, így stacionárius változók itt nem jelennek meg. Ehelyett a cellának három bemeno, illetve három kimeno csatornája van, melyeken keresztül a három mátrix elemei haladnak. A csatornákon keresztül történo kommunikáció iránya a cella jobb és bal oldalán megváltozott, a mátrixok csatornákhoz való hozzárendelése úgyszintén.

7.2. Tér-ido-leképezés és szisztolikus rács 281 7.2.2. A tér-id leképezés, mint globális szemléletmód Hogyan függ tehát össze a (7.3) rendszer és a 7.3. ábra? A 7.1. fejezetben bemutatott szisztolikus rács muködését minden segítség nélkül jól tudtuk követni. Az alábbi példa esetén ez azonban lényegesen nehezebb így sokkal inkább indíttatást érzünk egy matematikai segédeszköz használatára. Ahhoz, hogy le tudjuk írni a szisztolikus rácson belül végzett muveleteket, minden ilyen muvelethez két alapveto mértéket rendelhetünk hozzá: az idoszeletet, melyben a muvelet végrehajtásra kerül, illetve a cellát, amely a muveletet végrehajtja. Amint ez a késobbiekben még inkább nyilvánvalóvá lesz, a tér-ido-leképezés megválasztásával tulajdonképpen ki is merítettük a tervezéssel kapcsolatos szabadságunkat; szinte minden további elem kényszeru módon következik a tér-ido-leképezésbol. Akárcsak a 7.1. ábra szisztolikus rácsa esetében, a 7.3. ábrán látható szisztolikus rácsban is a t = i+ j+k idopontban történik az (i, j,k) elemhez kapcsolódó számítások elvégzése. Ugyanezt egy π = ( 1 1 1 ) (7.4) idovektor és egy v = (i, j, k) iterációs vektor skalárszorzataként is leírhatjuk, t = π v, (7.5) esetünkben tehát t = ( 1 1 1 ) i j k = i + j + k. (7.6) A 7.1. ábrán látható példában végrehajtott muveletek z = (x, y) térkoordinátáit, a 7.1.3. pontban leírt egyezményünk alapján a v = (i, j, k) iterációs vektorokból következtethetjük ki. Az itt megválasztott leképezés az R 3 tér k tengely menti projekcióját végzi el. Ez a lineáris leképezés egy P ( ) 1 = 1 (7.7) projekciós mátrix segítségével írható le. A térkoordinátákat úgy kapjuk, hogy a projekciós mátrixot megszorozzuk a v iterációs vektorral, amit az alábbi módon írhatunk le: z = P v. (7.8) A projekció irányát az a vektor adja, amely ortogonális a projekciós mátrix minden sorára nézve: P u =. (7.9) A (7.7)-ben szereplo P projekciós mátrix számára például u = (,, 1) egy lehetséges projekciós vektor. Szisztolikus rácsok tervezésénél gyakran alkalmaznak projekciókat a térkoordináták meghatározására. A 7.3(a) ábrán látható példánkban is az iterációs vektorokra alkalmazott projekció útján kapjuk a térkoordinátákat. Tekintsük adottnak az alábbi projekciós mátrixot: ( ) P 1 1 =. 1 1 (7.1)

282 7. Szisztolikus rendszerek (Eberhard Zehendner) Egy hozzá tartozó lehetséges projekciós vektor u = (1, 1, 1). A projekciós mátrixot és az idovektort összegezhetjük egy T mátrix segítségével, mely magát az úgynevezett tér-ido-leképezést írja le: ( ) ) zt = v = T v. (7.11) ( P π

7.2. Tér-ido-leképezés és szisztolikus rács 283 T elso két sorát a P projekciós mátrix adja, a harmadikat pedig a π idovektor. A 7.1. ábrán szereplo példa esetén a tér-ido-leképezés T mátrixa a következo: 1 T = 1 1 1 1, (7.12) a 7.3. ábrán szereplo példa esetén pedig 1 1 T = 1 1 1 1 1. (7.13) A tér-ido-leképezést a szisztolikus rácsra vonatkozó globális szemléletmódként is felfoghatjuk. Amennyiben egy (esetünkben lineáris, T-vel jelölt) tér-ido-leképezést alkalmazunk egy rekurzív egyenletrendszerre, máris láthatóvá válnak a szisztolikus rács külso ismérvei, azaz a felépítése (térkoordináták, kapcsolatrendszer, cellaszerkezet). Megjegyzés. Tisztán lineáris leképezések helyett affin leképezések is szóba jöhetnek, melyeknek egy vektor-komponensük is van, például T v + h. Affin leképezésekre viszont nincs feltétlenül szükségünk, amíg minden iterációs vektort ugyanazzal a tér-idoleképezéssel kezelünk. 7.2.3. A térkoordináták szimbolikus meghatározása Amikor az értéktartományok számszeruen adottak, és eléggé kicsik, a (7.11) összefüggés segítségével könnyuszerrel kiszámíthatjuk a térkoordináták konkrét halmazát. Amennyiben az értéktartományok paraméteresek, mint a (7.3) rendszer esetében, a cellák helyzetét szimbolikusan kell meghatároznunk. Az alábbiakban leírtak e feladat megoldását célozzák. Minden egyes cellát egy z = (x,y) térkoordinátájú pontnak tekintünk az R 2 kétdimenziós térben. Az S értéktartomány minden egyes iterációs vektorából a (7.8) kifejezés segítségével egy-egy processzor (cella) z térkoordinátáit kapjuk, z = P v, így a v-vel jelölt muvelet a z cellára lesz rávetítve. Az így kapott térkoordináták halmaza P(S) = {P v : v S } adja meg a szisztolikus rács muködése szempontjából fontos összes cella helyzetét. Általában olyan értéktartományok fordulnak elo, melyek egy konvex terület (itt R 3 -ból) összes egész koordinátájú pontjának halmazaként jeleníthetok meg (suru konvex értéktartományok). Egy ilyen (véges számosságú) értéktartomány konvex burka egy politóp, melynek csúcsai az értéktartomány pontjai. A politópokat tetszoleges lineáris leképzés újabb politóppá alakítja. Kihasználhatjuk tehát, hogy minden projekció lineáris leképezés. Az újonnan keletkezo politóp csúcsai az eredeti politóp csúcsainak projekciói. Megjegyzés. Nem szükséges, hogy a projekció során az eredeti politóp minden csúcsa az új politópnak is csúcsa legyen. Lásd például a 7.4. ábrát. A Z 3 rács projekciója egy egész számú P projekciós mátrix által a Z 2 rácshoz vezet, amennyiben a P-t egy π egész számú idovektor megválasztásával egy unimoduláris T mátrixra egészítjük ki. Ez egy suru konvex értéktartományt (néhány, az alkalmazás szempontjából lényegtelen kivételtol eltekintve) a koordináták suru konvex halmazává alakítja, melyet az ezt burkoló politóp csúcsai teljes mértékben jellemeznek.

284 7. Szisztolikus rendszerek (Eberhard Zehendner) (1 N 2,N 2 N 1 ) (1 N 2,N 2 1) (N 3 N 2,N 2 N 1 ) (, 1 N 1 ) (N 3 N 2,N 2 1) (, ) (N 3 1, 1 N 1 ) (N 3 1, ) 7.4. ábra. Egy téglalap alakú értéktartomány projekciójának eredménye. Megjegyzés. Egy mátrixot unimodulárisnak nevezünk, amennyiben négyzetes, csak egész számú bemenetei vannak és a determinánsa ±1. Az unimoduláris mátrixok invertálhatók, és inverzük szintén unimoduláris. Alkalmazzuk ezt a módszert a (7.3) rendszer S = [1, N 1 ] [1, N 2 ] [1, N 3 ] (7.14) egész számokat tartalmazó értéktartományára. A konvex burok csúcsai esetünkben (1,1,1),(N 1,1,1),(1, N 2,1),(1,1, N 3 ), (1, N 2, N 3 ),(N 1,1, N 3 ),(N 1, N 2,1),(N 1, N 2, N 3 ). A (7.1)-beli P projekciós mátrix esetén a projekció csúcsainak helyzete (7.15) (N 3 1,),(N 3 1,1 N 1 ),(,1 N 1 ), (7.16) (1 N 2, N 2 N 1 ),(1 N 2, N 2 1),(N 3 N 2, N 2 N 1 ). Mivel S-nek nyolc csúcsa van, a P(S) képének viszont csupán hat, világos, hogy az S két csúcsa a terület belso részébe fog vetítodni, tehát a mértékek meghatározásában nem játszik szerepet; ezek az (1,1,1) és az (N 1, N 2, N 3 ) csúcsok. Konkrétan N 1 = 3, N 2 = 5 és N 3 = 4 esetében a (3,), (3, 2), (, 2), ( 4,2), ( 4,4) és ( 1, 4) csúcsok adódnak. Láthatjuk, hogy nem kell minden térkoordinátának feltétlenül pozitívnak lennie. A koordinátarendszer kezdopontjának megválasztása, mely esetünkben a politóp belsejében helyezkedik el, szintén nem nyilvánvaló. A projekció eredményeként egy hatszöget kapunk, melynek szembefekvo oldalai párhuzamosak. Ennek peremén mindig N 1, N 2 vagy N 3 egész számú pont helyezkedik el. Az elso példával ellentétben itt tehát a feladat minden paramétere egyúttal a rács paramétere is. Ennek a szisztolikus rácsnak a körvonalát hexagonálisnak nevezzük.

7.2. Tér-ido-leképezés és szisztolikus rács 285 N 3 N 2 N 1 7.5. ábra. A térkoordináták halmazának részekre bontása. Ennek a tartománynak az F felülete Θ(N 1 N 2 + N 1 N 3 + N 2 N 3 ), mely egyformán függ mindhárom mátrixmérettol. Itt tehát egészen más helyzettel találkozunk, mint a 7.1(a) ábrán, ahol (ugyanennek a feladatnak!) a bonyolultsága csupán Θ(N 1 N 2 ) volt. Ezután a hozzávetoleges számolás után most megszámoljuk egész pontosan a cellákat. Ehhez a számoláshoz célszeru az egész tartományt résztartományokra bontani, melyekben a cellák száma könnyuszerrel meghatározható (lásd 7.5. ábra). A (,), (N 3 1,), (N 3 1,1 N 1 ) és (,1 N 1 ) pontok egy N 1 N 3 cellát tartalmazó téglalapot határolnak körül. Ha eltoljuk ezt a ponthalmazt N 2 1 cellával feljebb és N 2 1 cellával jobbra, végigjárjuk ezzel a teljes tartományt. Minden alkalommal azonban, amikor a téglalapot egy cellával feljebb és jobbra toljuk, csupán N 1 + N 3 1 új cella jön hozzá az eddigiekhez. Ez összesen N 1 N 3 + (N 2 1)(N 1 + N 3 1) = N 1 N 2 + N 1 N 3 + N 2 N 3 (N 1 + N 2 + N 3 ) + 1 cellát tesz ki. Például N 1 = 3, N 2 = 5 és N 3 = 4 esetében 36 cellát kapunk, amint az a 7.3(a) ábrán látszik is. 7.2.4. A teljes végrehajtási id szimbolikus kiszámítása Egy szisztolikus algoritmus teljes végrehajtási idejének szimbolikus kiszámítása a 7.2.3. pontban leírtakhoz hasonló módon történik. Az idoleképezés a (7.5) összefüggés alapján szintén lineáris leképezés. Az elso, illetve utolsó számításnak megfelelo idoszeletet a számítási idopontok π(s) = {π v : v S } halmazának minimuma, illetve maximuma adja. A fentebb leírtak alapján elegendo, ha az S konvex burkának v csúcsait vesszük gyelembe. A teljes végrehajtási idot a következo képlet alapján számíthatjuk ki: t Σ = 1 + max P(S) min P(S). (7.17) Az 1 hozzáadása mindenképpen fontos, mert a legelso és a legutolsó számítás idopontja is számít.

286 7. Szisztolikus rendszerek (Eberhard Zehendner) A 7.3. ábrán látható példa esetében a (7.6) összefüggést alkalmazva a (7.15)-ben kiszámolt politópcsúcsokra, a következo képek halmazát kapjuk: {3,2+N 1,2+N 2,2+N 3,1+N 1 + N 2,1+ N 1 + N 3,1+ N 2 + N 3, N 1 + N 2 + N 3 }. Az alapfeltevésbol, mely szerint N 1, N 2, N 3 1 következik, hogy a minimum 3, a maximum pedig N 1 + N 2 + N 3, a teljes végrehajtási ido pedig N 1 + N 2 + N 3 2 idoegységet tesz ki (akárcsak a 7.1. ábrán látható szisztolikus rács esetén elvégre az értéktartomány és az idovektor megegyezik a két példában). A feladat paramétereinek az N 1 = 3, N 2 = 5 és N 3 = 4 konkrét értékeket adva a kiszámolt teljes végrehajtási ido 12 3 + 1 = 1 idoszeletet tesz ki. Ha N 1 = N 2 = N 3, akkor a szisztolikus algoritmus egy Θ(N 2 ) cellát tartalmazó rendszerrel Θ(N) ido alatt határozza meg két, N N méretu mátrix szorzatát. 7.2.5. A kapcsolatszerkezet levezetése A szisztolikus rács kapcsolatszerkezetét úgy kapjuk, hogy a tér-ido-leképezést alkalmazzuk a feladat adatfüggoségeire. Minden egyes adatfüggoség abból adódik, hogy egy változó bizonyos példányát közvetlen módon felhasználjuk ugyanazon vagy egy másik változó egy példányának kiszámolására. Megjegyzés. A szisztolikus rácsoknál az imperatív programnyelven megírt programok párhuzamos párhuzamos végrehajtásánál szükséges adatfüggoség vizsgálatok helyett, melyeket vagy a párhuzamosan optimalizáló fordító és/vagy a processzor végez el csupán folyamfüggoségekrol van szó. Ez az általunk használt hozzárendelésmentes jelölés következménye. Az adatfüggoségeket úgy tudjuk leolvasni, hogy az értékadásmentes jelölés kvantikált egyenletének egyszerre szemléljük a jobb és bal oldalát. Mindenekelott a (7.3) rendszer c(i, j,k) = c(i, j,k 1) + a(i, j 1,k) b(i 1, j,k) egyenletét vizsgáljuk. A c(i, j,k) érték kiszámítása a c(i, j,k 1), a(i, j 1,k) és b(i 1, j,k) értékek segítségével történik. Van tehát egy adatfolyamunk c(i, j, k 1)-tol c(i, j, k) irányában, egy adatfolyam a(i, j 1,k)-tól c(i, j,k) irányában és egy adatfolyam b(i 1, j,k)-tól c(i, j,k) felé. Egy ilyen adatfolyam számunkra fontos sajátosságait egy függoségi vektor segítségével írhatjuk le. Ezt a kiszámolt változópéldány iterációs vektora, illetve az ennek kiszámításához éppen használt változópéldány iterációs vektora közti különbségvektor adja. A c(i, j,k) iterációs vektora (i, j,k), a c(i, j,k 1)-é pedig (i, j,k 1). Az ebbol kapott különbségvektor pedig i d C = j k Ugyanúgy, megfelelo módon kapjuk: és d A = d B = i j k i j k i j k 1 i j 1 k i 1 j k = = = 1 1 1. (7.18) (7.19). (7.2)

7.2. Tér-ido-leképezés és szisztolikus rács 287 A (7.3) rendszer a(i, j,k) = a(i, j 1,k) egyenletében közvetlenül felismerheto, hogy melyik a kiszámolt változópéldány, és melyik a kiszámításához szükséges változópéldány. Itt láthatjuk tehát a különbséget egyenlet és értékadás között. Tekintve, hogy a(i, j, k)-t a(i, j 1, k)-ból másolás révén kapjuk, ugyanazt a függoségi vektort kapjuk, mint a (7.19) kifejezésben. Ugyanez érvényes a b(i, j,k) = b(i 1, j,k) egyenletre is. Amennyiben egy változópéldány a v iterációs vektorral rendelkezik, azt a P v cellában számítjuk ki. Ha ennek kiszámításához egy másik, v iterációs vektorral rendelkezo változópéldányra is szükség van, akkor ez a P v cellában számítódott ki és d = v v függoségi vektor jellemzi a köztük fennálló adatfüggoséget. Ez a z = P v cellától a z = P v cella felé történo kommunikációt feltételez. Szisztolikus rácsok esetében ezt a kommunikációt a kommunikáló cellák közti közvetlen, statikus kapcsolat biztosításával oldják meg. A (7.8) leképzés lineáris voltából következik, hogy z z = P v P v = P (v v ) = P d. Amennyiben P d =, a kommunikáció a számítást végzo cellán belül történik, ami azt jelenti, hogy az csak idoben, de nem térben zajlik. Az értékek továbbadása idoben a számítást végzo cella regiszterein keresztül valósul meg. Ha viszont P d, akkor két különbözo cella közötti kommunikációra lesz szükség. Ekkor a szisztolikus rács összes cellájához hozzá kell rendelni egy P d irányú kapcsolatot. Meghúzzuk a P d vektort a számítást végzo cella z térkoordinátájától a vektor irányításával ellentétesen haladva, és a z-t ellátó, z térkoordinátájú cellához jutunk. Ha több ilyen d függoségi vektorunk van, mindegyikhez tartozik egyegy neki megfelelo kapcsolat. Tekintsük például a (7.18), (7.19), (7.2) és (7.1) összefüggéseket. A következok állnak fenn: P d A = ( 1,1), P d B = (, 1) és P d C = (1,). A három P d vektornak megfelelo kapcsolatokat a 7.3(a) ábrán minden egyes cellánál meggyelhetjük. Ez egy hexagonális kapcsolatszerkezetet eredményez (az eddig ismert ortogonális helyett). 7.2.6. A cellaszerkezet meghatározása Most átvisszük a 7.2.5. pontban tárgyalt, térrel kapcsolatos fejtegetéseket az idobeli összefüggésekre. Egy v iterációs vektorral rendelkezo változópéldány kiszámítására a π v idoszeletben kerül sor. Amennyiben ennek kiszámításához egy másik, v iterációs vektorral rendelkezo változópéldány szükséges, akkor ez utóbbi értéke a π v idoszeletben került kiszámításra. A d = v v függoségi vektornak megfelelo kommunikáció tehát pontosan π v π v idoszeletet vesz igénybe. Mivel a (7.6) leképezés lineáris, fennáll π v π v = π (v v ) = π d. Mivel a szisztolikus alapelv szerint minden egyes kommunikáció legalább egy regiszteren vezet keresztül, a d függoségi vektorok pedig rögzítettek, az idovektor megválasztását a π d 1 (7.21) feltétel korlátozza. P d = esetén az éppen szükséges érték tárolása céljából egy regiszterre van szükség minden egyes cellában. Mivel egy ilyen regiszter tartalma a következo idoszeletben máris felülíródik egy újabb értékkel, a régi értéket egy további regiszterbe kell átmentenünk, amennyiben π d 2 fennáll. Mivel mindez π d idoszeleten belül megismétlodik minden egyes tárolt érték esetén, a cellának pontosan π d regiszterre van szüksége, melyeken az értékek rendre keresztülhaladnak, mielott értékük a következo cellának adódik át. Az elobb vázolt helyzetnek megfeleloen, P d esetében az adatátvitel ugyancsak π d regiszte-

288 7. Szisztolikus rendszerek (Eberhard Zehendner) ren keresztül történik, itt azonban nem fontos, hogy ezek mind a számítást végzo cellában legyenek elhelyezve. Minden egyes d függoségi vektor esetén szükség van megfelelo regiszterekre. A 7.3(b) ábrán a cellához rendelt három bemenetet láthatjuk, melyek a d A, d B és d C függoségi vektoroknak felelnek meg. Mind a három vektor esetében fennáll, hogy a P d, illetve (7.6) és (7.4) összefüggések következtében π d = 1. Tehát minden egyes d függoségi vektorhoz egyetlen regiszterre van szükség. A (7.3) rendszer szabályos volta miatt a cella három bemenetéhez ugyanakkor három kimenet tartozik, a cella középpontjához képest egymással ellentétes pozícióban. Mivel a d függoségi vektorok száma egy (7.3)-hoz hasonló rendszer által statikusan korlátozott, és a nekik megfelelo π d érték rögzített és többnyire kicsi, egy cellának általában kevés regiszterre van szüksége. A cella három be-, illetve kimenete három dinamikus mátrix használatát teszi lehetové. A 7.1. ábrával ellentétben egy 4 k=1 a ik b kj skalárszorzat kiszámítása itt nem egyetlen cellában történik, hanem a szisztolikus rács cellái közt felosztva. Itt tehát feltétlenül szükséges, hogy az összeget részösszegek sorozatára bontsuk. Ez tehát példa egy szétosztott generikus operátorra. A három bemeneten, a hozzátartozó regisztereken és a három kimeneten kívül a 7.3(b) ábrán egy szorzót láthatunk egy sorosan hozzákapcsolt összeadóval. A (7.8) leképezés alkalmazása a (7.3) rendszer c(i, j,k) = c(i, j,k 1) + a(i, j 1,k) b(i 1, j,k) egyenletének S értéktartományára a fent említett két egység összes cellában való jelenlétét eredményezi. Mivel az egyenlet alapján az összeg felépítése csakis a szorzat sikeres végrehajtása után lehetséges, ebbol következik a két operátor 7.3(b) ábrán látható sorrendje. Hogy a megfelelo operandusok honnan származnak, az a hozzájuk tartozó függoségi vektorok projekciójából olvasható le. Így például a(i, j 1,k)-hoz a d A = (,1,) függoségi vektor tartozik. Ennek projekciója, P d A = ( 1,1), az A mátrix haladási irányát mutatja. A beolvasandó adatot ezért, a számítást végzo processzor szemszögébol nézve az ezzel ellentétes (1, 1) irányból kell várni, vagyis a cella bal alsó sarkához kapcsolódó csatornából (de az A regiszteren keresztül). Ugyanígy b(i 1, j,k) jobb oldalról jön (a B regiszteren keresztül), c(i, j,k 1) pedig fentrol (a C regiszteren keresztül). A megfelelo a(i, j,k), b(i, j,k) és c(i, j, k) értékek a szemközti irányba csatornákon keresztül továbbítódnak: jobbra, felfelé, bal alsó irányba. Másrészt, a (7.7)-beli P projekciós mátrixot alkalmazva a d C -re a (,) projekciót kapjuk. Mivel ugyanakkor π d C = 1, következik, hogy pontosan egy C regiszterre van szükség a C mátrix minden egyes eleme számára. Ez a regiszter szolgáltatja a c(i, j, k) érték kiszámítására a c(i, j,k 1) értéket, majd a számítást követoen felveszi a c(i, j,k) értékét. Mindez a 7.1(b) ábrán jól követheto. A 7.1(a) ábra ennek megfeleloen azt mutatja, hogy a C mátrix számára nincs szükség cellák közti kapcsolatra: a mátrix stacionárius. Gyakorlatok 7.2-1. Egy u projekciós irányhoz mindig több különbözo P projekciós mátrixot találunk. a. Mutassuk meg, hogy a ( ) P 1 1 = 1 1 projekciós mátrix is megfelel az u = (1, 1, 1) projekciós iránynak.