Ordering MCMC gyorsítása OpenCL környezetben

Méret: px
Mutatás kezdődik a ... oldaltól:

Download "Ordering MCMC gyorsítása OpenCL környezetben"

Átírás

1 Budapesti Műszaki és Gazdaságtudományi Egyetem Villamosmérnöki és Informatikai Kar Méréstechnika és Információs Rendszerek Tanszék Ordering MCMC gyorsítása OpenCL környezetben Önálló laboratórium 1 Készítette Trosztel Mátyás Konzulens Hajós Gergely május 29.

2 Tartalomjegyzék 1. Bevezetés Az MCMC algoritmus Ordering MCMC algoritmus Ordering score számítás Eddigi eredmények OpenCL Tervezés és implementálás Alapvető technikák Score számítás gyorsítása Score indexelés Score cache mérete Szülői halmazok generálása Ordering score számítás gyorsítása Validálás Eredmények Futási eredmények További lépések Köszönetnyilvánítás 9 Hivatkozások 10 1

3 1. Bevezetés 1.1. Az MCMC algoritmus Az MCMC (Markov Chain Monte Carlo) algoritmus során egy olyan megfelelően konstruált Markov-láncból mintavételezünk, amely stacionárius eloszlása a céleloszlás. Nagy számú szimulációs lépés esetén a minták a kívánt eloszlást követik. A mintavétel minősége a lépésszám növelésével javítható. Az algoritmus sztochasztikus tulajdonsága miatt több szimuláció eredményét érdemes összevetni a stabilabb adat eléréséért Ordering MCMC algoritmus Az Ordering MCMC a sorrendezések tere felett lépked. Ez a tér a struktúrák teréhez hasonlóan szuperexponenciális, de kevésbé tüskés, így jobb konvergenciát biztosít. Emellett a sorrendezéssel kompatibilis gráf DAG (irányított körmentes gráf) lesz, ami lehetővé teszi a valószínűségi változók szülői halmazainak egymástól független számítását. Ezt kihasználva az algoritmus párhuzamosítható. A keresési tér csökkentése érdekében maximalizálni szoktuk a szülői változók számát. Ez egy elfogadható közelítés, mert a legtöbb esetben nem áll rendelkezésünk elég adat a nagyobb szülői számmal járó feltételes valószínűségek számításához Ordering score számítás Az adatunk valószínűségét egy adott sorrendezésre nézve a következőképp számíthatjuk ki: P (D ) = G G k, score(x i, P a G (X i ) D), (1) i ahol score(x i, P a G (X i ) D) annak a valószínűsége, hogy D adat mellett X i valószínűségi változónak P a G (X i ) a szülői halmaza. G k a sorrendezéssel kompatibilis maximum k darab szülőt tartalmazó gráfok halmaza. P a G (X i ) az X i valószínűségi változó szülei a G gráfban. Mivel a szülői halmazok egymástól függetlenül számíthatók: P (D ) = i U U i, score(x i, U D), (2) ahol U i, az X i valószínűségi változó sorrendezéssel kompatibilis szülői halmazai. A sorrendezések tere n! ezért zárt formában csak kevés változóra tudnánk kiszámolni, ezért alkalmazzuk az MCMC algoritmust. A Markov-láncot úgy hozzuk létre, hogy a stacionárius eloszlása P (D ) legyen. Ezek után bármilyen f( ) függvény várható értékét meg tudjuk határozni a következő módon: E[f D] 1 T f( t ). (3) T 1.4. Eddigi eredmények Az előző félévben az MPI (Message Passing Interface) segítségével egy globális gyorsítótárat hoztunk létre, ami lehetővé tette, hogy a párhuzamosan futó szimulációk megosszák egymással a már kiszámolt score-okat, ezzel csökkentve az egy processzre eső score számítást. t=1 2

4 Eredmények 139 változó esetében: teszt lokális cache elosztott cache (6 klienssel) elosztott cache (12 klienssel) futásidő s 5 938s 5 349s A globális gyorsítótár segítségével több, mint kétszeres gyorsulást sikerült elérni OpenCL Az MPI verzió futási idejének fele score számítással telt, ezt szeretnénk most optimalizálni, felgyorsítani. Az MPI azonos gépen lévő processzek esetén nem hatékony megoldás, ezért OpenCLre váltottunk, részben annak reményében, hogy a GPU erősen párhuzamos számításokra készült architektúráját kihasználjuk. Az OpenCL (Open Computing Language) párhuzamos programozás támogatására egy keretrendszert nyújt, amely heterogén platformokon fut (CPU, GPU, FPGA,... ). Programnyelve a C99 szabványon alapul, azt a függvényt, ami az OpenCL eszközön fut kernelnek nevezzük. Előnyei: Az OpenCL programok futásidőben fordulnak, az adott eszköz teljes utasításkészletét ki tudják használni, ezt C-ben csak hardverspecifikusan, többletmunkával tudnánk megtenni. A futásidőben megadott változókat konstansként tudjuk kezelni, ami további optimalizációt tesz lehetővé, például elágazás és cikluskifejtés. Vektoros műveletek támogatása. Az optimális kód létrehozását segíti, ezzel hatékonyan ki tudjuk használni az SIMD (single instruction, multiple data) egységeket. Automatikusan skálázódik a rendelkezésre álló erőforrások szerint. Szinkronizálás, végrehajtási sorok, események támogatása. 2. Tervezés és implementálás 2.1. Alapvető technikák Az egyik alapvető technika a memória elérés optimalizálása. A cache-miss nagyon drága, a gyorsítótárból pár ciklus alatt elérhető az adat, amíg a memóriából csak több, mint 100 ciklus alatt tölthető be. Az összetartozó adatokat tehát tartsuk egymáshoz közel a memóriában, és próbáljuk meg a lehető legtöbb műveletet végrehajtani rajta, amíg a cache-ben található. A másik népszerű technika az SIMD (Single Instruction, Multiple Data) egységek kihasználása. Ez SSE (Streaming SIMD Extensions) esetén 8 darab 128 bites regisztert, míg az újabb processzorokon (Intel: Sandy Bridge, AMD: Bulldozer) megtalálható AVX (Advanced Vector Extensions) 16 darab 256 bites regisztert jelent. 3

5 típus SSE AVX byte short 8 16 int, float 4 8 long long, double 2 4 A fenti táblázatban látható, hogy milyen típusok esetén egyszerre hány adaton tudjuk elvégezni ugyanezt a műveletet. Az SIMD egységek kihasználásával tehát jelentős gyorsulást érhetünk el. A vektoros utasításkészlet alkalmazásakor nagyon fontos az adatok folytonos tárolása és igazított elérése. Ez azt jelenti, hogy az adatunk memóriacíme az igazítás egész számú többszörösére esik. Vektoros regiszterekbe 16 byte-os igazítással kétszer-háromszor gyorsabban lehet betölteni az adatokat. Gondoskodni kell tehát a megfelelő igazításról, erre a következő segédfüggvényeket használtam: 1 void aligned_malloc ( s i z e _ t s i z e, s i z e _ t alignment ) { 2 void ptr, a l i g n e d P t r ; 3 4 ptr = malloc ( s i z e alignment 1 s i z e o f ( void ) ) ; 5 i f (! ptr ) return NULL; 6 7 a l i g n e d P t r = ( void ) ( ( ( i n t p t r _ t ) ptr s i z e o f ( void ) alignment 1) 8 & ~( alignment 1) ) ; 9 ( ( void ) alignedptr 1) = ptr ; return a l i g n e d P t r ; 12 } 13 void a l i g n e d _ f r e e ( void a l i g n e d P t r ) { 14 f r e e ( ( ( void ) alignedptr 1) ) ; 15 } Annyi memóriát kérünk, hogy biztosan el tudjuk tolni egy igazított címre, illetve egy mutatónyi területet fenn kell hogy tartsunk adminisztrációs célra, mert csak ezzel a címmel tudjuk felszabadítani a memóriát. GPU esetén 32, 64, 128 byte-os igazított tranzakcióban történik a memória elérés, így itt különösen fontos, hogy az adatok igazítottan és folytonosan helyezkedjenek el, máskülönben jelentősen lecsökken az elérhető sávszélesség. Véletlenszerű elérés esetén az olvasás 16-szor lesz lassabb, mint optimális esetben. GPU esetén a ciklusok és elágazások is érezhető lassuláshoz vezethetnek. A divergens szálak jelentősen csökkentik a teljesítményt, mert azokat a vezérlőnek sorosítania kell Score számítás gyorsítása A score számítás egyszerű műveletek sorozata, amit jól tudunk vektoros műveletekké alakítani. A vektorokban az adott valószínűségi változóhoz tartozó adatok fognak szerepelni, így egy sor áráért 8, illetve AVX támogatás esetén 16 sort tudunk feldolgozni. GPU esetén azt is biztosítjuk ezzel, hogy igazított 32 byte-os tranzakciókban érjük el a memóriát, így a sávszélesség optimálisan lesz kihasználva. Ehhez a bemeneti adatfájlt transzponálni kell. d 1,1 d 1,2 d 1,3 d 1,nSamples padding d 2,1 d 2,2 d 2,3 d 2,nSamples padding d 3,1 d 3,2 d 3,3 d 3,nSamples padding padding d nv ariables,1 d nv ariables,2 d nv ariables,3 d nv ariables,nsamples padding 4

6 Gondoskodnunk kell a valószínűségi változók első adataihoz tartozó memóriacímek helyes igazításáról (d 1,1, d 2,1,..., d nv ariables,1 ). Ehhez igazított allokációt kell használnunk, és a sorokat ki kell egészíteni úgy, hogy a mérete az igazítás egész számú többszöröse legyen. Azt, hogy az adattömbünk mindig elérhető legyen a cache-ben úgy tudjuk biztosítani, hogy a score tábla generálást még az MCMC szimuláció megkezdése előtt elvégezzük. Ha ezt nem tudjuk megoldani, például a hatalmas tár és időigény miatt (lásd 2.4), akkor gyűjtsünk össze annyi hiányzó score-t, amennyit csak tudunk, majd egy lépésben számoljuk ki őket. A feldolgozás sebességén még gyorsíthatunk, ha minden lehetséges szülői halmazszámra külön kernelt fordítunk. Ekkor ugyanis a fordító képes a belső ciklust kifejteni, ami GPU esetén jelentős gyorsulást eredményez Score indexelés A már kiszámolt score-ok tárolásához és gyors előhívásához le kell képeznünk egy {változó, szülőhalmaz} konfigurációt egy egyedi indexre, lehetőleg folytonosan, annak érdekében, hogy minél kisebb méretű tömböt tudjunk címezni vele. Szerencsére ezt a feladatot meg lehet oldani optimális módon az l-binomiális számábrázolást felhasználva. Minden egész szám egyértelműen felbontható binomiális együtthatók összegére. Például a 27 felbontása l = 4 esetén: 27 = ( ) 6 4 ( ) 5 3 ( ) 2 2 ( ) 1. 1 Ezt felhasználva a következőképpen tudjuk egyértelműen leképezni az {X i, P a(x i )} konfigurációt: ( ) [( ) ( ) ( ) ( )] n 1 P a(xi ) 1 P a(xi ) 2 P a(xi ) 3 P a(xi ) 4 index = X i, (4) ahol P a(x i ) 1 > P a(x i ) 2 > P a(x i ) 3 > P a(x i ) 4. A fenti módszer akkor képez le optimálisan a [0, n ( (n 1)) k ] intervallumra, ha a P a(xi ) j > Xi elemeket P a(x i ) j 1-el helyettesítjük. A különböző szülőhalmaz méreteket eltolással tudjuk egy tömbben tárolni: ( ) maxp arents P a(x n 1 i ) 1 ( ) P a(x n 1 i ) ( ) index = X i P a(xi ) k, (5) k k P a(x i ) k k=0 ahol n a változók száma. k=0 k= Score cache mérete Az alábbi táblázatban a tábla mérete és a feltöltéséhez szükséges idő található maximálisan három illetve négy szülőszám esetén: 5

7 max P a = 3 max P a = 4 változószám tárigény időigény tárigény időigény B ms 10 kb ms kb ms 393 kb 2.32 s kb 1.96 s 3262 kb s kb 6.35 s 14 MB s kb s 44 MB s kb s 112 MB min MB s 245 MB min MB s 483 MB min MB s 878 MB min MB s 1497 MB min MB 6.33 min 2425 MB min MB 8.99 min 3763 MB 6.30 h MB min 5637 MB 9.44 h MB min 8192 MB h MB min 11 GB h MB min 15 GB h MB min 21 GB h MB min 28 GB h MB min 37 GB h MB min 48 GB 3.44 nap MB min 61 GB 4.40 nap MB min 77 GB 5.56 nap MB min 97 GB 6.96 nap MB min 120 GB 8.61 nap MB min 148 GB nap MB min 180 GB nap MB min 217 GB nap MB min 261 GB nap MB 5.19 h 311 GB nap MB 5.94 h 369 GB nap Látható, hogy amíg maximálisan három szülőszámmal egzakt keresés esetén is belátható időn belül végzünk, addig négy szülő esetén a tárigény jelentősen nő. Erre megoldás lehet az, ha csak három szülőig számolunk egzakt módon, utána pedig közelítő algoritmusokat alkalmazunk. A négy szülős konfigurációk score-jait pedig csak akkor számoljuk ki, amikor szükség van rájuk Szülői halmazok generálása A szülői halmazok generálását szeretnénk párhuzamosan elvégezni. Az lenne az ideális, ha csak egy halmaz kezdő és végső indexét kéne megadni. Ez majd jelentősen egyszerűsíti a párhuzamosítást grid környezetben, mert nem terheljük le a hálózatot előre generált halmazok átküldésével. Az algoritmus a fent ismertetett l-binomiális módszer inverze. A fenti példát megfordítva: rendelkezésünkre áll egy m = 27 index és szeretnénk a hozzá tartozó négy elemű halmazt megtudni. Ehhez először megkeressük azt a legnagyobb n számot, amire még ( n 4) m, ez lesz a halmaz egyik eleme, ezután ezt kivonjuk m-ből és a többi elemre is elvégezzük ugyanezt. Az algoritmus implementációja: 6

8 1 int c = n V a r i a b l e s ; 2 for ( int k = nparents ; k > 0 ; k ) { 3 for ( c ; m_choose ( c, k ) > m; c ) ; 4 m = m_choose ( c, k ) ; 5 p a rents [ k 1] = c ; 6 } Az ( n k) számítás gyorsítására előre kiszámított értékeket használunk. A c meghatározása lineáris kereséssel történik, ez lehetne gyorsabban bonyolultabb kereséssel, de kis n mellett nem nyerünk vele semmit a plusz elágazások miatt. A gyakorlatban a szülőhalmaz generálása úgy történik, hogy beérkezik az X i valószínűségi változó, a lehetséges szülőváltozók halmaza H = {Y : X i Y }, a kezdő- és végső index. Ekkor a fenti módon generált halmazok elemszáma 0 és H 1 között lesz. Ezzel címezve a lehetséges változók tömbjét, megkapjuk a generált halmazt Ordering score számítás gyorsítása Láthattuk hogy a valószínűségi változók szülőhalmazai függetlenül számíthatók, így a score számítást párhuzamosan el tudjuk végezni. Az előző részben azt is láttuk, hogy a halmazok generálását is fel tudjuk bontani, így már nem csak a változók mentén párhuzamosíthatunk. Ez hatékonyabb erőforrás kihasználást tesz lehetővé. Egy fontos megállapítás, hogy a flip MCMC operátor esetén nem kell újraszámolnunk az összes változó score-ját, csak ahol változás történt a szülőhalmazokban. Sőt, ha a cache-elt score kompatibilis az új sorrendezéssel, akkor csak azokat a szülői halmazokat kell legenerálni amelyben az új változó szerepel. Ez jelentős gyorsulást eredményez, főleg akkor, ha a nagy szülőszámú konfigurációkra nem végzünk cachelést Validálás Az OpenCL-es kód rossz debuggolhatósága miatt úgy ellenőrzöm a helyes működést, hogy ugyanazt a függvényt megírom C-ben és összehasonlítom a kimenetüket. Viszont különböző optimalizáció és beépített függvények (például lgamma()) eltérő pontossága miatt a lebegőpontos számok nem lesznek pontosan egyenlők. Első gondolat a relatív hiba használata: result1 result2 result2 < ɛ, ahol result2 > result1. Ezzel az a probléma, hogy nullához közeli számoknál rosszul működik. Az IEEE szabvány szerint a lebegőpontos számok bitmintája lexikografikus sorrendben kell hogy kövessék egymást, ezért alkalmazhatjuk a következő trükköt: 1 bool almosteqf ( f l o a t f1, f l o a t f2, int maxulps ) { 2 return abs ( ( int )&f 1 ( int )&f 2 ) <= maxulps ) 3 } Ahol maxulps f 1 és f 2 között lévő lebegőpontos számok maximális számát jelöli. 7

9 3. Eredmények 3.1. Futási eredmények Score számítás: eszköz Native C (AMD Phenom II Native C SSE, Cache opt. (AMD Phenom II OpenCL (AMD Phenom II OpenCL (AMD Radeon HD4850) OpenCL (AMD Radeon HD7950) sebesség 3 ms/score 140 µs/score 20 µs/score 110 µs/score 24 µs/score A CPU-n elért 150-szeres (egy magra vetítve 37,5-szörös) gyorsulás biztató eredmény. Ez önmagában kétszeres javulást hoz az MPI-s verzióhoz képest. Az eredményekből az is kiderül, hogy még a csúcskategóriás Radeon HD7950-es videokártya sem képes hozni egy középkategóriás négymagos CPU szintjét. Ez betudható annak, hogy a score számítás alapvetően kevés és egyszerű műveleteken alapul, így a GPU nem tudja hatékonyan átlapolni a magas globális memória késleltetést. Az ordering részét sajnos még nem volt módom tesztelni, mert nem készült el a kód statisztikai része További lépések A célunk, hogy grid környezetben magas változószám mellett hatékonyan tudjuk futtatni a szimulációt. A jelenlegi algoritmust MPI-vel kibővítve nagyfokú párhuzamosítást hozhatunk létre a következő módon: 1. Lefoglalunk X gépet, egy processzel. A gépen történő párhuzamosítás hatékonysági okokból OpenCL-el lesz kivitelezve. 2. Felosztjuk a változókat a gépek között redundáns módon (kis cache esetén minden gépen meglesz a teljes gyorsítótár) 3. A redundáns táblákat tartalmazó gépek felosztják egymás között a táblát, kiszámolják a score-okat, majd adatot cserélnek. 4. Minden Markov-lánchoz választunk egy gépet, aki a láncért lesz felelős. 5. Láncért felelős gépek kiszámolják az új sorrendet, meghatározzák melyik változókat kell kiszámolni és a keresési tér bonyolultságával arányosan (ez fontos, ha a négy változós konfigurációkat csak igény esetén számoljuk ki) a szabad gépekre küldik őket. 6. A segéd gépek legenerálják a szülőhalmazokat, az esetleges hiányzó scoreokat kiszámítják majd visszaküldik a score-ok összegét. 7. A láncért felelős gép megfelelő módon feldolgozza a beérkezett score-okat majd jöhet az újabb MCMC lépés. A feladat felosztása hatékonyan elvégezhető, csak indexeket kell átküldenünk a számítást végző gépekre, nem terheljük a hálózatot. A számítási idő is jól meghatározható, így várhatóan nem lesznek hosszabb üresjáratok az adat megérkezésre várva. 8

10 Köszönetnyilvánítás Köszönettel tartozom konzulensemnek, Hajós Gergelynek, aki a felmerült problémákra mindig készségesen válaszolt, segítségével hozzájárult a tárgy sikeres teljesítéséhez. Külön köszönet illeti Gézsi Andrást, akinek az ordering MCMC implementációját alapul vettem a program elkészítésénél. 9

11 Hivatkozások [1] Nir Friedman, Daphne Koller, Being Bayesian About Network Structure, [2] Dirk Husmeier, Learning Bayesian networks with improved MCMC schemes, Biomathematics & Statistics Scotland. [3] Ian Anderson, Combinatorics of Finite Sets, [4] Agner Fog, Optimizing software in C, Copenhagen University College of Engineering, [5] Intel, Writing Optimal OpenCL, Intel R OpenCL SDK version 1.1 Beta, [6] NVIDIA, OpenCL Best Practices Guide,

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

Készítette: Trosztel Mátyás Konzulens: Hajós Gergely Készítette: Trosztel Mátyás Konzulens: Hajós Gergely Monte Carlo Markov Chain MCMC során egy megfelelően konstruált Markov-lánc segítségével mintákat generálunk. Ezek eloszlása követi a céleloszlást. A

Részletesebben

Magas szintű optimalizálás

Magas szintű optimalizálás Magas szintű optimalizálás Soros kód párhuzamosítása Mennyi a várható teljesítmény növekedés? Erős skálázódás (Amdahl törvény) Mennyire lineáris a skálázódás a párhuzamosítás növelésével? S 1 P 1 P N GPGPU

Részletesebben

OpenCL - The open standard for parallel programming of heterogeneous systems

OpenCL - The open standard for parallel programming of heterogeneous systems OpenCL - The open standard for parallel programming of heterogeneous systems GPU-k általános számításokhoz GPU Graphics Processing Unit Képalkotás: sok, általában egyszerű és független művelet < 2006:

Részletesebben

GPU alkalmazása az ALICE eseménygenerátorában

GPU alkalmazása az ALICE eseménygenerátorában GPU alkalmazása az ALICE eseménygenerátorában Nagy Máté Ferenc MTA KFKI RMKI ALICE csoport ELTE TTK Fizika MSc Témavezető: Dr. Barnaföldi Gergely Gábor MTA KFKI RMKI ALICE csoport Elméleti Fizikai Főosztály

Részletesebben

OpenCL alapú eszközök verifikációja és validációja a gyakorlatban

OpenCL alapú eszközök verifikációja és validációja a gyakorlatban OpenCL alapú eszközök verifikációja és validációja a gyakorlatban Fekete Tamás 2015. December 3. Szoftver verifikáció és validáció tantárgy Áttekintés Miért és mennyire fontos a megfelelő validáció és

Részletesebben

AliROOT szimulációk GPU alapokon

AliROOT szimulációk GPU alapokon AliROOT szimulációk GPU alapokon Nagy Máté Ferenc & Barnaföldi Gergely Gábor Wigner FK ALICE Bp csoport OTKA: PD73596 és NK77816 TARTALOM 1. Az ALICE csoport és a GRID hálózat 2. Szimulációk és az AliROOT

Részletesebben

Párhuzamos programozási platformok

Párhuzamos programozási platformok Párhuzamos programozási platformok Parallel számítógép részei Hardver Több processzor Több memória Kapcsolatot biztosító hálózat Rendszer szoftver Párhuzamos operációs rendszer Konkurenciát biztosító programozási

Részletesebben

Java II. I A Java programozási nyelv alapelemei

Java II. I A Java programozási nyelv alapelemei Java2 / 1 Java II. I A Java programozási nyelv alapelemei Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2009. 02. 09. Java II.: Alapelemek JAVA2 / 1 A Java formalizmusa A C, illetve

Részletesebben

Teszt Az nvidia GeForce VGA kártyák gyakorlati teljesítménye a Dirt3-ban

Teszt Az nvidia GeForce VGA kártyák gyakorlati teljesítménye a Dirt3-ban Teszt Az nvidia GeForce VGA kártyák gyakorlati teljesítménye a Dirt3-ban Nemrég megjelent a Codemasters nevével fémjelzett Dirt3 videojáték. Kaptunk az alkalmon és megnéztük, hogy a különböző árszegmensű

Részletesebben

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

Szimuláció RICHARD M. KARP és AVI WIGDERSON. (Készítette: Domoszlai László) Szimuláció RICHARD M. KARP és AVI WIGDERSON A Fast Parallel Algorithm for the Maximal Independent Set Problem című cikke alapján (Készítette: Domoszlai László) 1. Bevezetés A következőkben megadott algoritmus

Részletesebben

Java II. I A Java programozási nyelv alapelemei

Java II. I A Java programozási nyelv alapelemei Java II. I A Java programozási nyelv alapelemei Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2008. 02. 19. Java II.: Alapelemek JAVA2 / 1 A Java formalizmusa A C, illetve az annak

Részletesebben

FIR SZŰRŐK TELJESÍTMÉNYÉNEK JAVÍTÁSA C/C++-BAN

FIR SZŰRŐK TELJESÍTMÉNYÉNEK JAVÍTÁSA C/C++-BAN Multidiszciplináris tudományok, 4. kötet. (2014) 1. sz. pp. 31-38. FIR SZŰRŐK TELJESÍTMÉNYÉNEK JAVÍTÁSA C/C++-BAN Lajos Sándor Mérnöktanár, Miskolci Egyetem, Matematikai Intézet, Ábrázoló Geometriai Intézeti

Részletesebben

Grafikus csővezeték 1 / 44

Grafikus csővezeték 1 / 44 Grafikus csővezeték 1 / 44 Grafikus csővezeték Vertex feldolgozás A vertexek egyenként a képernyő térbe vannak transzformálva Primitív feldolgozás A vertexek primitívekbe vannak szervezve Raszterizálás

Részletesebben

Feladat. Bemenő adatok. Bemenő adatfájlok elvárt formája. Berezvai Dániel 1. beadandó/4. feladat 2012. április 13. Például (bemenet/pelda.

Feladat. Bemenő adatok. Bemenő adatfájlok elvárt formája. Berezvai Dániel 1. beadandó/4. feladat 2012. április 13. Például (bemenet/pelda. Berezvai Dániel 1. beadandó/4. feladat 2012. április 13. BEDTACI.ELTE Programozás 3ice@3ice.hu 11. csoport Feladat Madarak életének kutatásával foglalkozó szakemberek különböző településen különböző madárfaj

Részletesebben

KÖZELÍTŐ INFERENCIA II.

KÖZELÍTŐ INFERENCIA II. STATISZTIKAI TANULÁS AZ IDEGRENDSZERBEN KÖZELÍTŐ INFERENCIA II. MONTE CARLO MÓDSZEREK ISMÉTLÉS Egy valószínűségi modellben a következtetéseinket a látensek vagy a paraméterek fölötti poszterior írja le.

Részletesebben

Párhuzamos és Grid rendszerek

Párhuzamos és Grid rendszerek Párhuzamos és Grid rendszerek (10. ea) GPGPU Szeberényi Imre BME IIT Az ábrák egy része az NVIDIA oktató anyagaiból és dokumentációiból származik. Párhuzamos és Grid rendszerek BME-IIT

Részletesebben

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

5-6. ea Created by mrjrm & Pogácsa, frissítette: Félix 2. Adattípusonként különböző regisztertér Célja: az adatfeldolgozás gyorsítása - különös tekintettel a lebegőpontos adatábrázolásra. Szorzás esetén karakterisztika összeadódik, mantissza összeszorzódik.

Részletesebben

Programozási módszertan. Mohó algoritmusok

Programozási módszertan. Mohó algoritmusok PM-08 p. 1/17 Programozási módszertan Mohó algoritmusok Werner Ágnes Villamosmérnöki és Információs Rendszerek Tanszék e-mail: werner.agnes@virt.uni-pannon.hu PM-08 p. 2/17 Bevezetés Dinamikus programozás

Részletesebben

KÖZELÍTŐ INFERENCIA II.

KÖZELÍTŐ INFERENCIA II. STATISZTIKAI TANULÁS AZ IDEGRENDSZERBEN KÖZELÍTŐ INFERENCIA II. MONTE CARLO MÓDSZEREK ISMÉTLÉS Egy valószínűségi modellben a következtetéseinket a látensek vagy a paraméterek fölötti poszterior írja le.

Részletesebben

Hardver Ismeretek IA32 -> IA64

Hardver Ismeretek IA32 -> IA64 Hardver Ismeretek IA32 -> IA64 Problémák az IA-32-vel Bonyolult architektúra CISC ISA (RISC jobb a párhuzamos feldolgozás szempontjából) Változó utasításhossz és forma nehéz dekódolni és párhuzamosítani

Részletesebben

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

Mintavételes szabályozás mikrovezérlő segítségével Automatizálási Tanszék Mintavételes szabályozás mikrovezérlő segítségével Budai Tamás budai.tamas@sze.hu http://maxwell.sze.hu/~budait Tartalom Mikrovezérlőkről röviden Programozási alapismeretek ismétlés

Részletesebben

Párhuzamos programozási platformok

Párhuzamos programozási platformok Párhuzamos programozási platformok Parallel számítógép részei Hardver Több processzor Több memória Kapcsolatot biztosító hálózat Rendszer szoftver Párhuzamos operációs rendszer Konkurenciát biztosító programozási

Részletesebben

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

Csoportos üzenetszórás optimalizálása klaszter rendszerekben Csoportos üzenetszórás optimalizálása klaszter rendszerekben Készítette: Juhász Sándor Csikvári András Budapesti Műszaki és Gazdaságtudományi Egyetem Villamosmérnöki és Informatikai Kar Automatizálási

Részletesebben

Gauss-Seidel iteráció

Gauss-Seidel iteráció Közelítő és szimbolikus számítások 5. gyakorlat Iterációs módszerek: Jacobi és Gauss-Seidel iteráció Készítette: Gelle Kitti Csendes Tibor Somogyi Viktor London András Deák Gábor jegyzetei alapján 1 ITERÁCIÓS

Részletesebben

Újrakonfigurálható technológiák nagy teljesítményű alkalmazásai

Újrakonfigurálható technológiák nagy teljesítményű alkalmazásai Újrakonfigurálható technológiák nagy teljesítményű alkalmazásai Gyakorlat: SSE utasításkészlet Szántó Péter BME MIT, FPGA Laboratórium Vektorizáció Inline assembly Minden fordító támogatja (kivéve VS x64

Részletesebben

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

SAT probléma kielégíthetőségének vizsgálata. masszív parallel. mesterséges neurális hálózat alkalmazásával SAT probléma kielégíthetőségének vizsgálata masszív parallel mesterséges neurális hálózat alkalmazásával Tajti Tibor, Bíró Csaba, Kusper Gábor {gkusper, birocs, tajti}@aries.ektf.hu Eszterházy Károly Főiskola

Részletesebben

egy szisztolikus példa

egy szisztolikus példa Automatikus párhuzamosítás egy szisztolikus példa Áttekintés Bevezetés Példa konkrét szisztolikus algoritmus Automatikus párhuzamosítási módszer ötlet Áttekintés Bevezetés Példa konkrét szisztolikus algoritmus

Részletesebben

Fordító részei. Fordító részei. Kód visszafejtés. Izsó Tamás szeptember 29. Izsó Tamás Fordító részei / 1

Fordító részei. Fordító részei. Kód visszafejtés. Izsó Tamás szeptember 29. Izsó Tamás Fordító részei / 1 Fordító részei Kód visszafejtés. Izsó Tamás 2016. szeptember 29. Izsó Tamás Fordító részei / 1 Section 1 Fordító részei Izsó Tamás Fordító részei / 2 Irodalom Izsó Tamás Fordító részei / 3 Irodalom Izsó

Részletesebben

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

Számítógépek felépítése Számítógépek felépítése Emil Vatai 2014-2015 Emil Vatai Számítógépek felépítése 2014-2015 1 / 14 Outline 1 Alap fogalmak Bit, Byte, Word 2 Számítógép részei A processzor részei Processzor architektúrák

Részletesebben

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

SZÁMÍTÓGÉP ARCHITEKTÚRÁK SZÁMÍTÓGÉP ARCHITEKTÚRÁK Az utasítás-pipeline szélesítése Horváth Gábor, Belső Zoltán BME Hálózati Rendszerek és Szolgáltatások Tanszék ghorvath@hit.bme.hu, belso@hit.bme.hu Budapest, 2018-05-19 1 UTASÍTÁSFELDOLGOZÁS

Részletesebben

Hatékony memóriakezelési technikák. Smidla József Operációkutatási Laboratórium január 16.

Hatékony memóriakezelési technikák. Smidla József Operációkutatási Laboratórium január 16. Hatékony memóriakezelési technikák Smidla József Operációkutatási Laboratórium 2014. január 16. 1 Tartalom A cache áthidalása Cache optimalizálás Adatszerkezetek tervezése A programkód szerkezete Prefetch

Részletesebben

Adatszerkezetek 2. Dr. Iványi Péter

Adatszerkezetek 2. Dr. Iványi Péter Adatszerkezetek 2. Dr. Iványi Péter 1 Hash tábla A bináris fáknál O(log n) a legjobb eset a keresésre. Ha valamilyen közvetlen címzést használunk, akkor akár O(1) is elérhető. A hash tábla a tömb általánosításaként

Részletesebben

Számítógépes döntéstámogatás. Genetikus algoritmusok

Számítógépes döntéstámogatás. Genetikus algoritmusok BLSZM-10 p. 1/18 Számítógépes döntéstámogatás Genetikus algoritmusok Werner Ágnes Villamosmérnöki és Információs Rendszerek Tanszék e-mail: werner.agnes@virt.uni-pannon.hu BLSZM-10 p. 2/18 Bevezetés 1950-60-as

Részletesebben

Digitális technika VIMIAA01 9. hét Fehér Béla BME MIT

Digitális technika VIMIAA01 9. hét Fehér Béla BME MIT BUDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM VILLAMOSMÉRNÖKI ÉS INFORMATIKAI KAR MÉRÉSTECHNIKA ÉS INFORMÁCIÓS RENDSZEREK TANSZÉK Digitális technika VIMIAA01 9. hét Fehér Béla BME MIT Eddig Tetszőleges

Részletesebben

Digitális technika VIMIAA01 9. hét

Digitális technika VIMIAA01 9. hét BUDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM VILLAMOSMÉRNÖKI ÉS INFORMATIKAI KAR MÉRÉSTECHNIKA ÉS INFORMÁCIÓS RENDSZEREK TANSZÉK Digitális technika VIMIAA01 9. hét Fehér Béla BME MIT Eddig Tetszőleges

Részletesebben

GPU Lab. 4. fejezet. Fordítók felépítése. Grafikus Processzorok Tudományos Célú Programozása. Berényi Dániel Nagy-Egri Máté Ferenc

GPU Lab. 4. fejezet. Fordítók felépítése. Grafikus Processzorok Tudományos Célú Programozása. Berényi Dániel Nagy-Egri Máté Ferenc 4. fejezet Fordítók felépítése Grafikus Processzorok Tudományos Célú Programozása Fordítók Kézzel assembly kódot írni nem érdemes, mert: Egyszerűen nem skálázik nagy problémákhoz arányosan sok kódot kell

Részletesebben

FEGYVERNEKI SÁNDOR, Valószínűség-sZÁMÍTÁs És MATEMATIKAI

FEGYVERNEKI SÁNDOR, Valószínűség-sZÁMÍTÁs És MATEMATIKAI FEGYVERNEKI SÁNDOR, Valószínűség-sZÁMÍTÁs És MATEMATIKAI statisztika 10 X. SZIMULÁCIÓ 1. VÉLETLEN számok A véletlen számok fontos szerepet játszanak a véletlen helyzetek generálásában (pénzérme, dobókocka,

Részletesebben

8. gyakorlat Pointerek, dinamikus memóriakezelés

8. gyakorlat Pointerek, dinamikus memóriakezelés 8. gyakorlat Pointerek, dinamikus memóriakezelés Házi ellenőrzés Egy számtani sorozat első két tagja A1 és A2. Számítsa ki a sorozat N- dik tagját! (f0051) Egy mértani sorozat első két tagja A1 és A2.

Részletesebben

Gauss elimináció, LU felbontás

Gauss elimináció, LU felbontás Közelítő és szimbolikus számítások 3. gyakorlat Gauss elimináció, LU felbontás Készítette: Gelle Kitti Csendes Tibor Somogyi Viktor London András Deák Gábor jegyzetei alapján 1 EGYENLETRENDSZEREK 1. Egyenletrendszerek

Részletesebben

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

Flynn féle osztályozás Single Isntruction Multiple Instruction Single Data SISD SIMD Multiple Data MISD MIMD M5-. A lineáris algebra párhuzamos algoritmusai. Ismertesse a párhuzamos gépi architektúrák Flynn-féle osztályozását. A párhuzamos lineáris algebrai algoritmusok között mi a BLAS csomag célja, melyek annak

Részletesebben

Függvények növekedési korlátainak jellemzése

Függvények növekedési korlátainak jellemzése 17 Függvények növekedési korlátainak jellemzése A jellemzés jól bevált eszközei az Ω, O, Θ, o és ω jelölések. Mivel az igények általában nemnegatívak, ezért az alábbi meghatározásokban mindenütt feltesszük,

Részletesebben

Teljesítmény Mérés. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Teljesítmény Mérés / 20

Teljesítmény Mérés. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Teljesítmény Mérés / 20 Teljesítmény Mérés Tóth Zsolt Miskolci Egyetem 2013 Tóth Zsolt (Miskolci Egyetem) Teljesítmény Mérés 2013 1 / 20 Tartalomjegyzék 1 Bevezetés 2 Visual Studio Kód metrikák Performance Explorer Tóth Zsolt

Részletesebben

Dr. habil. Maróti György

Dr. habil. Maróti György infokommunikációs technológiák III.8. MÓDSZER KIDOLGOZÁSA ALGORITMUSOK ÁTÜLTETÉSÉRE KIS SZÁMÍTÁSI TELJESÍTMÉNYŰ ESZKÖZÖKBŐL ÁLLÓ NÉPES HETEROGÉN INFRASTRUKTÚRA Dr. habil. Maróti György maroti@dcs.uni-pannon.hu

Részletesebben

Bevezetés a párhuzamos programozási koncepciókba

Bevezetés a párhuzamos programozási koncepciókba Bevezetés a párhuzamos programozási koncepciókba Kacsuk Péter és Dózsa Gábor MTA SZTAKI Párhuzamos és Elosztott Rendszerek Laboratórium E-mail: kacsuk@sztaki.hu Web: www.lpds.sztaki.hu Programozási modellek

Részletesebben

Vizuális adatelemzés - Gyakorlat. Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Vizuális adatelemzés - Gyakorlat. Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék Vizuális adatelemzés - Gyakorlat Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék Adatelemzés szerepe a rendszermodellezésben Lényeges paraméterek meghatározása

Részletesebben

Bánhelyi Balázs, Csendes Tibor, Palatinus Endre és Lévai. Szeptember 28-30, 2011, Balatonöszöd, Hungary

Bánhelyi Balázs, Csendes Tibor, Palatinus Endre és Lévai. Szeptember 28-30, 2011, Balatonöszöd, Hungary optimalizáló eljárás, Csendes Tibor, Palatinus Endre és Lévai Balázs László Szegedi Tudományegyetem Szeptember 28-30, 2011, Balatonöszöd, Hungary Közmegvilágítási feladat Adott egy megvilágítandó terület,

Részletesebben

Processzor (CPU - Central Processing Unit)

Processzor (CPU - Central Processing Unit) Készíts saját kódolású WEBOLDALT az alábbi ismeretanyag felhasználásával! A lap alján lábjegyzetben hivatkozz a fenti oldalra! Processzor (CPU - Central Processing Unit) A központi feldolgozó egység a

Részletesebben

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

Számítógépek felépítése, alapfogalmak 2. előadás Számítógépek felépítése, alapfogalmak Lovas Szilárd, Krankovits Melinda SZE MTK MSZT kmelinda@sze.hu B607 szoba Nem reprezentatív felmérés kinek van ilyen számítógépe? 2 Nem reprezentatív felmérés

Részletesebben

VLIW processzorok (Működési elvük, jellemzőik, előnyeik, hátrányaik, kereskedelmi rendszerek)

VLIW processzorok (Működési elvük, jellemzőik, előnyeik, hátrányaik, kereskedelmi rendszerek) SzA35. VLIW processzorok (Működési elvük, jellemzőik, előnyeik, hátrányaik, kereskedelmi rendszerek) Működési elvük: Jellemzőik: -függőségek kezelése statikusan, compiler által -hátránya: a compiler erősen

Részletesebben

7. fejezet: Mutatók és tömbök

7. fejezet: Mutatók és tömbök 7. fejezet: Mutatók és tömbök Minden komolyabb programozási nyelvben vannak tömbök, amelyek gondos kezekben komoly fegyvert jelenthetnek. Először is tanuljunk meg tömböt deklarálni! //Tömbök használata

Részletesebben

Programozási segédlet

Programozási segédlet Programozási segédlet Programozási tételek Az alábbiakban leírtam néhány alap algoritmust, amit ismernie kell annak, aki programozásra adja a fejét. A lista korántsem teljes, ám ennyi elég kell legyen

Részletesebben

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

Ismerkedjünk tovább a számítógéppel. Alaplap és a processzeor Ismerkedjünk tovább a számítógéppel Alaplap és a processzeor Neumann-elvű számítógépek főbb egységei A részek feladatai: Központi egység: Feladata a számítógép vezérlése, és a számítások elvégzése. Operatív

Részletesebben

Programozás II. előadás

Programozás II. előadás Nem összehasonlító rendezések Nem összehasonlító rendezések Programozás II. előadás http://nik.uni-obuda.hu/prog2 Szénási Sándor Óbudai Egyetem,Neumann János Informatikai Kar Programozás II. 2 Rendezés

Részletesebben

Hatékonyság 1. előadás

Hatékonyság 1. előadás Hatékonyság 1. előadás Mi a hatékonyság Bevezetés A hatékonyság helye a programkészítés folyamatában: csak HELYES programra Erőforrásigény: a felhasználó és a fejlesztő szempontjából A hatékonyság mérése

Részletesebben

Mesterséges Intelligencia MI

Mesterséges Intelligencia MI Mesterséges Intelligencia MI Valószínűségi hálók - következtetés Dobrowiecki Tadeusz Eredics Péter, és mások BME I.E. 437, 463-28-99 dobrowiecki@mit.bme.hu, http://www.mit.bme.hu/general/staff/tade Következtetés

Részletesebben

elektronikus adattárolást memóriacím

elektronikus adattárolást memóriacím MEMÓRIA Feladata A memória elektronikus adattárolást valósít meg. A számítógép csak olyan műveletek elvégzésére és csak olyan adatok feldolgozására képes, melyek a memóriájában vannak. Az információ tárolása

Részletesebben

Nagyságrendek. Kiegészítő anyag az Algoritmuselmélet tárgyhoz. Friedl Katalin BME SZIT február 1.

Nagyságrendek. Kiegészítő anyag az Algoritmuselmélet tárgyhoz. Friedl Katalin BME SZIT február 1. Nagyságrendek Kiegészítő anyag az Algoritmuselmélet tárgyhoz (a Rónyai Ivanyos Szabó: Algoritmusok könyv mellé) Friedl Katalin BME SZIT friedl@cs.bme.hu 018. február 1. Az O, Ω, Θ jelölések Az algoritmusok

Részletesebben

GPU-Accelerated Collocation Pattern Discovery

GPU-Accelerated Collocation Pattern Discovery GPU-Accelerated Collocation Pattern Discovery Térbeli együttes előfordulási minták GPU-val gyorsított felismerése Gyenes Csilla Sallai Levente Szabó Andrea Eötvös Loránd Tudományegyetem Informatikai Kar

Részletesebben

Algoritmuselmélet. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 13.

Algoritmuselmélet. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 13. Algoritmuselmélet NP-teljes problémák Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem 13. előadás Katona Gyula Y. (BME SZIT) Algoritmuselmélet

Részletesebben

Bevezetés a programozásba. 5. Előadás: Tömbök

Bevezetés a programozásba. 5. Előadás: Tömbök Bevezetés a programozásba 5. Előadás: Tömbök ISMÉTLÉS Specifikáció Előfeltétel: milyen körülmények között követelünk helyes működést Utófeltétel: mit várunk a kimenettől, mi az összefüggés a kimenet és

Részletesebben

Exact inference in general Bayesian networks

Exact inference in general Bayesian networks Exact inference in general Bayesian networks Peter Antal antal@mit.bme.hu Overview The Probability Propagation in Trees of Cliques (a.k.a. ~in join trees) Practical inference Exercises Literature: Valószínűségi

Részletesebben

Labor gyakorlat Mikrovezérlők

Labor gyakorlat Mikrovezérlők Labor gyakorlat Mikrovezérlők ATMEL AVR ARDUINO 1. ELŐADÁS BUDAI TAMÁS Tartalom Labor 2 mikrovezérlők modul 2 alkalom 1 mikrovezérlők felépítése, elmélet 2 programozás, mintaprogramok Értékelés: a 2. alkalom

Részletesebben

Analóg-digitális átalakítás. Rencz Márta/ Ress S. Elektronikus Eszközök Tanszék

Analóg-digitális átalakítás. Rencz Márta/ Ress S. Elektronikus Eszközök Tanszék Analóg-digitális átalakítás Rencz Márta/ Ress S. Elektronikus Eszközök Tanszék Mai témák Mintavételezés A/D átalakítók típusok D/A átalakítás 12/10/2007 2/17 A/D ill. D/A átalakítók A világ analóg, a jelfeldolgozás

Részletesebben

Simon Balázs Dr. Goldschmidt Balázs Dr. Kondorosi Károly. BME, Irányítástechnika és Informatika Tanszék

Simon Balázs Dr. Goldschmidt Balázs Dr. Kondorosi Károly. BME, Irányítástechnika és Informatika Tanszék Simon Balázs (sbalazs@iit.bme.hu) Dr. Goldschmidt Balázs Dr. Kondorosi Károly BME, Irányítástechnika és Informatika Tanszék Webszolgáltatások, WS-* szabványok WS-* implementációs architektúra Célkitűzés:

Részletesebben

Rőczei Gábor Szeged, Networkshop

Rőczei Gábor Szeged, Networkshop Az ARC új generációs bróker rendszere 2009.04.16. 04 Rőczei Gábor Szeged, Networkshop 2009 roczei@niif.hu Rövid összefoglaló Nemzeti Információs Infrastruktúra Fejlesztési Intézet KnowARC projekt Mi is

Részletesebben

C programozási nyelv Pointerek, tömbök, pointer aritmetika

C programozási nyelv Pointerek, tömbök, pointer aritmetika C programozási nyelv Pointerek, tömbök, pointer aritmetika Dr. Schuster György 2011. június 16. C programozási nyelv Pointerek, tömbök, pointer aritmetika 2011. június 16. 1 / 15 Pointerek (mutatók) Pointerek

Részletesebben

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter Adatszerkezetek Tömb, sor, verem Dr. Iványi Péter 1 Adat Adat minden, amit a számítógépünkben tárolunk és a külvilágból jön Az adatnak két fontos tulajdonsága van: Értéke Típusa 2 Adat típusa Az adatot

Részletesebben

Tartalom Keresés és rendezés. Vektoralgoritmusok. 1. fejezet. Keresés adatvektorban. A programozás alapjai I.

Tartalom Keresés és rendezés. Vektoralgoritmusok. 1. fejezet. Keresés adatvektorban. A programozás alapjai I. Keresés Rendezés Feladat Keresés Rendezés Feladat Tartalom Keresés és rendezés A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán

Részletesebben

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

Számítógép felépítése Alaplap, processzor Számítógép felépítése Az alaplap A számítógép teljesítményét alapvetően a CPU és belső busz sebessége (a belső kommunikáció sebessége), a memória mérete és típusa, a merevlemez sebessége

Részletesebben

A fordítóprogramok szerkezete. Kódoptimalizálás. A kódoptimalizálás célja. A szintézis menete valójában. Kódoptimalizálási lépések osztályozása

A fordítóprogramok szerkezete. Kódoptimalizálás. A kódoptimalizálás célja. A szintézis menete valójában. Kódoptimalizálási lépések osztályozása A fordítóprogramok szerkezete Forrásprogram Forrás-kezelő (source handler) Kódoptimalizálás Fordítóprogramok előadás (A,C,T szakirány) Lexikális elemző (scanner) Szintaktikus elemző (parser) Szemantikus

Részletesebben

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

Programozás I. 1. előadás: Algoritmusok alapjai. Sergyán Szabolcs Programozás I. 1. előadás: Algoritmusok alapjai Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu Óbudai Egyetem Neumann János Informatikai Kar Alkalmazott Informatikai Intézet 2015. szeptember 7. Sergyán

Részletesebben

Programozás alapjai 9. előadás. Wagner György Általános Informatikai Tanszék

Programozás alapjai 9. előadás. Wagner György Általános Informatikai Tanszék 9. előadás Wagner György Általános Informatikai Tanszék Leszámoló rendezés Elve: a rendezett listában a j-ik kulcs pontosan j-1 kulcsnál lesz nagyobb. (Ezért ha egy kulcsról tudjuk, hogy 27 másiknál nagyobb,

Részletesebben

A félév során előkerülő témakörök

A félév során előkerülő témakörök A félév során előkerülő témakörök rekurzív algoritmusok rendező algoritmusok alapvető adattípusok, adatszerkezetek, és kapcsolódó algoritmusok dinamikus programozás mohó algoritmusok gráf algoritmusok

Részletesebben

Keresés és rendezés. A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán

Keresés és rendezés. A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán Keresés Rendezés Feladat Keresés és rendezés A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán 2016. november 7. Farkas B., Fiala

Részletesebben

Matematikai alapok. Dr. Iványi Péter

Matematikai alapok. Dr. Iványi Péter Matematikai alapok Dr. Iványi Péter Számok A leggyakrabban használt adat típus Egész számok Valós számok Bináris számábrázolás Kettes számrendszer Bitek: 0 és 1 Byte: 8 bit 128 64 32 16 8 4 2 1 1 1 1 1

Részletesebben

Bánsághi Anna 2014 Bánsághi Anna 1 of 68

Bánsághi Anna 2014 Bánsághi Anna 1 of 68 IMPERATÍV PROGRAMOZÁS Bánsághi Anna anna.bansaghi@mamikon.net 3. ELŐADÁS - PROGRAMOZÁSI TÉTELEK 2014 Bánsághi Anna 1 of 68 TEMATIKA I. ALAPFOGALMAK, TUDOMÁNYTÖRTÉNET II. IMPERATÍV PROGRAMOZÁS Imperatív

Részletesebben

Multihalmaz, intervallumhalmaz

Multihalmaz, intervallumhalmaz Multihalmaz, intervallumhalmaz Halmaz féleségek 1. Halmaz Gyümölcsök: {alma,körte,szilva,barack} 2. Multihalmaz Állatok: {(macska,4),(rigó,2),(galamb,3)} 3. Intervallumhalmaz diszjunkt Óráim: {[8-10],[13-14],[16-20)}

Részletesebben

Orvosi készülékekben használható modern fejlesztési technológiák lehetőségeinek vizsgálata

Orvosi készülékekben használható modern fejlesztési technológiák lehetőségeinek vizsgálata Kutatási beszámoló a Pro Progressio Alapítvány számára Budapesti Műszaki és Gazdaságtudományi Egyetem Villamosmérnöki és Informatikai Kar Mérnök informatika szak Orvosi készülékekben használható modern

Részletesebben

Programozás alapjai. 10. előadás

Programozás alapjai. 10. előadás 10. előadás Wagner György Általános Informatikai Tanszék Pointerek, dinamikus memóriakezelés A PC-s Pascal (is) az IBM PC memóriáját 4 fő részre osztja: kódszegmens adatszegmens stackszegmens heap Alapja:

Részletesebben

Heterogén számítási rendszerek

Heterogén számítási rendszerek Heterogén számítási rendszerek Gyakorlat: SSE utasításkészlet Szántó Péter BME MIT, FPGA Laboratórium SIMD Single Instruction Multiple Data m1 = f1 f2 f3 f4 + + + + + m2 = f5 f6 f7 f8 = = = = = m1+m2 =

Részletesebben

Digitális jelfeldolgozás

Digitális jelfeldolgozás Digitális jelfeldolgozás Kvantálás Magyar Attila Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék magyar.attila@virt.uni-pannon.hu 2010. szeptember 15. Áttekintés

Részletesebben

Konjugált gradiens módszer

Konjugált gradiens módszer Közelítő és szimbolikus számítások 12. gyakorlat Konjugált gradiens módszer Készítette: Gelle Kitti Csendes Tibor Vinkó Tamás Faragó István Horváth Róbert jegyzetei alapján 1 LINEÁRIS EGYENLETRENDSZEREK

Részletesebben

Összetett programozási tételek Rendezések Keresések PT egymásra építése. 10. előadás. Programozás-elmélet. Programozás-elmélet 10.

Összetett programozási tételek Rendezések Keresések PT egymásra építése. 10. előadás. Programozás-elmélet. Programozás-elmélet 10. Összetett programozási tételek Sorozathoz sorozatot relő feladatokkal foglalkozunk. A bemenő sorozatot le kell másolni, s közben az elemekre vonatkozó átalakításokat lehet végezni rajta: Input : n N 0,

Részletesebben

1. Alapfogalmak Algoritmus Számítási probléma Specifikáció Algoritmusok futási ideje

1. Alapfogalmak Algoritmus Számítási probléma Specifikáció Algoritmusok futási ideje 1. Alapfogalmak 1.1. Algoritmus Az algoritmus olyan elemi műveletekből kompozíciós szabályok szerint felépített összetett művelet, amelyet megadott feltételt teljesítő bemeneti adatra végrehajtva, a megkívánt

Részletesebben

C++ programozási nyelv

C++ programozási nyelv C++ programozási nyelv Gyakorlat - 13. hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2004. december A C++ programozási nyelv Soós Sándor 1/10 Tartalomjegyzék Objektumok

Részletesebben

Osztott algoritmusok

Osztott algoritmusok Osztott algoritmusok A benzinkutas példa szimulációja Müller Csaba 2010. december 4. 1. Bevezetés Első lépésben talán kezdjük a probléma ismertetésével. Adott két n hosszúságú bináris sorozat (s 1, s 2

Részletesebben

Digitális technika (VIMIAA02) Laboratórium 1

Digitális technika (VIMIAA02) Laboratórium 1 BUDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM VILLAMOSMÉRNÖKI ÉS INFORMATIKAI KAR MÉRÉSTECHNIKA ÉS INFORMÁCIÓS RENDSZEREK TANSZÉK Digitális technika (VIMIAA02) Laboratórium 1 Fehér Béla Raikovich Tamás,

Részletesebben

GPGPU-k és programozásuk Dezső, Sima Sándor, Szénási

GPGPU-k és programozásuk Dezső, Sima Sándor, Szénási GPGPU-k és programozásuk Dezső, Sima Sándor, Szénási GPGPU-k és programozásuk írta Dezső, Sima és Sándor, Szénási Szerzői jog 2013 Typotex Kivonat A processzor technika alkalmazásának fejlődése terén napjaink

Részletesebben

Programozás I gyakorlat

Programozás I gyakorlat Programozás I. - 2. gyakorlat Változók, kiiratás, bekérés Tar Péter 1 Pannon Egyetem M szaki Informatikai Kar Számítástudomány Alkalmazása Tanszék Utolsó frissítés: September 24, 2007 1 tar@dcs.vein.hu

Részletesebben

Szoftvertechnológia alapjai Java előadások

Szoftvertechnológia alapjai Java előadások Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz e-mail: fandrew@mit.bme.hu tárgy honlap: http://home.mit.bme.hu/~fandrew/szofttech_hu.html A mai előadás tartalma: Miért pont Java?

Részletesebben

Algoritmusok és adatszerkezetek gyakorlat 07

Algoritmusok és adatszerkezetek gyakorlat 07 Algoritmusok és adatszerkezetek gyakorlat 0 Keresőfák Fák Fa: összefüggő, körmentes gráf, melyre igaz, hogy: - (Általában) egy gyökér csúcsa van, melynek 0 vagy több részfája van - Pontosan egy út vezet

Részletesebben

GPU Lab. 3. fejezet. Az X86 Utasításkészlet. Grafikus Processzorok Tudományos Célú Programozása. Berényi Dániel Nagy-Egri Máté Ferenc

GPU Lab. 3. fejezet. Az X86 Utasításkészlet. Grafikus Processzorok Tudományos Célú Programozása. Berényi Dániel Nagy-Egri Máté Ferenc 3. fejezet Az X86 Utasításkészlet Grafikus Processzorok Tudományos Célú Programozása Assembly nyelv Assembly nyelv: Bitkódok (gépikód) helyett rövid párbetűs nevek (mnemonic) az utasításoknak és a regisztereknek.

Részletesebben

Gépi tanulás a gyakorlatban. Lineáris regresszió

Gépi tanulás a gyakorlatban. Lineáris regresszió Gépi tanulás a gyakorlatban Lineáris regresszió Lineáris Regresszió Legyen adott egy tanuló adatbázis: Rendelkezésünkre áll egy olyan előfeldolgozott adathalmaz, aminek sorai az egyes ingatlanokat írják

Részletesebben

Digitális technika (VIMIAA02) Laboratórium 1

Digitális technika (VIMIAA02) Laboratórium 1 BUDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM VILLAMOSMÉRNÖKI ÉS INFORMATIKAI KAR MÉRÉSTECHNIKA ÉS INFORMÁCIÓS RENDSZEREK TANSZÉK Digitális technika (VIMIAA02) Laboratórium 1 Fehér Béla Raikovich Tamás,

Részletesebben

Google App Engine az Oktatásban 1.0. ügyvezető MattaKis Consulting http://www.mattakis.com

Google App Engine az Oktatásban 1.0. ügyvezető MattaKis Consulting http://www.mattakis.com Google App Engine az Oktatásban Kis 1.0 Gergely ügyvezető MattaKis Consulting http://www.mattakis.com Bemutatkozás 1998-2002 között LME aktivista 2004-2007 Siemens PSE mobiltelefon szoftverfejlesztés,

Részletesebben

A verem (stack) A verem egy olyan struktúra, aminek a tetejéről kivehetünk egy (vagy sorban több) elemet. A verem felhasználása

A verem (stack) A verem egy olyan struktúra, aminek a tetejéről kivehetünk egy (vagy sorban több) elemet. A verem felhasználása A verem (stack) A verem egy olyan struktúra, aminek a tetejére betehetünk egy új (vagy sorban több) elemet a tetejéről kivehetünk egy (vagy sorban több) elemet A verem felhasználása Függvény visszatérési

Részletesebben

Microsoft Excel 2010. Gyakoriság

Microsoft Excel 2010. Gyakoriság Microsoft Excel 2010 Gyakoriság Osztályközös gyakorisági tábla Nagy számú mérési adatokat csoportokba (osztályokba) rendezése -> könnyebb áttekintés Osztályokban szereplő adatok száma: osztályokhoz tartozó

Részletesebben

Bevezetés a programozásba I 3. gyakorlat. PLanG: Programozási tételek. Programozási tételek Algoritmusok

Bevezetés a programozásba I 3. gyakorlat. PLanG: Programozási tételek. Programozási tételek Algoritmusok Pázmány Péter Katolikus Egyetem Információs Technológiai Kar Bevezetés a programozásba I 3. gyakorlat PLanG: 2011.09.27. Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto Algoritmusok

Részletesebben

4. Programozási nyelvek osztályozása. Amatőr és professzionális

4. Programozási nyelvek osztályozása. Amatőr és professzionális 4. Programozási nyelvek osztályozása. Amatőr és professzionális programozási nyelvek. Számítási modellek (Neumann-elvű, automataelvű, funkcionális, logikai). Programozási nyelvekkel kapcsolatos fogalmak

Részletesebben

Problémamegoldás kereséssel. Mesterséges intelligencia március 7.

Problémamegoldás kereséssel. Mesterséges intelligencia március 7. Problémamegoldás kereséssel Mesterséges intelligencia 2014. március 7. Bevezetés Problémamegoldó ágens Kívánt állapotba vezető cselekvéseket keres Probléma megfogalmazása Megoldás megfogalmazása Keresési

Részletesebben