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



Hasonló dokumentumok
Magas szintű optimalizálás

Ordering MCMC gyorsítása OpenCL környezetben

AliROOT szimulációk GPU alapokon

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

KÖZELÍTŐ INFERENCIA II.

KÖZELÍTŐ INFERENCIA II.

Grafikus csővezeték 1 / 44

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

Párhuzamos és Grid rendszerek

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

Párhuzamos programozási platformok

Párhuzamos programozási platformok

OpenCL - The open standard for parallel programming of heterogeneous systems

E.4 Markov-láncok E.4 Markov-láncok. Sok sorbanállási hálózat viselkedése leírható "folytonos idejű Markovláncok " segítségével.

Eichhardt Iván GPGPU óra anyagai

Exact inference in general Bayesian networks

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

Adat- és feladat párhuzamos modell Az ISO C99 szabvány részhalmaza

Eichhardt Iván GPGPU óra anyagai

GPU-Accelerated Collocation Pattern Discovery

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

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

egy szisztolikus példa

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

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

I. LABOR -Mesterséges neuron

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

Programozás I gyakorlat

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

Hardver Ismeretek IA32 -> IA64

Bepillantás a gépházba

Közösség detektálás gráfokban

III.6. MAP REDUCE ELVŰ ELOSZTOTT FELDOLGOZÁSI ALGORITMUSOK ÉS TESZTKÖRNYEZET KIDOLGOZÁSA ADATBÁNYÁSZATI FELADATOK VÉGREHAJTÁSÁHOZ

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

Videókártya - CUDA kompatibilitás: CUDA weboldal: Példaterületek:

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

Párhuzamos programok futásának kiértékelése Scalasca profiler segítségével

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?!

Számítógép-rendszerek fontos jellemzői (Hardver és Szoftver):

Megerősítéses tanulás 7. előadás

GPU-k a gravitációs hullám kutatásban

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

Utolsó módosítás:

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

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

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

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

GPGPU alapok. GPGPU alapok Grafikus kártyák evolúciója GPU programozás sajátosságai

Digitális rendszerek. Utasításarchitektúra szintje

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

Győri HPC kutatások és alkalmazások

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

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

2. SZÉLSŽÉRTÉKSZÁMÍTÁS. 2.1 A széls érték fogalma, létezése

Konjugált gradiens módszer

Losonczi László. Debreceni Egyetem, Közgazdaság- és Gazdaságtudományi Kar

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

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

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

Az informatika kulcsfogalmai

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

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

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

Sztochasztikus folyamatok alapfogalmak

Folyamatok. 6. előadás

Adatszerkezetek 1. előadás

Hátizsák feladat. Példa: A tárgyak (súly, fontosság) párokban (4,6) (3,5) (2,3) (2,3) a hátizsák kapacitása 8.

Számítógép Architektúrák

Algoritmusok és adatszerkezetek I. 1. előadás

CUDA haladó ismeretek

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

Memóriagazdálkodás. Kódgenerálás. Kódoptimalizálás

Adatszerkezetek I. 7. előadás. (Horváth Gyula anyagai felhasználásával)

Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication)

GPGPU: Általános célú grafikus processzorok cgpu: computational GPU GPGPU = cgpu Adatpárhuzamos gyorsító: dedikált eszköz, ami eleve csak erre

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós augusztus 29. Széchenyi István Egyetem, Gy r

MATEMATIKA EMELT SZINTŰ SZÓBELI VIZSGA TÉMAKÖREI (TÉTELEK) 2005

Parciális rekonfiguráció Heterogén számítási rendszerek VIMIMA15

Parciális rekonfiguráció Heterogán számítási rendszerek VIMIMA15

Rendezések. A rendezési probléma: Bemenet: Kimenet: n számot tartalmazó (a 1,a 2,,a n ) sorozat

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

III. "JÖVŐ INTERNET" TECHNOLÓGIÁK: ELOSZTOTT ÉS FELHŐ SZOLGÁLTATÁSOK, TÁRGYAK INTERNETE DR. SIMON GYULA

MATEMATIKA EMELT SZINTŰ SZÓBELI VIZSGA TÉMAKÖREI (TÉTELEK) 2012

Intelligens adatelemzés

ULTIMATE TIC TAC TOE. Serfőző Péter

Digitális eszközök típusai

Utolsó módosítás:

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

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

Bonyolultságelmélet. Thursday 1 st December, 2016, 22:21

Matematikai és Informatikai Intézet. 4. Folyamatok

Legyen adott egy S diszkrét halmaz. Leggyakrabban S az egész számoknak egy halmaza, például S = {0, 1, 2,..., N}, {0, 1, 2,... }.

Kriptográfia 0. A biztonság alapja. Számítás-komplexitási kérdések

Digitális rendszerek. Digitális logika szintje

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

Adatbáziskezelő-szerver. Relációs adatbázis-kezelők SQL. Házi feladat. Relációs adatszerkezet

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

"A tízezer mérföldes utazás is egyetlen lépéssel kezdődik."

Az interrupt Benesóczky Zoltán 2004

Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication)

Átírás:

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 mintavételezett értékekből becsüljük a keresett mennyiséget.

A sorrendezések tere felett lépked. Ez a tér sokkal kisebb és kevésbé tüskés, így gyorsabb konvergenciát biztosít a stacionárius eloszláshoz. X 2 X 2 X 2 X 4 X 3 X 4 X 4 X 3 X 3 X 1 X 1 X 1 G 1, G 2,

Mennyire jó a sorrendezésünk? Ahol a score() azt a valószínűséget adja meg hogy D adat mellett X i változónak Pa G (X i ) a szülői halmaza. A szülői halmazok megválasztása független egymástól, ezért: Ahol U a sorrendezéssel kompatibilis szülői halmazok halmaza

A sorrendezések tere n! méretű, ezért zárt formában csak kevés változóra tudnánk kiszámolni. Itt jön segítségünkre az MCMC algoritmus. 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: Ahol T az iterációk száma

Globális cache építés MPI segítségével -> ~ score számítás párhuzamosítása 139 változó, futási idő 10000 lépés találat valószínűség lokális 13 568s 99,01% eloszott (6 klienssel) 5 938s 99,61% elosztott (12 klienssel) 5 349s 99,80%

Adat- és feladat párhuzamos modell Az ISO C99 szabvány részhalmaza párhuzamos kiegészítésekkel Heterogén platform támogatás Többmagos CPU-k Grafikus hardver (GPU) Jelfeldolgozó processzorok (DSP) Cell/B.E. processzor Az OpenCL elemei Platform modell Végrehajtási séma Memória modell Program modell

Cache miss minimalizálása Folytonos adatszerkezetek (felejtsük el az OOP-t) Az adat tömb belefér az L3 cache-be -> egyszerre több score-t számoljunk, ne csak szükség esetén. Vektoros (SIMD) utasításkészlet kihasználása (SSE) Gyors load/store biztosítása.

Egy feladatra több speciális kernel. Futásidejű fordítás. Jobb optimalizáció. Ciklus kifejtés (unroll) Elágazás megszüntetése (GPU-n különösen drága) Szükséges regiszterek csökkentése -> Külön kernel 1,2,,k szülő számú score kiszámításához. Optimális globális memória elérés biztosítása 64B-os igazítás, folytonos olvasás. (random memória elérés ~16x lassabb mint az ideális)

Adat tömb: CPU: 1load MMX regiszterbe (SSE) GPU: 1 32B tranzakció ushort16-ba d 1,1 d 1,2 d 1,3 d 1,4 d 1,L Padding 64B X 1 d 2,1 d 2,2 d 2,3 d 2,4 d 1,L Padding 64B X 2 d 3,1 d 3,2 d 3,3 d 3,4 d 1,L Padding 64B X 3 d n,1 d n,2 d n,3 d n,4 d n,l Padding 64B X n D 1 D 2 D 3 D 4 D L

Eredeti c++: 3ms/score OpenCL CPU: 0.025ms/score (AMD Phenom II X4 @4.0Ghz) 1 magra vetítve: 0.1ms -> 30x gyorsulás OpenCL GPU: 0.11ms/score (AMD Radeon 4850) 27x gyorsulás Nagy feltételes eloszlás táblák -> register spilling Kevés és egyszerű műveletek -> memória késleltetés nem fedhető el hatékonyan

Párhuzamosítás: Markov-láncok CPU: Ha több mag van mint lánc akkor kihasználatlan. GPU: nagyon kevés szál, optimálisan >1000 szál kell Párhuzamosítás: Ordering változó score Függetlenül számolható CPU: ok GPU: random memória olvasás kevés szál -> a szülői halmazok mentén is tudunk párhuzamosítani.

X 2 Cache-elt értékek X 2 X 4 X 4 Cache-elt értékek X 3 Szál 1 X 3 X 1 Szál 2 X 1 Szál 5 X 6 Szál 3 X 6 Szál 6 X 5 Szál 4 X 5 Szál 7 X 7 Cache-elt értékek X 7 Szál 8 X 8 1. Lánc X 8 2. Lánc Szál 9

Az MPI verzió futási idejének fele score számítással telt. Ezt jelentősen sikerült gyorsítani -> 2x gyorsulás. Ordering párhuzamos számítása ->?x gyorsulás. (~CPU mag/markov-lánc)

Szülő halmaz -> (0,C(N,k)+C(N,k-1)+ C(N,0)) l-binomiális ábrázolás pl. (l=k=4) m = 26 = C(6,4) + C(5,3) + C(2,2) Ez a {6,5,1,0} m = 126 = C(9,4) -> {8,7,6,5} Visszafelé: pl. {1,7,6,2} = {7,6,2,1} -> C(7,4) + C(6,3) + C(3,2)

X 2 X 4 X 3 X 2 X 4 X 5 Két tetszőleges változót felcserél a sorrendezésben. X 1 X 1 X 6 X 6 X 5 X 3 X 7 X 7 X 8 X 8

X 2 Nem változnak a szülői halmazok. X 4 Nem változik a score. X 3 X 1 Csak itt változnak a szülői halmazok. X 6 Ezekre kell újraszámolni a score-t! X 5 X 7 Nem változnak a szülői halmazok. X 8 Nem változik a score.

X 2 X 4 X 3 Két részre vágja a sorrendezést és a két halmaz sorrendjét felcseréli. X 5 X 7 X 8 Mindenhol változás történt a szülői halmazokban X 1 X 2 X 6 X 4 X 5 X 3 Mindenhol újra kell számolni a score-t! X 7 X 1 X 8 X 6

Csak 32B, 64B, 128B, (256B) tranzakciók. 64B igazított 128B igazított szálak

Optimális elérés: maximális sávszélesség 64B igazított 128B igazított szálak 1db 64B tranzakció

Nem igazított elérés 64B igazított 128B igazított szálak 1db 128B tranzakció 1db 64B + 1db 32B ha átlóg a 128B határon Nagy sávszél pazarlás!

Stride x=3. 64B igazított 128B igazított szálak 1db 128B + 1db 64B tranzakció Nagyon rossz kihasználtság nagy x esetén!

NDRange Gy Feladat egység Feladat egység Feladat egység Feladat egység Munkacsoport méret Sy NDRange Gx Munkacsoport méret Sx

OpenCL eszköz Számító egység Privát mem Privát mem Számító egység Privát mem Privát mem PE 1 PE M PE 1 PE M Lokális mem Lokális mem Globális/Konstans memória cache Globális memória Konstans memória

Hoszt <-> VRAM adatmozgatás Amit lehet tároljuk a GPU-n és dolgozzuk is fel ott. Async elérés. Kevés privát memória Rövid, egyszerű kernelek Divergens szálakat kerülni kell Probléma felbontása. De megéri? Indítási overhead Lassú double számítás Cél GPU, de még ez sem az igazi. Ahol csak lehet használjunk float típust. Mixed precision Optimális memória elérés Sokszor nehéz. Sok szál A globális ram elérése lassú, hogy ezt elfedjük sok szál szükséges (több ezer).