Párhuzamos programozás a matlab környezetben
Jelenleg a MATLAB nyelv a műszaki számítástechnika fő nyelve. Körülbelül egymillió felhasználó van a világon, amelyek közül sok előnyös a széles körben elérhető többmagos processzorok és a többcsomópontos számítástechnikai klaszterek által kínált nagyobb teljesítmény mellett. A MATLAB környezet ideális párhuzamos számítások tanulmányozására is, lehetővé téve a felhasználó számára, hogy a párhuzamos algoritmusokra összpontosítson, nem pedig a végrehajtás részleteire. A MATLAB nyelv tömörségének köszönhetően számos konkrét példát mutathat be a párhuzamos programozás alapfogalmainak illusztrálására.
Ez a könyv a nagy teljesítményű tudományos számítástechnika számítási módszereinek és szempontjainak gyakorlati megvalósítására irányul, különös tekintettel az igényes szoftverekre, számítástechnikai környezetekre és számítási eszközökre. Ez magában foglalja a szoftvertechnológiák, például az aktuális állapot, alkalmazások és algoritmusok kifejlesztését, matematikai problémák megoldására szolgáló szoftvereket, szoftvereszközöket, nyelveket és fordítóprogramokat, számítástechnikai környezeteket és vizualizálást.
A könyv célközönsége bárkinek tartozik, aki szembeállítja a MATLAB sorozat párhuzamos környezethez való alkalmazkodásának feladatát. Ezenkívül az osztálytermi fő tankönyvként is használható a párhuzamos számítástechnika számára, illetve a numerikus módszerek vagy az informatika algoritmusainak tanulmányozásához szükséges kiegészítéseként.
Alapelvek
Alapfogalmak: rögzítési rendszer és interfészek
Ez a fejezet a párhuzamos algoritmusok leírására szolgáló matematikai jelölés rendszert mutat be, és megvizsgálja a párhuzamos függvények megfelelő sorát a pMATLAB könyvtárból. Megmutatjuk a leképezéseken alapuló párhuzamos programozás módját, és bemutatjuk a párhuzamos rögzítés és a funkciók adatainak használatát.
Ebben a könyvben a párhuzamos programozás kérdését tekintjük, amely a párhuzamos algoritmusok tömör leírását igényli. E célból a matematikai nyelvet használják. Ebben a fejezetben rövid információkat közlünk a tankönyvben található párhuzamos algoritmusok leírásához használt alapvető matematikai jelölésről. A felvételi rendszer (ha szükséges) kiegészül a könyv írásával (a felvételi rendszerre vonatkozó további információkért lásd a Függeléket).
Ezeknek az algoritmusoknak a megvalósításához a MATLAB párhuzamos függvényeket igényel, amelyek párhuzamos algoritmusoknak felelnek meg. Bár feltételezzük, hogy az olvasó ismeri a MATLAB csomagot, azonban új funkciókat használ a párhuzamos programok MATLAB-ra történő írásához. A könyv a pMATLAB könyvtár felület korlátozott részhalmazát figyelembe véve készült. Ez a fejezet röviden ismerteti néhány, a párhuzamos algoritmus írásakor használt kulcsfunkciókat. Ezek a funkciók (ha szükséges) a következő fejezetekben bővíthetők.
Algoritmus rögzítési rendszer
A számok az alapegységek, amelyeket az ebben a könyvben bemutatott algoritmusok kezelnek. Számok lehetnek különböző típusok: logikai, egész, valós, komplex ...
Bevezetés a pMATLAB-ba
Üdvözöljük a MATLAB párhuzamos programozásában. Ennek a fejezetnek a megismerése során az olvasó láthatja a MATLAB több párhuzamos programjának teljesítményét. Ebben a fejezetben több program rövid összefoglalását adják meg, amely ötletet ad a párhuzamos programok készítésének és végrehajtásának alapelveiről. Minden példa önálló, és másoktól függetlenül tekinthető. A következő részek azonos szerkezettel rendelkeznek. Minden szakasz megnyílik az "Első lépések" alfejezetből, amelyben a program különböző processzorokon fut, miközben megvizsgálja az eredményt és rögzíti a végrehajtási időt. A második alfejezet bemutatja a probléma matematikai aspektusát, valamint az alapvető párhuzamos megvalósítást. A harmadik alfejezet leírja, hogyan íródott a párhuzamos program a MATLAB-on. A negyedik alfejezet egy program hibakeresési folyamatát tárgyalja. A szakasz az idő jellemzőivel és az általános termelékenység becslésével zárul. E fejezet végén a programok munkájának megvitatása és a teljesítmények teljesítése.
Interakció az elosztott rétegekkel
Példa egy többfázisú bemeneti / kimeneti programra, amely bemutatja, hogyan fejleszthet ilyen programokat elosztott tömbök segítségével. A program egy többcsatornás érzékelőből szimulált adatokat hoz létre, majd feldolgozza ezeket az adatokat. Ez a példa azt is mutatja, hogyan kell dolgozni az elosztott tömbökkel a hibakeresési és tesztelési folyamat során. Különösen azt vizsgáljuk, hogy milyen típusú információk származhatnak elosztott tömbökről a programfuttatás során.
Ebben a fejezetben egy többlépcsős I / O-alkalmazást vizsgálnak. Ez az előző fejezetben vázolt fogalmakra épül, azzal a céllal, hogy összetettebb programot hozzanak létre elosztott tömbök felhasználásával. A fő feladat az, hogy a programot négy lépéses hibakeresési folyamaton futtassa, és interaktívan vizsgálja meg az elosztott tömböket, hogy megtudja, mi látható az egyes lépésekben. Ez a példa illusztrálja az elosztott tömbökkel való interakció módját, valamint a többfázisú párhuzamos programokhoz kapcsolódó kérdéseket is.
A megnövekedett komplexitás technikái
Párhuzamos programozási modellek
A nem triviális tömeges párhuzamos program példáján (Blutimage) bemutatjuk a tervezés, a kódolás, a hibakeresés és a párhuzamos programozással kapcsolatos tesztelés kulcsfontosságú kompromisszumait. A Blutusage programot figyelembe véve számos kérdés merül fel a fenti szakaszok végrehajtásával kapcsolatban. Ezenkívül a fejezet rövid bevezetést nyújt a párhuzamos programozás alapmodelleihez: elosztott tömbök, üzenetküldés és a menedzser / alárendelt rendszer.
Ez a fejezet célja, hogy az olvasó tágabb képet kapjon a párhuzamos programozással kapcsolatos tervezési, kódolási, hibakeresési és kódvizsgálati kompromisszumokról. A fejezet fő feladata az ezen elvek alkalmazásával kapcsolatos problémák széles körének azonosítása. Ezenkívül a párhuzamos programozás alapmodelleinek rövid bemutatása is bemutatásra kerül: az elosztott tömbök szemantikája, az üzenetek cseréje és a menedzser / alárendelt rendszer. Az ebben a fejezetben tárgyalt néhány alapelv a következő szempontokat foglalja magában.
Tervezés: a párhuzamosság szükségességének felmérése, párhuzamos programok osztályozása, párhuzamos programozási modellek, gépmodellek.
Kódolás: a párhuzamos programozás különböző stílusai, a kód hatása a teljesítményre és méretezhetőségre.
Debug: a párhuzamos hibakeresési folyamat jellemzői, minden lépésben észlelhető hibák.
Tesztelés: a teljesítmény mérése és előrejelzése (a számítógép beállításaitól függően).
A fejezet fő példájaként használt program bonyolultabb, mint a 2. fejezetben bemutatott programok. A párhuzamos programozás különböző típusaiban rejlő korlátozások egy részét kívánja meghatározni.
Tervezés: a párhuzamosság szükségességének felmérése
A párhuzamos programozás egyetlen legfontosabb megoldása a párhuzamos számítás szükségességének értékelése. A párhuzamos számítógép használatának két és két oka van.
- Idő: egyetlen processzoron végzett számítás túl sok időt vesz igénybe.
- Memória: Számítás elvégzéséhez több memória szükséges, mint egy processzor.
Nagyon gyakran van két ok. A nagy mennyiségű memóriát igénylő programok végrehajtása sok időt vesz igénybe. Azonban hogyan határozza meg a MATLAB programozó, ha ezek a feltételek léteznek? Az eltöltött idő mennyisége nagyon szubjektív. Általában ez azt jelenti, hogy a számítás órákat vagy napokat vesz igénybe, de néha tíz perc hosszúnak tekinthető. A "memória" kevésbé szubjektív fogalom. A számítógép memóriájában egy bizonyos összeget, és ha a program megpróbálja használni a memória több, mint a jelenlegi, ebben az esetben sem kap egy hiba „Out of Memory”, a program kezdődik, hogy jelentősen lassítja a munkát, mert az operációs rendszer megpróbálja használni a helyi adathordozóra, mint a memória (ez a jelenséget "csere" -nek nevezik). Szerencsére MATLAB van néhány beépített eszközök, amelyek segítenek, hogy meghatározza nemcsak az időt és a memória szükséges a program futtatásához, hanem annak bizonyos részeit, amelyek megkövetelik a legnagyobb mennyiségű időt és memóriát. Ezeknek az eszközöknek a funkcióit egy egyszerű képfeldolgozó programon (Blurimage) el lehet kezdeni.
Komplex programok fejlesztése elosztott tömbökkel
Az elosztott tömbök hatékony használatához meg kell értened a megvalósításhoz használt alaptechnológiát. Az elosztott MATLAB tömböket többnyire a könyvtárban hajtják végre, az objektum-orientált programozás operátorainak túlterhelésének módszereivel. A könyvtár legfontosabb adatszerkezetét egy elosztott numerikus tömb képviseli, amelynek eloszlását több processzoron keresztül a helyrajzi térkép struktúrája határozza meg. Az elosztott tömbök közötti kommunikációs műveletek az absztrakció alacsonyabb szintjén vannak, ami nem látható a felhasználó számára. A térképpel támogatott adatelosztás típusai rendszerint az N-dimenziós blokk-ciklusos eloszlások osztályába tartoznak, átfedéssel. A blokkeloszlást leggyakrabban használják. A ciklikus elosztások gyakran hasznosak a terheléskiegyenlítés problémáinak megoldásában. Az elosztott tömb-könyvtár egy pont-pont üzenet-könyvtáron alapul, például az üzenetátviteli interfészen (MPI). Az üzenetkönyvtár meghatározza az elosztott tömbkönyvtárban a kommunikáció teljesítményének alapkorlátját.
Teljesítménymutatók és szoftverarchitektúra
A teljesítménymutatók felbecsülhetetlen értékű eszközök a párhuzamos programok megvalósításához, amelyek rendkívül hatékonyak a szoftverköltségek minimalizálása érdekében. Ez a fejezet bemutatja néhány teljesítménymutatót, és bemutatja, hogyan kell őket felhasználni ahhoz, hogy megfelelő döntéseket hozhasson az alkalmazás végrehajtásáról. A mutatók bemutatása során a párhuzamos számítások standard rendszerét írják le, és a teljesítménynek a párhuzamos programozás különböző modelljeire való hatását tekintjük át.
A hatékony párhuzamos MATLAB programot nehéz megírni, mert számos további tényezőt kell figyelembe venni, a program alapvető funkcionális pontossága mellett. Ezek a tényezők az alábbiakban vannak felsorolva.
- Teljesítmény: latencia és áteresztőképesség.
- Hatékonyság: feldolgozás, sávszélesség és memória.
- A szoftver költségek: a kód mérete és hordozhatósága.
- Hardver költségek: méret és teljesítmény.
A teljesítménymutatók fontos eszköz, amely lehetővé teszi a párhuzamos MATLAB programok fejlesztőinek, hogy tájékozottan választhassák meg a programozási és végrehajtási módszert.
Ez a fejezet olyan teljesítménymutatókra és szoftverarchitektúrákra összpontosít, amelyek olyan párhuzamos alkalmazások megvalósítására szolgálnak, amelyek minimalizálják a szoftverköltségeket, miközben a lehető legtöbb egyéb követelményt kielégítik. Különösen olyan különféle szoftver-architektúrákat vizsgálunk, amelyek párhuzamos számításokat alkalmazhatnak a nagy teljesítmény elérése érdekében. E tekintetben az alábbiak a domináns tényezők a párhuzamos szoftverek architektúrájához.