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