M5-. A lineáris algebra párhuzamos algoritmusai. Ismertesse a párhuzamos gépi architektúrák Flynn-féle osztályozását. A párhuzamos lineáris algebrai algoritmusok között mi a BLAS csomag célja, melyek annak a szintjei? Speciálisan, elosztott memóriájú rendszereknél ismertesse a Gaxpy-algoritmust gyűrűn. Ismertesse a párhuzamos gépi architektúrák Flynn-féle osztályozását. A számítógép architektúrákat és programozási modelleket az adat es az utasítás mennyiségének függvényében a Flynn-féle osztályozás négy csoportra osztja. Flynn féle osztályozás Single Isntruction Multiple Instruction Single Data SISD SIMD Multiple Data MISD MIMD SISD: egy adaton egy utasítás végrehajtása, nincs párhuzamosság Nincs párhuzamosság. SIMD: 1 műveletet hajt végre minden adaton Képfeldolgozáshoz hasznos. példák: GPU (videokártyán grafikai processzor), vektor processzorok, tömbprocesszorok. MISD: különböző műveleteket hajtanak végre ugyanazon az adaton (1 adat sok művelet) példák: többféle szűrő egy jelfeldolgozásánál, többféle kriptográfiai algoritmus futtatása azonos kódolt üzenet feltörésére MIMD: az előző kettő keveréke, különböző adatokon és különböző feladatokat hajtanak végre. Ez a modell az elterjedt, mivel többféle számításra szokták használni a számítógépeket (kivéve amikor nem) példák: mai számítógépek. Az architektúra kétféle módon valósítható meg. közös memóriával és elosztott memóriával. Az osztályozásnál a párhuzamos architektúrákat osztályozzák. Az egyes feladatoknál nem szükséges a processzorok számát növelni, elég lehet ha több utasítás végrehajtására képesek (több PU processing unit). 1
A párhuzamos lineáris algebrai algoritmusok között mi a BLAS csomag célja, melyek annak a szintjei? A BLAS csomag célja a mátrix és vektor hatékony implementálása és szabványosítása. A rutinok az adott műveletnél legjobb, vagy legjobbnak tartott algoritmus megvalósításait tartalmazzák. A csomag algoritmusai különböző gépcsaládokra optimalizálva is elérhető (például AMD, Intel, Cray, Apple stb.) A csomag ingyenesen felhasználható, a szerzők kérése, hogyha módosítás történik az algoritmusukban, akkor a függvények legyenek átnevezve és jól dokumentálva a módosítások okai. Tehát a csomag célja: hogy elérhető egy ilyen jellegű algoritmusokat kínáló csomag több programozási nyelven és többféle processzorcsaládra. A csomag szintjei: A BLAS (Basic Linear Algebra Subprograms) csomag célja, hogy segítséget nyújtson a lineárisalgebra alapműveleteinek párhuzamos elvégzéséhez. A csomagnak három szintbe sorolható (Level 1 BLAS, Level BLAS, Level 3 BLAS). az első szint a vektoriális műveletek (vektor-vektor, vektor-skalár szorzás) a második a mátrix vektor műveletek (mátrix-vektor szorzás) a harmadik a mátrix mátrix műveletekre (szorzás, hatványozás) A csomag legnagyobb előnye, hogy létezik és gyorsan felhasználható. Bárki ki tudja használni, ezzel elősegítve a párhuzamos programozás hatékonyságát, valamint gyorsítja a fejlesztést. vektor-vektor szorzás Ο(log n) n darab processzor vektor skaláris szorzás Ο(1) n darab processzor vektorok összeadása ( darab) Ο(1) n darab processzor vektorok összeadása (n darab, mx1) mátrix-vektor szorzás (mxn * nx1) mátrix-vektor szorzás (mxn * nx1) Ο(logn) Ο(logn) Ο(n) mn mn darab processzor darab processzor van Ha soronként 1, m darab processzor van mátrix-mátrix szorzás (mxn * nxk) Ο(log n) Ο(n 3 ) darab processzor mátrix-mátrix szorzás (mxn * nxk) Ο(n) Ο(n ) darab processzor mátrix-mátrix szorzás (mxn * nxk) Ο(n ) Ο(n) darab processzor Az előbbi becslések szemléltetik az utópia esetét, mert általában nincs n processzorunk.
Speciálisan, elosztott memóriájú rendszereknél ismertesse a Gaxpy-algoritmust gyűrűn. Feladat: Gaxpy művelet (general Ax plus y) megoldása. Tehát a feladat a z vektor kiszámítása. z = y + Ax, A R n x n, x, y, z R n Elosztott memóriás rendszer: 1. ábra Soros algoritmus. ábra Négy processzoros gyűrű Minden processzornak van saját memóriája és a gyűrűn keresztül tud kommunikálni a többi processzorral. p = processzor szám, n = a bemenet teljes mérete r = processzoronként kezelt sorok száma n = rp, z 1 z p = y 1 y p + A 11 A 1p A p1 A pp Számítás közben a feladatot blokkokra bontjuk majd a részeredmények összegződnek (y érték inicializálása az első lépésben) Kommunikáció, az x vektor értékeit körbeadják. Minden egységben ugyanaz az algoritmus fut, add jobbra, várd balról és számold. Lépés Proc(1) Proc() Proc(3) 1 x 3 x 1 x x x 3 x 1 3 x 1 x x 3 x 1 x p 3
Amikor a részvektor (x) megérkezett: Lépés Proc(1) Proc() Proc(3) 1 y 1 = y 1 + A 13 x 3 y = y + A 1 x 1 y 3 = y + A 3 x y 1 = y 1 + A 1 x y = y + A 3 x 3 y 3 = y + A 31 x 1 3 y 1 = y 1 + A 11 x 1 y = y + A x y 3 = y + A 33 x 3 ( P μ folyamatoz: z μ = y μ + A μr x r A processzoroknál van a mátrix megfelelő darabja, és az x vektor egy része (r darab sora az x vektornak). Az adatok így szétoszthatók a különböző egységek között. p r=1 ) Az algoritmus hatékonysága úgy növelhető, ha minden processzor azonos terhelést kap, tehát ugyanannyi feladatot. Terheléselosztás Speciális esetben alsó háromszög mátrix, akkor a terhelés nincs jól elosztva: A terhelés megfelelő elosztásához az egyes processzorhoz tartozó részeket át kell rendezni. 4
A példában a mátrix 9x9 méretű és a p = 3, tehát minden processzorhoz r=3 rész tartozik. Ezeknek a részfeladatoknak az elosztásával lehet a módszert hatékonyabbá tenni. számítási idő kommunikációs idő r R α d + β d r, α d : send vagy recv összeállytásának ideje, β d : üzenet átvitel ideje, R: R flops per second (műveletvégzés) A terhelés elosztás problémája abból fakad, hogy ha 0 érték szerepel a mátrixban, ott nem kell számolni. A szélső esete az alsóháromszög mátrix, ami gyakran előfordulhat (pl. a rendszer örök életére dolgozhat ilyennel ). A probléma megoldása, hogy közel azonos mennyiségű számítási feladatott adjunk ki a processzoroknak. Az alsóháromszög mátrixhoz tartozó ábra, csak szemlélteti a problémát és a megoldását. 5