Prehľad témy

  • Cieľ: Cieľom témy Hardvérový (HW) opis je priblížiť používateľovi dostupné a používané architektúry pre počítačové klastre

    Prerekvezity: žiadne


    Metódy programovania

       Paralelné výpočty sú postupným vývojom od sekvenčných výpočtov, ktorý sa snaží napodobniť stav podobnému ako vo svete okolo nás. Mnoho zložitých a vzájomne prepojených udalostí sa deje v rovnakú dobu ale v poradí. Dôvod na prechod k paralelným výpočtom bola narastajúca zložitosť programov na procesor. Vyskytol sa problém z časového hľadiska a výkonových požiadaviek na systém. Princíp sekvenčného programovania je, že sa vykonáva jedna úloha a ostatné čakajú kým sa spracuje predošlá. Je nemožné donekonečna zvyšovať výkon počítača len pomocou jediného procesora. Takýto procesor by spotreboval neakceptovateľne veľa energie.



    Sekvenčné programovanie


       Viacjadrové procesory svojím príchodom rozšírili spôsob dovtedy málo používanej paralelizácia. Vykonávané úlohy sa síce nespracúvajú na niekoľkých procesoroch ale len jadrách. To nám neprinesie najvyšší možný výkon ale výhodou je, že komunikácia medzi jadrami je rýchlejšia ako medzi procesormi. Pre dosiahnutie naozaj veľkého výkonu je omnoho praktickejšie používať veľa takýchto jednoduchých procesorov pre dosiahnutie požadovaného výkonu, aj keby sme ich mali použiť tisíce.

       Pri náročných programoch prichádza k zbytočnému časovému zdržaniu, ktoré sa dá odstrániť práve paralelným programovaním a výpočtami. Paralelné výpočty môžu mať algoritmus, kde vzťahy medzi premennými sú závislé alebo nezávislé. V každom prípade tu je priestor pre urýchlenie algoritmu a to tak, že niektoré čiastkové úlohy programu môžu bežať práve súbežne pri zachovaní funkčnosti a správnosti program. Paralelizácia teda znamená rozdelenie úlohy na komponenty, ktoré prebiehajú simultánne na viacerých procesoroch komunikujúcich prostredníctvom nejakej siete, zbernice.



    Paralelné programovanie


    Optimálny výkon počítača pre paralelné výpočty je závislý od každej úrovne: algoritmu, operačného systému, kompilátora a samozrejme hardvéru.


    Flynnova taxonómia

       Multiprocesorový systém alebo multipočítač je zložený z niekoľkých klasických procesorov. Algoritmy a multiprocesorové architektúry sú úzko zviazané dohromady. Nemôžeme rozmýšľať nad paralelnými algoritmami, bez toho, aby sme rozmýšľali nad ich využitím paralelným hardvérom, ktorý ich bude podporovať. Naopak, nemôžeme premýšľať nad využitím paralelného hardvéru bez myslenia na softvér, ktorý ho bude riadiť.

       Paralelizmus tak môže byť realizovaný vo výpočtovom systéme na rôznych úrovniach pomocou hardvérového a softvérového riešenia, napríklad dátový, inštrukčný, vláknový a procesový paralelizmus. Existujú rôzne možnosti návrhov, ktoré máme dispozícii pri stavbe paralelného počítačového systému.

       Najznámejšia procesorová taxonómia bola navrhnutá Flynnom (americký  profesor zo Stanfordskej Univerzity) a bola založená na dátach a vykonávaných operáciách na týchto dátach:

    1. SISD – prípad systému s jedným procesorom
    2. SIMD – všetky procesory vykonajú rovnaký zoznam inštrukcií na rôznych dátach. Každý procesor má vlastné dáta v lokálnej pamäti a procesory si vymieňajú dáta medzi sebou obvykle cez jednoduchú komunikačnú schému. Príkladom využitia SIMD je grafické spracovanie, video kompresia atď.
    3. MISD – všetky procesory vykonávajú rôzne inštrukcie na rovnakých dátach
    4. MIMD – každý procesor vykonáva svoje vlastné inštrukcie na vlastných lokálnych dátach. Príkladom sú multiprocesorové a multipočítačové systémy.

       Bežne najviac používané paralelné počítačové architektúry sú: multiprocesory so zdieľanou pamäťou, multiprocesory s distribuovanou pamäťou, SIMD procesory, klastrové počítanie, cloudové (gridové) počítanie a viacjadrové procesory.


    Pamäťové architektúry

       Poznáme tri základné rozdelenia podľa pamäťovej architektúry: zdieľaná, distribuovaná a hybridná pamäť.

       Pri architektúre zdieľanej pamäte, každý procesor obsiahnutý v systéme zdieľa tie isté pamäťové prostriedky, pričom pracuje samostatne. Pamäť tvorí jeden globálny pamäťový priestor, do ktorého má prístup každý procesor. Zdieľanú pamäť môžeme rozdeliť ešte do dvoch podskupín podľa času prístupu do pamäte:

    • jednotný čas prístupu (Uniform Memory Access)


    UMA

    • nerovnomerný čas prístupu (Non-Uniform Memory Access)


    NUMA

       Výhodami pri systéme so zdieľanou pamäťou sú ľahšie programovateľné kvôli globálnemu adresnému priestoru a z dôvodu tesného prepojenia pamäte s procesormi rýchle zdieľanie dát. Nevýhodami tohto riešeniami sú slabá škálovateľnosť a zodpovedajúce zabezpečenie synchronizácie pre správny prístup do globálnej pamäte.

       V multiprocesorovom systéme s distribuovanou pamäťou je pamäťový modul spojený s procesorom, takže každý procesor môže pristupovať k svojej vlastnej pamäti a na prepojenie medziprocesorovej pamäte je potrebná komunikačná sieť. V tomto riešení pamäťovej architektúry neexistuje žiaden spoločný globálny pamäťový priestor a zmeny v lokálnej pamäti nemajú žiaden vplyv na pamäť ostatných procesorov.



    Zdieľaná pamäť


       Pri práci s takýmto typom systému sa používa mechanizmus zasielania správ s cieľom umožniť prístup procesoru k ďalším pamäťovým modulom v kombinácii s inými procesormi. Multiprocesorový systém s distribuovanou pamäťou sa môže skladať z homogénnych procesorov, takže sa jedná o symetrický viacprocesorový systém. Asymetrický viacprocesorový systém sa skladá z viacerých heterogénnych procesorov.

    Hybrid distribuovano-zdieľanej pamäte je používaný najväčšími a najvýkonnejšími superpočítačmi súčasnosti. Kombinuje metódy MPI a OpenMP. Pred 10 rokmi výnimočnosť a exotika, v blízkej budúcnosti bude tento spôsob pamäťovej architektúry v oblasti najnáročnejších výpočtov najpoužívanejší.


    Hybrid distribuovano-zdieľanej pamäte