Térbeli együttes előfordulási minták GPU-val gyorsított felismerése
|
|
- Csongor Pap
- 6 évvel ezelőtt
- Látták:
Átírás
1 2013. november Bevezetés Térbeli együttes előfordulási minták GPU-val gyorsított felismerése A GPU-CM algoritmus Gyenes Csilla Sallai Levente Szabó Andrea Absztrakt Az egybefüggő minták felfedezése egy érdekes része a térbeli adatbázisok adatbányászásának. Olyan térbeli objektum típusok kereséséből áll, melyek gyakran együtt állnak a térbeli szomszédságban. Ezen minták néhány alkalmazási területe: biológia, földrajz, marketing és meteorológia. Ahhoz hogy megbirkózhassunk az ilyen nagy mennyiségű adatokkal, felhasználhatjuk a (nagy teljesítményű) programozható grafikus kártyákat (GPU). A GPU-król már bebizonyosodott az utóbbi időben, hogy rendkívül hatékonyan képesek felgyorsítani számos már meglévő algoritmust. Ebben a cikkben bemutatjuk a GPU-CM-et, ami egy GPU-gyorsított verziója az icpifára alapozott algoritmusnak együttes előfordulási minták felfedezésére. A legjobb teljesítmény érdekében, speciálisan megtervezett struktúrákat és eljárásokat vezetünk be, hogy kiaknázhassuk az SIMD végrehajtási modell lehetőségeit. Kísérleti jelleggel összehasonlítjuk az icpi-fa módszerek GPU-s és párhuzamos implementációit. A kapott eredmények bizonyítják, hogy a CPU-s algoritmushoz képest a GPU-s nagyságrendekkel gyorsabb. 1
2 2013. november Bevezetés 1. Bevezetés A térbeli adatbázisok hatalmas növekedése már meghaladja az emberi feldolgozás lehetőségét. Ezért van szükség az automatikus felismerésre, ezeket az eljárásokat Knowledge Discovery in Databases - KDD-nek ( tudás felfedezés adatbázisokban ) nevezik [8]. Ennek legérdekesebb része az úgynevezett adatbányászás és bizonyos minták felfedezésére speciálisan felépített algoritmusok alkalmazásából áll. Ebben a munkában elsősorban a térbeli objektum osztályok (térbeli tulajdonságok) felfedezésével foglalkozunk, melyek gyakran csoportosulnak. Minden térbeli tulajdonság definiálható a tér egy adott pontbeli tulajdonságaként. Tipikus példák: fajok, üzleti típusok, érdekes pontok (pl.: kórházak, repterek, látnivalók, stb.). Vegyünk például egy mobiltelefon hálózatot üzemeltető céget, ami számos szolgáltatást nyújt; érdekelhetik, hogy milyen kapcsolat van azon tényezők között, amik alapján az ügyfelek szolgáltatást választanak. A tudósok számára érdekes lehet az ökológiában és meteorológiában együttesen előforduló természeti jelenségek[12]. A térbeli egybefüggő minta (röviden csoport/egybefüggő) olyan térbeli tulajdonságok halmaza, amelyek a térben egymáshoz közel állnak. Az ilyen minták azonosításához fontos, hogy felkutassuk a minták összes előfordulását. Számos csoport minta felfedező algoritmust írtak már [11-14, 16, 15]. De még nem terjesztettek elő egy olyan megoldást sem, amely hardver támogatást vett volna igénybe. 2
3 2013. november Definíciók 2. Definíciók D1: Legyen f egy térbeli tulajdonság. Az x objektum az f egy példánya, ha x f egy típusa és van helyzete és egyedi azonosítója. Legyen F térbeli tulajdonságok halmaza és S ezek példányainak halmaza. Adott szomszédsági reláció, R, mellett azt mondjuk, hogy a C csoport minta részhalmaza a térbeli tulajdonságoknak, melynek példányai, egy klikket alkotnak R relációval. D2: Az tulajdonság részvételi rátája (participation ratio) csoportban, az tulajdonságot képviselő objektumok töredéke a példányok csoportjának szomszédságában. az C-beli példányainak száma osztva a összes tulajdonságú elemmel. A részvételi indexe (participation index), egy csoportnak:. T1: A részvételi ráta és a részvételi index monoton csökken a C csoport méretének növekedésével. D3: Csoport minta bányászat: 1. adott a térbeli tulajdonságok halmaza 2. azok példányai, ahol (1 < i < k) az tulajdonságú példányok halmaza, és minden S-beli példány tartalmaz információt a típusáról, egyedi azonosítójáról és helyzetéről 3. adott egy szomszédsági reláció a helyzetek felett értelmezve: R 4. adott egy minimum gyakorisági küszöb (min_prev). Ekkor hatékonyan találunk helyes és teljes csoport mintákat, ahol a részvételi index min_prev. 3
4 2013. november Kapcsolódó munkák 3. Kapcsolódó munkák 3.1 Az icpi-fa bázisú csoport minta keresés Az egybefüggő minták bányászatának egy általános megközelítése bemutatásra került [11]-ben, és három fő lépésből áll. Az első lépésben egy jól ismert apriori stratégiát [1] használunk, hogy lehetséges csoportokat generáljuk a gyakorisági mérték ( ) monotonitását ( ) kihasználva. A következő lépésben meghatározzuk az így kapott csoportok példányait. Végül kiszámítjuk a részvételi indexet minden csoporthoz. Azon jelölteket, amik a minimum gyakorisági küszöb alattiak, elhagyjuk. Ugyan nem minden kutatás követi az előbb bemutatott apriorisztikus stratégiát (pl.: maximális csoport minták [16], csoport minták sűrűség alapján [14]), az általános megközelítés még mindig a legnépszerűbb. Az általános megközelítések közül a legjelentősebb eljárások a Co-Location Miner (csoportosulás bányász)[11], Joinless (kapcsolat nélküli)[15] és az icpi-fa eljárás jelenlegi állapota [13]. A következőkben röviden ismertetjük az algoritmus mögötti ötletet. Kezdetben minden térbeli tulajdonság egy elemű csoportként van értelmezve. A következő lépésben két elemű jelölteket alkotunk belőle az apriorisztikus stratégiával. Ahhoz hogy kiszámíthassuk a gyakoriságukat, szükség van a példányaik listájára. Az icpi-fa eljárásban a csillag szomszédság fogalmát (eredetileg [15]-ben bemutatott) alkalmazzuk. D4: Minden objektumra a térben, az olyan szomszédok listáját, amelyek térbeli tulajdonságai nagyobbak, mint az adott objektumé, csillag szomszédságnak nevezzük. Ezt az információt tároljuk icpi-fa formájában. A gyökér minden gyermeke egy részfa, amely egy bizonyos térbeli tulajdonság példányainak szomszédjait tárolja. A részfák a szomszédok térbeli tulajdonságait tároló csúcsokból, és a szomszéd példányoknak megfelelő levelekből áll. Egy példa adathalmazt és a hozzátartozó icpi-fát az 1. ábrán láthatjuk. Például A2 csillag szomszédsága B1, B3, C1, C3 példányokból áll, melyet egy részfa szimbolizál az A csúcs alatt az icpi-fában. Egy jelölt csoport példányainak meghatározásához, pl. {B, C}-hez könnyen le tudjuk olvasni B példányainak összes C tulajdonságú szomszédját (B2, C2 és B3, C3). 4
5 2013. november Kapcsolódó munkák Az algoritmus n-dik lépésében n méretű jelöltek jönnek létre. n = 2-re minden a fából generált példány egy csoport (D1). n > 2-re a következő eljárással generáljuk a csoportok példányait: hogy beazonosítsuk az n méretű csoport jelöltek példányait, a példányok n-1-dik lépésbeli halmazát használjuk. Minden n méretű jelölt, annak az n-1 méretű csoportnak a kibővítése, amely túlnyomó mértékben tartalmazza az első n-1 tulajdonságot a jelöltből. Csak a közös szomszédokat használhatjuk minden csoport bővítésére. Például, adott jelölt {A, B, C}-re vegyük egymás után a példányokat {A, B} csoportból, pl. {A2, B3} példány. Megpróbáljuk kibővíteni C-beli példányokkal. Hogy megkapjuk a csoport példányait {A, B, C} jelöltnek, keressük azon C típusú példányokat, amelyek szomszédjai A2-nek és B3-nak is egyszerre. A kapott icpi-fát felhasználva láthatjuk, hogy A2- nek szomszédjai C1 és C3, míg B3-nak csak C3 a szomszédja. Ezért az egyetlen közös szomszéd C3 és így a jelölt egy új példánya {A2, B3, C3}. Ezt az eljárást ismételjük minden jelöltre. Az icpi-fa eljárás további részleteiért lásd a [13]-as cikket. 3.2 Általános feldolgozás a GPU-n A GPU a számítási feladatokat ún. kernelek formájában kapja. D5: A kernel olyan feladat, amely műveletek sorozatából áll, amiket több konkurens szálon kell végrehajtani. A szálakat a programozó azonos méretű blokkokra osztja. D6: A blokk egy 1, 2 vagy 3 dimenziós tömb legfeljebb 1024 szállal (vagy 512-vel, a grafikus kártya architektúrájától függően), ahol minden egyes szálat egyedileg azonosíthatunk a tömbben elfoglalt helyével. A blokkok halmaza egy ún. számítási hálót alkot. A szálak egy blokkon belül úgy kommunikálnak, hogy ugyanazt a részét használják az ún. megosztott memóriának, amely fizikailag a csippen található, ezért nagyon gyors. Más blokkbeli szálakkal a kommunikáció a grafikus kártya lassú, globális memóriájában történik. Különböző memória típusoknak, különböző hatékonyságú elérési követelménye van. A szálak szinkronizációs lehetőségei korlátozottak. Szálak egy blokkon belül szinkronizálhatóak; bár a globális szinkron is elérhető, de csak költséges megoldással. Egy blokk szálait 32 szálas SIMD csoportokban hajtják végre, amit kötegnek (csomagnak) nevezünk (ezeknek a szálaknak ugyanazt az utasítást kell elvégezniük egyidejűleg = SIMD). A programozónak figyelembe kell vennie mindezeket az alacsony szintű GPU korlátokat, hogy az algoritmus a leghatékonyabb lehessen. Hogy megkönnyítvén a párhuzamos számításokat végző programok készítését (nem feltétlen GPU) számos párhuzamos primitív létezik. A továbbiakban a következőket fogjuk használni: inclusive és exclusive scan, compact, sort, unique, reduce és reduce by key. A legtöbbet ezek közül implementálták GPU-ra is például a Thrust könyvtárban [3]. A mi megvalósításunkban ezt a könyvtárat használjuk majd, bár megírtuk a saját verziónkat is a tömörítő algoritmusra. Alább röviden bemutatjuk a primitíveket. D7: Adott a tömbre az belső vizsgálat (inclusive scan) talál egy olyan b tömböt, amely hossza megegyezik a-éval és minden elemére teljesül: bi=k = 1iai. A külső vizsgálat (exclusive scan) hasonlóan működik, de b minden elemére: bi=k =1i-1ai. Bármilyen asszociatív bináris műveletet használhatunk a summa helyett. D8: A tömörítő algoritmus (compact) adott a tömbből kiveszi azon elemeket, amelyek teljesítenek bizonyos feltétel(eke)t. Leggyakrabban egy további flag tömböt használnak 0-ákkal és 1-esekkel (eltávolít/marad) erre a célra. D9: A rendezés bármely tömböt rendezi. A rendezés történhet további kulcs tömb alapján is. 5
6 2013. november Kapcsolódó munkák D10: Az egyedi algoritmussal (unique) kiválasztjuk az eltérő elemeket egy felhasználó által megadott adat tömbből. A Thrust implementáció megköveteli, hogy a tömb legyen rendezett. D11: A redukáló valamely asszociatív bináris művelettel redukálja a felhasználó által megadott tömböt, pl.: összegzi a tömb minden elemét. A kulcs alapján történő redukció sokkal kifinomultabb verziója a redukálónak. Két adott tömbre, k-ra és v-re, ahol k a kulcsok tömbje, v az értékeké, a redukáló azon elemeket redukálja, melyek kulcsa azonos. A Thrust implementáció megköveteli, hogy az adatok a kulcs alapján rendezve legyenek. 6
7 2013. november A GPU-CM algoritmus 4. A GPU-CM algoritmus A GPU-CM algoritmus felteszi, hogy az icpi-fa már felépült. Erre már léteznek hatékony algoritmusok [13, 15]. Továbbá ez az építő algoritmus csupán apró töredékét teszi ki a teljes adatbányász folyamatnak [4]. 4.1 Adatstruktúrák A [4]-ben bemutatott megoldást követve az icpi-fát hashtáblaként ábrázoljuk. A hashtábla minden eleme egy listát tárol egy adott f1 térbeli tulajdonság példányaival, melyek mind szomszédjai egyazon i példánynak egy másik f2 tulajdonságból. Ez a struktúra a GPU-n a következő képpen néz ki: A példányok szomszéd listái egy memória blokkban foglalnak helyet. Hatékonysági okokból minden listának konstans L hossza van, amely kettő bármely hatványa lehet (32-ig). Ha szomszédok száma kisebb mint L, akkor néhány hely üresen marad. Ezért a memória blokk mérete L-szer a listák száma. A lista minden eleme egy példányt jelöl. Minden tulajdonság példányt 32 bit hosszú szóként ábrázolunk, ahol a legkisebb helyiértékű 16 biten tároljuk a példány számot, a következő 8 biten a tulajdonság számát. A legnagyobb helyiértékű 8 bitet pedig nullákra állítjuk. Az üres listaelemet az FFFFFFFFh hexadecimális számmal jelöljük. Minden lista folytonos L 4 bájtnyi memóriát foglal el. Minden listát rendezünk. Ezt az adatstruktúrát példány szomszéd puffernek nevezzük. Egy hashtáblát két tömbbel ábrázolunk: egy kulcs és egy érték tömbbel. Minden kulcs tárolja az f1 és az f2 tulajdonságok számait és i példány számát is. Ez egy 32 bites szóban van lekódolva, ahol a legkisebb helyiértékű 16 biten i példány számát jegyezzük, a következő 8 biten az f2 tulajdonság azonosítóját, a legnagyobb helyiértékű 8 biten pedig f1-ét. A kulcs tömb minden eleme egy kulcsot tárol, vagy üres (FFFFFFFFh). A nyitott címzéses sémát használjuk a hasításhoz [2]. Az érték tömb, minden a kulcs tömbben található kulcsra, pointereket tartalmaz, ami a megfelelő lista elejére mutat, melyet feljebb leírtunk. Ezt a hashtáblát példány szomszéd hashtáblának nevezzük. A csoport minták bányászása közben az algoritmus eltárolja a minták (vagy minta jelöltek) példányait lista formájában. Hogy felgyorsítsuk egy adott minta példányainak kikeresését, egy másik hashtáblát használunk. Ez a struktúra sokkal bonyolultabb az icpi-fa reprezentálása, és az alábbi módon valósítjuk meg: A tulajdonságok számosságától függően, minden mintát 32 bites szavak sorozatával írunk le, ahol minden bit egy tulajdonságnak felel meg. A minta szavak számát BL-lel jelöljük. Minden mintát egyetlen memória blokkban tárolunk, mely BL-szer a minták száma méretű. Az együtt álló minták bányászása közbeni elérések miatt, a minták nem tudnak egybefüggően helyet foglalni a memóriában. Ehelyett az egymást követő szavak a memóriában, minden minta első szavai, aztán a második szavak, és így tovább. A mintákat lexikografikus sorrendben tároljuk. Ezt a struktúrát minta puffernek nevezzük. A minta példányokat hasonlóan tároljuk egy külön álló memória blokkban. Minden minta példányt 32 bites szavak sorozatával írunk le, ahol minden szó egy tulajdonság példány, ami a feljebb leírt módon néz ki. Következés képpen ennek a memória blokknak a mérete megegyezik az összes minta példány száma szorozva a minta hosszával. A mintákhoz hasonlóan, a memóriában egymást követő részek a minta példányok első, majd a második, és így tovább, szavait tárolják. Egy minta példányai szomszédos helyeket foglalnak el a memóriában, tehát a minta példányok nem folynak egybe. 7
8 2013. november A GPU-CM algoritmus Mintánként a minta példányok lexikografikus sorrendben vannak. Ezt a struktúrát minta példány puffernek hívjuk. Egy hashtábla, amit egy minta példányainak keresésére használunk, két tömbből áll: kulcs és érték tömbből. A kulcs tömbben pointereket tárolunk, ami a megfelelő minta kezdő pozíciójára mutat a minták memória blokkjában, vagy null ha üres. Az érték tömb minden kulcshoz egy rekordot tárol, ami tartalmazza a minta példányok számát, a minta gyakoriságát és egy pointert az első minta példány első szavára a minta példányok memória blokkjában. Nyitott címzési sémát használunk a hasításra. Ezt a minta hashtáblának nevezzük. Észrevehetjük, hogy a minta hashtábla kulcs tömbje tárolhatná akár a mintákat is, ahelyett, hogy mintákra mutató pointereket tárol. A jelenlegi megoldást az atomi beszúrások miatt használjuk. Általában a [2]-ben bemutatott megoldást követjük. Ezt a megoldást az összehasonlítás és csere sémára alapozzuk (sajnos az atomiccas CUDA függvény csak 32 vagy 64 bites szavakon képes végre hajtani az összehasonlítás és csere -t). 4.2 A bányászat indítása A bányászat a kezdeti icpi-fa olvasásával kezdődik, és felépítjük az icpi-fa hashtábláját. Ezután a példány szomszéd puffer elkészítése következik. További adatok mint például a tulajdonságok példányainak száma is ekkor számítódik. Sőt, egy ideiglenes tömbben eltároljuk az összes példány szomszéd hashtáblájának kulcsait és értékeit (pointerek listákra). Végül az összes ilyen kulcs, érték párt párhuzamosan beillesztjük a példány szomszéd hashtáblába. A példány szomszéd puffer és hashtábla felépítése után a minta puffer, a minta példány puffer és a minta hashtábla készül el 1 hosszú mintákra. Mivel párhuzamos algoritmust írtunk ezekre a lépésekre, eltekintünk a részletektől, a feldolgozási ideje ennek a lépésnek elhanyagolható. 4.3 Jelöltek generálása - minta illesztés Az n méretű jelöltek generálása felhasználja az n-1 méretű minták pufferét. Mivel a minta puffert lexikografikus sorrendben tároljuk, minden n-1 méretű minta, amit beilleszthetünk egy n méretű mintába, sok egymást követő, illeszthető minták együtteseit alkotják. Ezeket az együtteseket illeszkedési csoportnak nevezzük. Az algoritmus utolsó lépésében az illeszkedési csoportokat eredmény csoportokká konvertáljuk. Egy eredmény csoport több egymást követő minta csoportja, melyet egy illeszkedési csoporton belüli összes minta illesztésével kapunk. A csoportok sorrendjét megtartja, tehát adott A és B illeszkedési csoport, ha A megelőzi B-t az input minta pufferen, akkor a megfelelő eredmény csoportok is így követik egymást az output minta pufferen (kivéve ha az illeszkedési csoport csak egy mintát tartalmaz, mert ekkor ez nem hoz létre illeszkedési eredményt). Ha mintákat az eredmény csoporton belül lexikografikusan sorba rendezzük, akkor ez a tulajdonság biztosítja az eredmény minta puffer teljes rendezettségét. A minta illesztési algoritmus sok egymást követő lépésből áll, de az egyes lépések párhuzamos műveleteket tartalmazhatnak. Az első lépésben azonosítani kell az illeszkedési csoportokat, meg kell találni a számukat (legyen ), ki kell számítani a méretüket és a hozzájuk tartozó eredmény csoport méretét (kettes alapú hatványok). Sok fontos tömb jön létre: groupsizes: egy hosszú tömb, ami az illeszkedési csoportok méreteit tárolja. 8
9 2013. november A GPU-CM algoritmus joincounts: egy hosszú tömb, ami az illeszkedési csoportokhoz tartozó eredmény csoportok méreteit tárolja. positions: egy hosszú tömb, ami minden illeszkedési csoporthoz számon tartja az utolsó mintája input minta pufferbeli indexét. scannedjoincounts: egy hosszú tömb, ami a joincounts tömbön végre hajtott külső vizsgálat eredményét tárolja. A következő lépésekben egy további segéd tömböt, scannedjoinflags, számolunk, aminek a hossza az eredmény minták számával egyezik meg ( ). A kapott tömbben, minden mintára egy eredmény csoportból, tároljuk a hozzátartozó illeszkedési csoport referencia számát. Az utolsó lépésben alakul ki a végső minta illesztés. Minden illeszkedési csoportot eredmény csoporttá alakítunk. Először létre hozunk egy BL méretű minta puffert (BL a minta kódolására használt 32 bites szavak száma). Ez után szálat indítunk. Minden szál alapja a scannedjoinflags tömb, ami meghatározza a megfelelő illeszkedési csoportok referencia számát. Ezen értékek segítségével a szál meg tudja határozni a scannedjoincounts megfelelő pozíciójáról, hogy a hozzátartozó eredmény csoport hol kell kezdődjön az eredmény minta pufferben. A szál kiszámolja a globális szám és a kapott pozíció különbségét a hozzátartozó eredmény csoporton belüli elhelyezkedés, pos, meghatározásához. Ezt a számot aztán ketté bontjuk a megfelelő illeszkedési blokkon belül két sorozat számaivá, az alábbi formulával: és, ahol bs a megfelelő illeszkedési csoport mérete a groupsizes tömbből, jc pedig a megfelelő eredmény csoport mérete a joincounts tömbből. A képleteknek két feladata van: (1) egy szál pozícióját a hozzátartozó eredmény csoporton belül, szétbontja két minta kombinációjára a megfelelő illeszkedési csoportból, (2) az illesztett mintákat lexikografikusan tárolja az eredmény csoportban. A és pozíciókat átszámítjuk globális pozíciókká az input minta pufferen, úgy, hogy hozzájuk adjuk a megfelelő számot a positions tömbből (+1). Végül a szál összeilleszti a két mintát bitenkénti VAGY művelettel a minták minden egyes szavára és az eredmény eltárolja az eredmény minta pufferben. 4.4 Jelöltek generálása - Jelöltek metszése Minden illeszkedéssel kapott mintát meg kell vizsgálni, hogy minden részmintájuk gyakori-e vagy sem. Ehhez az n hosszú minta vizsgálathoz felhasználjuk az előző algoritmusban kapott minta puffert és az n-1 hosszú gyakori minták minta hashtábláját. Tegyük fel, hogy mintát kaptunk a minták illesztésével. Először foglalunk méretű helyet a memóriában egy flags tömbnek, aztán indítunk ugyanennyi szálat. Minden szál kiveszi a neki megfelelő mintát az input minta pufferből és egymásután legenerálja az n darab n-1 hosszú részmintát belőle. Minden részmintát ellenőrzünk, hogy létezik-e minta hashtáblában. Ha egy minta minden részmintája megtalálható a minta hashtáblában, akkor a szál egy 1-est ír a flags tömb megfelelő pozíciójára, egyébként pedig 0-t. A párhuzamos tömörítő algoritmus második lépéseként eltávolítjuk az összes olyan mintát, aminek megfelelő helyen a flags tömbben nem 1 szerepel. Mivel a párhuzamos tömörítő nem változtatja meg a minták sorrendjét, a lexikografikus sorrend megmarad. Az így kapott minta puffer lesz a minta jelölt puffer. 9
10 2013. november A GPU-CM algoritmus 4.5 Példányok generálása Most bemutatunk egy algoritmust, amely a legidőigényesebb lépése az egybefüggő minták felismerésének - a példányok generálása. Bevezetünk fontos elnevezéseket: legyen a jelölt minták száma. Bármely n-1 hosszú mintát, amely prefixe az n hosszú jelöltnek, jelölt prefix mintának nevezünk. Ennek példányait jelölt prefix minta példánynak nevezzük. A minta jelölt utolsó tulajdonságát bővítő tulajdonságnak nevezzük. Az algoritmus alapötlete a következő megfigyelésre támaszkodik. Az alap icpi-fa algoritmusban egy C jelölt bővítő tulajdonsággal a következő képpen található meg: (1) kigyűjtjük az összes jelölt prefix példányt, (2) minden Pi jelöltre keressük az tulajdonságú szomszédjainak listáját az icpi-fából, (3) közös elemek keresése ezeken a listákon. Mivel a jelölt prefix példányok feldolgozása egymástól független, ezért ez párhuzamosítható. Az algoritmusunk minden jelölt minta prefix példányát párhuzamosan dolgozza fel. Legyen a feldolgozott prefix példányok száma. Vegyük észre, hogy egy jelölt prefix példányt többször is feldolgozhatunk, ha az több jelöltnek (különböző bővítő tulajdonsággal) is prefixe. Minden jelölt prefix példány két számmal (egy lokálissal és egy globálissal) rendelkezhet. A lokális jelölt prefix példány szám, egyetlen jelölt minta jelölt prefix példányainak csoportján belüli számát jelöli. A globális szám, az összes jelölt prefix példány között elfoglalt számát jelenti. Bemenetként az algoritmus kap egy, az előző lépesben megkapott, jelölt minta puffert, amely n hosszú mintákat tartalmaz, egy minta puffert, egy minta példány puffert, egy minta hashtáblát a gyakori n-1 hosszú mintákkal illetve egy példány szomszéd puffert és egy példány szomszéd hashtáblát. A példány generáló algoritmusnak szüksége van segéd tömbökre, amiket szintén tudunk párhuzamosan számítani: listpointers: egy hosszú tömb, ami minden jelölt mintához egy pointert tárol, ami az első jelölt prefix példányra mutat a minta példány pufferben. instancecounts: egy hosszú tömb, ami minden jelölt mintához tárolja a jelölt prefix példányok számát (mennyiség). scannedinstancecounts: egy párhuzamos belső vizsgálat eredménye az instancecounts tömbön. correspondingpatterns és extendingfeatures: egy hosszú tömb, ami melyek összekapcsolják a globális jelölt prefix példány számot a megfelelő jelölt minta számával és a bővítő tulajdonságával, mindkét tömb rendezve van a hozzátartozó minta szerint. Az első lépésben minden jelölt prefix példányhoz legeneráljunk a közös tulajdonságú példányok listáját. Két tömböt hozunk létre: (1) listsizes hosszú tömböt, amely a szomszéd listák hosszait tárolja, (2) newneighbours L hosszú tömböt (L a szomszéd lista hossza a példány szomszéd pufferben), amiben a szomszéd listákat tároljuk. A newneighbours tömb memóriabeli elhelyezkedése és struktúrája megegyezik a példány szomszéd pufferével. Ehhez a lépéshez L szálat indítunk. A megfelelő L szál minden csoportja együtt működik egyetlen szomszéd lista legenerálásához a newneighbours tömbbe. Minden szál az indulásakor meghatározza (1) a jelölt prefix példány globális számát (ugyanazt minden L egymást követő szálra), (2) a megfelelő pozicíót a szomszéd listában, (3) a megfelelő jelölt minta számát p, a correspondingpattern tömbből (4) és a bővítő tulajdonságot fe, az extendingfeatures tömbből. Ezután c alapján minden szál meghatározza a lokális jelölt prefix példány számot. Ezt úgy kapjuk, hogy c-ből kivonjuk a scannedinstancecount[p-1]-et. Ha p = 0, akkor ez a szám a c lesz. Továbbá minden szál lekérdezi a neki megfelelő jelölt mintához, p, tartozó jelölt prefix példányok első elemére mutató pointert a 10
11 2013. november A GPU-CM algoritmus listpointers tömbből. A lokális jelölt prefix példány szám és a pointer alapján minden szál kiszámítja a feldolgozandó jelölt prefix példány első tulajdonság példány címét. Minden L szál szinkronban keresi az tulajdonságú szomszédok listáinak metszetét, minden olyan tulajdonság példányra, amely része a feldolgozott jelölt prefix példánynak. Az egész eljárás majdnem csak a gyors megosztott memóriát használja a GPU-n. Amikor a szálak végeznek a számításokkal az eredményeiket bemásolják a newneighbours tömbbe és a kapott listák hosszát a listsizes tömbbe. Miután megtaláltuk a szomszéd listákat, az algoritmus egy módosított tömörítést végez, amely eltávolítja az üres elemeket a kapott listából, de a megmaradt elemekből előáll a teljes jelölt minta példány, tehát a megfelelő jelölt prefix példány kibővítve a megfelelő elemmel. Az eredményül kapott tömb struktúrája és tulajdonságai megegyeznek a minta példány pufferével. 4.6 A gyakoriság számítása A gyakoriság számításának alapjául több klasszikus párhuzamos algoritmus szolgál, mint például a rendezés, kulcs alapján történő redukció és az egyedi algoritmus (lásd 2. bekezdés). Az eljárás egy érték kiszámításával kezdődik, minden egyes jelölt minta példányhoz tartozó tulajdonság példányra, amely a jelölt példányon belüli pozíciójából, a jelölt minta számából és a példány azonosítóból áll. Ezen értékeket tartalmazó tömböt ezután lexikografikusan rendezzük. Következő lépésként a nem egyedi értékeket távolítjuk el a tömbből az egyedi algoritmus segítségével. Az így kapott tömb minden jelölt mintához minden példányának pozícióján egy egyedi, tulajdonság példányaiból álló listát tartalmaz. Ezután a kapott tömb minden értékből párhuzamosan eltávolítjuk a tulajdonság példány számot (bár a tulajdonság példány azonosítója megmarad). Az így kapott tömbön alkalmazzuk a kulcs alapján történő redukciót, hogy megszámoljuk az eltérő értékeket (a tömböt kulcs tömbnek tekintjük és az értékek 1-esek). A kapott eredmény minden jelölt minta minden egyes pozíciójához eltárolja az egyedi tulajdonság példányok számát, amelyek megjelenek a jelölt minta példányokban. Ezen értékekre alapozva, kiszámítjuk minden jelölt minta részvételi rátáját és gyakoriságát (párhuzamosan). A nem gyakori jelölt mintákat és a hozzájuk tartozó példányokat eltávolítjuk egy tömörítő algoritmus segítségével. Csak a gyakori minták és a hozzájuk tartozó példányok maradnak (a minta pufferben és a minta példány pufferben). Végül egy új minta hashtáblát építünk (párhuzamosan). Ezek a struktúrák alkotják az együtt álló mintákat felfedező algoritmus következő iterációjának bemenetét. 11
12 2013. november Eredmények 5. Eredmények 5.1 Megvalósítás és Tesztelési környezetek A kutatás céljából két megvalósítása készült el az icpi-fa alapú algoritmusnak: egy GPU-ra és egy CPU-ra. A megoldások GPU-s verzióját a 4. pont írja le részletesen. A CPU verzió a 4.1 pontban leírt adatstruktúrákhoz hasonlóakat használ, de a számítások párhuzamosítása másképp valósul meg. Az SIMD megközelítés helyett, a többféle utasítás többféle adatra (multiple instructions multiple data - MIMD) megközelítést alkalmazták. A CPU-ra írt megvalósítás az OpenMP-t [6] használja a párhuzamosításhoz a példány generációnál és a gyakoriság kiszámításánál, több magos CPU-val. Az implementáció annyi szálat indít, ahány magos a CPU és a számítási feladatokat elosztja az indított szálak között. Az L paraméter (a példány szomszéd pufferbeli listák hossza) mindkét megoldásnál 8-ra lett beállítva. A kísérleteket Core2 Duo 2,1 Ghz-es CPU-val 8GB RAM-mal (CPU implementáció két szállal) és GeForce 580GTX grafikus kártyával 1,5GB RAM-mal rendelkező gépen, Windows 7 operációs rendszer alatt futtatták. 5.2 Adathalmazok és kísérletek Hogy felbecsülhessék a GPU-ra adott megoldást, 10 mesterséges adathalmazt hoztak létre a teszteléshez. A [15]-ben bemutatott mesterséges generátorhoz hasonlóval készültek ezek a halmazok. Az így kapott objektumok száma 25 ezer és 120 ezer közötti, a térbeli tulajdonságok száma 30-90, és százaléka a teljes példány állománynak zajos volt. Két féle adathalmazt használtak: tömöret és ritkát. A tömör adathalmazokat a térbeli szerkezet minden dimenziója mentén való tízszeres csökkentéssel érték el, míg az objektumok számát megtartották (a ritka adathalmazt egy hálóra generálták). 3 kísérlet sorozatot vezettek le. Minden alkalommal mérték a gyorsulást, tehát a CPU és a GPU implementáció végrehajtási idejének a rátáját. Az első sorozatban azt vizsgálták, hogy a minimum gyakorisági küszöb növelésével a gyorsulás miként változik a tömör illetve a ritka adathalmazokon. A második sorozatban a szomszédsági kapcsolatok távolsági küszöbének befolyását vizsgálták két különböző szintű minimum gyakorisági értékre. Végül megnézték miként változik a gyorsulás a bemeneti adathalmaz méretének növelésével. 12
13 2013. november Eredmények 5.3 Az eredmények értékelése A 2(a) ábrán láthatjuk az első kísérlet eredményét, amely a minimum gyakorisági paraméter befolyását vizsgálta. Két érdekes dolgot lehet észrevenni. Először is az adathalmaz sűrűsége nem befolyásolja a gyorsulást, tehát míg a futási idő ugyan változik, a GPU verzió arányaiban körülbelül ugyanannyival gyorsabb a CPU verziónál minden sűrűség esetében ugyanarra a minimum gyakorisági küszöbre. Másodszor, a gyorsulás monoton csökken a minimum gyakoriság növelésével. A kialakított teszt környezetben a 0,2-re állított minimum gyakoriságra kapott gyorsulás majdnem kétszerese a 0,6-ra állított futtatás gyorsulásának. Ez azért van mert a megnövelt gyakorisági küszöbre kevesebb jelölt mintát kapunk és ezzel kevesebb jelölt prefix példányt dolgoz fel az algoritmus. Ez azt jelenti, hogy kevesebb szál indul. A kevesebb szál annyit tesz, mint (1) a memória átvitel nem lesz elfedhető, (2) a GPU multiprocesszora nem biztos, hogy teljes mértében ki lesz használva, (3) a példány generálás lépése kevesebb időbe kerül mint az algoritmus más lépései (mivel korábban az elsődleges szempont ennek a lépésnek az optimalizálása volt, ez okozhatja a megfigyelt gyorsulás csökkenést). 13
14 2013. november Eredmények A 2(b) ábrán láthatjuk a második kísérlet eredményét, amely a szomszédsági kapcsolatok távolsági küszöbének befolyását tesztelte. Észrevehetjük, hogy minél nagyobb a távolsági küszöb annál nagyobb a gyorsulás. Ennek a jelenségnek a magyarázata hasonló az előző kísérletben tett magyarázathoz. Nagyobb távolsági küszöb esetén minden tulajdonság példánynak több szomszédja lesz. Ennek következménye, hogy a szomszéd listák a példány szomszéd pufferben hosszabbak lesznek és több példány jön létre a példány generálás során. Ahogy azt az előző bekezdésben bemutattuk, minél több példányunk van, annál nagyobb lesz a gyorsulás. Az ábrán látszik, hogy két minimum gyakoriságra végezték el a kísérletet: 0,2-re és 0,6-ra. A hozzájuk tartozó grafikon megerősíti a korábbi megfigyelést, miszerint ha a minimum gyakoriság kisebb, akkor a gyorsulás nagyobb. Sőt, az előzőekhez képest, a gyorsulás itt is kétszeres lesz a két küszöb között. A 2(c) ábrán láthatjuk a harmadik kísérlet eredményeit, amely a tulajdonság példányok (objektumok) számának befolyását vizsgálta a gyorsulásra. Meglepő, hogy a gyorsulás lineárisan nő, 14
15 2013. november Eredmények ha az objektumok számát növeljük. Természetesen nyilvánvaló, hogy a gyorsulás nem növekedhet a végtelenbe. Ugyanez a görbe még több példányra aszimptotikusan közelít a maximálisan elérhető sebesség gyorsuláshoz, ami függ a GPU és a CPU relatív teljesítményétől. A monotonitás a korábbiakhoz hasonlóan magyarázható. A több objektum több minta példányhoz vezet és így több jelölt prefix példányhoz. Minél nagyobb az ilyen példányok száma, annál több szálat indít az algoritmus, ezzel jobban kihasználva a GPU által biztosított lehetőségeket. Sajnos a limitált GPU memória miatt a kísérletek nem tudták elérni a maximális gyorsulást. Az algoritmus memória igénye függ az adatok és a lekérdezés tulajdonságaitól, mint például az objektumok számától, a térbeli tulajdonságok számától, az adatok sűrűségétől és a minimum gyakoriságtól. A 1,5GB memóriájú GPU 120 ezer objektumot tartalmazó tömör adathalmazra, 90 térbeli tulajdonsággal és 0,2-es minimum gyakorisághoz volt elegendő. 15
16 2013. november Összefoglalás és további lehetőségek 6. Összefoglalás és további lehetőségek Az eddigiekben bemutatott algoritmus korszerű műveleteket alkalmaz az együtt álló minták felfedezésére párhuzamosítva a GPU-n. Összehasonlítva ezt a megoldást a több szálas, CPU feldolgozású implementációval, láthatjuk, hogy a GPU-val nagyságrendekkel jobb gyorsulás érhető el, mint a CPU-s verzióval. Bár az eredmények nagyon bíztatóak, még sok munka van hátra. A fő probléma a grafikus kártya limitált memóriája. Ez a probléma kétféle képpen kezelhető. Cikk készítőinek első terve módosítani az algoritmust, hogy változó hosszú szomszéd listákkal tudjon számolni. A jelenlegi megoldás pazarolja mind a memóriát és mind a számítási kapacitást (sok szál üres helyeket számol ezeken a listákon). Második tervük megvalósítani az [5] cikkben bemutatott megoldásokat, melyek a korlátozott memóriával való együtt álló minták bányászására vannak kiélezve. Továbbá tervezik egy hatékonyabb algoritmus megalkotását az icpi-fa felépítésére GPU-n (jelenleg a faépítése a CPU-n zajlik). Végül, bonyolultabb problémák megoldását fontolgatják a maximális együtt álló minták felfedezésére a GPU segítségével. 16
17 2013. november 25 Hivatkozások Hivatkozások 1. Agrawal, R., Srikant, R.: Fast Algorithms for Mining Association Rules in Large Databases. In: Proceeding of the 20th International Conference on Very Large Databases. pp Morgan Kaufmann Publishers Inc., San Fracisco (1994) 2. Alcantara, D.A.F.: Efficient Hash Tables on the GPU. Ph.D. thesis, University of California, Davis (2011) 3. Bell, N., Hoberock, J.: GPU Computing Gems: Jade edition, chap. Thrust: A Productivity-oriented Library for CUDA, pp Morgan-Kaufmann (2011) 4. Boinski, P., Zakrzewicz, M.: Collocation Pattern Mining in Limited Memory Environment Using Materialized icpi-tree. In: Cuzzocrea, A., Dayal, U. (eds.) Datawarehousing and Knowledge Discovery, Lecture Notes in Computer Science, vol.7448, pp Springer Berlin Heidelberg (2012) 5. Boinski, P., Zakrzewicz, M.: Partitioning Approach to Collocation Pattern Mining in Limited Memory Environment Using Materialized icpi-tree. In: Morzy, T., Haerder, T., Wrembel, R. (eds.) Advances in Databases and Informataion Systems, Advances in Intelligent Systems and Computing, vol. 186, pp Springer Berlin Heidelberg (2013), 6. Chapman, B., Jost, G., Pas, R.v.d.: Using OpenMP: Portable Shared Memory Parallel Programing (Scinetific and Engineering Computation). The MIT Press (2007) 7. Farooqui, N., Kerr, A., Diamos, G., Yalamanchili, S., Schwan, K.: A Framework for Dynamically Instrumenting GPU Compute Applications within GPU Ocelot. In: Proceeding of the 4th Workshop on General Processing on Graphics Processing Unit. pp. 9:1-9:9. GPGPU-4, ACM, New York, NY, USA (2011) 8. Fayyad, U., Piatetsky-Shapiro, G., Smyth, P.: From Data Mining to Knowledge Discovery in Databases. AI Magazine 17, (1996) 9. Khronos group: The OpenCL Specification Version 1.2 (2012) 10. NVIDIA Corporation: Nvidia CUDA programming guide (2012) 11. Shekhar, S., Huang, Y.: Discovering Spatial Co-location Patterns: A Summary of Results. In: SSTD pp (2001) 12. Shekhar, S., Huang, Y.: The multi-resolution co-location miner: A new algorithm to find co-location patterns in spatial dataset. Tech. Rep , University of Minesota (2002) 13. Wang, L., Bao, Y., Lu, J.: Efficient Discovery of Spatial Co-Location Patterns Using the icpi-tree. The Open Information System Journal 3(2), (2009) 14. Xiao, X., Xie, X., Luo, Q., Ma, W.Y.: Density Based Co-Location Pattern Discovery. In: Proceeding of the 16th ACM SIGSPATIAL international conference on Advances in geographic information systems. pp. 29:1-29:10. GIS 08, ACM, New York, NY, USA (2008), Yoo, J.S., Shekhar, S., Celik, M.: A Join-Less Approach for Co-Location Pattern Mining: A Summary of Results. In: Proceedings of the IEEE International Conference on Data Mining. pp Washington (2005) 16. Yoo, J., Bow, M.: Mining Maximal Co-location Event Sets. In: Huang, J., Cao, L., Srivastava, J. (eds.) Advances in Knowledge Discovery and Data Mining, Lecture Notes in Computer Science, vol. 6643, pp Springer Berlin Heidelberg (2011), 17
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
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
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:
Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek
Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek Tömb Ugyanolyan típusú elemeket tárol A mérete előre definiált kell legyen és nem lehet megváltoztatni futás során Legyen n a tömb mérete. Ekkor:
file:///d:/okt/ad/jegyzet/ad1/b+fa.html
1 / 5 2016. 11. 30. 12:58 B+ fák CSci 340: Database & Web systems Home Syllabus Readings Assignments Tests Links Computer Science Hendrix College Az alábbiakban Dr. Carl Burch B+-trees című Internetes
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
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
Shannon és Huffman kód konstrukció tetszőleges. véges test felett
1 Shannon és Huffman kód konstrukció tetszőleges véges test felett Mire is jók ezek a kódolások? A szabványos karakterkódolások (pl. UTF-8, ISO-8859 ) általában 8 biten tárolnak egy-egy karaktert. Ha tudjuk,
Általános algoritmustervezési módszerek
Általános algoritmustervezési módszerek Ebben a részben arra mutatunk példát, hogy miként használhatóak olyan általános algoritmustervezési módszerek mint a dinamikus programozás és a korlátozás és szétválasztás
10. előadás Speciális többágú fák
10. előadás Adatszerkezetek és algoritmusok előadás 2018. április 17., és Debreceni Egyetem Informatikai Kar 10.1 A többágú fák kezelésére nincsenek általános elvek, implementációjuk elsősorban alkalmazásfüggő.
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
Struktúra nélküli adatszerkezetek
Struktúra nélküli adatszerkezetek Homogén adatszerkezetek (minden adatelem azonos típusú) osztályozása Struktúra nélküli (Nincs kapcsolat az adatelemek között.) Halmaz Multihalmaz Asszociatív 20:24 1 A
Algoritmuselmélet 2. előadás
Algoritmuselmélet 2. előadás Katona Gyula Y. Budapesti Műszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz. I. B. 137/b kiskat@cs.bme.hu 2002 Február 12. ALGORITMUSELMÉLET 2. ELŐADÁS 1 Buborék-rendezés
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
Rendezések. A rendezési probléma: Bemenet: Kimenet: n számot tartalmazó (a 1,a 2,,a n ) sorozat
9. Előadás Rendezések A rendezési probléma: Bemenet: n számot tartalmazó (a 1,a 2,,a n ) sorozat Kimenet: a bemenő sorozat olyan (a 1, a 2,,a n ) permutációja, hogy a 1 a 2 a n 2 Rendezések Általánosabban:
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
Adaptív dinamikus szegmentálás idősorok indexeléséhez
Adaptív dinamikus szegmentálás idősorok indexeléséhez IPM-08irAREAE kurzus cikkfeldolgozás Balassi Márton 1 Englert Péter 1 Tömösy Péter 1 1 Eötvös Loránd Tudományegyetem Informatikai Kar 2013. november
Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása
Tömbök kezelése Példa: Vonalkód ellenőrzőjegyének kiszámítása A számokkal jellemzett adatok, pl. személyi szám, adószám, taj-szám, vonalkód, bankszámlaszám esetében az elírásból származó hibát ún. ellenőrző
Egyirányban láncolt lista
Egyirányban láncolt lista A tárhely (listaelem) az adatelem értékén kívül egy mutatót tartalmaz, amely a következő listaelem címét tartalmazza. A láncolt lista első elemének címét egy, a láncszerkezeten
Adatszerkezetek. Nevezetes algoritmusok (Keresések, rendezések)
Adatszerkezetek Nevezetes algoritmusok (Keresések, rendezések) Keresések A probléma általános megfogalmazása: Adott egy N elemű sorozat, keressük meg azt az elemet (határozzuk meg a helyét a sorozatban),
Az MTA Cloud a tudományos alkalmazások támogatására. Kacsuk Péter MTA SZTAKI
Az MTA Cloud a tudományos alkalmazások támogatására Kacsuk Péter MTA SZTAKI Kacsuk.Peter@sztaki.mta.hu Tudományos alkalmazások és skálázhatóság Kétféle skálázhatóság: o Vertikális: dinamikusan változik
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
Gyakori elemhalmazok kinyerése
Gyakori elemhalmazok kinyerése Balambér Dávid Budapesti M szaki és Gazdaságtudományi Egyetem Villamosmérnöki és Informatikai Kar Számítástudomány szakirány 2011 március 11. Balambér Dávid (BME) Gyakori
R ++ -tree: an efficient spatial access method for highly redundant point data - Martin Šumák, Peter Gurský
R ++ -tree: an efficient spatial access method for highly redundant point data - Martin Šumák, Peter Gurský Recenzió: Németh Boldizsár Térbeli indexelés Az adatszerkezetek alapvetően fontos feladata, hogy
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
Ellenőrző kérdések. 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t
Ellenőrző kérdések 2. Kis dolgozat kérdései 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t 37. Ha t szintű indexet használunk,
A CUDA előnyei: - Elszórt memória olvasás (az adatok a memória bármely területéről olvashatóak) PC-Vilag.hu CUDA, a jövő technológiája?!
A CUDA (Compute Unified Device Architecture) egy párhuzamos számításokat használó architektúra, amelyet az NVIDIA fejlesztett ki. A CUDA valójában egy számoló egység az NVIDIA GPU-n (Graphic Processing
Gyakori elemhalmazok
Gyakori elemhalmazok Bankó Tibor June 9, 2010 Bankó Tibor (BME) Gyakori elemhalmazok June 9, 2010 1 / 26 Tartalom 1 Bevezetés 2 Az algoritmusok Egy speciális eset Apriori Eclat FP-Growth 3 Az algoritmusok
Ö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,
Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája
Adatszerkezetek Összetett adattípus Meghatározói: A felvehető értékek halmaza Az értékhalmaz struktúrája Az ábrázolás módja Műveletei Adatszerkezet fogalma Direkt szorzat Minden eleme a T i halmazokból
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
22. GRÁFOK ÁBRÁZOLÁSA
22. GRÁFOK ÁBRÁZOLÁSA A megoldandó feladatok, problémák modellezése során sokszor gráfokat alkalmazunk. A gráf fogalmát a matematikából ismertnek vehetjük. A modellezés során a gráfok több változata is
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
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,
15. tétel. Adatszerkezetek és algoritmusok vizsga Frissült: 2013. január 30.
15. tétel Adatszerkezetek és algoritmusok vizsga Frissült: 2013. január 30. Edényrendezés Tegyük fel, hogy tudjuk, hogy a bemenő elemek (A[1..n] elemei) egy m elemű U halmazból kerülnek ki, pl. " A[i]-re
Adatszerkezetek 1. előadás
Adatszerkezetek 1. előadás Irodalom: Lipschutz: Adatszerkezetek Morvay, Sebők: Számítógépes adatkezelés Cormen, Leiserson, Rives, Stein: Új algoritmusok http://it.inf.unideb.hu/~halasz http://it.inf.unideb.hu/adatszerk
B-fa. Felépítés, alapvető műveletek. Programozás II. előadás. Szénási Sándor.
B-fa Felépítés, alapvető műveletek előadás http://nik.uni-obuda.hu/prog2 Szénási Sándor szenasi.sandor@nik.uni-obuda.hu Óbudai Egyetem,Neumann János Informatikai Kar B-fa Felépítése Beszúrás művelete Törlé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:
Algoritmuselmélet. 2-3 fák. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 8.
Algoritmuselmélet 2-3 fák Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem 8. előadás Katona Gyula Y. (BME SZIT) Algoritmuselmélet 8. előadás
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
Adatbáziskezelés. Indexek, normalizálás NZS 1
Adatbáziskezelés Indexek, normalizálás NZS 1 Fáljszervezés módjai Soros elérés: a rekordok a fájlban tetszőleges sorrendben, például a felvitel sorrendjében helyezkednek el. A rekord azonosítója vagyis
I. LABOR -Mesterséges neuron
I. LABOR -Mesterséges neuron A GYAKORLAT CÉLJA: A mesterséges neuron struktúrájának az ismertetése, neuronhálókkal kapcsolatos elemek, alapfogalmak bemutatása, aktivációs függvénytípusok szemléltetése,
Számítógép architektúra
Budapesti Műszaki Főiskola Regionális Oktatási és Innovációs Központ Székesfehérvár Számítógép architektúra Dr. Seebauer Márta főiskolai tanár seebauer.marta@roik.bmf.hu Irodalmi források Cserny L.: Számítógépek
Rendezések. Összehasonlító rendezések
Rendezések Összehasonlító rendezések Remdezés - Alapfeladat: Egy A nevű N elemű sorozat elemeinek nagyság szerinti sorrendbe rendezése - Feltételezzük: o A sorozat elemei olyanok, amelyekre a >, relációk
Közösség detektálás gráfokban
Közösség detektálás gráfokban Önszervező rendszerek Hegedűs István Célkitűzés: valamilyen objektumok halmaza felett minták, csoportok detektálása csakis az egyedek közötti kapcsolatok struktúrájának a
Felvételi vizsga mintatételsor Informatika írásbeli vizsga
BABEȘ BOLYAI TUDOMÁNYEGYETEM MATEMATIKA ÉS INFORMATIKA KAR A. tételsor (30 pont) Felvételi vizsga mintatételsor Informatika írásbeli vizsga 1. (5p) Egy x biten tárolt egész adattípus (x szigorúan pozitív
Regresszió. Csorba János. Nagyméretű adathalmazok kezelése március 31.
Regresszió Csorba János Nagyméretű adathalmazok kezelése 2010. március 31. A feladat X magyarázó attribútumok halmaza Y magyarázandó attribútumok) Kérdés: f : X -> Y a kapcsolat pár tanítópontban ismert
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
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
Amortizációs költségelemzés
Amortizációs költségelemzés Amennyiben műveleteknek egy M 1,...,M m sorozatának a futási idejét akarjuk meghatározni, akkor egy lehetőség, hogy külön-külön minden egyes művelet futási idejét kifejezzük
Gráfelmélet. I. Előadás jegyzet (2010.szeptember 9.) 1.A gráf fogalma
Készítette: Laczik Sándor János Gráfelmélet I. Előadás jegyzet (2010.szeptember 9.) 1.A gráf fogalma Definíció: a G=(V,E) párt egyszerű gráfnak nevezzük, (V elemeit a gráf csúcsainak/pontjainak,e elemeit
4. Fejezet : Az egész számok (integer) ábrázolása
4. Fejezet : Az egész számok (integer) ábrázolása The Architecture of Computer Hardware and Systems Software: An Information Technology Approach 3. kiadás, Irv Englander John Wiley and Sons 2003 Wilson
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
JAVASLAT A TOP-K ELEMCSERÉK KERESÉSÉRE NAGY ONLINE KÖZÖSSÉGEKBEN
JAVASLAT A TOP-K ELEMCSERÉK KERESÉSÉRE NAGY ONLINE KÖZÖSSÉGEKBEN Supporting Top-k item exchange recommendations in large online communities Barabás Gábor Nagy Dávid Nemes Tamás Probléma Cserekereskedelem
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
SSL elemei. Az SSL illeszkedése az internet protokoll-architektúrájába
SSL 1 SSL elemei Az SSL illeszkedése az internet protokoll-architektúrájába 2 SSL elemei 3 SSL elemei 4 SSL Record protokoll 5 SSL Record protokoll Az SSL Record protokoll üzenet formátuma 6 SSL Record
A 2016/2017 tanévi Országos Középiskolai Tanulmányi Verseny első forduló javítási-értékelési útmutató. INFORMATIKA II. (programozás) kategória
Oktatási Hivatal A 2016/2017 tanévi Országos Középiskolai Tanulmányi Verseny első forduló javítási-értékelési útmutató INFORMATIKA II. (programozás) kategória Kérjük a tisztelt tanár kollégákat, hogy a
5. SOR. Üres: S Sorba: S E S Sorból: S S E Első: S E
5. SOR A sor adatszerkezet is ismerős a mindennapokból, például a várakozási sornak számos előfordulásával van dolgunk, akár emberekről akár tárgyakról (pl. munkadarabokról) legyen szó. A sor adattípus
Utolsó módosítás:
Utolsó módosítás: 2011. 09. 08. 1 A tantárggyal kapcsolatos adminisztratív kérdésekkel Micskei Zoltánt keressétek. 2 3 4 5 6 7 8 9 10 11 12 13 14 Erősen buzzword-fertőzött terület, manapság mindent szeretnek
III. Gráfok. 1. Irányítatlan gráfok:
III. Gráfok 1. Irányítatlan gráfok: Jelölés: G=(X,U), X a csomópontok halmaza, U az élek halmaza X={1,2,3,4,5,6}, U={[1,2], [1,4], [1,6], [2,3], [2,5], [3,4], [3,5], [4,5],[5,6]} Értelmezések: 1. Fokszám:
A továbbiakban Y = {0, 1}, azaz minden szóhoz egy bináris sorozatot rendelünk
1. Kódelmélet Legyen X = {x 1,..., x n } egy véges, nemüres halmaz. X-et ábécének, elemeit betűknek hívjuk. Az X elemeiből képzett v = y 1... y m sorozatokat X feletti szavaknak nevezzük; egy szó hosszán
Tipikus időbeli internetezői profilok nagyméretű webes naplóállományok alapján
Tipikus időbeli internetezői profilok nagyméretű webes naplóállományok alapján Schrádi Tamás schraditamas@aut.bme.hu Automatizálási és Alkalmazott Informatikai Tanszék BME A feladat A webszerverek naplóállományainak
Utolsó módosítás:
Utolsó módosítás: 2012. 09. 06. 1 A tantárggyal kapcsolatos adminisztratív kérdésekkel Micskei Zoltánt keressétek. 2 3 4 5 6 7 8 9 Forrás: Gartner Hype Cycle for Virtualization, 2010, http://premierit.intel.com/docs/doc-5768
A számítástudomány alapjai. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem
A számítástudomány alapjai Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem Bináris keresőfa, kupac Katona Gyula Y. (BME SZIT) A számítástudomány
Térinformatikai adatszerkezetek
Térinformatikai adatszerkezetek 1. Pont Egy többdimenziós pont reprezentálható sokféle módon. A választott reprezentáció függ attól, hogy milyen alkalmazás során akarjuk használni, és milyen típusú műveleteket
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,
A 2017/2018 tanévi Országos Középiskolai Tanulmányi Verseny első fordulójának feladatai. INFORMATIKA II. (programozás) kategória
Oktatási Hivatal A 2017/2018 tanévi Országos Középiskolai Tanulmányi Verseny első fordulójának feladatai 1. feladat: Repülők (20 pont) INFORMATIKA II. (programozás) kategória Ismerünk városok közötti repülőjáratokat.
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
file:///d:/apa/okt/ad/jegyzet/ad1/b+fa.html
1 / 6 2018.01.20. 23:23 B+ fák CSci 340: Database & Web systems Home Syllabus Readings Assignments Tests Links Computer Science Hendrix College Az alábbiakban Dr. Carl Burch B+-trees című Internetes tananyagának
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
Algoritmusok és adatszerkezetek 2.
Algoritmusok és adatszerkezetek 2. Varga Balázs gyakorlata alapján Készítette: Nagy Krisztián 1. gyakorlat Nyílt címzéses hash-elés A nyílt címzésű hash táblákban a láncolással ellentétben egy indexen
Felvételi tematika INFORMATIKA
Felvételi tematika INFORMATIKA 2016 FEJEZETEK 1. Természetes számok feldolgozása számjegyenként. 2. Számsorozatok feldolgozása elemenként. Egydimenziós tömbök. 3. Mátrixok feldolgozása elemenként/soronként/oszloponként.
Formális nyelvek és automaták
Formális nyelvek és automaták Nagy Sára gyakorlatai alapján Készítette: Nagy Krisztián 2. gyakorlat Ismétlés: Megjegyzés: Az ismétlés egy része nem szerepel a dokumentumban, mivel lényegében a teljes 1.
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
Az optimális megoldást adó algoritmusok
Az optimális megoldást adó algoritmusok shop ütemezés esetén Ebben a fejezetben olyan modellekkel foglalkozunk, amelyekben a munkák több műveletből állnak. Speciálisan shop ütemezési problémákat vizsgálunk.
A számítógépek felépítése. A számítógép felépítése
A számítógépek felépítése A számítógépek felépítése A számítógépek felépítése a mai napig is megfelel a Neumann elvnek, vagyis rendelkezik számoló egységgel, tárolóval, perifériákkal. Tápegység 1. Tápegység:
Mit látnak a robotok? Bányai Mihály Matemorfózis, 2017.
Mit látnak a robotok? Bányai Mihály Matemorfózis, 2017. Vizuális feldolgozórendszerek feladatai Mesterséges intelligencia és idegtudomány Mesterséges intelligencia és idegtudomány Párhuzamos problémák
Programozás alapjai II. (7. ea) C++ Speciális adatszerkezetek. Tömbök. Kiegészítő anyag: speciális adatszerkezetek
Programozás alapjai II. (7. ea) C++ Kiegészítő anyag: speciális adatszerkezetek Szeberényi Imre BME IIT M Ű E G Y E T E M 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I. 2016.04.05. - 1
Nemlineáris optimalizálási problémák párhuzamos megoldása grafikus processzorok felhasználásával
Nemlineáris optimalizálási problémák párhuzamos megoldása grafikus processzorok felhasználásával 1 1 Eötvös Loránd Tudományegyetem, Informatikai Kar Kari TDK, 2016. 05. 10. Tartalom 1 2 Tartalom 1 2 Optimalizálási
Speciális adatszerkezetek. Programozás alapjai II. (8. ea) C++ Tömbök. Tömbök/2. N dimenziós tömb. Nagyméretű ritka tömbök
Programozás alapjai II. (8. ea) C++ Kiegészítő anyag: speciális adatszerkezetek Szeberényi Imre BME IIT Speciális adatszerkezetek A helyes adatábrázolás választása, a helyes adatszerkezet
Alap fatranszformátorok II
Alap fatranszformátorok II Vágvölgyi Sándor Fülöp Zoltán és Vágvölgyi Sándor [2, 3] közös eredményeit ismertetjük. Fogalmak, jelölések A Σ feletti alaptermek TA = (T Σ, Σ) Σ algebráját tekintjük. Minden
end function Az A vektorban elõforduló legnagyobb és legkisebb értékek indexeinek különbségét.. (1.5 pont) Ha üres a vektor, akkor 0-t..
A Név: l 2014.04.09 Neptun kód: Gyakorlat vezető: HG BP MN l 1. Adott egy (12 nem nulla értékû elemmel rendelkezõ) 6x7 méretû ritka mátrix hiányos 4+2 soros reprezentációja. SOR: 1 1 2 2 2 3 3 4 4 5 6
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
8. Előadás. Megyesi László: Lineáris algebra, , oldal. 8. előadás Mátrix rangja, Homogén lineáris egyenletrendszer
8. Előadás Megyesi László: Lineáris algebra, 51. 56., 70. 74. oldal. Gondolkodnivalók Elemi bázistranszformáció 1. Gondolkodnivaló Most ne vegyük figyelembe, hogy az elemi bázistranszformáció során ez
Osztott jáva programok automatikus tesztelése. Matkó Imre BBTE, Kolozsvár Informatika szak, IV. Év 2007 január
Osztott jáva programok automatikus tesztelése Matkó Imre BBTE, Kolozsvár Informatika szak, IV. Év 2007 január Osztott alkalmazások Automatikus tesztelés Tesztelés heurisztikus zaj keltés Tesztelés genetikus
KOVÁCS BÉLA, MATEMATIKA I.
KOVÁCS BÉLA MATEmATIkA I 6 VI KOmPLEX SZÁmOk 1 A komplex SZÁmOk HALmAZA A komplex számok olyan halmazt alkotnak amelyekben elvégezhető az összeadás és a szorzás azaz két komplex szám összege és szorzata
Programozás alapjai II. (7. ea) C++
Programozás alapjai II. (7. ea) C++ Kiegészítő anyag: speciális adatszerkezetek Szeberényi Imre BME IIT M Ű E G Y E T E M 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I. 2016.04.05. - 1
Fájlszervezés. Adatbázisok tervezése, megvalósítása és menedzselése
Fájlszervezés Adatbázisok tervezése, megvalósítása és menedzselése Célok: gyors lekérdezés, gyors adatmódosítás, minél kisebb tárolási terület. Kezdetek Nincs általánosan legjobb optimalizáció. Az egyik
26. MINIMÁLIS KÖLTSÉGŰ UTAK MINDEN CSÚCSPÁRRA
26. MINIMÁLIS KÖLTSÉGŰ UTAK MINDEN CSÚCSPÁRRA Az előző két fejezetben tárgyalt feladat általánosításaként a gráfban található összes csúcspárra szeretnénk meghatározni a legkisebb költségű utat. A probléma
Súlyozott automaták alkalmazása
Súlyozott automaták alkalmazása képek reprezentációjára Gazdag Zsolt Szegedi Tudományegyetem Számítástudomány Alapjai Tanszék Tartalom Motiváció Fraktáltömörítés Súlyozott véges automaták Képek reprezentációja
7. BINÁRIS FÁK 7.1. A bináris fa absztrakt adattípus 7.2. A bináris fa absztrakt adatszerkezet
7. BINÁRIS FÁK Az előző fejezetekben már találkoztunk bináris fákkal. Ezt a központi fontosságú adatszerkezetet most vezetjük be a saját helyén és az általános fák szerepét szűkítve, csak a bináris fát
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 4 IV. MINTA, ALAPsTATIsZTIKÁK 1. MATEMATIKAI statisztika A matematikai statisztika alapfeladatát nagy általánosságban a következőképpen
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
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
Algoritmuselmélet. Bonyolultságelmélet. Katona Gyula Y.
Algoritmuselmélet Bonyolultságelmélet Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem 12. előadás Katona Gyula Y. (BME SZIT) Algoritmuselmélet
Kontrollcsoport-generálási lehetőségek retrospektív egészségügyi vizsgálatokhoz
Kontrollcsoport-generálási lehetőségek retrospektív egészségügyi vizsgálatokhoz Szekér Szabolcs 1, Dr. Fogarassyné dr. Vathy Ágnes 2 1 Pannon Egyetem Rendszer- és Számítástudományi Tanszék, szekersz@gmail.com
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.
A programozás alapjai előadás. [<struktúra változó azonosítók>] ; Dinamikus adatszerkezetek:
A programozás alapjai 1 Dinamikus adatszerkezetek:. előadás Híradástechnikai Tanszék Dinamikus adatszerkezetek: Adott építőelemekből, adott szabályok szerint felépített, de nem rögzített méretű adatszerkezetek.
Pásztor Attila. Algoritmizálás és programozás tankönyv az emeltszintű érettségihez
Pásztor Attila Algoritmizálás és programozás tankönyv az emeltszintű érettségihez 3. ADATTÍPUSOK...26 3.1. AZ ADATOK LEGFONTOSABB JELLEMZŐI:...26 3.2. ELEMI ADATTÍPUSOK...27 3.3. ÖSSZETETT ADATTÍPUSOK...28
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.