Párhuzamos és Grid rendszerek

Hasonló dokumentumok
Párhuzamos és Grid rendszerek. Parallel programozás áttekintése. Történelmi áttekintés

Parallel programozás áttekintése. Párhuzamos és Grid rendszerek. Történelmi áttekintés. Jellemző szupersz.gép típusok. Flynn-féle architektúra modell

Párhuzamos és Grid rendszerek

Bevezetés a párhuzamos programozási koncepciókba

Párhuzamos programozási platformok

Párhuzamos programozási platformok

Flynn féle osztályozás Single Isntruction Multiple Instruction Single Data SISD SIMD Multiple Data MISD MIMD

EGI-InSPIRE. Café Grid március 24. Szeberényi Imre 3/25/ EGI-InSPIRE RI

Csoportos üzenetszórás optimalizálása klaszter rendszerekben

egy szisztolikus példa

Condor rendszer röviden. IKTA NI-2000/0008 munkaszkasz zárókonferencia

Párhuzamos és Grid rendszerek

Az NIIF új szuperszámítógép infrastruktúrája Új lehetőségek a kutatói hálózatban

Párhuzamos és Grid rendszerek

SAT probléma kielégíthetőségének vizsgálata. masszív parallel. mesterséges neurális hálózat alkalmazásával

Párhuzamos és Grid rendszerek. Összefogalás. Jellemző szupersz.gép típusok. Párhuzamos architektúrák. Párh. prog. fejlesztési módszerek

Összefogalás. Párhuzamos és Grid rendszerek. Párhuzamos gépek osztályai. Jellemző szupersz.gép típusok. Flynn-féle architektúra modell

Autóipari beágyazott rendszerek. Komponens és rendszer integráció

Szenzorhálózatok programfejlesztési kérdései. Orosz György

Programozás alapjai C nyelv 5. gyakorlat. Írjunk ki fordítva! Írjunk ki fordítva! (3)

Számítógép-rendszerek fontos jellemzői (Hardver és Szoftver):

Az NIIF új szuperszámítógép infrastruktúrája Új lehet!ségek a kutatói hálózatban Debreceni Egyetem

Programozás alapjai C nyelv 10. gyakorlat. Standard függvények. Union

Számítógépek felépítése

A számítógép-hálózat egy olyan speciális rendszer, amely a számítógépek egymás közötti kommunikációját biztosítja.

Ezeket a kiemelkedı sebességő számítógépeket nevezzük szuperszámítógépeknek.

Számítógép architektúra

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)

Programozás alapjai C nyelv 8. gyakorlat. Mutatók és címek (ism.) Indirekció (ism)

Neurális hálózatok bemutató

SZÁMÍTÓGÉP ARCHITEKTÚRÁK

Párhuzamos és Grid rendszerek. Flynn-féle architektúra modell. ClearSpeed gyorsító kártya. 2006: Tokyo Institute of Technology's

Számítógép Architektúrák

Szimuláció RICHARD M. KARP és AVI WIGDERSON. (Készítette: Domoszlai László)

Párhuzamos és Grid rendszerek. Hol tartunk? Klaszter. Megismerkedtünk az alapfogalmakkal,

Párhuzamos és Grid rendszerek

Ismerkedjünk tovább a számítógéppel. Alaplap és a processzeor

Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double

Készítette: Trosztel Mátyás Konzulens: Hajós Gergely

Párhuzamos genetikus algoritmus

Párhuzamos programok futásának kiértékelése Scalasca profiler segítségével

Elosztott rendszer architektúrák

Hálózati réteg. WSN topológia. Útvonalválasztás.

5-6. ea Created by mrjrm & Pogácsa, frissítette: Félix

Programozás II. 2. Dr. Iványi Péter

Architektúra, megszakítási rendszerek

Mutatók és címek (ism.) Programozás alapjai C nyelv 8. gyakorlat. Indirekció (ism) Néhány dolog érthetőbb (ism.) Változók a memóriában

Nagy adattömbökkel végzett FORRÓ TI BOR tudományos számítások lehetőségei. kisszámítógépes rendszerekben. Kutató Intézet

Flynn-féle architektúra modell. Párhuzamos és Grid rendszerek (8. ea) egy vektorprocesszor. Belső felépítés. ClearSpeed gyorsító kártya MTAP

Magas szintű optimalizálás

ISA szimulátor objektum-orientált modell (C++)

Teljesítménymodellezés és futási idő előrejelzés klaszter rendszerekben

VLIW processzorok (Működési elvük, jellemzőik, előnyeik, hátrányaik, kereskedelmi rendszerek)

SZÁMÍTÓGÉP ARCHITEKTÚRÁK

NIIFI HPC Szolgáltatás

Bevezetés a számítástechnikába

Az UPPAAL egyes modellezési lehetőségeinek összefoglalása. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

Programozás 6. Dr. Iványi Péter

Hálózatok. Alapismeretek. A hálózatok célja, építőelemei, alapfogalmak

Számítógép architektúrák záróvizsga-kérdések február

AGSMHÁLÓZATA TOVÁBBFEJLESZTÉSE A NAGYOBB

VIRTUAL NETWORK EMBEDDING VIRTUÁLIS HÁLÓZAT BEÁGYAZÁS

Programozás alapjai II. (7. ea) C++ Speciális adatszerkezetek. Tömbök. Kiegészítő anyag: speciális adatszerkezetek

Párhuzamos és Grid rendszerek

Parciális rekonfiguráció Heterogán számítási rendszerek VIMIMA15

Speciális adatszerkezetek. Programozás alapjai II. (8. ea) C++ Tömbök. Tömbök/2. N dimenziós tömb. Nagyméretű ritka tömbök

UNIX: folyamatok kommunikációja

Mit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3)

9. MPI

Példa: LHC, CERN, Genf Enabling Grids for E-sciencE

Live free() or die() Az openmosix cluster szoftver

Grafikus csővezeték 1 / 44

Párhuzamos és Elosztott Rendszerek

Párhuzamos programozási modellek

Számítógép Architektúrák

Hogyan lesz adatbányából aranybánya?

Nyíregyházi Egyetem Matematika és Informatika Intézete. Input/Output

Kommunikáció az EuroProt-IED multifunkcionális készülékekkel

Az MTA Cloud a tudományos alkalmazások támogatására. Kacsuk Péter MTA SZTAKI

Párhuzamosítás adatbáziskezelő rendszerekben

IBM felhő menedzsment

C programozás. 6 óra Függvények, függvényszerű makrók, globális és

Architektúra, cache. Mirıl lesz szó? Mi a probléma? Teljesítmény. Cache elve. Megoldás. Egy rövid idıintervallum alatt a memóriahivatkozások a teljes

Magic xpi 4.0 vadonatúj Architektúrája Gigaspaces alapokon

K+F a Hálózattervezés területén

Párhuzamos és Grid rendszerek

Párhuzamos és Grid rendszerek. Áttekintés. Szálak. Eddig általános eszközöket láttunk, melyek

Számítógépek felépítése, alapfogalmak

2. Számítógépek működési elve. Bevezetés az informatikába. Vezérlés elve. Külső programvezérlés... Memória. Belső programvezérlés

Vezérlési szerkezetek

Programozás alapjai II. (7. ea) C++

Programozás C nyelven FELÜLNÉZETBŐL elhullatott MORZSÁK. Sapientia EMTE

DOKTORI ÉRTEKEZÉS VARJASI NORBERT

Autóipari beágyazott rendszerek. Integrált és szétcsatolt rendszerek

Enabling Grids for E-sciencE. Grid bevezető INFSO-RI

Tartalomjegyzék. Előszó... xi. 1. Bevezetés Mechanikai, elektromos és logikai jellemzők... 13

SzA19. Az elágazások vizsgálata

Hozzáférés a HPC-hez, kezdő lépések (előadás és demó)

Bevezetés. Többszálú, többmagos architektúrák és programozásuk Óbudai Egyetem, Neumann János Informatikai Kar

Átírás:

Párhuzamos és Grid rendszerek (1. ea) alapfogalmak Szeberényi Imre BME IIT <szebi@iit.bme.hu> M Ű E G Y E T E M 1 7 8 2 Párhuzamos és Grid rendszerek BME-IIT Sz.I. 2012.02.06. - 1 -

Parallel programozás áttekintése Miért fontos a párhuzamos feldolgozás? Nagyobb teljesítmény elérése miatt? Csak a teljesítményért? a párhuzamosítás ebben az esetben csak technológia nem fontos az alkalmazás tervezője számára el kell fedni (mint pl. a hardware regisztereket, cache-t,...) Egy lehetséges eszköz a valóság modellezésére Egyszerűsítheti a tervezési munkát Párhuzamos feldolgozás problémái Gyakran nehezebb kivitelezni, mint a soros feldolgozást törékeny (nem determinisztikus viselkedés) deadlock problémák léphetnek fel erőforrás allokációs problémák lehetnek nem egyszerű hibát keresni Ezek valós tapasztalatok, de nem szükségszerűek! Párhuzamos és Grid rendszerek BME-IIT Sz.I. 2012.02.06. - 2 -

Történelmi áttekintés Neumann korában felmerült az ötlet (Daniel Slotnick), de a csöves technológia nem tette ezt lehetővé. Első szupergép: 1967-ben ILLIAC IV (256 proc, 200MFlop) Thinking Machines CM-1, CM-2 (1980) Cray-1 Párhuzamos és Grid rendszerek BME-IIT Sz.I. 2012.02.06. - 3 -

Jellemző szupersz.gép típusok Vektorprocesszoros rendszerek Gyors műveletvégzés vektor jellegű adatokon Masszívan párhuzamos 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árhuzamos és Grid rendszerek BME-IIT Sz.I. 2012.02.06. - 4 -

Párhuzamos gép modellje Több modell alakult ki. A legegyszerűbb a Flynn-féle modell, mely a Neumann modell kiterjesztésének tekinti a párhuzamos gépet. A másik gyakran alkalmazott modell az idealizált párhuzamos számítógép modell Párhuzamos és Grid rendszerek BME-IIT Sz.I. 2012.02.06. - 5 -

Flynn-féle architektúra modell Single DATA Multiple Single INSTRUCTIONS Multiple Single Instruction Single Data SISD (serial machines) Multiple Instruction Single Data MISD (pipelines) Single Instruction Multiple Data SIMD (vector processors) Multiple Instruction Multiple Data MIMD (multiprocesszors) Párhuzamos és Grid rendszerek BME-IIT Sz.I. 2012.02.06. - 6 -

Idealizált párhuzamos számítógép memória memória memória CPU 1 CPU 2 CPU 3 Összeköttetés 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. A lokális memória elérése gyorsabb. Az átviteli sebesség független a csatorna forgalmától. Párhuzamos és Grid rendszerek BME-IIT Sz.I. 2012.02.06. - 7 -

Architektúrák jellemzői Processzorok eloszlása Homogén vagy heterogén A kapcsolat késleltetése és sávszélessége Topológia Hálók Gyűrűk Fák Hiperkockák Teljesen összekötött Párhuzamos és Grid rendszerek BME-IIT Sz.I. 2012.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 architektúrához Párhuzamos és Grid rendszerek BME-IIT Sz.I. 2012.02.06. - 9 -

Közös memória elv jellemzői Közös memória használatának előnyei Egységes hozzáférés Egyszerűbb programozás A hw adottságaitól függően jó speed-up értékel érhetők el Közös memória használatának hátrányai Memória-hozzáférés szűk keresztmetszetet jelenthet Nem jól skálázható Cache problémák megoldása külön hardvert igényel Nehéz nyomkövethetőség Párhuzamos és Grid rendszerek BME-IIT Sz.I. 2012.02.06. - 10 -

Elosztott memória elv jellemzői Elosztott memória használatának előnyei Skálázható Költségkímélő A redundancia növelésével növekedhet a megbizhatóság Speciális feldolgozó eszközökkel is együttműködik Elosztott memória használatának hátrányai Kommunikáció igényes Nem minden algoritmus párhuzamosítható így A meglevő soros programokat és a közös memóriát használó alkalmazásokat át kell dolgozni Jó speed up értékeket nehéz elérni Nehéz nyomkövethetőség Párhuzamos és Grid rendszerek BME-IIT Sz.I. 2012.02.06. - 11 -

Párhuzamos gépek osztályai Szimmetrikus multiprocesszoros (SMP) sok azonos processzor közös memóriával egy operációs rendszerrel NUMA, ccnuma Masszívan párhuzamos (MPP) sok processzor gyors belső hálózattal elosztott memória sok példányban fut az operációs rendszer Klaszter sok gép gyors hálózattal összekötve elosztott memória sok példányban esetleg heterogén operációs rendszer Párhuzamos és Grid rendszerek BME-IIT Sz.I. 2012.02.06. - 12 -

Teljesítménymérés Sebességnövekedés (Speed Up): Sn = Ts/Tn ahol:sn N processzorral elért sebességnövekedés Ts futási idő soros végrehajtás esetén Tn futási idő N processzor esetén Hatékonyság (Efficiency): En = Sn/N ahol:en N processzorral elért hatékonyság Sn N processzorral elért sebességnövekedés N processzorok száma Rededundancia (Redundancy): r = Cp/Cs ahol:r párhuzamos program redundanciája Cp párhuzamos program műveleteinek száma Cs soros program műveleteinek száma Párhuzamos és Grid rendszerek BME-IIT Sz.I. 2012.02.06. - 13 -

Speed Up határa Amdahl féle felső határ: Sa = 1/(s+(1-s)/N) ahol:sa N processzorral elértetô sebességnövekedés felsô határa s a feladat nem párhuzamosítható része N processzorok száma Az (1-s)/N tagot elhagyva: Sa < 1/s összefüggést kapjuk, ami egy felső korlátot ad. Ez azt jelenti, hogy pl. 10% nem párhuzamosítható rész mellet 1/0.1 = 10 adódik a speed up felső korlátjaként. Párhuzamos és Grid rendszerek BME-IIT Sz.I. 2012.02.06. - 14 -

Nem gyorsítható korlátlanul 10 9 8 7 6 5 4 3 2 1 0 2 4 6 10 20 40 200 2000 Processzorszám Párhuzamos és Grid rendszerek BME-IIT Sz.I. 2012.02.06. - 15 -

Programozási nyelvek Linda közös memória modell, Tuple Space out kimásol egy adathalmazt a közös területre in, inp behoz egy adathalmazt (megszűnik) rd, rdp behoz egy adathalmazt eval végrehajt egy függvényt processzként Egyszerű modell, de implementációs nehézségek vannak, főleg az üzenetküldéses architektúrákon. Párhuzamos és Grid rendszerek BME-IIT Sz.I. 2012.02.06. - 16 -

Programozási nyelvek/2 Express elosztott memória modell 160 C-ből és fortranból hívható 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 Párhuzamos és Grid rendszerek BME-IIT Sz.I. 2012.02.06. - 17 -

Programozási nyelvek/3 PVM elosztott memória modell 70 C-ből és fortranból hívható rutin: programindítás, leállítás programok közötti kommunikáció, szinkronizáció Párhuzamos és Grid rendszerek BME-IIT Sz.I. 2012.02.06. - 18 -

Mire használják a PVM-et? "Szegények" szuperkomputere a szabad CPU kapacitások összegyűjthetők a munkaállomásokról és a PC-ről Több szuperkomputer összekapcsolásával hihetetlen számítási kapacitás állítható elő Oktatási eszköz a párhuzamos programozás tanításához hatékony eszköz Kutatási eszköz skálázható és költségkímélő Párhuzamos és Grid rendszerek BME-IIT Sz.I. 2012.02.06. - 19 -

PVM alapkoncepciója CPU #1 CPU #2 CPU #3 app #1 app #2 app #3 app #4 libpvm libpvm libpvm libpvm pvmd pvmd pvmd Összeköttetés app # Az alkalmazás része libpvm Nyelvi interfész pvmd PVM daemon Párhuzamos és Grid rendszerek BME-IIT Sz.I. 2012.02.06. - 20 -

libpvm A libpvm által nyújtott funkciók a négy csoportra oszthatók: Adminisztratí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 Adatá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 használatával Párhuzamos és Grid rendszerek BME-IIT Sz.I. 2012.02.06. - 21 -

Párhuzamos program felépítése soros párhuzamos párhuzamos soros párhuzamos párhuzamos párhuzamos soros CPU #1 CPU #2 CPU #3 Párhuzamos és Grid rendszerek BME-IIT Sz.I. 2012.02.06. - 22 -

Kényszerű Párhuzamosítási startégiák A program soros változatát futtatjuk párhuzamosan különböző adatokkal. Csak akkor kielégítő módszer, ha a soros változat elviselhető futási idejű. Ciklusok párhuzamosítása Akkor alkalmazható, ha az egyes iterációk függetlenek egymástól Felosztó párhuzamosítás (master / slave) Egy felügyelő taszk fut az egyik node-on Akkor alkalmazható, ha 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ázható a taszkok számának változtatásával. Párhuzamos és Grid rendszerek BME-IIT Sz.I. 2012.02.06. - 23 -

Párhuzamosí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. Akkor használható, ha a soros része a feldolgozásnak lényegesen rövidebb, mint a párhuzamos rész. Rendszerint minden node azonos kódot futtat. Különösen alkalmas a gyűrű topológiához. Régiók párhuzamosítása Az adatfüggőség régiókba lokalizálható. Akkor használható, soros végrehajtási idő nagyobb mint a párhuzamos. Rendszerint nagy kommunikációigényű. Legbonyolultabb. Párhuzamos és Grid rendszerek BME-IIT Sz.I. 2012.02.06. - 24 -

Párhuzamosítási példa Számítsuk ki az B A f ( x) dx N=8 esetén pl: B A f(x) integrál értékét egyszerű numerikus közelítéssel (téglány összegek)! N f ( x ) dx = h f ( A h + i h ) ahol h= B-A 2 N i= 1 t 1 t 2 t 3 t 4 t 5 t 6 t 7 t 8 A h B x Az egyes téglányok számítása egymástól függetlenül, párhuzamosan is elvégezhető. Párhuzamos és Grid rendszerek BME-IIT Sz.I. 2012.02.06. - 25 -

Számítsuk ki az B f ( x) dx Párhuzamosítási példa integrál értékét egyszerű numerikus közelítéssel (téglány összegek)! B N h B-A A f ( x) dx = h f ( A + i h) ahol h= 2 N A i= 1 N=8 esetén pl: f(x) P 1 t 1 t 2 t 3 t 4 t 5 t 6 t 7 t 8 A h B x Az egyes téglányok számítása egymástól függetlenül, párhuzamosan is elvégezhető. Pl. minden task csak minden M-edik téglányt számol ki, majd az összegezzük az eredményeket. Párhuzamos és Grid rendszerek BME-IIT Sz.I. 2012.02.06. - 26 -

Számítsuk ki az B f ( x) dx Párhuzamosítási példa integrál értékét egyszerű numerikus közelítéssel (téglány összegek)! B N h B-A A f ( x) dx = h f ( A + i h) ahol h= 2 N A i= 1 N=8 esetén pl: f(x) P 1 P 2 t 1 t 2 t 3 t 4 t 5 t 6 t 7 t 8 A h B x Az egyes téglányok számítása egymástól függetlenül, párhuzamosan is elvégezhető. Pl. minden task csak minden M-edik téglányt számol ki, majd az összegezzük az eredményeket. Párhuzamos és Grid rendszerek BME-IIT Sz.I. 2012.02.06. - 27 -

Számítsuk ki az B f ( x) dx Párhuzamosítási példa integrál értékét egyszerű numerikus közelítéssel (téglány összegek)! B N h B-A A f ( x) dx = h f ( A + i h) ahol h= 2 N A i= 1 N=8 esetén pl: f(x) P 1 P 2 t 1 t 2 t 3 t 4 t 5 t 6 t 7 t 8 A h P 3 B x Az egyes téglányok számítása egymástól függetlenül, párhuzamosan is elvégezhető. Pl. minden task csak minden M-edik téglányt számol ki, majd az összegezzük az eredményeket. Párhuzamos és Grid rendszerek BME-IIT Sz.I. 2012.02.06. - 28 -

Egy példa Számítsuk ki PI értékét a 1 4 1 + x 0 2 dx integrál numerikus integrálásával! A fenti módszert alkalmazva SPMD programot írunk. A program első példánya bekéri a lépésközt és elindítja a többi példányt. Az 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. PI PI PI PI CPU #1 CPU #2 CPU #3 Párhuzamos és Grid rendszerek BME-IIT Sz.I. 2012.02.06. - 29 -

pi.c program #include <stdlib.h> #include <stdio.h> #include <math.h> #include "pvm3.h" /* PVM 3 include file */ #define f(x) ((float)(4.0/(1.0+x*x))) #define PI ((float)(4.0*atan(1.0))) /* csak az ellenorzeshez */ #define MAXPROCS 32 /* node programok max szama */ #define TAG_N 111 /* N uzenettipus */ #define TAG_SUM 222 /* SUM uzenettipus */ #define TAG_TIDS 333 /* TIDS uzenettipus */ /* * Az 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"); exit(0); } Párhuzamos és Grid rendszerek BME-IIT Sz.I. 2012.02.06. - 30 -

pi.c program /2 parent_tid = pvm_parent(); if (parent_tid == PvmNoParent) { /* ez az elso peldany */ mynum = 0; tids[0] = mytid; printf ("Hany node peldany(1-%d)?\n", MAXPROCS); scanf("%d", nprocs); numt = pvm_spawn("pi", NULL, PvmTaskDefault, "", nprocs, &tids[1]); if (numt!= nprocs) { printf ("Hibas taszk inditas numt= %d\n",numt); exit(0); } *pnprocs = nprocs; /* node peldanyok szama */ pvm_initsend(pvmdatadefault); /* tid info az mindenkinek */ pvm_pkint(&nprocs, 1, 1); pvm_pkint(tids, nprocs+1, 1); pvm_mcast(&tids[1], nprocs, TAG_TIDS); } else { /* ez nem elso peldany */ pvm_recv(parent_tid, TAG_TIDS); pvm_upkint(&nprocs, 1, 1); pvm_upkint(tids, nprocs+1, 1); for (i = 1; i <= nprocs; i++) if (mytid == tids[i]) mynum=i; } *pmynum = mynum; } Párhuzamos és Grid rendszerek BME-IIT Sz.I. 2012.02.06. - 31 -

pi.c program /3 /* * N ertek eloallitasa. (Az elso peldany bekeri). */ void solicit(int *pn, int *pnprocs, int mynum, int tids[]) { if (mynum == 0) { /* ez az elso taszk */ printf("kozelites lepesszama:(0 = vege)\n"); if (scanf("%d", pn)!= 1) *pn = 0; pvm_initsend(pvmdatadefault); pvm_pkint(pn,1,1); pvm_pkint(pnprocs,1,1); pvm_mcast(&tids[1], *pnprocs, TAG_N); } else { /* egyebkent a fonok node kuldi */ pvm_recv(tids[0], TAG_N); pvm_upkint(pn, 1, 1); pvm_upkint(pnprocs, 1, 1); } } Párhuzamos és Grid rendszerek BME-IIT Sz.I. 2012.02.06. - 32 -

pi.c program /4 main() { float sum, w, x; int i, N, M, mynum, nprocs, tids[maxprocs+1]; startup(&mynum, &nprocs, tids); for (;;) { solicit (&N, &nprocs, mynum, tids); if (N <= 0) { printf("a %d. peldany kilep a virtualis gepbol\n", mynum); pvm_exit(); exit(0); } } /* * Szamitas. M=nprocs+1 peldany van, igy csak minden M. * teglanyt szamolja egy processz. */ M = nprocs+1; w = 1.0/(float)N; sum = 0.0; for (i = mynum+1; i <= N; i += M) sum = sum + f(((float)i-0.5)*w); sum = sum * w; Párhuzamos és Grid rendszerek BME-IIT Sz.I. 2012.02.06. - 33 -

pi.c program /4 /* Eredmenyek feldolgozasa */ if (mynum == 0) { /* ha ez az elso peldany */ printf ("Elso peldany szamitasa x = %7.5f\n", sum); for (i = 1; i <= nprocs; i++) { pvm_recv(-1, TAG_SUM); pvm_upkfloat(&x, 1, 1); printf ("Elso peldany x = %7.5f erteket kapott\n", x); sum = sum+x; } printf("sum=%12.8f\terr=%10e\n", sum, sum-pi); flush(stdout); } else { /* tovabbi peldanyok elkuldik az eredmenyt. */ pvm_initsend(pvmdatadefault); pvm_pkfloat(&sum, 1, 1); pvm_send(tids[0], TAG_SUM); printf("a %d. elkuldte a reszosszeget: %7.2f \n", mynum, sum); fflush(stdout); } } } Párhuzamos és Grid rendszerek BME-IIT Sz.I. 2012.02.06. - 34 -

Message Passing Interface (MPI) Alapvetően más célokkal fejlődött ki: szabványos, a gyártók által elfogadott, speciális hw. környezetet is támogató fejl. környezet. hosszú 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áshoz szerkesztődik. Ezzel szemben a PVM op.r. funkciókat nyújt. viszonylag gyorsan fejlesztették. Párhuzamos és Grid rendszerek BME-IIT Sz.I. 2012.02.06. - 35 -

Cluster koncepció Gyors há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árhuzamos alkalmazások Párhuzamos és Grid rendszerek BME-IIT Sz.I. 2012.02.06. - 36 -