Párhuzamos számítástechnika
Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt hozzászólók, és jelentősen eltérhet a 2014. október 5-én felülvizsgált
verziótól ; az ellenőrzések 12 szerkesztést igényelnek .
A párhuzamos számítástechnika a számítógépes számítástechnika megszervezésének egyik módja , amelyben a programokat egymással párhuzamosan (egyidejűleg) működő számítási folyamatok halmazaként fejlesztik. A kifejezés magában foglalja a programozás párhuzamosságának minden kérdését , valamint a hatékony hardvermegvalósítások létrehozását . A párhuzamos számítás elmélete az alkalmazott algoritmuselmélet egy része [1] .
A párhuzamos számítások megvalósításának számos módja van. Például minden számítási folyamat megvalósítható operációs rendszer folyamataként , vagy a számítási folyamatok végrehajtási szálak készletei lehetnek egyetlen operációs rendszer folyamaton belül. A párhuzamos programok fizikailag végrehajthatók szekvenciálisan egyetlen processzoron - felváltva az egyes számítási folyamatok végrehajtási lépéseit, vagy párhuzamosan - egy vagy több ( a közelben található vagy számítógépes hálózatban elosztott ) processzort hozzárendelve az egyes számítási folyamatokhoz.
A párhuzamos programok tervezésének fő nehézsége a különböző számítási folyamatok közötti interakciók helyes sorrendjének biztosítása, valamint a folyamatok között megosztott erőforrások összehangolása.
A párhuzamos kommunikáció szinkronizálásának módjai
Egyes párhuzamos programozási rendszerekben az adatok komponensek közötti továbbítása rejtve van a programozó elől (például az ígéret -mechanizmus használatával ), míg másokban ezt kifejezetten meg kell adni. Az explicit interakciók két típusra oszthatók:
- Interakció megosztott memórián keresztül : egy többprocesszoros rendszer minden processzorán elindul egy végrehajtási szál , amely egy folyamathoz tartozik. A szálak egy megosztott memóriaterületen keresztül cserélnek adatokat egy adott folyamathoz [2] . A szálak száma megfelel a processzorok számának. A szálak vagy a nyelv segítségével jönnek létre (például Java vagy C# , C++ ( C++11 -től kezdve ), C ( C11 -től kezdődően )), vagy kifejezetten könyvtárak használatával (például C/C++- ban PThreads használatával ), vagy deklaratív módon (például az OpenMP könyvtár használatával), vagy automatikusan beépített fordítóeszközökkel (például High Performance Fortran ). Ez a fajta párhuzamos programozás általában valamilyen vezérlési rögzítést igényel ( mutexek , szemaforok , monitorok ) a szálak egymás közötti koordinálásához.
- Kommunikáció üzenettovábbításon keresztül: Egy többprocesszoros rendszer minden processzorán egyszálú folyamat fut, és üzenetek segítségével kommunikál más processzorokon futó folyamatokkal. A folyamatok kifejezetten az operációs rendszer megfelelő funkciójának meghívásával jönnek létre, az üzenetküldés pedig egy könyvtár (például MPI -protokoll implementációja ), vagy nyelvi eszközök (például High Performance Fortran , Erlang vagy occam ) segítségével. Az üzenetek cseréje történhet aszinkron módon, vagy randevúzási módszerrel, amelyben a feladó blokkolva van az üzenet kézbesítéséig. Az aszinkron üzenettovábbítás lehet megbízható (garantált kézbesítéssel) vagy megbízhatatlan [3] .
Az üzenetküldő alapú párhuzamos rendszerek gyakran könnyebben érthetők, mint a megosztott memóriás rendszerek, és általában a párhuzamos programozás kiváló módszerének tekintik. Számos matematikai elmélet létezik az üzenettovábbítási rendszerek tanulmányozására és elemzésére, beleértve a szereplőmodellt és a különféle folyamatszámításokat . Az üzenetküldés hatékonyan megvalósítható szimmetrikus többprocesszorokon megosztott koherens memóriával és anélkül is.
Az elosztott memória párhuzamossága és az üzenettovábbítási párhuzamosság eltérő teljesítményjellemzőkkel rendelkezik. Általában (de nem mindig) a folyamatmemória és a feladatváltási idő többletterhelése alacsonyabb az üzenettovábbítással rendelkező rendszerekben, de maga az üzenettovábbítás több többletterhelést jelent, mint az eljáráshívások. Ezeket a különbségeket gyakran felülírják a teljesítményt befolyásoló egyéb tényezők.
- Hibrid módszer : Elosztott memóriás többprocesszoros rendszereken ( DM-MIMD ), ahol a rendszer minden csomópontja egy megosztott memóriás többprocesszor ( SM-MIMD ), hibrid programozási módszer alkalmazható [4] . A rendszer minden csomópontján elindul egy többszálú folyamat, amely elosztja a szálakat a csomópont processzorai között. A csomóponton lévő szálak közötti adatcsere megosztott memórián, a csomópontok közötti adatcsere pedig üzenettovábbításon keresztül történik. Ebben az esetben a folyamatok számát a csomópontok száma, a szálak számát pedig az egyes csomópontokon lévő processzorok száma határozza meg. A hibrid programozási módszer bonyolultabb (a párhuzamos program speciális újraírását igényli), de a leghatékonyabb a többprocesszoros rendszer egyes csomópontjainak hardver erőforrásainak felhasználásában.
Természetesen egy ilyen rendszerben lehetőség van arra is, hogy kizárólag az üzenetátadási módot használjuk, vagyis minden csomópont minden processzorán külön folyamatot futtassunk. Ebben az esetben a folyamatok (és szálak) száma megegyezik az összes csomóponton lévő processzorok számával. Ez a módszer egyszerűbb (egy párhuzamos programban csak a folyamatok számát kell növelni), de kevésbé hatékony, mivel ugyanazon csomópont processzorai úgy cserélnek üzeneteket egymással, mintha különböző gépeken lennének
[5] .
Tipikus feladatok, amelyek lehetővé teszik a párhuzamos számítást
- leképezés - ugyanazon függvény végrehajtása a bemeneti adattömb minden elemén, egyenlő teljesítményű számítási eredmények tömbjének megszerzése
- redukció - ugyanazt a funkciót hajtja végre, hogy a bemenet minden elemének hozzájárulását hozzáadja egy végső értékhez
Concurrency Software Tools
Lásd még
Jegyzetek
- ↑ Mihalevics, 1989 , p. egy.
- ↑ RedBook, 1999 , p. egy.
- ↑ RedBook, 1999 , p. 2.
- ↑ RedBook, 1999 , p. 5.
- ↑ RedBook, 1999 , p. négy.
Irodalom
Linkek
Szótárak és enciklopédiák |
|
---|