Robusztus GPGPU plugin fejlesztése a RapidMiner adatbányászati szoftverhez
Az elmúlt években jelentős számú cikk jelent meg olyan grafikuskártya programokról, melyek CPU-s megfelelőjükhöz képest, akár több nagyságrendű gyorsulást is fel tudtak mutatni[1][2][3]. Ezen cikkek olvasása közben három fontos kérdés merül fel a téma iránt érdeklődő olvasóban:
-A jelentős gyorsulások ellenére ténylegesen mennyire optimálisak ezek a szoftverek?
-A gyorsulások mennyire nevezhetők robusztusnak, fenntarthatónak, ha a bemenet mérete nagyságrendekkel nő?
-A jelenlegi fejlesztői eszközökkel lehetőség van-e ezek beépítésére komoly ipari szoftverekbe, úgy hogy CPU-hoz viszonyított gyorsaságukból még akkor se veszítsenek, ha a feldolgozandó adatmennyiséget több nagyságrenddel növeljük?
Dolgozatom ezekre kérdésekre próbál minél részletesebb és pontosabb választ adni. Ehhez kiválasztottam a k legközelebbi szomszéd algoritmust, amihez már számos GPGPU implementáció készült, illetve napjaink egyik legnépszerűbb adatbányászati eszközét a RapidMiner-t, hogy ezeken keresztül vizsgáljam meg egy GPU plugin fejlesztésének lehetőségeit, illetve limitációit.
Munkám során célom volt olyan megoldások kidolgozása, melyekkel kiküszöbölhetem azon hiányosságokat és korlátokat, amikkel a feljebb említett cikkek írói nem foglalkoztak, pedig ezen korlátok miatt a szoftvereik széleskörű ipari alkalmazásra korlátozottan vagy teljesen alkalmatlanná válnak.
A munkám eredménye egy olyan plugin, ami sebességben felveszi a versenyt a jelenlegi leggyorsabb megoldásokkal, azonban robusztusságban jelentősen túlmutat azokon, akár gigabájtos nagyságrendű fájlok feldolgozására is alkalmas.
Új lehetőségeket ad az adatbányászoknak, akik mindezt könnyedén, a RapidMiner grafikus felületén keresztül érhetik el, és GPU specifikus tudás nélkül használhatják ezt a CPU implementációhoz hasonló módon.
Fejlesztéshez az Nvidia Cuda nyelvet és annak Java illesztését, a JCuda-t[4] használtam.
szerző
-
Kovács Andor
mérnök informatikus
nappali
konzulens
-
Prekopcsák Zoltán
előadó, Távközlési és Médiainformatikai Tanszék