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.

Bevezetés

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.


Tartalomjegyzék

  1. Bevezetés
  2. Tartalomjegyzék
  3. Ábrajegyzék
  4. Áttekintés
    1. Párhuzamos modellek, osztályozási szempontok
    2. Hardware
      1. SISD (Single Instruction Single Data)
      2. SIMD (Single Instruction Multiple Data)
      3. MISD (Multiple Instruction Single Data)
      4. MIMD (Multiple Instruction Multiple Data)
        1. SMP (Symmetric multiprocessing)
        2. MPP (Massively parallel processing)
        3. SPP (Scalable parallel processing)
    3. Operációs rendszerek lehetôségei
    4. Nyelvek, eszközök
    5. Egyéb lehetôségek
  5. Nyelvek, eszközök
    1. Osztályozási szempontok, jellemzôk
      1. Feladatok osztályozása
      2. Modellek, eszközök osztályai
        1. Párhuzamosság típusa
        2. Kommunikációs eszközök
        3. Szinkronizációs eszközök
      3. Jellemzôk
      4. Példák
        1. Mandelbrot halmaz számítása
        2. Termelõ-fogyasztó probléma
    2. MPI
      1. Bevezetõ az eszközrõl
        1. Történet
        2. Áttekintés
        3. Implementációk
      2. Felhasználói felület
        1. Kezdet és vég
        2. Pont-pont közötti kommunikáció
        3. Üzenetekben lévô típusok megadása
        4. Kollektív kommunikáció
        5. Csoportok, környezetek kezelése
        6. Folyamatok topológiába rendezése
        7. Néhány kiegészítô rutin a program környezetéhez
        8. Segítség a teszteléshez
      3. Példák
        1. Mandelbrot halmaz számítása
        2. Termelõ-fogyasztó probléma
      4. Összefoglalás
    3. PVM
      1. Bevezetõ az eszközrõl
      2. Felhasználói felület
        1. Folyamat vezérlés
        2. Információk
        3. Rendszer dinamikus változtatása
        4. Signal küldés
        5. Paraméterek beállítása
        6. Üzenetküldés
        7. Folyamatok csoportosítása
      3. Példák
        1. Mandelbrot halmaz számítása
        2. Termelõ-fogyasztó probléma
      4. Összefoglalás
    4. CC++
      1. Bevezetõ az eszközrõl
      2. Felhasználói felület
        1. Konkurencia
        2. Atomicitás
        3. Szinkronizáció
        4. Globális mutatók
        5. Virtuális processzorok
        6. Adatfolyam a kommunikációra
      3. Példák
        1. Mandelbrot halmaz számítása
        2. Termelõ-fogyasztó probléma
      4. Összefoglalás
    5. Ada 95
      1. Bevezetõ az eszközrõl
      2. Felhasználói felület
        1. Taszkok
        2. select utasítás
        3. Osztott adattípus
        4. Osztott változók
        5. Valós idejû rendszerek
        6. Osztott rendszerek
      3. Példák
        1. Mandelbrot halmaz számítása
        2. Termelõ-fogyasztó probléma
      4. Összefoglalás
    6. HPF
      1. Bevezetõ az eszközrõl
        1. Áttekintés a nyelvi változatokról
        2. Egy bevezetõ példa
        3. Programok szerkezete
      2. Felhasználói felület
        1. Tömb mûveletek
        2. Tömb operátorok
        3. Adatok elosztása
        4. Explicit párhuzamosság
        5. Egyebek
      3. Példák
        1. Mandelbrot halmaz számítása
        2. Termelõ-fogyasztó probléma
      4. Összefoglalás
    7. Az eddigiek értékelése
  6. Grafikus segédeszközök párhuzamos programok készítéséhez
    1. Háttér
      1. Tervezési módszer
      2. Nyelvek, eszközök
      3. Vizsgáló eszközök
    2. Grafikus eszközök
      1. Objektum orientált tervezés
        1. Statikus modell tervezése
          1. Statikus kapcsolatok
          2. Öröklõdés
          3. Attribútumok, mûveletek
        2. Dinamikus modell tervezése
      2. Párhuzamosítás
        1. Virtuális processzorok
        2. Fizikai processzorok
    3. Vizsgálatok
      1. Nyomkövetés
        1. Programkód nyomkövetése
        2. Kommunikáció nyomkövetése
      2. Részletek tesztelése
      3. Hatékonyság vizsgálata
        1. Lokalizált hatékonyság
        2. Teljes program hatékonysága
    4. Az eszköz lehetõségei
  7. Termelô - fogyasztó probléma
    1. Az ötlet
    2. Az alapok
    3. Átalakítás
    4. Új osztályok
    5. A megoldás
  8. Irodalomjegyzék


Ábrajegyzék

  1. Flynn osztályozása

  2. SMP számítógép

  3. MPP számítógép

  4. SPP számítógép

  5. Feladat szétbontása

  6. Virtuális processzorok

  7. Mandelbrot halmaz

  8. Termelõ-fogyasztó probléma

  9. Adatok lemásolása

  10. Adatok szétszórása és összegyûjtése

  11. Csoportok és környezetek

  12. Függõségi viszonyok sync változókkal

  13. Távoli eljáráshívás CC++-ban

  14. Adatpárhuzamos program elosztása

  15. CSHIFT(X, 2, -1)

  16. CSHIFT(X, -1)

  17. Tömbök elosztása HPF-ben

  18. Banki pénzkiadó rendszer alapja

  19. Statikus osztálykapcsolatok

  20. Öröklõdési kapcsolatok

  21. Objektumok dinamikus kapcsolata

  22. Virtuális processzorok

  23. Elosztási minták

  24. 2 dimenziós hálóban processzorok

  25. Pillanatnyi kommunikációk

  26. Kommunikációk az idõ függvényében

  27. Processzorok aktivitása



P�rhuzamos Programoz�si Eszközök, Frohner Ákos
Hosted by www.Geocities.ws

1