KUTATÁSOK INFORMATIKAI TÁMOGATÁSA. Dr. Szénási Sándor

Hasonló dokumentumok
Grafikus csővezeték 1 / 44

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

Magas szintű optimalizálás

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

OpenCL - The open standard for parallel programming of heterogeneous systems

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

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

Párhuzamos és Grid rendszerek

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

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

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

Haladó Grafika EA. Inkrementális képszintézis GPU-n

GPGPU programozás oktatása

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

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

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

Grafikus csővezeték és az OpenGL függvénykönyvtár

Máté: Számítógépes grafika alapjai

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

egy szisztolikus példa

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

GPGPU. GPU-k felépítése. Valasek Gábor

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

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

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

A számítógépek felépítése. A számítógép felépítése

GPGPU. Architektúra esettanulmány

Párhuzamos programozási platformok

Grafikus csővezeték 2 / 77

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

Akusztikai tervezés a geometriai akusztika módszereivel

GPGPU ÚJ ESZKÖZÖK AZ INFORMÁCIÓBIZTONSÁG TERÜLETÉN

Információ megjelenítés Számítógépes ábrázolás. Dr. Iványi Péter

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

Párhuzamos programozási platformok

Az MTA Cloud a tudományos alkalmazások támogatására. Kacsuk Péter MTA SZTAKI

GPU-Accelerated Collocation Pattern Discovery

Nemlineáris optimalizálási problémák párhuzamos megoldása grafikus processzorok felhasználá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

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

Digitális technika VIMIAA01 9. hét

Négyprocesszoros közvetlen csatolású szerverek architektúrája:

Grafikonok automatikus elemzése

Plakátok, részecskerendszerek. Szécsi László

Ismétlés: Moore törvény. Tranzisztorok mérőszáma: n*százmillió, n*milliárd.

Optimalizációs stratégiák 1.

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

Teszt: Az nvidia GeForce kártyák Crysis 2-ben mért teljesítménye

Valasek Gábor

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

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

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

Az informatika kulcsfogalmai

Rekurzió. Működése, programtranszformációk. Programozás II. előadás. Szénási Sándor.

Megkülönböztetett kiszolgáló routerek az

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

Összeállította Horváth László egyetemi tanár

Osztott algoritmusok

GPU Lab. 15. fejezet. Nehezen párhuzamosítható szimulációk. Grafikus Processzorok Tudományos Célú Programozása. Berényi Dániel Nagy-Egri Máté Ferenc

Dr. Schuster György október 30.

KÉPFELDOLGOZÓ ALGORITMUSOK FEJLESZTÉSE GRAFIKUS HARDVER KÖRNYEZETBEN

Grafikus processzorok általános célú programozása (GPGPU)

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

Programozási nyelvek 6. előadás

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

ITIL alapú IT környezet kialakítás és IT szolgáltatás menedzsment megvalósítás az FHB-ban

Informatika el adás: Hardver

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

Panorámakép készítése

Java programozási nyelv

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

OpenCL Kovács, György

Elengedhetetlen a játékokban, mozi produkciós eszközökben Nélküle kvantum hatás lép fel. Az objektumok áthaladnak a többi objektumon

Programozási nyelvek a közoktatásban alapfogalmak I. előadás

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

Hogyan kell 3D tartalmat megtekinteni egy BenQ kivetítőn? Minimális rendszerkövetelmények 3D tartalom lejátszásához BenQ kivetítőn:

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

Miskolci Egyetem Gépészmérnöki és Informatikai Kar Informatikai Intézet Alkalmazott Informatikai Intézeti Tanszék

Számítógépes képelemzés 7. előadás. Dr. Balázs Péter SZTE, Képfeldolgozás és Számítógépes Grafika Tanszék

Image Processor BarCode Service. Felhasználói és üzemeltetői kézikönyv

efocus Content management, cikkírás referencia

Numerikus matematika vizsga

Programozás alapjai. 6. gyakorlat Futásidő, rekurzió, feladatmegoldás

Féléves feladat. Miről lesz szó? Bemutatkozás és követelmények

Dr. habil. Maróti György

Keresés képi jellemzők alapján. Dr. Balázs Péter SZTE, Képfeldolgozás és Számítógépes Grafika Tanszék

Bruttó ár: 0 Ft. Háttértár mérete: Háttértár típusa: Lemez meghajtó: Kijelző méret: LED háttérvilágítás, 16:9 képarány

Párhuzamos és Grid rendszerek

OpenGL és a mátrixok

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

Gráfok 1. Tárolási módok, bejárások. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor

1. Generáció( ):

Bevezetés az informatikába

SAMSUNG SSM-8000 szoftvercsomag

CUDA haladó ismeretek

Intelligens beágyazott rendszer üvegházak irányításában

A LEGO Mindstorms EV3 programozása

Numerikus matematika. Irodalom: Stoyan Gisbert, Numerikus matematika mérnököknek és programozóknak, Typotex, Lebegőpontos számok

I. LABOR -Mesterséges neuron

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

Átírás:

KUTATÁSOK INFORMATIKAI TÁMOGATÁSA Dr. Szénási Sándor szenasi.sandor@nik.uni-obuda.hu Óbudai Egyetem Neumann János Informatikai Kar Alkalmazott Informatikai Intézet

Alapvető jellemzői NVIDIA GTX 1080 2560 végrehajtó egység 8.22 TFlops

Intel ASCI Red (2000 Top 1) Alapvető jellemzői 6000 pentium processzor 2.3 TFlops

Intel ASCI White (2001-2002 Top1) Alapvető jellemzői 8192 IBM Power3 processzor 12.2 TFlops

Történeti áttekintés GPU programozás sajátosságai Gyakorlati alkalmazások

A videokártya a számítógép megjelenítésért felelős alkotórésze Egyidős a PC-k megjelenésével Alaplapra integrált változatok Különálló bővítőkártya változatok Fejlesztések Csatolók fejlesztése Felbontás növelése Színmélység növelése Grafikus kártya Frissítési frekvencia növelése

90-es évektől kezdve általánossá vált a 3D megjelenítés Játékokban Grafikai programokban Tervező programokban Stb. Erre több lehetséges algoritmus is ismert Sugárkövetés Raszterizálás 3D megjelenítés A gyakorlatban főleg ez utóbbi terjedt el

Egy hálóval írja le a felületet, ami tipikusan háromszögekből áll Megfelelően sűrű háló esetén az eredmény már tökéletes További műveletek Z távolság megállapítása Árnyékolás Textúrázás Előnye Gyorsan végrehajtható Jól párhuzamosítható Raszterizálás

Alapvető lépések Háromszögek pontjainak leképezése a képernyő síkjába Bemenet: modell pontjai (x, y, z koordináták), kamera helyzete Kimenet: pontok x, y koordinátái Egyszerű transzformáció A képernyő síkjában lévő háromszögek kirajzolása Bemenet: a háromszögek pontjainak x, y koordinátái Kiegészítés: szín, textúra, fényhatások Kimenet: a képernyőre kirajzolt háromszög További műveletek Effektek Élsimítás 3D megjelenítés lépései

GPU szerepe a 3D megjelenítésben 90-es évek közepén nyilvánvalóvá vált, hogy A 3D megjelenítés egyre több helyen megjelent Szinte korlátlanul erőforrásigényes (gyorsabb eszköz nagyobb hálósűrűség szebb kép) Az alaplépései azonosak az alkalmazástól függetlenül Grafikai megjelenítésre speciális API-k DirectX OpenGL Fentiek miatt célszerű hardveres megoldást keresni Különálló 3D gyorsítókártyák Grafikus kártyákba integrált megoldások

Alapvető shader típusok Vertex shader Feladata a 3D modell pontjainak leképezése a 2D síkba Alapvetően lebegőpontos számokkal dolgozik Pixel shader Feladata a 2D koordináták által megadott háromszögek kirajzolása Alapvetően színekkel dolgozik Geometria shader Shaderek Feladata a geometria futásközbeni változtatása Használata csak később jelent meg Különböző hardver elemek valósították meg Párhuzamosítás shaderek számának növelése

Több shader megjelenése 2007 - NVIDIA GT8800 112 végrehajtó egység

Még több shader megjelenése 2008 - NVIDIA GTX 280 240 végrehajtó egység

És még több shader megjelenése 2010 - NVIDIA GTX 580 512 végrehajtó egység

Annál is több shader megjelenése 2012 - NVIDIA GTX 680 1536 végrehajtó egység

Még annál is több shader 2014 - NVIDIA GTX 980 2048 végrehajtó egység

Sok shader megjelenése 2016 - NVIDIA GTX 1080 2560 végrehajtó egység

A megvalósítás során problémát okoz a megfelelő arányok eltalálása Összetett árnyékolást használó képek Kevés vertex shader Sok pixel shader Bonyolult geometriát használó programok Sok vertex shader Shaderek elosztása Kevés pixel shader Megadott költség mellett nehéz olyan kártyát készíteni, ami minden célra tökéletesen alkalmas

Megoldás: megpróbálták közelíteni egymáshoz az egymástól eltérő részegységek felépítését Ez több éven keresztül történt meg Shader Model 1.x Shader Model 2.x Shader Model 3.x Shader generációk Unified Shader Model Végeredményként a közelítés elérte a végső célt, és a grafikus kártyákra már csak egy fajta, általános célú végrehajtó elemekek kerültek

GPGPU programozás A grafikus kártyák lehetővé tették a shaderek direkt programozását Ezt alapvetően grafikai funkciókra szánták, de lehetőség nyílt általános célú programok futtatására is (2001 mátrix szorzás megvalósítása) Kezdetben ez csak a grafikai funkciókon keresztül, meglehetősen nehézkesen működött. Ez neveztük GPGPU programozásnak (General Purpose Graphical Processing Unit) A Unified Shader model még vonzóbbá tette ezt a lehetőséget

A grafikus kártya gyártók is felismerték az ebben rejlő piaci lehetőséget Ezért támogatást nyújtottak a saját kártyáikhoz NVIDIA CUDA 1.0 2007 AMD/ATI CTM 2007 Mivel ezek eltérő nyelvek, készült egy szabány is OpenCL 1.0 2009 Ezt követően egyre többen foglalkoztak a témával Egyetemek Kutatóintézetek Nagyvállalatok GPU programozás

Fejlesztői környezetek tovább fejlődtek NVIDIA CUDA 8.0-2016 OpenCL 2.1 2015 AMD/ATI már nem fejleszt külön rendszert A GPU fejlesztés Stabil alapokon áll Elterjedt Jó alternatíva További hiányosságok Napjainkban Elméleti háttér hiányosságok Eszközök fejletlenek

Aktuális teljesítmény

Gyakorlati alkalmazások

Történeti áttekintés GPU programozás sajátosságai Gyakorlati alkalmazások

Előnyök Sok végrehajtó egység Gyors memória Gyors adatátvitel Hátrányok Miért ilyen gyors a GPU? A végrehajtó egységek lassabbak A végrehajtó egységek egyszerűbbek A végrehajtó egységek nem függetlenek A grafikus kártya saját memóriájában dolgozik Biztos hogy gyors? a feladattól függ

Felépítés különbsége Magok: CPU-n kevés, GPU-n sok Gyorsítótár: CPU-n sok, GPU-n kevés Vezérlés: CPU-n összetett, GPU-n egyszerű Függetlenség: CPU magok igen, GPU magok nem

Memória késleltetés CPU-n Memória késleltetés alatt értjük azt az időt, amíg a processzornak várakoznia kell a memóriából kért adatokra Csökkenteni nem, csak elrejteni tudjuk CPU esetén a módszerek a csökkentésre Összetett végrehajtás Utasítás futószalag Spekulatív végrehajtás Elágazás becslés Gyorsítótár használata Az egyszer már beolvasott adatot ne kelljen újra megvárni

Memória késleltetés GPU-n A probléma ugyanaz, de a megoldás egészen más GPU esetén a módszerek a csökkentésre Gyors kontextusváltás Nagy mennyiségű szál futtatása Minimális gyorsítótár A GPU a memória késleltetést úgy próbálja meg elrejteni, hogy egy memóriából való olvasás után a várakozás helyett azonnal elkezd egy másik, aktuálisan futtatható szálat végrehajtani Így nem kell gyorsítótár és bonyolult vezérlés

Egyszerű végrehajtóegységek A vezérlés egyszerűsítése érdekében több ALU-hoz tartozik egy vezérlő egység Ezek összekötve egyidőben csak ugyanazt a műveletet tudják végrehajtani Viszont arra van mód, hogy ezt különböző adatokon végezzék el Emiatt az összes szál célszerűen ugyanazt a kódot kell, hogy futtassa

Elágazások esetén meg kell oldani azt, hogy az összekapcsolt szálak feltételtől függően más kódot futtassanak Erre szolgál a SIMT technika Ez a feltételtől függően bizonyos egységeket lekapcsolhat Az ilyen elágazás végrehajtása nem hatékony emiatt SIMT végrehajtás

Memória hierarchia GPU memória felépítésének jellemzői CPU központi memóriától független Összetett hierarchia, optimalizálás főként kézzel történik Másolási műveletek költségesek

Multiprocesszorok Egyszerű skálázhatóság Független végrehajtás On-chip, off-chip memória

GPU előnyei Összefoglalva Kiemelkedő elméleti csúcsteljesítmény Ideális teljesítmény/költség arány Jól skálázható Dinamikusan fejlődő terület GPU előnyei akkor használhatók ki, ha Nagy mennyiségű szálat kell indítani Ezek lehetőleg mind ugyanazt az algoritmust futtatják Kellően magas a számítás/memóriahozzáférés arány Egyéb szempontok

Szöveg keresés CPU 1 A szöveg amiben keresünk (29 karakter) E z e g y h o s s z ú s z ö v e g e s t e s z t! A szó amit keresünk (6 karakter) s z ö v e g CPU megvalósítás 1 szálon Az eredeti szöveg minden karakteréből indítsunk egy keresést (24 vizsgálandó indulópont) Hasonlítsuk össze az ott lévő betűket a keresendő szó betűivel (1 és 6 lépés között) Értékelés Legjobb esetben műveletek száma: 6 Legrosszabb esetben műveletek száma: 24 6=144

Szöveg keresés CPU 2 A szöveg amiben keresünk (29 karakter) E z e g y h o s s z ú s z ö v e g e s t e s z t! A szó amit keresünk (6 karakter) s z ö v e g CPU megvalósítás 4 magos CPU-val Az eredeti szöveget összuk szét a 4 mag között CPU 1 : 1..6, CPU 2 : 7..12, CPU 3 : 13..18, CPU 4 : 19..24 A 6 hosszú szövegek feldolgozása azonos, mint az előbb Értékelés Műveletek száma: 24 144 Időszükséglet: 6 36

Szöveg keresés - GPU A szöveg amiben keresünk (29 karakter) E z e g y h o s s z ú s z ö v e g e s t e s z t! A szó amit keresünk (6 karakter) s z ö v e g GPU megvalósítás (több ezer végrehajtó egység) Minden végrehajtó egység egy kiinduló pontot vizsgál GPU 1 : 1, GPU 2 : 2, GPU 3 : 3,..., GPU 24 : 24 Minden GPU szál csak egy szót ellenőriz Értékelés Műveletek száma: 24 144 Időszükséglet: 1-6

Szöveg keresés GPU 2 A szöveg amiben keresünk (29 karakter) E z e g y h o s s z ú s z ö v e g e s t e s z t! A szó amit keresünk (6 karakter) s z ö v e g GPU megvalósítás (több ezer végrehajtó egység) Indítsunk 24 6 darab szálat Minden szál csak egy karakter megfelelőségét ellenőrzi Lépésszám Műveletek száma: 144 Időszükséglet: 1

Történeti áttekintés GPU programozás sajátosságai Gyakorlati alkalmazások Képfeldolgozás

Main components Sejtmag Mirigy Surface epithelium

Előfeldolgozás Wallis szűrő Átlagoló szűrő Kiinduló pont választás Feltételezések Régió növelés 1. lépés Lokálisan maximális intenzitás Még nem feldolgozott Nem része egy már létező régiónak

Kontúr felépítése a környező pixelek alapján Régió növelés 2. lépés

Régió növelés 3. lépés Jósági függvény kiszámítása a kontúr pontokra Szín egyezőség Körkörösség Méret Stb. 5 8 5 4

Régió kiterjesztése a legjobb kontúrpont irányába Régió növelés 4. lépés

Előző lépések ismétlése amíg egy megállási feltétel be nem következik Nincs több szomszéd Maximális méret Másik sejtmagba növelés Régió növelés 3. lépés

Szekvenciális megoldás A régió növelés tipikusan nem jól párhuzamosítható feladat Az egyes lépések az előző lépések eredményein alapulnak Inicializálás Szomszédság ellenőrzés Kontúr pontok felvétele Jóság függvény Régió növelés Utófeldolgozás Kilépési feltétel

Párhuzamosítható részek Az egész régiónövelő algoritmus nem párhuzamosítható Az egyes rész lépések azonban igen Inicializálás Szomszédság ellenőrzés Kontúr pontok felvétele Jóság függvény Régió növelés Utófeldolgozás Kilépési feltétel

Jóság függvény számítása Jóság függvény számítás A jóság függvény néhány paramétere minden iterációban változik (régió középpontja, áltagos színe, stb.) Ezért minden iterációban, minden kontúrpont esetén újra kell számolni Számítás párhuzamosítása Minden kontúrpontnál ugyanazt a számítást kell elvégezni, csak más adatokkal Ez tipikusan jól párhuzamosítható feladat

Párhuzamos jóság számítás 1 GPU szál mindig 1 kontúrpont jóságát számolja ki 1 GPU blokk egy sejtmaggal dolgozik A szükséges szálak száma egyenlő a kontúr méretével Ez 4 - ~1000 közötti érték lehet

További párhuzamosítható részek Szomszédok vizsgálata Egy új pont felvétele után meg kell vizsgálni, hogy merre bővíthető a kontúr Utófeldolgozás Külső- és belső kontúr megállapítása Egyéb konvolúciók Kiinduló pontok keresése

Végrehajtási idő Egy sejtmag esetében a végrehajtási idő közel azonos a CPU-n mért értékkel Ez azonban még nem használja ki a kártya erőforrásait, így további párhuzamosításra van szükség Regio grow execution time on GPU Regio grow execution time on CPU

Párhuzamosság magasabb szintje Ismert a sejtmag legnagyobb mérete (sugara) Megfelelő távolságból indított keresések (ahol táv > 4*maxR) egymástól függetlenek Tehát egyidőben, párhuzamosan is indíthatók

Párhuzamosan futó régiónövelések Egyidőben keresett sejtmagok száma Amennyiben a bemeneti kép azt megengedi, számos sejtmagot lehet feldolgozni egy időben Ez jelentősen növeli a processzor kihasználtságát

Teljes végrehajtási idő Teljes futásidő A gyakorlatban a teljes kép feldolgozási idő a mérvadó Ebben a GPU általában 3-4x gyorsabb, mint a CPU implementáció Kép felbontás Nagyobb felbontások esetében az eredmények még jobbak Entire execution time in case of 8096 2 images Entire execution time by image resolution

Több grafikus kártya használata Teljes kép felosztása átfedő részekre Több régiónövelés indítása Eredmények összefésülése Eredmény kb. 8x gyorsabb mint az eredeti módszer

Történeti áttekintés GPU programozás sajátosságai Gyakorlati alkalmazások IHCP

Hőátadás Hőátadási tényező Hőátadás Valódi alkalmazás 3D Hőkezelési eljárások

Háttér Hőátadási együttható függ időtől/helytől

Hővezetés Fourier-egyenlete

HTC Lehülési görbe 1800 1600 1400 1200 1000 800 600 400 200 0 0 5 10 15 20 900 800 700 600 500 400 300 200 100 0 0 2 4 6 8 10 12 14 16 18 20

Lehülési görbe HTC 1800 1600 1400 1200 1000 800 600 400 200 0 0 5 10 15 20 900 800 700 600 500 400 300 200 100 0 0 2 4 6 8 10 12 14 16 18 20

Lehülés valóságban

HTC valóságban

Megoldandó feladat 1800 1600 1400 1200 1000 800 600 400 200 0 0 5 10 15 20 25 30 1000.000 900.000 800.000 700.000 600.000 500.000 400.000 300.000 200.000 100.000 0.000 0 2 4 6 8 10 12 14 16 18 20

A meglévő módszerek számításigényesek Végeselem analízis Véges differenciák módszere Hőátadás mértéke Problémák Közvetlenül nem mérhető Inverz hőtani modellek segítségével származtatható Inverz hőátadási folyamat Rosszul feltett matematikai probléma Nem lineáris Nincs közvetlen megoldása Heurisztikus módszerek

Particle Swarm Optimization 1995, James Kennedy, Russell C. Eberhart Madár és hal rajok mozgásán alapul

Minden egyednek van Saját térbeli helyzete Aktuális sebessége (vektor) A sebességet befolyásolja Eddig talált legjobb saját pozíció A teljes raj által eddig talált legjobb pozíció A mi esetünkben PSO felépítése Egyed: egy vizsgált paraméterkészlet Pozíció: HTC paraméterek Jóság: referencia lehülési görbék közelítése Cél: minél közelebbi görbét generáló HTC megtalálása

PSO lépései Start Induló pozíciók generálása Jósági függvények számítása Legjobb adatok kiválasztása Megállási feltétel vizsgálata Stop Új sebesség meghatározása Mozgatás

Előnyök A módszer ideális nagyméretű paramétertérben való keresésre Hatékonyabban kerüli el a lokális optimumokat, mint a hasonló módszerek Problémák IHCP megoldása PSO-val Nagyszámú részecske minden iterációjában ki kell számolni a lehülési görbét (kb. 15ms/részecske) Ezért egy teljes szimuláció futásideje: 3000 elem/iteráció * 4000 iteráció * 15 ms/elem = 50 óra

Lehűlés szimuláció GPU-val Véges differencia módszer 10x40 rács 4000 időegység Egy GPU multiprocesszor = 1 lehűlés 400 szál 400 érték a belső memóriában Az egyes lehűlések egymástól függetlenek Minden multiprocesszor dolgozhat GPU teljesítménye kiaknázható

CPU-GPU megoldás összehasonlítása

Optimalizációs lépések Általános GPU optimalizálási ötletek Shared memória használata Warp divergencia kiküszöbölése CPU-GPU együttműködés elősegítése Memória mozgatások csökkentése Shared memória használata A mátrix és a szükséges segédadatok elférnek az on-chip memóriában Ezért minden számítás ott elvégezhető Memória késleltetés emiatt minimális

A grafikus kártya 32-es csoportokba rendezve futtatja a szálakat Ezek egyidőben mindig ugyanazt a feladatot hajtják végre Elágazás esetén a szálak egy részének várakoznia kell (lásd SIMT végrehajtás) Lehetőségek Warp divergencia Elágazások kiküszöbölése (általában nem megoldható) Szálak átcsoportosítása (divergencia csökkentése)

Warp divergencia DHCP A testet reprezentáló mátrix bizonyos pontjainál másmás képlettel kell számolni

Warp divergencia megoldása Mátrix méret: 10x34 Csak utolsó warp divergens

Optimalizáció eredménye Optimalizált megoldás futásideje

Ideális terheléseloszlás CPU-GPU együtt

Memória másolások problémája CPU-GPU memóriák közötti másolás költséges Egymásra épülő lépések CPU GPU másolás GPU kernel futtatás GPU CPU másolás

Memória másolások átfedése GPU három végrehajtó egysége: 2 másoló, 1 futtató Ezek párhuzamosan működnek, így a memória másolás ideje részben elrejthető

CPU, core 1 CPU, core 2 CPU, core 3 CPU, core 4 GPU 2 GPU 1 Mérnöki Látásmód az Informatikában Kutatások Informatikai Támogatása Eredmény Végrehajtási idő: 50 óra 27 perc

Gyakorlati alkalmazás PSO/GA configurálás Kérdéses paraméterek Ideális populáció méret Ideális módszerek Időszükséglet További lehetőségek Paraméterenként 500-1000 teszt CPU: 3,5 év GPU: 2 hét Egyéb heurisztikák kipróbálása Fireworks Ant colony optimization

Populáció méret kísérlet

Irodalomjegyzék/képek forrásai https://en.wikipedia.org/wiki/ray_tracing_(graphics) http://www.cmap.polytechnique.fr/~peyre/geodesic_computations/ http://graphics.stanford.edu/~henrik/images/imgs/bunny.jpg http://images.bit-tech.net/content_images/2014/02/nvidia-geforce-gtx-titan-blackreview/zotactb-2b.jpg http://www.top500.org/featured/systems/asci-red-sandia-national-laboratory/ http://www.pcper.com/reviews/graphics-cards/nvidia-geforce-8800-gtx- Review-DX10-and-Unified-Architecture/G80-Architecture https://docs.nvidia.com/cuda/cuda-c-programming-guide/ http://www.nvidia.com/object/cuda_home_new.html https://en.wikipedia.org/wiki/swarm_behaviour http://i.imgur.com/ypskk.png https://upload.wikimedia.org/wikipedia/commons/f/fb/dolphin_triangle_mesh.png http://web.eecs.umich.edu/~sugih/courses/eecs487/f15/pa1/aatriangle.png https://circecharacterworks.wordpress.com/2012/05/12/framing-object-beyondbounding-box-projection/ http://images.nvidia.com/pascal/img/gtx1080/geforce_gtx_1080_3qtr_front_le ft.png

Köszönöm a figyelmet