PVM programok írása.

Slides:



Advertisements
Hasonló előadás
4. alkalom – Hálózat Kezelés
Advertisements

A hálózat működése 1. A DHCP és az APIPA
Készítette: Kun Béla.  Operációs rendszernek nevezzük a számítástechnikában a számítógépeknek azt az alapprogramját, mely közvetlenül kezeli a hardvert,
Operációs Rendszerek I.
Az operációs rendszer Egy olyan szoftver, ami a számítógépeink használatához nélkülözhetetlen. Főbb feladatai: programok betöltése, futtatása perifériák.
Operációs rendszerek Bevezetés.
Az operációs rendszer.
Kifejezések 2+3 Egy egyszerű kifejezés… © Pasztuhov Dániel, www.programozas-oktatas.hu.
3. A programozás eszközei, programozás-technikai alapismeretek
Budapesti Műszaki és Gazdaságtudományi Egyetem Elektronikus Eszközök Tanszéke A programozás alapjai 1. (VIEEA100) 9. előadás.
PVM programok írása. Hasznos információk
Programozási Nyelvek (C++) Gyakorlat Gyak 01.
Programozási Nyelvek (C++) Gyakorlat Gyak 03.
LINUX/UNIX PARANCSOK.
Bevezetés a Java programozásba
Az operációs rendszer.
10. előadás (2004. április 20.) A C előfordító (folytatás) Néhány hasznos compiler opció Egy tanulságos könyvtári függvény Változó hosszúságú argumentum.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 6. Gyakorlat const, static, dinamikus 2D.
A CLIPS keretrendszer CLIPS "C" Language Integration Production System.
Borland C/C++ mintapéldák fájlokra. 1. példa Írjon olyan programot,amely megnyit egy hw.txt fájlt és írja bele a Hello világ szöveget. Ez után zárja le.
BE KI Perifériák Számítógép.
Ember László Damn Small Linux Microsoft VPC környezetben.
Az operációs rendszerek
Programozás I. Horváth Ernő.
Programozás I. Horváth Ernő 1. Elérhetőségek Bauer Péter Horváth Ernő Tanszéki honlap
Programozás I. Horváth Ernő.
WEB Technológiák Dr. Pance Miklós – Kolcza Gábor Miskolci Egyetem.
PVM programok írása Kozsik Tamás
PVM programok írása Kozsik Tamás
PVM programok írása. Hasznos információk
C++ alapok, harmadik óra
Az operációs rendszer.
Operációs rendszerek gyakorlat
Windows Server 2012 Kiadások, licencelés, lehetőségek
P ROGRAMOZÁS C# - BAN Kivételkezelés. P ÉLDA I. Nullával való osztás miatt kapjuk a hibaüzenetet.
Operációs rendszer.
Operációs rendszerek gyakorlat 1. Bevezetés Vakulya Gergely.
Hálózat kiépítésével lehetőségünk nyílik más számítógépek erőforrásainak használatára. Osztott háttértár használat: egy számítógép merevlemezének megosztásával.
Programozási nyelvek.
Készítette: Csíki Gyula
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Széchenyi Isván Egyetem Számítógépes hálózatok II 1 Számítógépes Hálózatok II Széchenyi István Egyetem.
Operációs rendszerek Oberhuber Balázs.
A D programozási nyelv Angeli Dávid. Nagy vonalakban  C++  
Az operációs rendszerek feladata, fajtái, felépítése
Neuroszimulátorok tesztelése a DemoGrid rendszeren MTA KFKI Részecske- és Magfizikai Kutatóintézet Biofizikai Osztály
Bevezetés az operációs rendszerek világába TMG SZK.
Komoróczy Tamás 1 Java programozási nyelv A nyelv alapjai.
A gyakorlatok munkakörnyezete
Objektum orientált programozás 3. Függvények Nagy Szilvia.
Objektum orientált programozás
Az operációs rendszer feladata. 1. Az operációs rendszer fogalma: A számítógépek alkalmazhatóságának rugalmasságát a gépen megvalósított, futtatható szoftverek.
Automatizálási folyamatok az SQL 2012-ben
A Visual Basic nyelvi elemei
Felhő PC demonstráció Gergely Márk MTA SZTAKI Laboratory of Parallel and Distributed Systems
Az operációs rendszer feladata
Függvények a C nyelvben 1 Függvényeket a következő esetekben szokás írni: Ha ugyanazt a tevékenységet többször is el kell végeznünk ugyanolyan típusú,
CUDA C/C++ programozás CUDA C bevezetés A segédanyag készítése a TÁMOP A/ Nemzeti Kiválóság Program című kiemelt projekt keretében.
2. Operációs rendszerek.
Piramis klaszter rendszer
Excel programozás (makró)
Objektum orientált programozás 4. Mutatók, típusok és struktúrák Nagy Szilvia.
WINDOWS FELÜGYELETI ESZKÖZÖK MICROSOFT SÚGÓ ALAPJÁN - PÉLDÁKKAL Takács Béla 2016.
Készítette: Rummel Szabolcs Elérhet ő ség: Linux kezelése.
Az operációs rendszer.
A Linux karakteres felhasználói felülete
IT ALAPFOGALMAK OPERÁCIÓS RENDSZEREK.
A CLIPS keretrendszer
Számítógépes algoritmusok
Hálózati struktúrák, jogosultságok
Előadás másolata:

PVM programok írása

Hasznos információk http://kto.web.elte.hu/ http://lovei.web.elte.hu/

PVM - Parallel Virtual Machine Szoftver rendszer, mellyel hálózatba kapcsolt számítógépeket egyetlen nagy párhuzamos számítógépként lehet látni és kezelni. Kezdet: 1989 - Oak Ridge National Laboratory A párhuzamos programok írásának egyik szabványává vált. A publikus változata ingyen elérhető. Sok hardver gyártó biztosítja a saját gépére optimalizált, gyorsabb változatát is.

Felépítése A rendszerben vannak programok, amelyek a felhasználó által írt párhuzamos program futtatását biztosítják. PVM démon PVM konzol Vannak C, illetve Fortran77 könyvtárak a párhuzamos programok megírásához.

Használata PVM rendszerbe kapcsolhatunk több - akár különböző típusú - számítógépet. A rendszer a rajta futó programok szempontjából ezek után egy nagy, elosztott memóriájú virtuális számítógépnek látszik. Különböző processzorokon, különböző programokat indíthatunk el. A szinkronizációt és a kommunikációt a PVM könyvtári függvényekkel oldhatjuk meg.

A párhuzamos programok Taszkokból (folyamatokból) épülnek fel Taszk = UNIX/Windows/… program A taszkok a pvm könyvtárat használják C, C++, Fortran77 A kommunikáció a pvm démonon keresztül történik

Működés Számítógépek hálózatba szervezve A felhasználó jogosult bármelyik gépre bejelentkezni Minden gépen futtat egy pvm démont És futtatja a taszkokat, melyek a démonokon keresztül lépnek egymással kapcsolatba Egy gépen több taszk is futhat

Hálózat Programozási nyelvek labor (00-803)‏ nyl01.nylab.inf.elte.hu nyl02.nylab.inf.elte.hu … nyl40.nylab.inf.elte.hu …

Hálózat ATLASZ CAESAR.ELTE.HU → ATLASZ.ELTE.HU blade01 ... blade14

Saját gép Viszonylag egyszerűen hazavihető és feltelepíthető Linux – triviális(pvm, pvm-dev), Windows picit macerásabb Fejlesztéshez ez is jó Egy (több) processzoron/gépen fut minden taszk Teszteléshez nem elég! A tesztelés egy része itt is végezhető

Az első program „hello” alkalmazás Két taszk: hello és hello_other Két különálló C program, külön-külön lefordítva A főprogram a hello Elindítja a hello_other-t a PVM-en keresztül

hello.c #include <stdio.h> #include "pvm3.h" int main() { int tid; int num; printf("i'm t%x\n", pvm_mytid()); pvm_spawn( "hello_other", (char**)0, 0, "", 1, &tid); pvm_recv(-1, -1); pvm_upkint(&num,1,1); printf("from t%x: %d\n", tid, num); pvm_exit(); return 0; }

hello_other.c #include "pvm3.h" int main() { int tid = pvm_mytid(); int ptid = pvm_parent(); pvm_initsend(PvmDataDefault); pvm_pkint(&tid,1,1); pvm_send(ptid, 1); pvm_exit(); return 0; }

Futtatás tothmelinda@atlasz:~/pvm3/src/hello0$ pvm pvm> spawn -> hello spawn -> hello [1] 1 successful t40002 pvm> [1:t40002] i'm t40002 [1:t40002] from t40003: 262147 [1:t40003] EOF [1:t40002] EOF [1] finished pvm>

Újabb host felvétele a virtuális gépbe pvm> add blade01 add nyl14 1 successful HOST DTID blade01 80000 pvm> conf conf 2 hosts, 1 data format HOST DTID ARCH SPEED DSIG atlasz 40000 LINUX64 1 0x00408c41 blade01 80000 LINUX64 1000000 0x00408c41

Újabb futtatás 2 hosts, 1 data format HOST DTID ARCH SPEED DSIG atlasz 40000 LINUX64 1 0x00408c41 blade01 80000 LINUX64 1000000 0x00408c41 pvm> spawn -> hello spawn -> hello [1] 1 successful t80001 pvm> [1:t40002] EOF [1:t80001] i'm t40001 [1:t80001] from t80002: 262146 [1:t80001] EOF [1] finished

hello.c #include <stdio.h> #include "pvm3.h" int main() { int cc, tid; char buf[100]; printf("i'm t%x\n", pvm_mytid()); cc = pvm_spawn( "hello_other", (char**)0, 0, "", 1, &tid); if (cc == 1) { cc = pvm_recv(-1, -1); pvm_bufinfo(cc, (int*)0, (int*)0, &tid); pvm_upkstr(buf); printf("from t%x: %s\n", tid, buf); } else printf("can't start hello_other\n"); pvm_exit(); exit(0); }

hello_other.c #include "pvm3.h" int main(){ int ptid; char buf[100]; pvm_mytid(); ptid = pvm_parent(); strcpy(buf, "hello, world from other"); pvm_initsend(PvmDataDefault); pvm_pkstr(buf); pvm_send(ptid, 1); pvm_exit(); exit(0); }

Makefile.aimk # A lefordítandó programok nevei (szóközzel elválasztott felsorolás)‏ BINS = hello hello_other

Egyszer kell megcsinálni: melinda@m:~$ ssh tothmelinda@caesar.elte.hu tothmelinda@login03:~$ ssh atlasz.elte.hu tothmelinda@atlasz:~$ mkdir pvm3 tothmelinda@atlasz:~$ mkdir pvm3/bin tothmelinda@atlasz:~$ mkdir pvm3/bin/LINUX64 tothmelinda@atlasz:~$

Utána mindig ezt kell csinálni tothmelinda@atlasz:~$ cd pvm3/src/hello tothmelinda@atlasz:~/pvm3/src/hello$ ls Makefile.aimk hello.c hello_other.c tothmelinda@atlasz:~/pvm3/src/hello$ aimk making in LINUX/ for LINUX cc -I/usr/lib/pvm3/include -Ddebug -o hello ../hello.c -L/usr/lib/pvm3/lib/LINUX -lpvm3 cc -I/usr/lib/pvm3/include -Ddebug -o hello_other ../hello_other.c - L/usr/lib/pvm3/lib/LINUX -lpvm3 tothmelinda@atlasz:~/pvm3/src/hello$

Utána mindig ezt kell csinálni (2): tothmelinda@atlasz:~/pvm3/src/hello$ ls LINUX Makefile.aimk hello.c hello_other.c tothmelinda@atlasz:~/pvm3/src/hello$ ls LINUX hello hello_other tothmelinda@atlasz:~/pvm3/src/hello$ aimk links making in LINUX/ for LINUX cd /h/teacher/kto/pvm3/bin/LINUX ln -s /h/teacher/kto/pvm3/src/hello/LINUX/hello hello ln -s /h/teacher/kto/pvm3/src/hello/LINUX/hello_other hello_other tothmelinda@atlasz:~/pvm3/src/hello$ ls ~/pvm3/bin/LINUX/ tothmelinda@atlasz:~/pvm3/src/hello$ pvm pvm> spawn -> hello

PVM indítása Legegyszerűbb, ha belépünk a PVM-konzol programba, és onnan futtatunk. Ez automatikusan elindítja a virtuális gépet is, azaz a PVM démont. Kilépés és a virtuális gép leállítása: halt pvm> halt halt Terminated tothmelinda@atlasz:~$

PVM démon A virtuális gép (démon) független a konzoltól, anélkül is elindítható Könnyű megfelejtkezni róla, és akkor csak eszi az erőforrásokat Még nagyobb a baj, ha bent ragad a programunk (pl. mert elszállt)‏ Legközelebb el sem indul a pvm démon, leáll hibával

Bentragadt PVM program Figyeljük, hogy minden taszkunk rendesen leállt-e Ha nem, lőjük ki a bent ragadtakat Ha a pvm démont nem tudjuk leállítani, lőjük ki azt is Töröljük le a /tmp/pvm.<id>/sock fájlt kto@nyl01:~$ ls /tmp/pvm.11700/ log sock kto@nyl01:~$ id uid=11700(kto) gid=10713(aszt) groups=10713(aszt)‏ kto@nyl01:~$

Bentragadt PVM program Figyeljük, hogy minden taszkunk rendesen leállt-e Ha nem, lőjük ki a bent ragadtakat Ha a pvm démont nem tudjuk leállítani, lőjük ki azt is Töröljük le a /tmp/pvm.11700/sock fájlt tothmelinda@atlasz:~$ ls /tmp/pvmd.11700 tothmelinda@atlasz:~$ id uid=11700(tothmelinda) gid=100(users) groups=100(users),8291(pvm) tothmelinda@atlasz:~$

Ideiglenes kilépés a konzolból A quit paranccsal: a démon, azaz a virtuális gép fut tovább pvm> quit quit Console: exit handler called pvmd still running. tothmelinda@atlasz:~$

Ilyenkor leállítás Visszalépni/belépni a konzolba és onnan halt paranccsal ki. tothmelinda@atlasz:~$ pvm pvmd already running. pvm> halt halt Terminated tothmelinda@atlasz:~$

Console: exit handler called pvmd still running. i'm t40002 tothmelinda@atlasz:~/pvm3/proba/hello$ cd LINUX/ tothmelinda@atlasz:~/pvm3/proba/hello/LINUX$ ls hello hello_other tothmelinda@atlasz:~/pvm3/proba/hello/LINUX$ pvm pvm> quit quit Console: exit handler called pvmd still running. tothmelinda@atlasz:~/pvm3/proba/hello/LINUX$./hello i'm t40002 from t40003: 262147 tothmelinda@atlasz:~/pvm3/proba/hello/LINUX$ pvmd already running. pvm> halt halt Terminated

Legfontosabb PVM függvények pvm_mytid() pvm_parent()‏ pvm_spawn() pvm_exit()‏ pvm_initsend() pvm_pk*() pvm_send()‏ pvm_upk*() pvm_recv()‏

Üzenetküldés initsend, pk*, send Egy üzenetben sok adat is elküldhető pkint, pkdouble… Egy üzenetben sok adat is elküldhető Több pk* hívás lehetséges Egy pk hívással egy sorozat adatot lehet becsomagolni az üzenetbe (tömb, mátrix egy oszlopa)‏ Tipikus hiba: egy üzenetet szétdarabolsz

Üzenet fejléce Minden üzenet tartalmaz az adatok mellett egy fejlécet is Üzenettípusok definiálása pvm_send(címzett,fejléc); A fogadásnál kereshetsz az üzenetsorban a küldő és a fejléc alapján

Üzenetfogadás Üzenetsor (postaláda)‏ Minden folyamatnak van egy üzenetsora pvm_recv(küldő,fejléc); A -1 azt jelenti, hogy „bármi” pvm_recv(-1,-1);

Az üzenetfogadás fajtái „Szinkron” pvm_recv a fogadó folyamat blokkolódik az üzenet megérkezéséig „Aszinkron” pvm_nrecv non-blocking receive ha van üzenet, beolvassuk, egyébként skip

Multicast Ha ugyanazt az üzenetet több folyamatnak is el szeretnénk küldeni pvm_mcast

Hasznos parancsok a PVM konzolban spawn program indítása add processzorok megfogása conf megfogott processzorok ps futó folyamatok halt leállítás quit ideiglenes kilépés

add, conf (1)‏ pvm> conf conf 1 host, 1 data format tothmelinda@atlasz:~$ pvm pvm> conf conf 1 host, 1 data format HOST DTID ARCH SPEED DSIG Atlasz 40000 LINUX64 1 0x00408c41 pvm>

add, conf (2)‏ pvm> add blade02 add blade02 1 successful HOST DTID pvm> conf conf 2 hosts, 1 data format HOST DTID ARCH SPEED DSIG atlasz 40000 LINUX64 1 0x00408c41 blade02 80000 LINUX64 1000000 0x00408c41 pvm>

add, conf (3)‏ pvm> add blade03 blade04 blade05 3 successful HOST DTID blade03 c0000 blade04 100000 blade05 140000 pvm>

add, conf (4)‏ pvm> add blade16 add blade16 0 successful HOST DTID blade16 No such host pvm>

hosts Készíthetsz egy fájlt, amiben felsorolod azokat a gépeket, amelyeket meg akarsz fogni Ezt a fájlt a konzol indításakor kell átadni paraméterként Nem kell add-dal fogdosni össze a processzorokat

hosts példa blade01 … blade14 pvm> conf conf tothmelinda@atlasz:~$ cat hosts blade01 … blade14 tothmelinda@atlasz:~$ pvm hosts pvm> conf conf 15 hosts, 1 data format HOST DTID ARCH SPEED DSIG atlasz 40000 LINUX64 1000 0x00408c41 blade01 80000 LINUX64 1000 0x00408c41 ... blade14 1c0000 LINUX64 1000 0x00408c41

A beadandó programokról... Sok gépen futtatva kell bemutatni Sok gépen végzett tesztelést kell dokumentálni A tesztelésnek az algoritmus műveletigényéről kell szólnia pl. “n adat n processzoron O(log n) időben” Géptermi zárthelyi!!!