2017
informatika
Balogh Gábor Dániel
Nem-strukturált szimulációk automatikus gyorsítása videokártyákon OpenMP segítségével
Témavezető:
Dr. Reguly István
Összefoglaló
A fizikai, biológiai és ipari szimulációk számításigénye folyamatosan növekszik. Szimulációk gyorsítására az elmúlt években elterjedt több olyan módszer is, amelyek a GPU-k számítási teljesítményének kiaknázásával érik el a kívánt teljesítményt, ilyen lehetőség például a CUDA vagy az OpenACC. Ezen eszközök használata nagy előismereteket igényel, így az adott tudományterületen dolgozóktól nem várható el, hogy a folyamatosan fejlődő technikákat megismerjék. Valamint nem áll rendelkezésünkre általános, minden gyorsító esetén használható módszer.
Az OP2 egy nyílt forrású keretrendszer, ami nem-strukturált térhálókon történő szimulációkhoz generál párhuzamosított kódot. Az OP2 képes a szimuláció egy előre elkészített absztrakt leírásából szekvenciális, CPU-n párhuzamosított, GPU-k segítségével gyorsított kódokat generálni, így az eszközök használata nem igényel nagy előismereteket.\
A négyes verziótól kezdve GPU-val történő gyorsításra is lehetőséget nyújtó OpenMP egy már jól bevált API platformfüggetlen párhuzamosításra. Az ezáltal nyújtott lehetőség nem korlátozódik egy adott GPU-ra vagy GPU családra, így a jövőben növelheti a kód újrafelhasználhatóságát.
Jelen dolgozat alapjául az OP2 keretrendszerhez készítettem az OpenMP 4.5-ös verzióját támogató generátort, amely a szimuláció absztrakt leírásából képes a megfelelő, OpenMP segítségével gyorsított kód elkészítésére, amelyet aztán akár egy GPU-n, akár MPI segítségével több GPU-n is futtathatunk. Munkám során két fejlesztés alatt álló fordítóprogrammal dolgoztam és ezeket teszteltem, valamint a jobb teljesítmény érdekében fejlesztési lehetőségeket kerestem. A folyamat során sikerült azonosítani több, a futásidő növekedésével járó hibát, mint például az egyes kernelekben használt adatok folytonos mozgatása GPU és a host memória között. Hasonló teljesítményvesztéseket azonosítottam skalár értékek használata esetén. Észleltem fordítóprogrambeli hibákat, melyeket visszajelzésem alapján a fejlesztők javítottak. Az egyes adatok elhelyezkedése a memóriában, és ezek olvasásának mintázata is jelentős hatással van a teljesítményre. Az adatok átrendezésével nagy javulást tudunk elérni, így munkám során a generátorhoz hozzáadtam egy lehetőséget automatikus konverzióra, amivel tovább növelhető a teljesítmény.
Ezek után két, nem-strukturált szimuláció segítségével értékeltem ki a generált kódok teljesítményét, valamint összehasonlítottam a fent említett, már régóta használt módszerek teljesítményével.
Balogh Gábor Dániel
Balogh Gábor Dániel
Adatok feltöltés alatt
Curriculum Vitae
Balogh Gábor Dániel vagyok, Tokajból jöttem és van három idősebb testvérem. Az, hogy sikerül valakinek TDK-n sikeresen szerepelnie mindig is egy nagy sikernek látszott a szemembern. Ezért is próbálom ki magam ebben az erős kihívásban. Szabadidőmben egyébként szeretek sportolni, főleg röplabdázni, ezen kívül unokatestvéreimmel és barátaimmal szoktam tölteni az időmet.
Dr. Reguly István
Dr. Reguly István
Reguly István Zoltán 2010-ban MSc, majd 2014-ben PhD oklevelet szerzett a PPKE ITK-n. Disszertációját a nem-strukturált térhálókon értelmezett algoritmusok absztrakciójából és implementációjából írta. Négy hónapot töltött az NVIDIA cégnél, ahol az algebraic multigrid algoritmusok GPU-s gyorsítását kutatta. 3 évet töltött az oxfordi egyetem Oxford e-Research Centre intézetében, ahol a domén-specifikus programozási nyelveket kutatta.