Spindinamika számítás GPU gyorsításának vizsgálata

OData támogatás
Konzulens:
Szántó Péter
Méréstechnika és Információs Rendszerek Tanszék

A mágnesesség talán legismertebb alkalmazásai az adattároló eszközök valamint a spintronika. A mágneses technológia jövője igen ígéretes, ezért nagy igény mutatkozik a mágneses szilárd testek alapvető tulajdonságainak minél jobb megértésére. Az ennek hatására jelenleg a mágnesesség terén folyó kutatások három fontos aspektusára felhívom a figyelmet: (i) a numerikus szimulációknak megnövekedett a jelentősége, (ii) továbbá egyre jobban terjed a nanoszerkezetű anyagok alkalmazása, (iii) ami maga után vonja az anyagok atomisztikus modellezésének szükségességét.

A személyi számítógépek processzorainál a működési frekvencia növelése helyett a párhuzamosság fokozása vált a számítási teljesítmény növekedésének fő motorjává. A chip-szintű párhuzamosítás zászlóshajói a grafikus processzorok, melyek magas fokú párhuzamos felépítése onnan ered, hogy ezen processzorokat a kezdetektől fogva a valós idejű számítógépes grafika igényei szerint fejlesztették, mely problématerület óriási párhuzamosítási lehetőségeket rejt magában.

Ma már lehetőség van a grafikus processzorok közvetlen programozására oly módon, hogy programozói szempontból ezen chipek grafikus gyorsító helyett maszszívan párhuzamos processzornak látszódjanak. Az NVIDIA CUDA-val ezt ráadásul viszonylag könnyen, a széles körben elterjedt C és C++ programozási nyelvek egy egyszerű kiterjesztésével lehet megtenni.

Az atomi spin dinamika szimulációhoz hasonló adatpárhuzamos problémák párhuzamos futtatására a grafikus chipek felépítése ideális, ezért a BME Elméleti Fizika Tanszékén is jogosan merült fel az az igény, hogy a vékonyrétegek mágneses szimulációját végző programjuk futási idejét grafikus chipen való végrehajtással csökkentsék.

A problématerület és a CUDA szoftver és hardver vonatkozásainak megismerése után a program szimulációját sikerült eredményesen optimalizálnom grafikus processzorra. A számítást először átültettem grafikus chipen futtatható kódba, majd ezt optimalizáltam a hardver felépítésének és működésének megfelelően, végül az algoritmus változtatásával próbáltam még jobb eredményeket elérni. A szimuláció optimalizáció során megszületett minden változatával sikerült gyorsulást elérnem az általános célú processzoron futó eredeti programhoz képest.

Letölthető fájlok

A témához tartozó fájlokat csak bejelentkezett felhasználók tölthetik le.