Párhuzamos programozás klaszter környezetben

A különálló számítógépek összekapcsolásával létrejövő nagyteljesítményű rendszerek szuperszámítógépként való felhasználásának gondolata már a 60-as években felmerült, amikor az IBM mainframe rendszerek összekapcsolásával próbált költséghatékonyabb párhuzamos teljesítményre szert tenni. A klaszterek kialakításának más irányból érkező motivációja az az ötlet volt, hogy az egyéb célokra használt, hálózatokba kapcsolt számítógépek kihasználatlan számítási kapacitását hasznosítsák.

A klaszter rendszerek a 90-es évektől kezdtek igazi konkurenciát jelenteni a többprocesszoros, párhuzamos célrendszerek számára. Ez elsősorban a mikroprocesszorok, a hálózati technológiák és az elosztott alkalmazások fejlesztését segítő környezetek jelentős mértékű fejlődésének köszönhető. A klaszteres megoldások nagy előnye, hogy a szabványos komponensek használata következtében a nagy számítási teljesítmény kis hardver költségek mellett biztosítható. A számítógép szintű moduláris felépítés biztosítja a rendszer könnyű bővítését (skálázhatóság) és az átkonfigurálhatóságot, ráadásul az egymástól független számítógépekben a hibaterjedés is jól kontrollálható, megkönnyítve a magas rendelkezésreállású rendszerek kialakítását.

Mi a klaszter?

A klaszter architektúra célok és felépítés szempontjából valahol az elosztott memóriát használó DM-MIMD szuperszámítógép architektúrák és a számítási teljesítményt hangsúlyozó elosztott rendszerek között helyezkedik el. A klaszterek olyan nagyteljesítményű párhuzamos számítási rendszerek, melyek a következő tulajdonságokkal rendelkeznek:

  • A klaszter teljes kiépítésű számítógépek (processzor, memória, I/O egységek) összekapcsolásával jön létre.
  • A klaszter csomópontjai lazán csatoltak, és a csomópontok összekapcsolása tipikusan helyi hálózat segítségével történik.
  • A klaszter egységes, egyesített számítási erőforrásként használható.

Klaszter architektúrák

A különféle klaszterek hardver felépítés szempontjából jelentősen eltérhetnek egymástól, de a klaszter csomópontok összekötése tipikusan valamilyen I/O szintű kapcsolaton keresztül valósul meg. Az I/O csatolt rendszerek együttműködése, a 1. ábrán látható módon, megszervezhető mind osztott erőforrás, mind üzenet alapú kommunikáció segítségével. A közös erőforrás (tipikusan diszk alrendszer) használata szűk keresztmetszetet jelent, ezért ez a megoldás csak a kicsi (maximum négy csomópont) vagy direkt a hibatűrés céljából létrehozott rendszerekben (például melegtartalék képzés) alkalmazható. Ilyen elven szerveződnek az adatbáziskezelő rendszerek klaszteres változatai is, ahol a tranzakciós naplókat a perzisztencia kezelés miatt már úgyis eleve a háttértárra kell írni.

Az üzenet alapú megoldással jóval nagyobb mértékű skálázhatóság érhető el. Ebben az esetben az I/O alrendszerek összekapcsolása valamilyen kommunikációs hálózaton keresztül valósul meg. Az összekapcsolható csomópontok számát csak a kommunikációs sávszélesség igény korlátozza, az Internetes route-olási megoldásokkal fizikailag számítógépek milliói is összekapcsolhatók.

Az önálló számítógépek halmaza attól még nem feltétlenül működik együtt, hogy a kapcsolat lehetősége fennáll közöttük: az egyszerű hardver kialakítás árát a szoftver oldalon kell megfizetnünk. A klaszter minden csomópontjában az operációs rendszer fölé egy speciális szoftverréteget kell elhelyezni, mely összefogja az elosztottan jelen lévő erőforrásokat (2. ábra).

 

Klaszterek programozása

Párhuzamos programozási modellek

A párhuzamosítással történő teljesítménynövelés érdekében biztosítani kell a sok feldolgozó egység a közös cél érdekében történő együttműködését. A különféle párhuzamos architektúrákban a csomópontok összekapcsolásának módja lényegesen eltér, ezért a párhuzamos programozás különféle módszerei architektúránként eltérő hatékonyságúak. Hat főbb párhuzamos programozási modell illetve eszköz létezik:

  • párhuzamos kódot generáló fordítók,
  • párhuzamos nyelvek,
  • üzenetkezelő rendszerek,
  • virtuális közös memória modell alapú rendszerek,
  • objektum orientált párhuzamos programozás,
  • előre elkészített program vázak (programming skeletons).

Párhuzamos programozási paradigmák

Széles körben elismert tény, hogy a párhuzamos programok szerkezetük alapján csoportosíthatók, és besorolhatók néhány paradigma osztályba. Minden egyes paradigma egy-egy algoritmus osztályt képvisel, melyben a vezérlő szerkezetek lényegében azonos sémát követnek. A következő öt paradigmát szokás megkülönböztetni:

  • mester-szolga,
  • adattartomány dekompozíció,
  • futószalag elv,
  • „oszd meg és uralkodj”,
  • spekulatív párhuzamosság.

 

Kapcsolódó anyagok