Páruzamos és Grid rendszerek (. ea) alapfogalmak Szeberényi Imre ME IIT <szebi@iit.bme.u> M Ű E G Y E T E M 7 8 2 Páruzamos és Grid rendszerek ME-IIT Sz.I. 202.02.06. - - Parallel programozás áttekintése Miért fontos a páruzamos feldolgozás? agyobb teljesítmény elérése miatt? Csak a teljesítményért? a páruzamosítás ebben az esetben csak tecnológia nem fontos az alkalmazás tervezője számára el kell fedni (mint pl. a ardware regisztereket, cace-t,...) Egy leetséges eszköz a valóság modellezésére Egyszerűsíteti a tervezési munkát Páruzamos feldolgozás problémái Gyakran neezebb kivitelezni, mint a soros feldolgozást törékeny (nem determinisztikus viselkedés) deadlock problémák lépetnek fel erőforrás allokációs problémák leetnek nem egyszerű ibát keresni Ezek valós tapasztalatok, de nem szükségszerűek! Páruzamos és Grid rendszerek ME-IIT Sz.I. 202.02.06. - 2 - Történelmi áttekintés eumann korában felmerült az ötlet (Daniel Slotnick), de a csöves tecnológia nem tette ezt leetővé. Első szupergép: 967-ben ILLIC IV (256 proc, 200MFlop) Tinking Macines CM-, CM-2 (980) Cray- Páruzamos és Grid rendszerek ME-IIT Sz.I. 202.02.06. - 3 - Jellemző szupersz.gép típusok Vektorprocesszoros rendszerek Gyors műveletvégzés vektor jellegű adatokon Masszívan páruzamos rendszerek (MPP) Üzenetküldéses elosztott memóriás (MDM) Szimmetrikus multiprocesszoros (SMP) Elosztott közös memória (DSM) Elosztott számítási rendszerek Homogén rendszerek Heterogén rendszerek Metaszámítógépek és Grid redszerek Páruzamos és Grid rendszerek ME-IIT Sz.I. 202.02.06. - 4 - Páruzamos gép modellje Flynn-féle arcitektúra modell Több modell alakult ki. legegyszerűbb a Flynn-féle modell, mely a eumann modell kiterjesztésének tekinti a páruzamos gépet. másik gyakran alkalmazott modell az idealizált páruzamos számítógép modell Single ISTRUCTIOS Multiple Single Single Instruction Single Data SISD (serial macines) Multiple Instruction Single Data MISD (pipelines) DT Multiple Single Instruction Multiple Data SIMD (vector processors) Multiple Instruction Multiple Data MIMD (multiprocesszors) Páruzamos és Grid rendszerek ME-IIT Sz.I. 202.02.06. - 5 - Páruzamos és Grid rendszerek ME-IIT Sz.I. 202.02.06. - 6 -
Idealizált páruzamos számítógép memória memória memória CPU CPU 2 CPU 3 rcitektúrák jellemzői Processzorok eloszlása Homogén vagy eterogén kapcsolat késleltetése és sávszélessége Topológia Összeköttetés Hálók Gyűrűk Fák Hiperkockák Több processzor egyazon problémán dolgozik. Minden processzornak saját memóriája és címtartománya van. Üzenetekkel koordinálnak és adatokat is tudnak átadni. lokális memória elérése gyorsabb. Teljesen összekötött z átviteli sebesség független a csatorna forgalmától. Páruzamos és Grid rendszerek ME-IIT Sz.I. 202.02.06. - 7 - Páruzamos és Grid rendszerek ME-IIT Sz.I. 202.02.06. - 8 - Programozási modell Közös memóriás Elosztott közös memóriás Üzenet küldéses Valójában egyik modell sem kötődik szorosan a tényleges arcitektúráoz Közös memória elv jellemzői Közös memória asználatának előnyei Egységes ozzáférés Egyszerűbb programozás w adottságaitól függően jó speed-up értékel éretők el Közös memória asználatának átrányai Memória-ozzáférés szűk keresztmetszetet jelentet em jól skálázató Cace problémák megoldása külön ardvert igényel eéz nyomkövetetőség Páruzamos és Grid rendszerek ME-IIT Sz.I. 202.02.06. - 9 - Páruzamos és Grid rendszerek ME-IIT Sz.I. 202.02.06. - 0 - Elosztott memória elv jellemzői Páruzamos gépek osztályai Elosztott memória asználatának előnyei Skálázató Költségkímélő redundancia növelésével növekedet a megbizatóság Speciális feldolgozó eszközökkel is együttműködik Elosztott memória asználatának átrányai Kommunikáció igényes em minden algoritmus páruzamosítató így meglevő soros programokat és a közös memóriát asználó alkalmazásokat át kell dolgozni Jó speed up értékeket neéz elérni eéz nyomkövetetőség Páruzamos és Grid rendszerek ME-IIT Sz.I. 202.02.06. - - Szimmetrikus multiprocesszoros (SMP) sok azonos processzor közös memóriával egy operációs rendszerrel UM, ccum Masszívan páruzamos (MPP) sok processzor gyors belső álózattal elosztott memória sok példányban fut az operációs rendszer Klaszter sok gép gyors álózattal összekötve elosztott memória sok példányban esetleg eterogén operációs rendszer Páruzamos és Grid rendszerek ME-IIT Sz.I. 202.02.06. - 2 -
Teljesítménymérés Sebességnövekedés (Speed Up): Sn = Ts/Tn aol:sn processzorral elért sebességnövekedés Ts futási idő soros végreajtás esetén Tn futási idő processzor esetén Hatékonyság (Efficiency): En = Sn/ aol:en processzorral elért atékonyság Sn processzorral elért sebességnövekedés processzorok száma Rededundancia (Redundancy): r = Cp/Cs aol:r páruzamos program redundanciája Cp páruzamos program műveleteinek száma Cs soros program műveleteinek száma mdal féle felső atár: Speed Up atára Sa = /(s+(-s)/) aol:sa processzorral elértetô sebességnövekedés felsô atára s a feladat nem páruzamosítató része processzorok száma z (-s)/ tagot elagyva: Sa < /s összefüggést kapjuk, ami egy felső korlátot ad. Ez azt jelenti, ogy pl. 0% nem páruzamosítató rész mellet /0. = 0 adódik a speed up felső korlátjaként. Páruzamos és Grid rendszerek ME-IIT Sz.I. 202.02.06. - 3 - Páruzamos és Grid rendszerek ME-IIT Sz.I. 202.02.06. - 4 - em gyorsítató korlátlanul Programozási nyelvek 0 9 8 7 6 5 4 3 2 0 2 4 6 0 20 40 200 2000 Processzorszám Linda közös memória modell, Tuple Space out kimásol egy adatalmazt a közös területre in, inp beoz egy adatalmazt (megszűnik) rd, rdp beoz egy adatalmazt eval végreajt egy függvényt processzként Egyszerű modell, de implementációs neézségek vannak, főleg az üzenetküldéses arcitektúrákon. Páruzamos és Grid rendszerek ME-IIT Sz.I. 202.02.06. - 5 - Páruzamos és Grid rendszerek ME-IIT Sz.I. 202.02.06. - 6 - Programozási nyelvek/2 Epress elosztott memória modell 60 C-ből és fortranból ívató rutin: programindítás, leállítás logikai kommunikációs topológia felépítése programok közötti kommunikáció, szinkronizáció fájlműveletek grafikai műveletek teljesítmény analízis, debug Programozási nyelvek/3 PVM elosztott memória modell 70 C-ből és fortranból ívató rutin: programindítás, leállítás programok közötti kommunikáció, szinkronizáció Páruzamos és Grid rendszerek ME-IIT Sz.I. 202.02.06. - 7 - Páruzamos és Grid rendszerek ME-IIT Sz.I. 202.02.06. - 8 -
Mire asználják a PVM-et? "Szegények" szuperkomputere a szabad CPU kapacitások összegyűjtetők a munkaállomásokról és a PC-ről Több szuperkomputer összekapcsolásával ietetlen számítási kapacitás állítató elő Oktatási eszköz a páruzamos programozás tanításáoz atékony eszköz Kutatási eszköz skálázató és költségkímélő PVM alapkoncepciója CPU # CPU #2 CPU #3 app # app #2 app #3 app #4 libpvm libpvm libpvm libpvm pvmd pvmd pvmd Összeköttetés app # z alkalmazás része libpvm yelvi interfész pvmd PVM daemon Páruzamos és Grid rendszerek ME-IIT Sz.I. 202.02.06. - 9 - Páruzamos és Grid rendszerek ME-IIT Sz.I. 202.02.06. - 20 - libpvm libpvm által nyújtott funkciók a négy csoportra osztatók: dminisztratív funkciók Virtuális gép indítása, megállítása, álapotlekérdezés, új node felvétele Folyamatkezelő funkciók Folyamatok indítása, megállítása datátviteli funkciók Üzenetek összeállítása, elküldése, vétele, szétcsomagolás Szinkronizációs funkciók Üzenetküldéssel, vagy barrier asználatával Páruzamos program felépítése soros páruzamos páruzamos soros páruzamos páruzamos páruzamos soros CPU # CPU #2 CPU #3 Páruzamos és Grid rendszerek ME-IIT Sz.I. 202.02.06. - 2 - Páruzamos és Grid rendszerek ME-IIT Sz.I. 202.02.06. - 22 - Kényszerű Páruzamosítási startégiák program soros változatát futtatjuk páruzamosan különböző adatokkal. Csak akkor kielégítő módszer, a a soros változat elviselető futási idejű. Ciklusok páruzamosítása kkor alkalmazató, a az egyes iterációk függetlenek egymástól Felosztó páruzamosítás (master / slave) Egy felügyelő taszk fut az egyik node-on kkor alkalmazató, a a felügyelő program feladatai egyszerűbbek mint a többi taszk feladatai. Ha a taszkok függetlenek egymástól, akkor jól skálázató a taszkok számának változtatásával. Páruzamos és Grid rendszerek ME-IIT Sz.I. 202.02.06. - 23 - Páruzamosítási startégiák /2 Egymást követő Minden node a következő node-nak adja tovább a részben feldolgozott adatot. kkor asználató, a a soros része a feldolgozásnak lényegesen rövidebb, mint a páruzamos rész. Rendszerint minden node azonos kódot futtat. Különösen alkalmas a gyűrű topológiáoz. Régiók páruzamosítása z adatfüggőség régiókba lokalizálató. kkor asználató, soros végreajtási idő nagyobb mint a páruzamos. Rendszerint nagy kommunikációigényű. Legbonyolultabb. Páruzamos és Grid rendszerek ME-IIT Sz.I. 202.02.06. - 24 -
f ( ) = f ( + i ) aol = - 2 - = f ( + i ) aol = 2 =8 esetén pl: =8 esetén pl: P t t 2 t 3 t 4 t 5 t 6 t 7 t 8 t t 2 t 3 t 4 t 5 t 6 t 7 t 8 z egyes téglányok számítása egymástól függetlenül, páruzamosan is elvégezető. z egyes téglányok számítása egymástól függetlenül, páruzamosan is elvégezető. Pl. minden task csak minden M-edik téglányt számol ki, majd az összegezzük az eredményeket. Páruzamos és Grid rendszerek ME-IIT Sz.I. 202.02.06. - 25 - Páruzamos és Grid rendszerek ME-IIT Sz.I. 202.02.06. - 26 - - = f ( + i ) aol = 2 - = f ( + i ) aol = 2 =8 esetén pl: P P 2 =8 esetén pl: P P 2 t t 2 t 3 t 4 t 5 t 6 t 7 t 8 t t 2 t 3 t 4 t 5 t 6 t 7 t 8 z egyes téglányok számítása egymástól függetlenül, páruzamosan is elvégezető. Pl. minden task csak minden M-edik téglányt számol ki, majd az összegezzük az eredményeket. z egyes téglányok számítása egymástól függetlenül, páruzamosan is elvégezető. Pl. minden task csak minden M-edik téglányt számol ki, majd az összegezzük az eredményeket. P 3 Páruzamos és Grid rendszerek ME-IIT Sz.I. 202.02.06. - 27 - Páruzamos és Grid rendszerek ME-IIT Sz.I. 202.02.06. - 28-4 + Egy példa Számítsuk ki értékét a 2 integrál numerikus integrálásával! 0 fenti módszert alkalmazva SPMD programot írunk. program első példánya bekéri a lépésközt és elindítja a többi példányt. z egyes példányok csak minden M-edik téglányt számítanak, majd az eredményeket elküldik az indító taszk-nak. CPU # CPU #2 CPU #3 pi.c program #include <stdlib.> #include <stdio.> #include <mat.> #include "pvm3." /* PVM 3 include file */ #define ((float)(4.0/(.0+*))) #define ((float)(4.0*atan(.0))) /* csak az ellenorzesez */ #define MXPROCS 32 /* node programok ma szama */ #define TG_ /* uzenettipus */ #define TG_SUM 222 /* SUM uzenettipus */ #define TG_TIDS 333 /* TIDS uzenettipus */ /* * z elso peldany belep a PVM-be es elinditja * sajat magat nproc peldanyban. */ void startup(int *pmynum, int *pnprocs, int tids[]) { int i, mynum, nprocs, mytid, numt, parent_tid; mytid = pvm_mytid(); if (mytid < 0) { printf("sikertelen mytid\n"); eit(0); Páruzamos és Grid rendszerek ME-IIT Sz.I. 202.02.06. - 29 - Páruzamos és Grid rendszerek ME-IIT Sz.I. 202.02.06. - 30 -
pi.c program /2 parent_tid = pvm_parent(); if (parent_tid == PvmoParent) { /* ez az elso peldany */ mynum = 0; tids[0] = mytid; printf ("Hany node peldany(-%d)?\n", MXPROCS); scanf("%d", nprocs); numt = pvm_spawn("pi", ULL, PvmTaskDefault, "", nprocs, &tids[]); if (numt!= nprocs) { printf ("Hibas taszk inditas numt= %d\n",numt); eit(0); *pnprocs = nprocs; /* node peldanyok szama */ pvm_initsend(pvmdatadefault); /* tid info az mindenkinek */ pvm_pkint(&nprocs,, ); pvm_pkint(tids, nprocs+, ); pvm_mcast(&tids[], nprocs, TG_TIDS); else { /* ez nem elso peldany */ pvm_recv(parent_tid, TG_TIDS); pvm_upkint(&nprocs,, ); pvm_upkint(tids, nprocs+, ); for (i = ; i <= nprocs; i++) if (mytid == tids[i]) mynum=i; *pmynum = mynum; Páruzamos és Grid rendszerek ME-IIT Sz.I. 202.02.06. - 3 - pi.c program /3 /* * ertek eloallitasa. (z elso peldany bekeri). */ void solicit(int *p, int *pnprocs, int mynum, int tids[]) { if (mynum == 0) { /* ez az elso taszk */ printf("kozelites lepesszama:(0 = vege)\n"); if (scanf("%d", p)!= ) *p = 0; pvm_initsend(pvmdatadefault); pvm_pkint(p,,); pvm_pkint(pnprocs,,); pvm_mcast(&tids[], *pnprocs, TG_); else { /* egyebkent a fonok node kuldi */ pvm_recv(tids[0], TG_); pvm_upkint(p,, ); pvm_upkint(pnprocs,, ); Páruzamos és Grid rendszerek ME-IIT Sz.I. 202.02.06. - 32 - pi.c program /4 main() { float sum, w, ; int i,, M, mynum, nprocs, tids[mxprocs+]; startup(&mynum, &nprocs, tids); for (;;) { solicit (&, &nprocs, mynum, tids); if ( <= 0) { printf(" %d. peldany kilep a virtualis gepbol\n", mynum); pvm_eit(); eit(0); /* * Szamitas. M=nprocs+ peldany van, igy csak minden M. * teglanyt szamolja egy processz. */ M = nprocs+; w =.0/(float); sum = 0.0; for (i = mynum+; i <= ; i += M) sum = sum + f(((float)i-0.5)*w); sum = sum * w; pi.c program /4 /* Eredmenyek feldolgozasa */ if (mynum == 0) { /* a ez az elso peldany */ printf ("Elso peldany szamitasa = %7.5f\n", sum); for (i = ; i <= nprocs; i++) { pvm_recv(-, TG_SUM); pvm_upkfloat(&,, ); printf ("Elso peldany = %7.5f erteket kapott\n", ); sum = sum+; printf("sum=%2.8f\terr=%0e\n", sum, sum-); flus(stdout); else { /* tovabbi peldanyok elkuldik az eredmenyt. */ pvm_initsend(pvmdatadefault); pvm_pkfloat(&sum,, ); pvm_send(tids[0], TG_SUM); printf(" %d. elkuldte a reszosszeget: %7.2f \n", mynum, sum); fflus(stdout); Páruzamos és Grid rendszerek ME-IIT Sz.I. 202.02.06. - 33 - Páruzamos és Grid rendszerek ME-IIT Sz.I. 202.02.06. - 34 - Message Passing Interface (M) lapvetően más célokkal fejlődött ki: szabványos, a gyártók által elfogadott, speciális w. környezetet is támogató fejl. környezet. osszú nyűgös fejlődés kezdetben csak statikus processzkezelés nem igényli a virtuális gép előzetes felépítését, mert a teljes kommunikációs séma az alkalmazásoz szerkesztődik. Ezzel szemben a PVM op.r. funkciókat nyújt. viszonylag gyorsan fejlesztették. Cluster koncepció Gyors álózattal összekapcsolt gépek Gyakran közös fájlrendszer CPU vagy tárolási kapacitás növelése Paraméter study, vagy páruzamos alkalmazások Páruzamos és Grid rendszerek ME-IIT Sz.I. 202.02.06. - 35 - Páruzamos és Grid rendszerek ME-IIT Sz.I. 202.02.06. - 36 -