PVM programok írása. Hasznos információk

Slides:



Advertisements
Hasonló előadás
A hálózat működése 1. A DHCP és az APIPA
Advertisements

Windows Communication Foundation (WCF)
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,
Készítette: Nagy Márton
Operációs Rendszerek I.
Operációs rendszerek Bevezetés.
Az operációs rendszer.
avagy a hálózatok hálózata
Soros kommunikáció. •Üzenet–>Kódolás (bináris kód) •A bitek átküldése a vezetéken időben egymás után (soros) •Dekódolás–>Üzenet GND
Tömbök C#-ban.
Kifejezések 2+3 Egy egyszerű kifejezés… © Pasztuhov Dániel, www.programozas-oktatas.hu.
Operációs Rendszerek II. 5. előadás március 05.
Budapesti Műszaki és Gazdaságtudományi Egyetem Elektronikus Eszközök Tanszéke A programozás alapjai 1. (VIEEA100) 9. előadás.
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.
11. előadás (2005. május 10.) A make segédprogram Alacsony szintű műveletek és bitmezők Fájl, katalógus rendszer hívások 1.
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ő 1. Elérhetőségek Bauer Péter Horváth Ernő Tanszéki honlap
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
Neobotix MP500. Felépítése Ipari kivitel Linux Wifi n CAN Terhelhetőség: 80kg 5,5 km/h Üzemidő: ~10 h Hatótáv: 8km.
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
1 Operációs rendszerek Signal kezelés. 2 SIGNAL kezelés Egyszerű folyamatok közötti kommunikációs (IPC – Inter Process Communication) megoldás. A signal.
Windows Server 2012 Kiadások, licencelés, lehetőségek
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
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.
Server, Client. Client-Server Client numPlayers Id ServerMessage ClientMessage Server numPlayers ClientMessages[] ServerMessage Ha a kliens ugyanazt az.
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.
Web fejlesztés V. Illés Zoltán ELTE Informatikai Kar
Objektum orientált programozás
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
OPERÁCIÓS RENDSZEREK LINUX – PARANCSSOR.
Felhő PC demonstráció Gergely Márk MTA SZTAKI Laboratory of Parallel and Distributed Systems
Az operációs rendszer feladata
Illés Zoltán ELTE Informatikai Kar
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.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 1. gyakorlat.
Piramis klaszter rendszer
Nyilvános kulcsú titkosítás Digitális aláírás Üzenet pecsétek.
Készítette: Rummel Szabolcs Elérhet ő ség: Linux kezelése.
Az operációs rendszer.
IT ALAPFOGALMAK OPERÁCIÓS RENDSZEREK.
PVM programok írása.
Előadás másolata:

PVM programok írása

Hasznos információk

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: 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 Egyetemi gépre belépve → 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 #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 pvm pvm> spawn -> hello spawn -> hello [1] 1 successful t40002 pvm> [1:t40002] i'm t40002 [1:t40002] from t40003: [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 blade pvm> conf conf 2 hosts, 1 data format HOST DTID ARCH SPEED DSIG atlasz LINUX64 1 0x00408c41 blade LINUX x00408c41

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

hello.c #include #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: ssh ssh atlasz.elte.hu mkdir pvm3 mkdir pvm3/bin mkdir pvm3/bin/LINUX64

Utána mindig ezt kell csinálni cd pvm3/src/hello ls Makefile.aimk hello.c hello_other.c 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

Utána mindig ezt kell csinálni (2): ls LINUX Makefile.aimk hello.c hello_other.c ls LINUX hello hello_other 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 ls ~/pvm3/bin/LINUX/ hello hello_other 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 ~$

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. /sock fájlt ls /tmp/pvm.11700/ log sock id uid=11700(kto) gid=10713(aszt) groups=10713(aszt)‏

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 ~$ ls /tmp/pvmd ~$ id uid=11700(tothmelinda) gid=100(users) groups=100(users),8291(pvm) ~$

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.

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

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

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 –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 spawnprogram indítása addprocesszorok megfogása confmegfogott processzorok psfutó folyamatok haltleállítás quitideiglenes kilépés

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

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

add, conf (3)‏ pvm> add blade03 blade04 blade05 add blade03 blade04 blade05 3 successful HOST DTID blade03 c0000 blade blade 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 :~$ cat hosts blade01 … blade14 :~$ pvm hosts pvm> conf conf 15 hosts, 1 data format HOST DTID ARCH SPEED DSIG atlasz LINUX x00408c41 blade LINUX x00408c41... blade14 1c0000 LINUX x00408c41

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!!!