České vysoké učení technické v Praze Fakulta stavební Katedra mapování a kartografie Využití paralelních výpočtů v geodézii DOKTORSKÁ DISERTAČNÍ PRÁCE Ing. Martin Jeřábek Praha, září 2001 Doktorský studijní obor: Geodézie a kartografie Školitel: Doc. Ing. Aleš Čepek, CSc.
1 Obsah 1 OBSAH. 1 2 PŘEDMLUVA 5 3 ÚVOD 7 4 PARALELNÍ POČÍTAČE A PARALELNÍ VÝPOČTY. 10 4.1 Evoluce 10 4.2 Konstrukce.. 12 4.2.1 Flynnova taxonomie 12 4.2.1.1 SISD. 13 John von Neumann. 13 4.2.1.2 SIMD 14 4.2.1.3 MISD 14 4.2.1.4 MIMD. 15 4.2.2 Komunikace v paralelním počítači.. 16 4.2.2.1 Směrování.. 16 4.2.3 Paměť paralelního počítače 17 4.2.3.1 SMPC.. 18 4.2.3.2 DMPC. 18 4.2.3.3 VSM. 19 4.2.3.4 Přístup do paměti u SMPC 20 4.2.3.5 Přístup do paměti u DMPC.. 21 4.2.4 Propojovací sítě. 21 4.2.4.1 Použité pojmy teorie grafů 22 4.2.4.2 Požadavky na propojovací síť. 22 4.2.4.3 Typy propojovacích sítí.. 23 Hyperkrychle. 23 Hyperkubické sítě 24 N-rozměrné mřížky 25 de Bruinovy sítě 26 Stromové grafy. 27 4.2.5 Taxonomie paralelních počítačů.. 27 4.2.5.1 Současnost a trendy.. 27 4.2.5.2 Symmetric Multiprocessors (SMP).. 27 4.2.5.3 Massively Parallel Processors (MPP).. 28 4.2.5.4 Clustery.. 28 Beowulf 28 MOSIX. 29 4.2.5.5 Distribuované paralelní počítače 30 Výhody heterogenního distribuovaného výpočetního systému 30 Nevýhody heterogenního distribuovaného výpočetního systému.. 30 4.3 Paralelní algoritmy. 31 4.4 Růst výkonu paralelního systému.. 32 4.5 Amdahlův zákon.. 34 4.6 Paralelizace.. 35 4.6.1 Automatická paralelizace. 35 1
4.6.2 Ruční paralelizace 36 4.6.2.1 Paralelní programovací jazyky 36 4.6.2.2 Knihovny pro paralelní programování 36 4.6.3 Některé možné přístupy k paralelizaci.. 36 4.7 Oblasti využití paralelních systémů. 37 5 SYSTÉMY PRO PARALELNÍ VÝPOČTY 39 5.1 Parallel Virtual Machine 39 5.2 Paralelizace úloh využívajících PVM.. 39 5.2.1 Krátce z historie 40 5.2.2 Základní vlastnosti PVM. 40 5.2.3 Výhody PVM. 41 5.2.4 Platformy podporované PVM 42 5.2.5 Části PVM.. 43 5.2.6 Používané pojmy. 44 5.2.7 Rozhraní knihovny PVM. 44 5.2.7.1 Základní funkce. 45 5.2.7.2 Komunikace mezi procesy 47 5.2.7.3 Obsluha paralelního počítače.. 50 5.2.7.4 Odolnost proti výpadkům.. 51 5.2.7.5 Skupiny paralelních procesů 52 5.2.8 PVM konzole. 53 5.2.9 Konfigurace PVM pomocí hostfile. 54 5.2.10 XPVM. 56 5.3 Další balíky pro paralelní výpočty 57 5.3.1 Message Passing Interface.. 57 5.3.1.1 MPICH 57 5.3.2 P4. 58 5.3.3 Express.. 58 5.3.4 Linda.. 58 5.4 Stručné srovnání PVM a MPI. 59 5.5 ScaLAPACK.. 61 6 APLIKACE PARALELNÍHO ZPRACOVÁNÍ DAT62 6.1 Paralelní zpracování dat v geodézii a DPZ.. 62 6.1.1 Danish Center for Remote Sensing. 62 6.1.2 Univerzita v Adelaide 63 6.1.3 NASA Goddard Space Flight Center. 64 6.1.4 Clemson Regional Data Center. 64 6.2 Paralelní výpočty na naší fakultě.. 65 7 POUŽITÉ TECHNOLOGIE..66 7.1 Hardware. 66 7.1.1 SP2.. 66 7.1.2 Heterogenní síť počítačů.. 67 7.1.3 Homogenní síť počítačů 68 7.2 Software. 68 7.2.1 Linux.. 68 2
7.2.2 GaMaLib a gmatvec.. 70 7.3 Programovací jazyk 70 8 EXPERIMENTY. 72 8.1 Obrazová korelace.. 72 8.1.1 Teoretický nástin problému. 72 8.1.1.1 Binární korelátory.. 75 8.1.1.2 Smíšené korelátory 75 8.1.1.3 Víceúrovňové korelátory 75 8.1.2 Paralelní zpracování 77 8.1.3 Dosažené výsledky.. 79 8.2 Obrazové filtry.. 83 8.2.1 Teoretický nástin problému. 83 8.2.1.1 Detekce hran. 83 8.2.2 Použité obrazové filtry.. 85 8.2.2.1 Zvýraznění hran.. 85 Laplaceovský operátor 1.. 85 Laplaceovský operátor 2.. 85 8.2.2.2 Zaostření obrazu. 86 Sharpening operator 86 8.2.2.3 Detekce hran. 86 Robertsův operátor. 86 Sobelův operátor.. 87 Prewittův operátor.. 88 Lineární operátor. 89 Robinsonův operátor. 89 Kirschův operátor 90 8.2.3 Paralelní zpracování 90 8.2.4 Dosažené výsledky.. 91 8.2.5 Hodnocení 94 8.3 Paralelní transformace souřadnic. 94 8.3.1 Nástin problému 94 8.3.2 Paralelizace. 94 8.3.2.1 Varianta A - použití odkládacích souborů. 95 8.3.2.2 Varianta B - přenos výsledných dat po síti 99 8.3.3 Dosažené výsledky 101 8.3.3.1 Varianta A.. 102 8.3.3.2 Varianta B.. 113 8.3.4 Hodnocení. 122 8.3.4.1 Varianta A využití odkládacích souborů. 122 8.3.4.2 Varianta B - přenos dat po síti.. 122 8.3.5 Závěr 123 8.4 Řešení soustavy rovnic metodou LTS.. 123 8.4.1 Teorie.. 123 8.4.2 Nástin problému. 126 8.4.3 Metoda LTS. 126 8.4.3.1 Princip.. 126 8.4.3.2 Tvorba upravené soustavy rovnic 127 8.4.3.3 Řešení upravené soustavy rovnic 129 8.4.3.4 Výběr prvního vzorku a LTS iterace. 129 LTS způsob hledání vzorku. 130 8.4.3.5 Průběh dalšího výpočtu 131 8.4.3.6 Ukončení výpočtu 132 8.4.3.7 Klady a zápory. 132 8.4.4 Paralelní řešení 133 3
8.4.4.1 Přístup k paralelnímu řešení.. 133 Úpravy klasického algoritmu použité při paralelním řešení 134 8.4.4.2 Použité objektové struktury.. 134 Permutace. 134 Core. 135 Storage.. 137 Databáze permutací. 137 TOP list. 137 Task worklist.. 137 8.4.4.3 Klasický výběr permutačních vektorů. 137 LTS přístup. 138 Náhodný přístup 138 8.4.4.4 Genetický výběr permutačních vektorů.. 138 Genetické křížení. 139 Genetická mutace. 140 8.4.4.5 Princip práce paralelního programu.. 142 Master program. 142 Slave proces 144 8.4.4.6 Podmínky pro ukončení výpočtu 145 8.4.4.7 Parametry paralelního programu. 145 Paralelní zpracování 145 Ukončení výpočtu 146 Průběh výpočtu. 146 Nastavení genetického algoritmu. 146 8.4.5 Testy 146 8.4.5.1 Data 147 8.4.5.2 Load balancing. 147 Zjištění teoretického výkonu.. 147 Alternativy.. 148 8.4.5.3 Testy výkonu. 149 8.4.5.4 Testy konvergence. 149 8.4.6 Dosažené výsledky a jejich hodnocení.. 152 8.4.6.1 Load balancing. 152 8.4.6.2 Výkon 153 8.4.6.3 Konvergence. 153 9 ZÁVĚR.156 10 LITERATURA160 11 INTERNETOVÉ ZDROJE162 12 SEZNAM TABULEK..165 13 SEZNAM OBRÁZKŮ.166 14 SEZNAM GRAFŮ 168 15 REJSTŘÍK..169 16 REJSTŘÍK POUŽITÝCH ZKRATEK A POJMŮ..172 17 SEZAM PŘÍLOH..178 4
2 Předmluva Předkládaná práce se zabývá problematikou paralelních počítačů a možnostmi využití paralelních výpočtů v geodetických vědních oborech, s ohledem na současný stupeň vývoje hardwaru a softwaru a cesty, kterými se tento vývoj ubírá. Vzhledem k rychlému rozvoji tohoto oboru a jeho rozsáhlosti nemohu v této práci (a ani to nebylo mým cílem) podat vyčerpávající obraz tohoto fenoménu. Spíše se snažím o přiblížení jeho možností s ohledem na výpočetně náročné úlohy řešené v geodézii. Ačkoliv se o počítače ve velké míře zajímám již od roku 1987, v počátcích mého studia pro mne (stejně jako pro většinu mých kolegů) paralelní počítače představovaly v podstatě velkou neznámou, o jejíž existenci jsem sice měl mlhavé tušení, ale jakékoliv podrobnější znalosti této problematiky byly zcela mimo rámec mé počítačové gramotnosti. Bohužel ani dnes nemá valná většina naší odborné veřejnosti o paralelních výpočtech žádné povědomí, a i proto je jejich současné využití v našem oboru podle mého názoru téměř nulové. Prvotním impulsem pro zaměření mého studia tímto směrem bylo absolvování semináře Paralelní systémy a algoritmy vedeného Doc. Ing. Tvrdíkem, CSc. na fakultě elektrotechnické ČVUT, na jehož existenci mě upozornil můj školitel Aleš Čepek. I přes můj počáteční znalostní handicap nejen v oblasti konstrukce počítačů oproti řádným studentům elektrotechnické fakulty, jsem byl po několika absolvovaných hodinách danou problematikou zcela pohlcen. Abych mohl pokračovat v rozvoji svých znalostí, bylo nutné nejprve nastudovat teoretické základy konstrukce počítačů z odborné literatury určené studentům inženýrského studia fakulty elektrotechnické. Byl jsem příjemně překvapen přístupem Doc. Tvrdíka k mé účasti na jeho seminářích, neboť podpořil můj zájem o tento obor a měl pochopení pro mé počáteční tápání v přednášené teorii. I v semestrální práci, která tvořila tečku za zmiňovaným seminářem, Doc. Tvrdík podporoval mou snahu o hledání aplikace paralelních výpočtů na úlohy řešené v geodézii. Tato zkušenost mě přesvědčila o tom, že směr, kterým jsem se ve svém studiu vydal, je správný. To vyústilo v mé další studium tohoto oboru a experimenty s paralelními výpočty. V době, kdy jsem se začal hlouběji zabývat paralelními počítači, u nás nebyly technické předpoklady pro mé experimenty právě na vysoké úrovni. Až komicky může v dnešní době působit skutečnost, že první platformou pro mé pokusy s paralelními výpočty byl jediný počítač s procesorem 80486 a 8 MB paměti. Tato neutěšitelná situace se však postupem času k mé velké spokojenosti zlepšila, a to především díky ochotě mých kolegů, kteří mi umožnili využívat jejich počítačů jako součást prvního skutečně paralelního počítače běžícího na naší katedře. Poté nabraly události rychlý spád a již v roce 1996 jsem dostal příležitost využívat v rámci svého výzkumného projektu masivně paralelní superpočítač IBM SP2 v tehdejším Centru intenzivních výpočtů ČVUT. K němu jsem posléze přidal i heterogenní síť počítačů s operačními systémy Linux a OSF ve svém zaměstnání a větší homogenní síť Linuxových stanic na naší katedře. Tyto paralelní počítače již disponovaly potřebným výkonem nejen pro testování ale i pro jejich případné použití v praxi. Rostoucí míra technické vyspělosti a relativní dostupnosti potřebného počítačového vybavení měla nezanedbatelný vliv na podstatné rozšíření a zkvalitnění mých výzkumů oproti mým prvotním záměrům a předpokladům. Ani v dnešní době není bohužel v uvažovaných cílových oblastech vybavenost potřebnou výpočetní technikou dostatečně příznivá. Avšak pokud uvažujeme o použití 5
sítě pracovních stanic jako paralelního počítače, je tato alternativa dostupná na většině našich výzkumných pracovišť a dalších místech, kde by intenzivní výpočty mohly nalézat uplatnění. Proto se domnívám, že důvodem nevyužívání paralelních výpočtů v našem oboru není nedostatečná hardwarová základna, ale spíše absence povědomí odborné veřejnosti o existenci tohoto přístupu k řešení výpočetně složitých úloh a o možnostech, které nabízí pro zkvalitnění a zefektivnění jejich náročné vědecké práce. Při studiu problematiky paralelních výpočtů jsem vycházel především z výše uvedených přednášek Doc. Tvrdíka a z jeho skripta Parallel systems and algorithms, které pro mě představovalo neocenitelnou teoretickou základnu pro další rozvoj mých znalostí a poskytlo mi základní obraz o dané problematice. Protože odborná literatura zabývající se paralelními výpočty byla v našich knihovnách spíše vzácností, další zdroje pro mou práci tvořila zahraniční literatura získávaná v rámci grantů a z nemalé části také informace z internetových stánek výzkumných projektů zabývajících se tímto tématem. Vzhledem k tomu, že naprostá většina literatury, se kterou jsem pracoval, byla napsána v angličtině, a v podstatě i celý obor výpočetní techniky jako takový, využívá především tohoto jazyka, je terminologie, kterou ve své práci používám rovněž zpravidla anglicky. Pouze výrazy, jejichž český ekvivalent je obvyklé v praxi používat nebo jejichž překlad by mohl napomoci k pochopení výkladu, jsou uvedeny v obou jazycích. V textu mé práce jsou také ve značné míře použity všeobecně uznávané zkratky odborných výrazů, jejichž opakované vypisování by mohlo text nežádoucím způsobem roztříštit a znepřehlednit. Seznam všech použitích zkratek spolu s jejich stručným výkladem je uveden v závěru práce. Nelze samozřejmě vyloučit, že popisovaným odborným výrazům mohou být v literatuře přiřazovány i jiné zkratky, ale možné neporozumění způsobené případným nesouladem je minimalizováno jejich výkladem. Při hledání vhodných aplikací pro své experimenty s paralelními výpočty jsem byl inspirován úlohami, na jejichž řešení jsem pracoval v rámci svého studia, případně zajímavými úlohami, jejichž sekvenčním řešením se zabývali mí kolegové z katedry. Tyto úlohy skýtaly zajímavou možnost srovnání výsledků klasických sekvenčních verzí programu s mými vlastními experimentálními paralelními verzemi. V počátečních fázích mých experimentů jsem se rozhodl pro použití programovacího jazyka C, a to především z důvodu, že v tomto jazyce jsou běžně dostupné knihovny, jichž jsem využíval při paralelizaci svých programů. V pozdějších etapách experimentů jsem na doporučení svého školitele Aleše Čepka zvážil možný přechod k vývoje vyššímu stupni jazyka k objektově orientovanému programovacímu jazyku C++. Toto rozhodnutí podpořila též existence knihoven gmatvec a GaMaLib a mé předchozí zkušenosti s tímto jazykem. Použití tohoto jazyka v porovnání s jazykem C výrazně urychlilo a zefektivnilo tvorbu paralelních i sekvenčních částí mých programů. Na tomto místě bych rád poděkoval svému školiteli Doc. Ing. Aleši Čepkovi, CSc., za odborné vedení, nezměrnou trpělivost a neustálou inspiraci, kterou mi věnoval po celou dobu mého studia. Svou podporou, optimismem a humorem mi vždy dokázal vrátit chuť k práci i v dobách neúspěchů, které se zákonitě čas od času dostavovaly. Poděkování patří i mým rodičům za jejich podporu po celou dobu mého studia. 6
3 Úvod Tato práce pojednává o paralelních počítačích, paralelních výpočtech a možnostech jejich využití pro řešení výpočetně náročných úloh z oblasti geodézie. S nástupem stále výkonnějších počítačů se totiž začínají objevovat i stále náročnější úlohy, které je třeba řešit. Algoritmy, které byly natolik náročné na výpočet, že bylo neefektivní nebo dokonce nemožné je použít v praxi, se dostávají do popředí zájmu a objevují se i algoritmy nové, založené právě na využití masivní výpočetní síly. Současně s tím se začínají řešit úlohy, kterým teprve nové technologie daly šanci na realizaci, neboť svou komplexností či rozsáhlostí kladly přílišné nároky na existující hardware. Kromě výkonných pracovních stanic se stále výkonnějšími procesory se objevují i superpočítače označované jako masivně paralelní, které k řešení úloh používají několik (podle konstrukce i několik tisíc) spolupracujících procesorů a jejichž použitím je možno zpracování náročných úloh i řádově urychlit. Můžeme říci, že tyto počítače patří k vývojové špičce ve své evoluční řadě a tomu samozřejmě odpovídá i jejich dostupnost a cena. I přes neustávající technologický vývoj však problémem zůstává skutečnost, že i když jsou dostupné superpočítače s ohromujícím výkonem, ne každý má několik desítek či stovek milionů korun na pořízení takového zařízení, a ne vždy je daná úloha natolik kritická, aby její vyřešení vyvážilo vynaložené finanční náklady. Mnohdy lze totiž získat méně kvalitní a méně spolehlivé výsledky pomocí řádově méně náročných výpočtů a finanční stránka věci se tak často stává omezujícím faktorem při rozhodování o použití výpočetně náročných algoritmů. K řešení tohoto dilematu může napomoci použití distribuovaných paralelních počítačů, zvláště pak pokud uvážíme v poslední době stále více populární sítě pracovních stanic (Networks Of Workstations), tedy například skupiny klasických pracovních stanic propojených výkonnou propojovací sítí. I použití takovéto konfigurace se může zdát jako neřešitelný problém, ale vzpomeňme si, že na stolech našich kanceláří a laboratoří leží desítky počítačů, které v noci (a často bohužel i ve dne) mrhají svým procesorovým časem. Proč tedy nevyužít tuto výpočetní kapacitu, která už beztak existuje, pro výpočty, které bychom jinak neměli šanci řešit? V dalším textu jsou uvedeny informace o paralelních počítačích jako hardwarové platformě pro paralelní aplikace. Tyto informace nejsou a ani nemohou být úplné a vyčerpávající, ať již z důvodu nedostatku prostoru nebo díky tomu, že se tento obor neustále vyvíjí. Jako paralelní můžeme chápat systém, v němž může probíhat několik procesů současně (paralelně). Důvodem, pro použití paralelizmu v oblasti computer science byla snaha zvyšovat výkon nad hranici stanovenou současnou technologií výroby počítačů. Dalším důvodem pro paralelizaci byl i požadavek na zvýšení bezpečnosti a spolehlivosti, kterou lze s použitím paralelně pracujících jednotek zajistit. 7
Paralelizmus není ničím nepřirozeným. Podle [1] je mnoho numerických i nenumerických algoritmů ve své podstatě paralelních a jejich provádění na sekvenčním počítači vede nutně ke ztrátám výkonu. Bleskový růst výkonu dnešních počítačů podporovaný vývojem a aplikací nových technologií je výsledkem neustávající poptávky po stále rychlejších a výkonnějších nástrojích. Technologický pokrok však nestačí uspokojovat stále se zvyšující nároky a požadavky. Řešení tohoto problému je tedy třeba hledat v oblasti architektury počítačů. Principy paralelního zpracování v oblasti výpočetní techniky zajímaly konstruktéry už v dobách prvopočátků počítačů vůbec. Jejich aplikace zůstávala však původně pouze ve stádiu teoretickém, neboť neexistovala technologie, která by umožňovala implementaci podobných principů. Samotná paralelizace se i ve svých počátečních stádiích omezovala převážně na paralelní přístup do paměti a další méně komplexní úkony s menšími nároky na vyspělé technologie. Teprve s bleskovým rozvojem technologie výroby počítačů mohly přijít na svět první vektorové počítače, které již můžeme právem řadit mezi paralelní. Jedním z nich byl roku 1976 CRAY-1 * firmy Cray Research Inc. Paralelní výpočty se od svého vstupu na pole výpočetní techniky počátkem sedmdesátých let staly samostatnou oblastí computer science a postupem času nacházejí stále větší využití jak ve sféře vojenské, tak i v mnoha civilních oblastech. Přestože v zahraničí není pojem paralelního zpracování dat neznámý, mezi naší odbornou geodetickou veřejností si zatím stále jen hledá své příznivce. Nepochybně i z tohoto důvodu si pokud je mi známo dosud nenašel v naší geodetické praxi jediné uplatnění. Paralelní výpočty jako fenomén, který musel zákonitě vstoupit na pole masivních výpočtů, nachází své uplatnění tam, kde je zapotřebí mohutné výpočetní síly a kde je k dispozici potřebná technika. Setkáme se s nimi tedy převážně tam, kde existuje požadavek na zpracování výpočetně náročných úloh v časech, které není možno dosáhnout zpracováním klasickými počítači, nebo například v oblastech, kde je prováděno automatické zpracování velkého množství dat. V geodézii a jejích oborech existuje velké množství úloh, které jsou buď výpočetně náročné nebo zahrnují velké množství nezávisle zpracovávaných výpočetních celků. Právě tento typ úloh je předurčen k paralelnímu zpracování. Paralelizace geodetických úloh může zabezpečit jak jejich rychlejší a efektivnější vyřešení, tak i umožnit zpracování komplexnějších a rozsáhlejších výpočtů, jejichž výsledky by bez použití paralelního přístupu byly jen obtížně dosažitelné. Z geodetických vědních oborů můžeme jako vhodné pro paralelní zpracování vytipovat úlohy zpracování obrazových dat dálkového průzkumu Země, výpočetně náročné vyrovnání sítí z oblasti vyšší geodézie, hromadné zpracování dat při tvorbě digitálního modelu terénu a GIS, dávkové výpočty z oblasti nižší geodézie a další. Reprezentativním příkladem může být právě řešení velkých řídkých soustav lineárních algebraických rovnic, používaných při vyrovnání sítí, robustními metodami náročnými na výpočetní výkon, které bylo kromě jiného součástí mých stěžejních experimentů, jejichž výsledky jsou uvedeny v závěru práce. * Cray-1 [51], [50] byl prvním superpočítačem, vyvinutým v roce 1976 Cray Research pod vedením otce superpočítačů Seymoora Craye. Cray-1 byl instalován v Los Alamos National Laboratory a se svým špičkovým výkonem 133 MFLOPS, dosaženým díky své revoluční architektuře, lámal tehdejší výkonové rekordy. Kvůli extrémnímu tepelnému vyzařování musel být systém vybaven chladicím systémem využívajícím freon. 8
Tato práce se skládá ze dvou hlavních částí. V první části je popsána motivace pro využití paralelního přístupu, technologie paralelních počítačů a teoretické pozadí paralelních výpočtů. Druhá část pak popisuje mé experimenty, zabývající se využitím paralelních výpočtů v aplikacích, které nacházejí uplatnění v geodézii. Za nejvýznamnější z nich lze považovat experimenty s paralelizací algoritmu pro řešení soustavy lineárních algebraických rovnic metodou LTS. 9
4 Paralelní počítače a paralelní výpočty 4.1 Evoluce Klasické sekvenční počítače prošly během svého vývoje řadou změn, které měly za cíl jejich zrychlení nad mez dosažitelnou pomocí dostupných technologií. Mezi faktory, které omezují výkon procesorů, můžeme počítat taktovací frekvenci dosažitelnou pro procesory vyráběné současnou technologií, instruction level parallelism, který urychluje zpracování (viz dále), ale má jisté limity a samozřejmě, v konečném důsledku, je omezujícím faktorem i rychlost světla. Navíc je snaha zvýšit výkon standardního neparalelního procesoru limitována neustále se zvyšujícími se náklady na každé další vylepšení. O náznacích použití paralelního přístupu pro dosažení většího výkonu můžeme ale mluvit až od počítačů druhé generace. U počítačů následujících po první generaci se již začaly uplatňovat konstrukční změny vedoucí později až ke konstrukci paralelních počítačů, jak je známe dnes. Orientační tabulka ukazuje hlavní znaky jednotlivých generací počítačů (hodnoty jsou převzaty z [1]) Generace Rok Konstrukční prvky Paměť Kapacita paměti Výkon (MIPS) Zástupce 1 1951 elektronky buben 1 kb 0,01 UNIVAC 1 2 1957 tranzistory ferity 10 kb 0,1 IBM 7090 3 1964 SSI ferity 1 MB 1 IBM 360 3,5 1971 MSI MSI 1 MB 1 IBM 370 4 1981 LSI LSI 10 MB 10 IBM 308X tabulka 4.1: Průřez generacemi počítačů Jednou z těchto změn bylo použití instruction pipelining. Tento princip spočívá v rozdělení procesu provádění jedné instrukce programu na několik základních etap (například čtení instrukce, čtení operandů, provedení instrukce, zápis výsledku) a tyto jsou pak vykonávány nezávislými jednotkami. Zatímco tedy klasický (rozuměj nepoužívající instruction pipelining) počítač potřebuje na provedení jedné instrukce n kroků, počítač využívající instruction pipelining provede jednu instrukci v čase jednoho kroku. Dobře je tento princip patrný na příkladu montážní linky automobilů, kdy při použití principu instruction pipelining vyjíždí (po určitém počtu počátečních kroků potřebných k naplnění linky / fronty) z montážní linky jedno auto v každém dalším kroku. Bez použití tohoto principu pak z linky vyjíždí jen jedno auto po daném počtu kroků potřebných k sestavení auta (v našem případě k provedení instrukce). 10
Krok 1 Při použití instruction pipelining Bez pipelining Krok 2 Krok 3 Krok 4 Krok 5 tabulka 4.2: Princip instruction pipelining Tento přístup označovaný také jako Instruction Level Parallelism (ILP) tedy v závislosti na daném hardware (procesoru) umožňuje vykonávat v pipeline několik instrukcí paralelně. K tomu, aby takovýto přístup fungoval, je nutné, aby zpracovávané instrukce nebyly na sobě závislé ať již z hlediska používaných dat, nebo z hlediska větvení programu. K úspěšnému použití tohoto přístupu může napomoci jak samotný hardware, tak i překladač v čase překladu programu (pomocí technik, které se pokoušejí minimalizovat výskyt závislostí mezi jednotlivými instrukcemi). Dalším z přístupů, přibližujících technologii k paralelním počítačům, bylo použití nezávislých aritmetických jednotek pro odlišné typy operací (logické operace, sčítání, násobení). Tyto jednotky pak mohly pracovat současně na různých datech. V příznivém případě tak byly například provedeny dvě operace najednou. Další možností, jak urychlit běh programů, bylo využití technologií umožňujících zpracování více než jedné instrukce v jednom cyklu. Mezi ně se počítají například Superskalární procesory (mezi ně se řadí třeba procesor Pentium) umožňují zpracovat v optimálním případě několik nezávislých instrukcí najednou. Protože možnost využití paralelního zpracování několika instrukcí současně je u superskalárních procesorů závislá na zpracovávaných instrukcích (jejich případné závislosti), ne vždy je tato možnost využita. Very Long Instruction Word (VLIW) procesory, které mají několik nezávislých jednotek pro zpracování instrukcí. Překladač pak může specifikovat balík instrukcí, které jsou zpracovány současně. Dalším krokem směrem k paralelnímu zpracování bylo použití celých polí totožných aritmetických jednotek (processing elements), které byly centrálně řízeny a všechny prováděly současně stejnou operaci (například sčítání), ale na různých datech uložených v lokální paměti každého z nich. Posledním krokem na cestě k paralelním počítačům bylo tedy použití několika procesorů, které jsou víceméně autonomní a v závislosti na konstrukci paralelního počítače mohou pracovat nezávisle na sobě, přičemž využívají společnou paměť, nebo spolu komunikují pomocí propojovací sítě (viz dále 4.2.3). Mezi nastupující generaci patří takzvané SMP on a chip, které jsou vlastně paralelním počítačem s několika procesory umístěnými na jednom křemíkovém čipu. 11
Paralelizace byla tedy cestou, jak dosáhnout zvětšení výpočetního výkonu, i když tehdejší technologická úroveň už další zvyšování výkonu při použití klasické konstrukce počítačů neumožňovala. Paralelní počítač oproti počítači sekvenčnímu disponuje několika procesory, které současně pracují na různých úlohách, nebo spolupracují na řešení jedné úlohy. Těchto procesorů či processing units (elements) může být podle konstrukce paralelního počítače i několik stovek či tisíc. Zrychlení výpočtu dosažené použitím paralelního počítače (oproti klasickému sekvenčnímu počítači) může být úměrné počtu použitých procesorů. Toto zrychlení však ve velké míře závisí jak na konstrukci paralelního počítače, tak také na použitých paralelních algoritmech, na vlastní úloze a na tom jak jsme její řešení schopni paralelizovat (viz 4.5). Některé úlohy jsou totiž natolik obtížně paralelizovatelné (je obtížné nalézt algoritmus, který umožňuje jejich efektivní paralelní řešení), že zrychlení dosažené paralelním zpracováním je minimální případně tato skutečnost spolu s nevhodným paralelním algoritmem může vést i ke zpomalení výpočtu ve srovnání s použitím klasického sekvenčního počítače. 4.2 Konstrukce Jedním z klíčových parametrů paralelního počítače je jeho konstrukce. K ní je nutné přihlížet s ohledem na jeho budoucí použití, jelikož některé konstrukční prvky a principy ideální z hlediska zpracování úloh určitého typu mohou být pro ostatní úlohy méně vhodné. Ač by se konstrukce paralelního počítače mohla zdát záležitostí, která má význam pouze z pohledu jeho výroby a provozu, má nezanedbatelný význam i při návrhu a dalším vývoji paralelních programů a algoritmů. Pokud je paralelní počítač navrhován přímo pro řešení konkrétního typu úloh (například maticové operace nebo řešení diferenciálních rovnic) má tato skutečnost vliv i na jeho konstrukci. Paralelní počítače se svou konstrukcí v mnohém liší od klasického modelu sekvenčního počítače. Podle své konstrukce mohou zpracovávat několik úloh najednou, případně provádět jednu a tu samou úlohu na několika různých sadách dat. Aby bylo možno několik úloh zpracovávat skutečně paralelně, jsou paralelní počítače vybaveny více než jedním procesorem. Podle konstrukce počítače jich bývá i několik desítek či stovek. Ačkoliv tedy paralelní počítače ve svých počátcích byly vybaveny dvěma až čtyřmi procesory, najdeme dnes paralelní počítače vybavené i několika tisíci mikroprocesorů. Například počítač CM-2 firmy Thinking Machines Inc. z 80. let mohl být vybaven 65536 jednobitovými procesory a řada počítačů NCUBE 2 firmy NCUBE disponuje až 8192 třicetidvou- nebo šedesátičtyřbitovými procesory. Konstrukci paralelního počítače můžeme posuzovat především podle počtu instrukčních a datových front, dále pak podle konstrukce paměti a způsobu komunikace jednotlivých paralelně pracujících částí počítače. 4.2.1 Flynnova taxonomie Flynnova taxonomie (rozdělení) počítačových architektur třídí paralelní počítače podle počtu datových front a způsobu řízení paralelních procesorů. Rozděluje tedy počítače podle počtu instrukčních proudů (instruction stream), což jsou sekvence instrukcí prováděných počítačem, na Single a Multiple Instruction stream (Program) označované zkratkami SI / MI (případně někdy také SP / MP). Dále 12
pak zkoumá počet datových proudů (data stream) neboli sekvencí dat, která budou použita během zpracování proudu instrukcí tady je používáno označení Single/Multiple Data stream ve zkrácené podobě SD / MD. Tedy z hlediska práce paralelního počítače s daty pak můžeme rozlišovat princip, kde všechny procesory paralelního počítače pracují na totožných datech nebo je naopak každému procesoru přiřazena jeho vlastní množina dat. Z hlediska řízení chodu počítače pak odlišujeme počítače, kde jsou všechny procesory řízeny jedním programem od počítačů, kde je každý procesor řízen programem jemu příslušejícím. Flynnova taxonomie podle výše uvedeného třídění rozlišuje čtyři základní kategorie počítačů, v nichž kombinuje Single/Multiple Data stream (počítače zpracovávající jednu nebo více front dat najednou) a Single/Multiple Instruction stream (počítače, jejichž paralelně pracující procesory jsou řízeny jedním, nebo více proudy instrukcí): Single Instruction stream Single Data stream (označované jako SISD) tedy třída klasických sekvenčních počítačů, Single Instruction stream Multiple Data stream (SIMD) do níž patří některé běžně vyráběné paralelní počítače, Multiple Instruction stream Single Data stream (MISD) která je spíš pouze teoretickou třídou, Multiple Instruction stream Multiple Data stream (MIMD) další třída do níž patří dnes komerčně vyráběné paralelní počítače. 4.2.1.1 SISD Do rodiny SISD bychom zde zařadili klasický model sekvenčního počítače (tedy Single Instruction stream Single Data stream). V těchto počítačích je jediný proud dat zpracováván procesorem, který je řízen jedním tokem instrukcí. Můžeme tady najít instruction pipelining jako druh paralelizace, ale v jednom kroku tyto počítače provádějí pouze jednu instrukci. Můžeme také říci, že je lze zařadit mezi sekvenční počítače podle klasického von Neumannova modelu. Instrukce Procesor Data obrázek 4.1: Zjednodušený von Neumannův model sekvenčního počítače (SISD) John von Neumann Tento geniální maďarský matematik (1903 1957) disponoval mimořádnou schopností využití tehdejších, na dnešní dobu velmi omezených, možností počítačů pro aplikovanou matematiku (spolupracoval na využití počítačů v Los Alamos pro výpočty spojené s konstrukcí první vodíkové bomby). John von Neumann je obecně považován za otce idey architektury počítačů, která víceméně úspěšně přežívá do dneška. Sama architektura je definována několika základními body, z nichž asi nejdůležitější jsou následující dva: Počítač se skládá z paměti, řadiče, aritmetické jednotky, vstupní a výstupní jednotky. Řadič zde zpracovává programové instrukce uložené v paměti a na jejich základě řídí vstupní/výstupní jednotky a práci aritmetické jednotky. 13
Struktura počítače je nezávislá na typu řešené úlohy, počítač se programuje obsahem paměti to byla asi nejzásadnější změna kterou von Neumannův návrh přinesl. Oproti zdlouhavému a náročnému programování první generace počítačů pomocí programovacího panelu, je princip programu uloženého v paměti počítače průlomem umožňujícím budoucí univerzální využití počítačů. 4.2.1.2 SIMD Další skupina je označována SIMD (Single Instruction stream Multiple Data stream). V paralelních počítačích tohoto typu pracuje několik paralelních procesorů řízených jedním programem, přičemž každý procesor pracuje na svých vlastních datech. Procesor 1 Data 1 Instrukce Procesor 2 Data 2 Procesor 3 Data 3 obrázek 4.2: Single instruction multiple data (SIMD) model Všechny procesory pracují synchronně, tedy ve všech procesorech je v tentýž okamžik prováděna stejná instrukce programu. V okamžiku, kdy dojde k větvení programu, pracuje pouze ta část procesorů, která je řízena první větví programu. Zbytek procesorů čeká na ukončení větve, kdy se jejich úlohy vymění. Tento typ je dobře použitelný pro úlohy, kde je možno zpracovávaná data rozložit na podmnožiny, jejichž zpracování lze provádět samostatně (například některé úlohy z oblasti zpracování obrazu v dálkovém průzkumu Země DPZ) Výhodou paralelních počítačů tohoto typu je jejich relativně jednoduchá konstrukce a snadná tvorba programů pro danou architekturu. V současné době je tohoto přístupu používáno v moderních procesorech osobních počítačů pro instruction level parallelism ILP (viz výše). Tato technologie označovaná někdy také jako SWAR (SIMD Within A Register) je použita například v procesorech Intel Pentium III a 4 pod názvem Streaming SIMD Extension SSE, nebo pokročilejší SSE2 viz [44]. Mezi dalšími instrukčními sadami různých procesorů využívajících principu SIMD je možno uvést například MMX, 3Dnow!, nebo AltiVec. 4.2.1.3 MISD Jako další architekturu paralelního počítače můžeme uvažovat MISD (Multiple Instruction stream Single Data stream), tedy počítač, kde by byl každý procesor řízen svým vlastním programem a všechny procesory by pracovaly na totožné sadě dat. Tato skupina vznikla spíše umělým vývojem jako důsledek Flynnovy klasifikace a v komerčně vyráběných paralelních počítačích nenachází uplatnění. 14
Instrukce 1 Procesor 1 Instrukce 2 Procesor 2 Data Instrukce 3 Procesor 3 obrázek 4.3: Multiple instruction single data (MISD) model Do této kategorie můžeme zařadit takzvané "pipelined multiprocesory". Lze si je představit jako sadu zřetězených procesorů, které provádějí různé operace na sadě dat, která jimi postupně prochází. Instrukce pro krok 1 Instrukce pro krok 2 Instrukce pro krok 3 Data Procesor 1 Procesor 2 Procesor 3 Výsledná data obrázek 4.4: Pipelined multiprocesor (aplikace MISD modelu) Ty ovšem nepředstavují univerzální model počítače, ale spíše jednoúčelové zařízení určené pro zpracování konkrétního typu dat konkrétní skupinou algoritmů. Stejně jako SIMD i architektura pipelined multiprocesorů může nalézt uplatnění v oblasti zpracování obrazu či počítačové grafiky, kde se jeví jako ideální řešení pro mnohé úlohy, které vyžadují postupnou aplikaci řady operací na zpracovávaný obraz například postupné použití řady obrazových filtrů. Klasická architektura MISD je ale v oblasti komerčně vyráběných paralelních počítačů považována za neobvyklou a není používána. 4.2.1.4 MIMD Poslední kategorií podle Flynnovy taxonomie je pak architektura MIMD (Multiple Instruction stream Multiple Data stream), kde každý procesor pracuje podle vlastního programu na své množině dat. Instrukce 1 Procesor 1 Data 1 Instrukce 2 Procesor 2 Data 2 Instrukce 3 Procesor 3 Data 3 obrázek 4.5: Multiple instruction multiple data (MIMD) model 15
Procesory mohou asynchronně pracovat na nezávislých úlohách, případně spolupracovat na řešení jedné úlohy. Jelikož každý procesor pracuje podle vlastního programu na unikátní sadě dat, je tento typ paralelního počítače (PP) velmi složitý, a to jak z hlediska konstrukce, tak s ohledem na tvorbu programů. Tato architektektura, ač konstrukčně daleko složitější než předcházející architektury, je dnes hojně používána hlavně pro svou univerzálnost. 4.2.2 Komunikace v paralelním počítači Za běhu několika paralelně probíhajících procesů je většinou nutná jejich vzájemná komunikace (výjimkou jsou algoritmy, kdy jednotlivé části úlohy mohou být řešeny samostatně a každý paralelně pracující proces má k dispozici všechna potřebná data, většinou je však stejně nutná komunikace umožňující bezchybný chod celého systému). Procesory mezi sebou mohou komunikovat a usměrňovat svou případnou spolupráci či postup dalšího výpočtu. Tato výměna dat je realizována přes společnou paměť, případně pomocí propojovací sítě (Interconnection Network - ICNW) mezi jednotlivými paralelně pracujícími procesory. Na rychlosti a efektivnosti komunikace ve velké míře závisí efektivnost paralelního zpracování. Pokud procesor přistupuje k datům uloženým v lokální paměti jiného paralelního procesoru (to se týká paralelního počítače s distribuovanou pamětí viz 4.2.3.2), je tento přístup řádově (100 500 krát) pomalejší než přístup k datům uloženým v lokální paměti daného procesoru. Jakákoliv rozsáhlejší výměna dat nebo komunikace mezi jednotlivými paralelně pracujícími procesory po propojovací síti může tedy způsobit výrazné zpomalení celého výpočtu. Také problémy způsobené špatným směrováním dat po ICNW mohou způsobit zpomalení, nebo i fatální konec komunikace mezi paralelně pracujícími částmi počítače. 4.2.2.1 Směrování Směrovací algoritmy pro přenos dat po propojovací síti jsou závislé na topologii propojovací sítě a na jejím technickém řešení (například zda síť umožňuje jedno- nebo oboustranné vysílání). Rozeznáváme čtyři základní typy vysílání v propojovacích sítích: 1. One-to-all broadcast jeden vrchol propojovací sítě posílá stejnou zprávu všem ostatním vrcholům, 2. All-to-all broadcast každý vrchol propojovací sítě provádí one-to-all broadcast, tedy posílá stejnou zprávu všem ostatním vrcholům, 3. One-to-all scatter jeden vrchol posílá rozdílné zprávy každému vrcholu ICNW, 4. All-to-all scatter všechny vrcholy v propojovací síti provádějí současně one-toall scatter, tedy každý vrchol v síti posílá různou zprávu každému dalšímu vrcholu v propojovací síti. 16
obrázek 4.6: One-to-all broadcast obrázek 4.7: All-to-all broadcast obrázek 4.8: One-to-all scatter obrázek 4.9: All-to-all scatter Podle různých hledisek pak můžeme směrovací algoritmy, používané při směrování v propojovacích sítích, dělit například na: On-line / off-line podle toho, zda trasu pohybu dat určují až jednotlivé uzly paralelního počítače v okamžiku, kdy k nim data dorazí, nebo je určena předem. Deterministic / randomized podle toho, zda je trasa vypočtena vždy přesně podle nějakého vzorce, nebo je ve výpočtu uplatněn náhodný prvek. Direct / indirect podle toho, zda je vybírána nejkratší cesta, nebo je vybrána cesta delší, avšak s ohledem na menší riziko kolizí a deadlocks (stav, kdy běžící procesy (zprávy posílané po síti) čekají současně na uvolnění zdrojů, např. linky, druhým procesem, přičemž dochází ke vzniku nekonečného čekacího cyklu). Oblivious / adaptive podle toho, zda směrování nebere ohled na ostatní zprávy pohybující se po síti, nebo je bere v úvahu a přizpůsobuje jim trasu pohybu dat. 4.2.3 Paměť paralelního počítače V průběhu výpočtu jsou paralelně zpracovávaná data uložena v paměti paralelního počítače. Na rychlosti přístupu ke zpracovávaným datům do značné míry závisí rychlost provádění algoritmu. Je používáno několik principů realizace paměti paralelního počítače, podle nichž lze paralelní počítače dále rozlišovat. Různé konstrukce paměti pak ovlivňují nejen rychlost přístupu k datům, ale také složitost konstrukce a tím nepřímo i výslednou cenu daného paralelního počítače. 17
4.2.3.1 SMPC Je to v první řadě skupina paralelních počítačů se sdílenou pamětí (SMPC - Shared Memory Parallel Computer). Sdílená paměť (shared memory - SM) je souvislý paměťový prostor přístupný všem procesorům paralelního počítače. Paměťový adresní prostor je tedy sdílený pro všechny uzly paralelního počítače. Přístup ke sdílené paměti je realizován například přes rychlou propojovací síť (ICNW - Interconnection Network), jejíž konstrukce a tvar (topologie) je pak klíčovým atributem rychlosti komunikace mezi procesory a sdílenou pamětí, a tedy i rychlosti paralelního počítače nejčastěji jsou používány sběrnice a mřížky. Do této kategorie patří paralelní počítače s architekturou označovanou jako UMA (Uniform Memory Access) je to architektura s centrálně umístěnou sdílenou pamětí, přístup k ní je ze všech uzlů paralelního počítače totožný. Při použití cache pamětí vyvstávají problémy s koherencí konkurenčně čtených a zapisovaných dat. Pokud například jeden z procesorů zapíše do sdílené paměti data, která jsou právě v cache paměti používané druhým procesorem, narážíme na problém, která data tedy druhý procesor čte data ve sdílené paměti, která tam byla právě zapsána, nebo data ve své cache paměti, která mu byla právě připravena? Tento problém je řešen v UMA architekturách nečastěji pomocí snooping přístupu, tzn., že (každá cache paměť má informace o tom, zda blok paměti, který právě obsahuje není náhodou používán i jiným procesorem. Přístup ke sdílené paměti je většinou realizován přes sběrnici (např. snoopy bus zajišťující koherenci), mřížku (crossbar), nebo jinou rychlou ICNW. Tato architektura vyžaduje pouze minimum procesorového času na komunikaci, ale její hardware je složitější než u DMPC. Tvorba software pro tuto architekturu je však jednodušší. Procesor 2 Procesor 2 Procesor 2 Propojovací síť (ICNW) mezi procesory a pamětí Paměť 1 Paměť 2 Paměť 3 obrázek 4.10: Přístup ke sdílené paměti (SM) v SMPC 4.2.3.2 DMPC Paralelní počítače bez sdílené paměti jsou označovány jako počítače s distribuovanou pamětí (distributed memory - DM). V počítači s distribuovanou pamětí (Distributed Memory Parallel Computer - DMPC) každý procesor disponuje vlastní oblastí paměti (spojení procesoru a této paměti je pak označováno jako processing element (dále v textu také jen jako PE)). Jednotlivé processing elementy pak mezi sebou komunikují po propojovací síti. Spojení processing elementu s komunikačním hardware bývá také označováno jako processing node (výpočetní uzel dále jen PN). 18
Processing element, který postrádá potřebná data ve své lokální paměti si je pak může vyžádat od jiného processing elementu a mohou mu být doručena po propojovací síti. Tato architektura používá pro komunikaci většinou message-passing model. Hardware je jednodušší než u SMPC, zato množství procesorového času použitého pro komunikaci je vyšší, tvorba software je mnohem složitější a vyžaduje speciální software (MPI, PVM). Procesor 1 PE1 Paměť 1 Procesor 2 PE2 Paměť 2 Procesor 3 PE3 Paměť 3 Propojovací síť (ICNW) mezi jednotlivými processing elementy (PE) Procesor 4 PE4 Paměť 4 Procesor 5 PE5 Paměť 5 Procesor 6 PE6 Paměť 6 obrázek 4.11: Přístup k distribuované paměti (DM) v DMPC 4.2.3.3 VSM Virtuálně sdílená paměť (Virtual Shared Memory VSM, označovaná někdy také jako Distributed Shared Memory DSM) by se dala přirovnat k paměti sdílené. Tato paměť (ačkoliv jsou její části fyzicky uloženy na různých místech systému) představuje souvislý paměťový prostor přístupný všem procesorům paralelního počítače. Tento přístup je realizován prostřednictvím správy paměti (memory management - MM). Virtuálně sdílená paměť je ve své podstatě paměť distribuovaná, která s využitím MM simuluje paměť sdílenou za účelem usnadnění přístupu k datům, která jsou v této paměti uložena. Do této kategorie patří paralelní počítače s architekturou označovanou jako NUMA (Non-Uniform Memory Access) části sdílené paměti v nich nejsou fyzicky uloženy na jednom místě, i když paměťový prostor je stále sdílen jako u SMPC UMA. Vzhledem k tomu, že části paměti jsou uloženy na různých místech, je i čas přístupu k různým částem paměti různý. S problémem koherence uložených dat se vypořádává ccnuma (cache coherent Non-Uniform Memory Access). V této architektuře je pomocí hardwarově implementovaných pravidel zajištěna koherence dat při konkurenčním čtení a zápisu do sdílené paměti. 19
Virtuální sdílená paměť jeví se navenek jako sdílená paměť Procesor 1 PE1 Paměť 1 Procesor 2 PE2 Paměť 2 Správa paměti (memory management - MM) vytvářející VSM Procesor 4 PE4 Paměť 4 Procesor 5 PE5 Paměť 5 Procesor 3 PE3 Paměť 3 Procesor 6 PE6 Paměť 6 obrázek 4.12: Přístup k virtuálně sdílené paměti (VSM) 4.2.3.4 Přístup do paměti u SMPC Přístup několika procesorů současně do stejných oblastí paměti SMPC s sebou však přináší jisté technické a logické problémy při pokusu o čtení či zápis do stejné buňky paměti několika procesory současně. Podle toho, jak je tato situace řešena, můžeme rozlišovat mezi čtyřmi základními modely, které nedovolují či naopak nějakým způsobem realizují současné čtení či zápis několika procesorů na stejnou adresu paměti současně. Toto modely bývají označovány jako Exclusive či Concurrent Read nebo Write. Jsou to tedy čtyři modely označené Exclusive Read Exclusive Write - EREW, Concurrent Read Exclusive Write - CREW, Exclusive Read Concurrent Write - ERCW a Concurrent Read Concurrent Write - CRCW podle modelů chování, které vykazují při současném čtení nebo zápisu více procesorů na stejnou adresu paměti. V případě současného čtení nenastávají žádné logické problémy, nepočítáme-li problémy technického (konstrukčního) rázu (o koherenci čtených dat se zmíním později). Procesorům, které chtějí číst data z dané buňky paměti jsou tato data zpřístupněna. Při pokusu o současný zápis dat více procesory do jedné buňky paměti nastává problém a situace je řešena s využitím různých principů: Jeden z principů spočívá ve stanovení priority procesorů podle předem určeného klíče. Ze skupiny procesorů je pak oprávněn zapsat ten, který má nejvyšší prioritu jedná se o takzvaný priority model. Jinou alternativou může být rozhodnutí povolit zápis pouze v tom případě, že všechny procesory, které se pokouší o zápis do paměti, se pokouší zapsat tatáž data čili takzvaný consensus model. Používaným řešením je i princip, kdy je do paměti zapsána suma všech dat, která mají být zapsána (to může být výhodné u některých paralelních algoritmů) tento princip bývá označován jako sum model. Jak již bylo zmíněno výše, problémem při konkurenčním přístupu do pamětí zůstává koherence konkurenčně čtených a zapisovaných dat, a to zvláště v případě, že jsou použity cache paměti. Tento problém je řešen pomocí různých metod directory 20
approach (informace o tom, která data jsou používána více procesory jsou uloženy na jednom místě v takzvané directory), snooping approach (cache paměti monitorují použitou ICNW nejčastěji sběrnici a hledají informace o tom, že část paměti, kterou cache obsahuje, je používána i jinou PN). 4.2.3.5 Přístup do paměti u DMPC Na rozdíl od počítačů se sdílenou pamětí, kde je paměť společná pro všechny PE a tudíž vyvstávají problémy s konkurenčním přístupem, má u počítače s distribuovanou pamětí každý PE vlastní část paměti a starost o vyřešení konfliktů při konkurenčním přístupu k datům tak většinou zůstává na běžícím paralelním programu, potažmo na programátorovi. Konstrukce DMPC je vzhledem k odděleným lokálním pamětem jednotlivých DMPC většinou jednodušší než tomu je u SMPC, přístup k datům uloženým v paměti je však obtížnější a teoreticky i pomalejší. Pokud jsou data, která daný PE potřebuje k výpočtu, uložena v lokální paměti jiného PE, je jejich získání relativně obtížnější než u SMPC a v závislosti na konstrukci DMPC může být přístupová doba k nim i řádově delší. To se projevuje zvláště u sítí pracovních stanic (NOW viz 4.2.5.5), kdy v závislosti na propojovací síti může přístupová doba k nelokálním datům drasticky stoupat. K tomu je třeba přihlédnout při návrhu paralelních algoritmů pro tyto typy počítačů, aby byl vhodným postupem minimalizován tento handicap. Koherence paměti je zde ponechána většinou na uživateli (nemluvíme teď o DSM ccnuma) a to vzhledem k použití message-passing přístupu k paralelnímu programování této architektury. 4.2.4 Propojovací sítě Propojovací sítě (ICNW) představují v paralelních počítačích prostředek pro komunikaci mezi jednotlivými processing elements, případně prostředek pro přístup do paměti. Jak jsem již dříve zmínil, konstrukce a topologie propojovací sítě mezi procesory a pamětí (u počítačů se sdílenou pamětí), případně mezi jednotlivými processing elementy (u počítačů s distribuovanou pamětí), je jedním z klíčových parametrů výkonu, efektivnosti a spolehlivosti paralelního počítače. V propojovací síti představují jednotlivé vrcholy grafu procesory paralelního počítače a hrany grafu zastupují komunikační kanály, kterými je vedena komunikace mezi jednotlivými processing elementy nebo mezi procesory a pamětí. Na tento graf jsou pak kladeny požadavky, jejichž alespoň částečné naplnění má za cíl zrychlení komunikace, snadnější směrování toku dat v síti, jednodušší rozšiřitelnost paralelního počítače, větší odolnost komunikace po propojovací síti proti chybám a výpadkům či jednodušší konstrukci propojovací sítě. Bez ohledu na jejich rozdílné technologické parametry a oblast použití můžeme propojovací sítě rozdělit na: sběrnice mezi procesory a pamětí používané převážně u SMCP (rychlá a snadná komunikace), propojovací sítě masivně paralelních počítačů používané u DMPC (pomalejší než sběrnice mimo jiné vzhledem ke složitější struktuře), 21
LAN (dnes ponejvíce Fast Ethernet (100Mbps)/optická vlákna (1Gbps)) používané pro distribuované systémy NOW a clustery, WAN například pro distribuované paralelní systémy na internetu NOW. 4.2.4.1 Použité pojmy teorie grafů Při hodnocení propojovací sítě jsou posuzovány jednotlivé parametry jejího grafu a podle nich se pak stanoví vhodnost či nevhodnost dané topologie pro určitou úlohu či algoritmus. Mezi základní parametry grafu patří podle [18] například: Průměr grafu maximální vzdálenost mezi dvěma vrcholy grafu. Stupeň grafu maximální počet hran vycházejících z vrcholu grafu pokud mají všechny vrcholy grafu stejný stupeň, pak má graf pevný stupeň vrcholu. Půlící šířka grafu minimální počet hran které je třeba odstranit, abychom rozdělili graf na dvě stejné množiny vrcholů (v případě sudého počtu vrcholů). Propojovací sítě se podle své topologie dělí na: Statické spojovací cesty v nich zůstávají neměnné a jejich topologie je určena předem v okamžiku jejich konstrukce, pro každý typ systému v závislosti na charakteristice převažující komunikace je pak potřeba použít jinou statickou síť. Dynamické spojovací cesty v nich dynamicky vznikají a zanikají. Mezi ně patří například křížové přepínače či sběrnicové systémy. 4.2.4.2 Požadavky na propojovací síť V této kapitole jsou uvedeny některé požadavky kladené na propojovací sítě a některé z topologií, které jsou vhodné pro konstrukci statických propojovacích sítí. Malý průměr tento požadavek vyplývá ze skutečnosti, že pokud bude vzdálenost mezi nejvzdálenějšími výpočetními uzly malá, potom bude komunikace mezi PN pravděpodobně probíhat rychleji. Malý a pevný stupeň vrcholu tento požadavek pokládá za ideální malý počet komunikačních cest z jednoho processing node. To zaručuje jednodušší konstrukci, vyšší spolehlivost a nezřídka také nižší cenu celého systému. Pevný stupeň vrcholu pak zaručuje nezávislost stupně vrcholu na počtu PN a tím pádem je možné daný návrh PN použít pro různé velikosti paralelních počítačů. Zvětšitelnost (škálovatelnost - scalability) nebo nastavitelnost (extendibility). Jestliže bude propojovací síť zvětšitelná, bude možné významné zvětšování počtu processing nodes bez významnějších změn v návrhu PN. Nastavitelnost pak umožňuje zvětšovat síť po předem daných přírůstcích. Jednotnost a symetrie V jednotné a symetrické síti se lze jednodušeji orientovat a tyto vlastnosti (spolu s rekurzivností) jsou výhodné při navrhování paralelních algoritmů. Jednoduché směrování a efektivní vysílání (broadcasting) propojovací síť musí být schopna zabezpečit efektivní přenos informací mezi processing nodes i v případě, že současně probíhá několik takovýchto přenosů. Síť musí také zabezpečovat efektivní směrování (pomocí komunikačního hardware), aby i v případě současné komunikace 22