Párhuzamos programozást
támogató nyelvi eszközök
összehasonlítása
diplomamunka
készítette: Frohner Ákos
programtervezõ-matematikus
hallgató
témavezetõ: Horváth Zoltán
1996.
Eme dolgozat témája párhuzamos programok
írását támogató nyelvi eszközök
összehasonlítása. A nyelvi eszközök itt
konkrét programozási nyelvek részei, amelyek
támogatják a párhuzamosságot, vagy
hagyományos nyelvekhez kapcsolódó
rutinkönyvtárak.
A világon jelenleg számtalan olyan eszköz van, amely
párhuzamosan futó programok írására
használható - kezdve az I/O egységek alacsonyszintû
programozásától, az egyes operációs
rendszerek által biztosított megoldásokon és az itt
bemutatandó eszközökön keresztül a grafikus
felületû CASE eszközökig - de ezekbôl csak egy
réteg kerül bemutatásra.
Az elsô fejezet ezen a széles palettán helyezi el a
késôbb részletesen ismertetésre kerülô
eszközöket. Bemutatja a jelenleg elérhetô
párhuzamos hardware architektúrákat, absztrakt
elméleti osztályokat egy-egy konkrét
példával.
Ezen architektúrákat elfedô absztraktabb
lehetôségeket biztosító operációs
rendszereket. Itt szó esik az általuk nyújtott
alapvetô szolgáltatásokról is, amelyek
sokféleségük miatt nem terjedtek el széles
körben, vagy nem használhatóak kényelmesen
párhuzamos programok írására. E fölött
helyezkednek el a programozási nyelvek és a
rutinkönyvtárak, amelyekrôl a dolgozat fô
témájául szolgálnak. Ezeknél magasabb
absztrakciós szintet nyújtó eszközökrõl
példák hiánya miatt nem esik szó.
Az ezt követõ fejezetben az eszközök ismertetése
elõtt egy egységes osztályozási rendszer, illetve
összehasonlítható tulajdonságok halmaza van
definiálva, az eszközök elemzése végett. A
fejezet hátramaradó részében kerülnek
bemutatásra részletesebben ezek: rövid
áttekintés a történetükrôl, a
részletes leírás a lehetôségekrôl,
egy-két példaprogrammal mutatva be a konkrét
használatot.
- Bevezetés
- Tartalomjegyzék
- Ábrajegyzék
- Áttekintés
- Párhuzamos modellek, osztályozási szempontok
- Hardware
- SISD (Single Instruction Single Data)
- SIMD (Single Instruction Multiple Data)
- MISD (Multiple Instruction Single Data)
- MIMD (Multiple Instruction Multiple Data)
- SMP (Symmetric multiprocessing)
- MPP (Massively parallel processing)
- SPP (Scalable parallel processing)
- Operációs rendszerek lehetôségei
- Nyelvek, eszközök
- Egyéb lehetôségek
- Nyelvek, eszközök
- Osztályozási szempontok, jellemzôk
- Feladatok osztályozása
- Modellek, eszközök osztályai
- Párhuzamosság típusa
- Kommunikációs eszközök
- Szinkronizációs eszközök
- Jellemzôk
- Példák
- Mandelbrot halmaz számítása
- Termelõ-fogyasztó probléma
- MPI
- Bevezetõ az eszközrõl
- Történet
- Áttekintés
- Implementációk
- Felhasználói felület
- Kezdet és vég
- Pont-pont közötti kommunikáció
- Üzenetekben lévô típusok megadása
- Kollektív kommunikáció
- Csoportok, környezetek kezelése
- Folyamatok topológiába rendezése
- Néhány kiegészítô rutin a program környezetéhez
- Segítség a teszteléshez
- Példák
- Mandelbrot halmaz számítása
- Termelõ-fogyasztó probléma
- Összefoglalás
- PVM
- Bevezetõ az eszközrõl
- Felhasználói felület
- Folyamat vezérlés
- Információk
- Rendszer dinamikus változtatása
- Signal küldés
- Paraméterek beállítása
- Üzenetküldés
- Folyamatok csoportosítása
- Példák
- Mandelbrot halmaz számítása
- Termelõ-fogyasztó probléma
- Összefoglalás
- CC++
- Bevezetõ az eszközrõl
- Felhasználói felület
- Konkurencia
- Atomicitás
- Szinkronizáció
- Globális mutatók
- Virtuális processzorok
- Adatfolyam a kommunikációra
- Példák
- Mandelbrot halmaz számítása
- Termelõ-fogyasztó probléma
- Összefoglalás
- Ada 95
- Bevezetõ az eszközrõl
- Felhasználói felület
- Taszkok
- select utasítás
- Osztott adattípus
- Osztott változók
- Valós idejû rendszerek
- Osztott rendszerek
- Példák
- Mandelbrot halmaz számítása
- Termelõ-fogyasztó probléma
- Összefoglalás
- HPF
- Bevezetõ az eszközrõl
- Áttekintés a nyelvi változatokról
- Egy bevezetõ példa
- Programok szerkezete
- Felhasználói felület
- Tömb mûveletek
- Tömb operátorok
- Adatok elosztása
- Explicit párhuzamosság
- Egyebek
- Példák
- Mandelbrot halmaz számítása
- Termelõ-fogyasztó probléma
- Összefoglalás
- Az eddigiek értékelése
- Grafikus segédeszközök párhuzamos programok készítéséhez
- Háttér
- Tervezési módszer
- Nyelvek, eszközök
- Vizsgáló eszközök
- Grafikus eszközök
- Objektum orientált tervezés
- Statikus modell tervezése
- Statikus kapcsolatok
- Öröklõdés
- Attribútumok, mûveletek
- Dinamikus modell tervezése
- Párhuzamosítás
- Virtuális processzorok
- Fizikai processzorok
- Vizsgálatok
- Nyomkövetés
- Programkód nyomkövetése
- Kommunikáció nyomkövetése
- Részletek tesztelése
- Hatékonyság vizsgálata
- Lokalizált hatékonyság
- Teljes program hatékonysága
- Az eszköz lehetõségei
- Termelô - fogyasztó probléma
- Az ötlet
- Az alapok
- Átalakítás
- Új osztályok
- A megoldás
- Irodalomjegyzék
- Flynn osztályozása
- SMP számítógép
- MPP számítógép
- SPP számítógép
- Feladat szétbontása
- Virtuális processzorok
- Mandelbrot halmaz
- Termelõ-fogyasztó probléma
- Adatok lemásolása
- Adatok szétszórása és összegyûjtése
- Csoportok és környezetek
- Függõségi viszonyok sync változókkal
- Távoli eljáráshívás CC++-ban
- Adatpárhuzamos program elosztása
- CSHIFT(X, 2, -1)
- CSHIFT(X, -1)
- Tömbök elosztása HPF-ben
- Banki pénzkiadó rendszer alapja
- Statikus osztálykapcsolatok
- Öröklõdési kapcsolatok
- Objektumok dinamikus kapcsolata
- Virtuális processzorok
- Elosztási minták
- 2 dimenziós hálóban processzorok
- Pillanatnyi kommunikációk
- Kommunikációk az idõ függvényében
- Processzorok aktivitása
P�rhuzamos Programoz�si Eszközök,
Frohner Ákos