Bevezetés. Többszálú, többmagos architektúrák és programozásuk Óbudai Egyetem, Neumann János Informatikai Kar

Hasonló dokumentumok
Kereső algoritmusok a diszkrét optimalizálás problémájához

Párhuzamos programozási modellek

SZÁMÍTÓGÉP ARCHITEKTÚRÁK

Párhuzamos algoritmusok tervezésének alapjai

TÖBBSZÁLÚ/TÖBBMAGOS PROCESSZORARCHITEKTÚRÁK PROGRAMOZÁSA

Objektumorientált Programozás III.

Számítógép architektúra

egy szisztolikus példa

Párhuzamos programozási feladatok

Párhuzamos algoritmusok tervezési lehetőségei és módszerei

Képfeldolgozás és párhuzamosíthatóság

Számítógépek felépítése, alapfogalmak

Szekvenciális hálózatok és automaták

Operandus típusok Bevezetés: Az utasítás-feldolgozás menete

Összetett programozási tételek

Flynn féle osztályozás Single Isntruction Multiple Instruction Single Data SISD SIMD Multiple Data MISD MIMD

5-6. ea Created by mrjrm & Pogácsa, frissítette: Félix

Objektumorientált Programozás VI.

Számítógép felépítése

Párhuzamos programozási platformok

Bevezetés az informatikába

Számítógép architektúrák záróvizsga-kérdések február

Programozás I. Gyakorlás egydimenziós tömbökkel Többdimenziós tömbök Gyakorló feladatok V 1.0 ÓE-NIK-AII,

Programozás I. Matematikai lehetőségek Műveletek tömbökkel Egyszerű programozási tételek & gyakorlás V 1.0 OE-NIK,

Informatika érettségi vizsga

OOP I. Egyszerő algoritmusok és leírásuk. Készítette: Dr. Kotsis Domokos

Adatok ábrázolása, adattípusok

PÁRHUZAMOS SZÁMÍTÁSTECHNIKA MODUL AZ ÚJ TECHNOLÓGIÁKHOZ KAPCSOLÓDÓ MEGKÖZELÍTÉSBEN

A processzor hajtja végre a műveleteket. összeadás, szorzás, logikai műveletek (és, vagy, nem)

Informatika Rendszerek Alapjai

Párhuzamos programozás több szállal

GPU-Accelerated Collocation Pattern Discovery

SzA19. Az elágazások vizsgálata

Készítette: Trosztel Mátyás Konzulens: Hajós Gergely

Objektum Orientált Programozás VII.

Párhuzamos programozási platformok

Programozás I. 1. előadás: Algoritmusok alapjai. Sergyán Szabolcs

SAT probléma kielégíthetőségének vizsgálata. masszív parallel. mesterséges neurális hálózat alkalmazásával

Grafikus csővezeték 1 / 44

1. tétel. A kommunikáció információelméleti modellje. Analóg és digitális mennyiségek. Az információ fogalma, egységei. Informatika érettségi (diák)

Számítógépek architektúrák. Architektúrák

Eseménykezelés. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor.

Kereső algoritmusok a diszkrét optimalizálás problémájához

Bepillantás a gépházba

Objektum Orientált Programozás IV.

Számítógépek felépítése

Ismerkedjünk tovább a számítógéppel. Alaplap és a processzeor

Algoritmusok, adatszerkezetek, objektumok

Számítógépek felépítése, alapfogalmak

Kereső algoritmusok a diszkrét optimalizálás problémájához

SZÁMÍTÓGÉP FELÉPÍTÉSE (TK 61-TŐL)

Magas szintű optimalizálás

Architektúra, cache. Mirıl lesz szó? Mi a probléma? Teljesítmény. Cache elve. Megoldás. Egy rövid idıintervallum alatt a memóriahivatkozások a teljes

Vizuális, eseményvezérelt programozás XI.

Szoftvertervezés és -fejlesztés I.

Objektumorientált paradigma és programfejlesztés Bevezető

Párhuzamosság a modern operációs rendszerekben

Objektumorientált Programozás IV.

Csoportos üzenetszórás optimalizálása klaszter rendszerekben

Párhuzamos programozás több szállal

Szimuláció RICHARD M. KARP és AVI WIGDERSON. (Készítette: Domoszlai László)

Digitális rendszerek. Digitális logika szintje

Gráfok 2. Legrövidebb utak, feszítőfák. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor

Az NIIF új szuperszámítógép infrastruktúrája Új lehetőségek a kutatói hálózatban

Adatstruktúrák, algoritmusok, objektumok

Alapismeretek. Tanmenet

Párhuzamos programozás több szállal

elektronikus adattárolást memóriacím

Processzor (CPU - Central Processing Unit)

Sorozatok határértéke SOROZAT FOGALMA, MEGADÁSA, ÁBRÁZOLÁSA; KORLÁTOS ÉS MONOTON SOROZATOK

Operációs rendszerek Folyamatok 1.1

5. Hét Sorrendi hálózatok

Számítógépes adatbiztonság

Java programozási nyelv

A LabVIEW 8.5 támogatja a többmagos processzorok lehetőségeinek kihasználását

Számítógépes alapismeretek

INFORMATIKA. 6 évfolyamos osztály

Párhuzamos és Grid rendszerek

A számítógép egységei

TestLine - zsoltix83tesztje-01 Minta feladatsor

DIGITÁLIS TECHNIKA 8 Dr Oniga. I stván István

SZÁMÍTÓGÉPEK BELSŐ FELÉPÍTÉSE - 1

TestLine - zsoltix83tesztje-01 Minta feladatsor

Programozás I. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar szeptember 10.

Vizuális és eseményvezérelt programozás , II. félév BMF NIK

Dr. Oniga István DIGITÁLIS TECHNIKA 8

1. Informatikai trendek, ágensek, többágenses rendszerek. Intelligens Elosztott Rendszerek BME-MIT, 2018

2. Számítógépek működési elve. Bevezetés az informatikába. Vezérlés elve. Külső programvezérlés... Memória. Belső programvezérlés

SZÁMÍTÓGÉP ARCHITEKTÚRÁK

Ütemezési problémák. Kis Tamás 1. ELTE Problémamegoldó Szeminárium, ősz 1 MTA SZTAKI. valamint ELTE, Operációkutatási Tanszék

Occam 1. Készítette: Szabó Éva

Mintavételes szabályozás mikrovezérlő segítségével

ELŐADÁS SZÁMÍTÓGÉP MŰKÖDÉSE FIZIKA ÉS INFORMATIKA

Összeadás BCD számokkal

DT1100 xx xx. Galvanikus leválasztó / tápegység. Kezelési útmutató

Laborgyakorlat Logikai áramkörök számítógéppel segített tervezése (CAD)

Nemlineáris optimalizálási problémák párhuzamos megoldása grafikus processzorok felhasználásával

Programozási módszertan

Információs technológiák 1. Ea: Történelmese

A számítástechnika fejlődése

Átírás:

Többszálú, többmagos architektúrák és programozásuk Óbudai Egyetem, Neumann János Informatikai Kar Bevezetés Motiváció Soros és párhuzamos végrehajtás, soros és párhuzamos programozás Miért? Alapfogalmak Párhuzamosság, egyidejűség, kvázipárhuzamosság, kváziegyidejűség Implicit és explicit párhuzamosság Program, feladat, folyamat, szál, végrehajtási egység, feldolgozóegység Korlátok Függőségek és típusaik Szinkronizáció miklos.arpad@nik.uni-obuda.hu

Hallgatói tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendő anyag vázlatát képezik. Ismeretük szükséges, de nem elégséges feltétele a sikeres zárthelyinek, illetve vizsgának. Sikeres zárthelyihez, illetve vizsgához a jelen bemutató tartalmán felül a kötelező irodalomként megjelölt anyag, a gyakorlatokon szóban, illetve a táblán átadott tudnivalók ismerete, valamint a gyakorlatokon megoldott példák és az otthoni feldolgozás céljából kiadott feladatok önálló megoldásának képessége is szükséges. miklos.arpad@nik.uni-obuda.hu 2

Soros végrehajtás és programozás A Neumann-architektúrára épülő számítógépek a programokat sorosan hajtják végre Ezen az architektúrán a gépi kódú programok tényleges futtatása az órajel ütemére sorban egymás után, utasításról utasításra történik. A programokon belül bekövetkező egyes események szigorú időbeli sorrendisége következtében az állapotátmenetek elvben előre kiszámíthatóak. Minden mai, általánosan elérhető számítógéparchitektúra a Neumannarchitektúrára épül.* Adat/utasítás Vezérlés Memória Bemenet Kimenet ALU Vezérlés miklos.arpad@nik.uni-obuda.hu 3

Párhuzamos végrehajtás és programozás A párhuzamos végrehajtást megvalósító architektúrákkal a jelen tárgy csak érintőlegesen foglalkozik Ezt a területet teljes részletességében a Párhuzamos rendszerek architektúrája c. tárgy fedi le. Párhuzamos programozás fogalma A párhuzamos programozás azt a lehetőséget takarja, hogy szoftvereinket olyan programozási nyelven fejlesszük ki, amely explicit (kifejezett) lehetőséget ad a számítási feladatok egymással egyidőben végrehajtandó részfeladatainak és a számítás módjának megadására. Mint később látni fogjuk, ez a módszer új lehetőségek és problémák egész tárházát nyitja fel, és nagyságrenddel nehezebbé teszi jól működő szoftverek fejlesztését. miklos.arpad@nik.uni-obuda.hu 4

...de miért is kellene változtatnunk? A soros (egyprocesszoros) végrehajtás megközelítette határait A mai technológiákkal az egy processzoron elérhető végrehajtási teljesítmény növelésének a fizika határokat szab, melyeket már az implicit párhuzamos végrehajtás lehetőségeinek teljes kimerítése ellenére is megközelítettünk. A komplex vezérlőegységek órajele reálisan legfeljebb kb. 5*10 9 Hz (5 GHz) A processzorok belsejében lévő adatutak maximális hossza elég nagy ahhoz, hogy az órajel további lényegi növelése esetén még fénysebességgel terjedő impulzusok se érjenek át időben a processzor egyik oldaláról a másikra A csíkszélesség további csökkentésével drasztikusan nő a hődisszipáció A mai (2010) processzorok például néhány mm 2 felületen 125-175 W teljesítményt disszipálnak, így hűtésük egyre nagyobb problémát okoz. Sőt, a processzorok egyes területei a változó terheléstől függően nem egyformán melegszenek, ami nagy hőingadozások esetén mechanikai sérüléseket is okozhat. Sajnos a fizikai határok mellett számításelméleti korlátokkal is számolni kell. A hagyományos programokban rejlő belső párhuzamosítási lehetőségeket a mai processzorok már kihasználták Egy általános programban elméletileg legfeljebb kb. 4-6, a gyakorlatban kb. 2-3 utasítás hajtható végre egyidejűleg. Ezt a lehetőséget a három-, illetve négyutas szuperskalár processzorok (pl. IBM Power 3, Intel Pentium III, AMD Athlon) és közvetlen utódaik már a 2000-es évek elejére szinte teljes mértékben kiaknázták. miklos.arpad@nik.uni-obuda.hu 5

...de miért kellene változtatnunk? A teljesítmény növelésének igénye nagyobb, mint valaha Végrehajtási idő minimalizálása = költségcsökkentés A teraflop (10 12 lebegőpontos utasítás / másodperc) sebességkategóriába soros végrehajtással már nem lehet belépni A memóriák sebességének növekedése sokkal lassabb, mint a processzoroké, párhuzamos architektúrák segítségével viszont jobban kiaknázható a teljesítményük (csökkenhetők a szűk keresztmetszetek) A hálózatok döntő jelentőségűvé váltak Az elosztott számítási kapacitás kihasználásával új típusú alkalmazások válnak lehetővé SETI@home, Folding@home A hálózatokon és az interneten tárolt adatok mennyisége olyan nagy, hogy nagyobb feladatoknál az adatok mozgatása (pl. egy, a számításokat elvégző központi számítógép felé) lehetetlen A számítási műveleteket a hálózaton keresztül kell megvalósítani, párhuzamos programozási technikákkal miklos.arpad@nik.uni-obuda.hu 6

...de miért kellene változtatnunk? A soros programozás korszaka tehát fokozatosan letűnik A Neumann-architektúra logikai alapjaiba ágyazott soros programozási megoldások sorra elveszítik előnyeiket (egyszerű fejlesztés, hatékony hibakeresés, kiszámíthatóság), hátrányaik (teljesítmény skálázódásának hiánya, összetett és elosztott programok fejlesztésének nehézsége) pedig egyre kínzóbbak. miklos.arpad@nik.uni-obuda.hu 7

A párhuzamos programozás alapfogalmai Soros (vagy szekvenciális) végrehajtás Fizikailag egyidőben kizárólag egy művelet végrehajtásának lehetősége. Párhuzamos (valódi párhuzamos) végrehajtás Fizikailag egyidőben egynél több művelet végrehajtásának lehetősége. Kvázipárhuzamos végrehajtás Látszólagos párhuzamosság időosztásos technika felhasználásával. Egyidejűség (valódi egyidejűség) Valódi párhuzamos végrehajtás esetén kettő vagy több művelet fizikailag időben egymást átfedő végrehajtása. Kváziegyidejűség Kvázipárhuzamos végrehajtás esetén kettő vagy több művelet logikailag időben egymást átfedő végrehajtása. miklos.arpad@nik.uni-obuda.hu 8

A párhuzamos programozás alapfogalmai Program Feladat Utasítások és adatok önálló egységet képező halmaza. A program elemeinek önhordó és önállóan végrehajtható halmaza vagy részhalmaza. A programok feladatokra bonthatók (de fordítva nem). Folyamat Szál A program végrehajtása, illetve a végrehajtás alatt álló program (adataival, erőforrásaival és belső állapotával együtt). A folyamaton belüli kisebb egység, amely végrehajtható műveletek sorát tartalmazza. Egy folyamaton belül több szál is létezhet (de fordítva nem). Végrehajtási egység Egy adott feladat (folyamat vagy szál) legkisebb végrehajtható részhalmaza. Feldolgozóegység, végrehajtóegység A végrehajtási egységet feldolgozó hardverelem (pl. processzormag, ALU). miklos.arpad@nik.uni-obuda.hu 9

A párhuzamos programozás korlátai Függőségek A függőség olyan kapcsolatot vagy egymásrautaltsági viszonyt jelöl két művelet (feladat) között, amely megakadályozza ezek egyidejű (párhuzamos) végrehajtását. A függőségek alaptípusai: Adatfüggőség (flow dependency): egy művelet eredményét egy másik művelet bemeneti adatként kívánja felhasználni (ez az ún. valódi függőség egy példája) Léteznek ún. áladatfüggőségek is, amelyek nem szükségszerű, ok-okozati jellegűek, hanem az alkalmazott architektúra jellemzői miatt lépnek fel. Ezek megfelelő áttervezéssel, új technikai megoldásokkal kiküszöbölhetők, tehát jelentőségük csekély és időleges. Elágazási függőség (branch dependency): egy művelet eredménye dönti el, hogy egy másik műveletet végre kell-e hajtani, illetve hogy mely művelet kerülön sorra Erőforrásfüggőség (resource dependency): egy művelet végrehajtásához olyan erőforrásra (pl. végrehajtóegységre) van szükség, amely éppen egy másik művelet végrehajtásával foglalkozik, így meg kell várni a másik művelet befejeződését (ez az ún. álfüggőség egy példája) miklos.arpad@nik.uni-obuda.hu 10

A párhuzamos programozás korlátai Szinkronizáció A szinkronizáció olyan tetszőleges mechanizmus, amely két párhuzamos feladat végrehajtása között megbízható, előre megjósolható, determinisztikus kapcsolatot teremt. Szinkronizáció nélkül előfordulhat, hogy bizonyos műveletek párhuzamos végrehajtás esetén bizonyos konkrét körülmények között helytelen eredményeket szolgáltatnak, pedig maguk a műveletek algoritmikus szempontból helyesek, illetve akár a program látszólagos leállását vagy két állapot közötti végtelen váltakozását eredményezhetik. Amennyiben két feladat között nincs szükség szinkronizációra, ezeket aszinkron feladatoknak nevezzük, ezzel szemben az egymással szorosan összefüggő műveleteket szinkron feladatoknak nevezzük. (A valóságban a feladatok e két véglet között egy folytonos spektrumon helyezkednek el.) miklos.arpad@nik.uni-obuda.hu 11

Felhasznált és javasolt irodalom [1] A. Grama, A. Gupta, G. Karypis, V. Kumar Introduction to Parallel Computing Addison-Wesley, ISBN 0-201-64865-2, 2003, 2nd ed., angol, 636 o. [2] B. Wilkinson, M. Allen Parallel Programming Prentice Hall, ISBN 978-0131405639, 2004, 2nd ed., angol, 496 o. [3] S. Akhter, J. Roberts Multi-Core Programming (Increasing Performance through Software Multi-threading) Intel Press, ISBN 0-9764832-4-6, 2006, angol, 340 o. [4] Iványi A. Párhuzamos algoritmusok ELTE Eötvös Kiadó, ISBN 963-463-590-3, Budapest, 2003, magyar, 334 o. [5] J. Albahari Threading in C# [online: 2011. 04. 30.] http://www.albahari.com/threading/ miklos.arpad@nik.uni-obuda.hu 12

miklos.arpad@nik.uni-obuda.hu

miklos.arpad@nik.uni-obuda.hu