GRAFIKUS PROCESSZOROK ALKALMAZÁSA KÉPFELDOLGOZÁSI FELADATOKRA ABSTRACT Simon Pál PhD hallgató Miskolci Egyetem Hatvany József Informatikai Tudományok Doktori Iskola The aim of this paper is the presentation of the graphical processors and the image processing tasks which can be executed with them. Nowadays graphical processors not only used to computation of computer graphics, but to general computational tasks. Using it strongly parallel task their executive abilities the execution time of the computational tasks significantly reducible. The relatively plain operations to be made on the big data set are makes it suitable for the execution of image processing algorithms because of his intense parallel. ÖSSZEFOGLALÓ Ennek a cikknek a tárgya a grafikus processzorok és azokkal végrehajtható feldolgozási feladatoknak a bemutatása. Napjainkban a grafikus processzorokat nemcsak megjelenítési feladatok számításaihoz alkalmazzák, hanem általános számítási feladatokhoz is. Kihasználva az erősen párhuzamos feladat végrehajtó ességeiket a számítási feladatok végrehajtási ideje jelentősen csökkenthető. A nagy adathalmazon végzendő viszonylag egyszerű műveletek nagyfokú párhuzamosíthatósága miatt feldolgozó algoritmusok végrehajtására is alkalmasak. BEVEZETÉS Napjaink grafikus kártyái már nem csak megjelenítésre használhatóak. A rajtuk található feladatspecifikus processzor, a GPU es fix és lebegőpontos számítások elvégzésére és a megjelenítési követelmények miatt erősen párhuzamos architektúrájú. A grafikai algoritmusok kifinomultsága miatt, ezeket a hardver eszközöket felhasználók által programozhatóvá tették. Mindez ahhoz vezetett, hogy a grafikus processzorokat általános számítási műveletek végrehajtására is használni kezdték. Mivel a nagyfokú párhuzamossága miatt a számítási teljesítménye jóval meghaladja a CPU számítási teljesítményét, így általános célú használata gyorsan elterjedt. Később ezt megkönnyítendő különféle fejlesztőkörnyezeteket és függvénykönyvtárakat kezdtek fejleszteni az általános számítási feladatok implementálására. Jelenleg bizonyos feladatokat a grafikus processzorok esek akár 150-szer gyorsabban is elvégezni a hagyományos processzorokhoz est, a nagy probléma kisebb feladatokra osztásával, majd az eredmények későbbi egyesítésével. Ezen esség miatt nagyon alkalmasak feldolgozási algoritmusok végrehajtására. 84
GRAFIKUS PROCESSZOR A GPU architektúrájának köszönhetően erősen párhuzamos műveletvégzésre alkalmas, emellett nagy és gyorsan elérhető gyorsítótárat is tartalmaz. Az összetett 3D-s alakzatok megjelenítésére lettek kifejlesztve és emiatt az utasítás készlete jóval kisebb mint egy CPU-é. De emiatt a specializáltság miatt lehet elérni azt a nagy teljesítményt. A GPU előnyös tulajdonságai 1. Nagymértékű párhuzamos lebegőpontos számítás A jelenlegi GPUkban több mint 400 lebegőpontos számításra es processzor található, így számítási teljesítménye többszörösen nagyobb mint amire a CPU es [1]. A jelenlegi Tesla GPU dupla pontosságú lebegőpontos számítási sebessége 515 Gflop [2]. Ezt a számítási sebbegéset a jelenlegi CPU-k meg sem közelítik. 2. Nagy memória sávszélesség A GPU a belső memóriáját gyorsabban tudja elérni, mint a CPU a rendszermemóriát. A GPU belső memóriája 128MB-tól akár 6GB-ig is terjedhet és a sávszélessége akár 144 GB/sec is lehet. 3. Multi-GPUs számítás Egy számítógépen belül akár több grafikus kártyát is lehet alkalmazni, így a rendszer számítási teljesítménye még inkább megnövelhető. A GPU-k architektúráját folyamatosan fejlesztik és nem csak a számítási teljesítmény növelése céljából, hanem a könnyebb programozhatóság érdekében is. A kezdeti szigorúan feladat-párhuzamos működést támogató architektúrát leváltotta az adat-párhuzamos működési architektúra [3]. Napjainkban a grafikus kártyákat gyártó AMD és NVIDIA egységesített shader architektúrájú GPU-kat fejleszt. CPU vagy GPU A CPU-t és a GPU-t más céllal fejlesztik, ebből kifolyólag más-más feladatokat esek hatékonyan végrehajtani. A CPU a számítógép központi egységeként sok folyamat és szál kezelését végzi hatékonyan. A szálak közötti kontextus váltásokra és az egyes szálak szekvenciális végrehajtására tervezték. Ezzel szemben a GPU-t egyetlen folyamat szálainak párhuzamos végrehajtásra tervezték. Emiatt jól lehet alkalmazni olyan esetekben, ahol nagy adathalmazon kell műveteket végrehajtani és az egyes adatok között minimális a függőség. GPU-K PROGRAMOZÁSA ÁLTALÁNOS CÉLLAL A GPU-k programozása szinte tetszőleges programozási nyelven történhet, csak a megfelelő függvénykönyvtárakat kell használni. Több ilyen függvénykönyvtár használata is elterjedt. 85
CUDA Toolkit A Compute Unified Device Architecture, az nvidia párhuzamos programozási rendszere, melynek segítségével az nvidia grafikus kártyáit lehet programozni. OpenCL Az Open Computing Language, egy olyan standard, melynek segítségével, párhuzamosan programozhatók heterogén rendszerek. A heterogenitás ebben az esetben azt jelenti, hogy ugyanaz a kód es módosítás nélkül futni bármelyik gyártó GPU-ján vagy CPUn. GpuCV A egy nyílt forráskódú GPU-ra implementált feldolgozó Computer Vision függvénykönyvtár [4]. A benne található függvények nagyon hasonlóak az OpenCV függvénykönyvtár függvényeihez. Néhány művelet alkalmazása során tapasztalt sebesség növekedést mutat az 1. táblázat. 1. táblázat Műlelet végrehajtási idők összehasonlítása OpenCV-t és GpuCV-t használva 1024x1024 felbontású en. Használt hardver: Pentium 4 CPU, 1GB RAM, GeForce 7800 GTX GPU [4] OpenCV GpuCV 3x3 erózió 24 ms 3,0 ms 5x5 erózió 31 ms 8,5 ms RGB to XYZ 11 ms 0,6 ms RGB to HSV 18 ms 1,7 ms Binary threshold 1,2 ms 0,7 ms KÉPFELDOLGOZÁS GPU SEGÍTSÉGÉVEL A GPU-k a párhuzamos feladat végrehajtásuk miatt alkalmasak feldolgozó eljárások végrehajtásához. A leggyakoribb művelet a konvolúció, amelyet minden pontra végre kell hajtani így a nagymértékű párhuzamosítás jelentősen megnöveli a végrehajtás gyorsaságát. Konvolúciót alkalmazó algoritmus a Canny éldetektáló algoritmus, amit jól lehet GPU-ra implementálni [5]. Hasonlóan jó példa a pontokra alkalmazott transzformációs függvény a Hough-transzformáció él [6] és kör [7] detektálásra. A GPU-k gyors memória elérését kihasználva mapping algoritmusokat lehet implementálni. Egy mapping algoritmust használó szűrő eljárást bemutató tanulmány szerint [8] jelentős sebesség növekedés érhető el a GPU-k használatával (2.táblázat). 86
2. táblázat A sebességnövekedés és a percenkénti ek száma (FPS) a Tesla C1060 és Xeon Quad Core (2,66 GHz) processzorokat használva, 9x9-es szűrőablakot alkalmazva különböző méretű eken. [8] 512x512 1024x1024 2048x2048 4096x4096 FPS (Xeon) 4,58 1,01 0,19 0,005 FPS (Tesla) 306,55 97,05 26,19 0,66 sebességnövekedés 66,95 89,11 135,62 145,88 Összetett feldolgozó eljárásokat is implementáltak már GPU-ra, mint az orvosdiagnosztikai feldolgozás során használható javítási és objektum elkülönítési eljárások [9]. De szegmentáláson kívül a en található objektumok felismerésére [10] és objektumok sajátosságainak a keresésére [11] is készült algoritmus. Valós időben történő alkalmazásra a jó példa a szem lehunyásának a detektálása [12]. Hasonlóan komplex feldolgozó algoritmus készült szűrésére genetikus algoritmust felhasználva [13] vagy az élkiemelésre Russo and Ramponi által elkészített [14] FIRE (Fuzzy Interference Ruled by Else-Action) eljárás. Ennél az eljárásnál is több mint 100 szoros sebesség növekedés lehetett elérni a GPU használatával (3. táblázat). A teszteléshez használt processzor AMD Athlon Fx-55 2,6GHz-es órajellel, a rendszer memória 2GB, a GPU NVIDIA 8800 BFG Ultra 768MB memóriával. 3. táblázat A feldolgozás idejének alakulása CPU és GPU felhasználásával [14] 320x240 76800 640x480 307200 960x720 691200 1280x960 1228800 1280x1024 1310720 CPU 0,73 2,86 6,6 11,5 12,3 GPU 0,006 0,024 0,052 0,091 0,098 Sebesség különbség 121X 119X 126X 126X 125X ÖSSZEFOGLALÁS A grafikus processzorok alkalmazása feldolgozási algoritmusok használatához általánossá válhat. Leginkább a valós időben történő feldolgozási feladatoknál nyújthatnak nagy segítséget. A grafikus processzorok fejlődésével lehetőség válhat a nagy felbontású ek másodperc tört része alatt történő feldolgozására, elemzésére. Ezzel új távlatokat nyithatnak a folyamatok szabályzása, vezérlése valamint a robotika területén. 87
KÖSZÖNETNYILVÁNÍTÁS A bemutatott kutatómunka a TÁMOP-4.2.1.B-10/2/KONV-2010-0001 jelű projekt részeként az Európai Unió támogatásával, az Európai Szociális Alap társfinanszírozásával valósult meg. IRODALOM [1] NVIDIA Corporation: NVIDIA CUDA compute unified device architecture programming guide, Version 2.0, 6/7/2008, http://developer.nvidia.com/cuda, [Megtekintve 2011. November 2.] [2] http://www.nvidia.com/object/personal-supercomputing.html, [Megtekintve 2011 November 2.] [3] Owens, J., Houston, M., Luebke, D., Green, S., Stone, J., Phillips, J.: GPU Computing, Proceedings of the IEEE 96(5), 879 899, 2008 [4] Yannick Allusse, Patrick Horain, Ankit Agarwal, Cindula Saipriyadarshan: GpuCV: A GPU-accelerated framework for Image Processing and Computer Vision, Lecture Notes in Computer Science, Volume 5359/2008, 430-439 [5] Y. Luo and R. Duraiswami: Canny edge detection on NVIDIA CUDA, Computer Vision and Patern Recognation Workschops, 2008. CVPR Workschops 2008. IEEE Computer Society Conference on, 23-28 June 2008 pp 1-8. [6] James Fung, Steve Mann, and Chris Aimone: OpenVIDIA: Parallel GPU computer vision, Proceedings of the ACM Multimedia 2005, Singapore, Nov. 6-11 2005, pp. 849 852. [7] M. Ujaldn, A. Ruiz, and N. Guil: On the computation of the circle hough transform by a GPU rasterizer, Pattern Recognition Letters, vol. 29, no. 3, pp. 309 318, 2008. [8] Richard Membarth, Hritam Dutta, Frank Hannig, and Jürgen Teich : Efficient Mapping of Streaming Applications for Image Processing on Graphics Cards, Transactions on High-Performance Embedded Architectures and Compilers (Transactions on HiPEAC), 2011 [9] L. Pan, L. Gu and J. Xu: Implementation of medical image segmention in CUDA, Technology and Applications in Biomedicine, 2008. ITAB 2008. International Conference on, 30-31 May 2008 pp. 82-85. [10] Hicham Ghorayeb, Bruno Steux, and Claude Laurgeau: Boosted algorithms for visual object detection on graphics processing units, Lecture Notes in Computer Science, ACCV 2006, vol. 3852/2006, pp. 254 263. [11] Sudipta N. Sinha, Jan-Michael Frahm, Marc Pollefeys, and Yakup Genc: Feature tracking and matching in video using programmable graphics hardware, Machine Vision and Applications, 2007. [12] Lalonde, Byrns, Gagnon, Teasdale, and Laurendeau: Real-time eye blink detection with gpu-based sift tracking, CRV, vol. 00, pp. 481 487, 2007. [13] Simon Harding: Evolution of image filters on graphics processor units using Cartesian Genetic Programming, IEEE Congress on Evolutionary Computation 2008: 1921-1928. 88
[14] R. H. Luke, D. T. Anderson, J. M. Keller, S. Coupland: Fuzzy Logic-Based Image Processing Using Graphics Processor Units, IFSA/EUSFLAT Conf. 2009: pp 288-293. 89
TARTALOMJEGYZÉK Antal Dániel EJTÉSI TESZT EGYSZERSÍTETT MODELLEZÉSE A TERVEZÉS FÁZISÁBAN 1 Bodolai Tamás MINTATESZTEL SZOFTVER FEJLESZTÉSE LINE SCAN KAMERÁS ALKALMAZÁSOKHOZ 7 Bodzás Sándor DESIGNING AND MODELLING OF WORM GEAR HOB 12 Burmeister Dániel BUCKLING OF SHELL-STIFFENED AND AXISYMMETRICALLY LOADED ANNULAR PLATES 18 Daróczy Gabriella EMOTION AND THE COMPUTATIONAL MODEL OF METAPHORS 24 Drágár Zsuzsa NEM SZABVÁNYOS SZERSZÁM-ALAPPROFIL KIALAKÍTÁSÁNAK LEHETSÉGEI FOGASKEREKEKHEZ 30 Fekete Tamás MEMBRÁNOK ALKAKMAZÁSA SZINKRON VÁLTAKOZÓ ÁRAMÚ HIDRAULIKUS HAJTÁSOKBAN 35 Ferenczi István MODELING THE BEHAVIOR OF PROFINET IRT IN GIGABIT ETHERNET NETWORK 41 Ficsor Emese AUTOMATIZÁLT AZONOSÍTÁSTECHNIKAI ÉS NYOMONKÖVETÉSI LEHETSÉGEK VIZSGÁLATA INTERMODÁLIS SZÁLLÍTÁS SORÁN 47 Gáspár Marcell Gyula NAGYSZILÁRDSÁGÚ ACÉL HEGESZTÉSTECHNOLÓGIÁJÁNAK FEJLESZTÉSE A HLÉS ID ELEMZÉSÉVEL 54 Hriczó Krisztián NEMNEWTONI FOLYADÉKOK HATÁRRÉTEG ÁRAMLÁSÁNAK HASONLÓSÁGI MEGOLDÁSAI KONVEKTÍV FELÜLETI PEREMFELTÉTELEK MELLETT 60 Kelemen László Attila DOMBORÍTOTT FOGAZAT MATEMATIKAI MODELLEZÉSE FOGASGYRS TENGELYKAPCSOLÓKHOZ 66
Krizsán Zoltán STRUCTURAL IMPROVEMENTS OF THE OPENRTM ROBOT MIDDLEWARE 72 Mándy Zoltán A POSSIBLE NEURAL NETWORK FOR A HOLONIC MANUFACTURING SYSTEM 78 Simon Pál GRAFIKUS PROCESSZOROK ALKALMAZÁSA KÉPFELDOLGOZÁSI FELADATOKRA 84 Skapinyecz Róbert OPTIMALIZÁLÁSI LEHETSÉGEK VIZSGÁLATA EGY E-PIACTÉRREL INTEGRÁLT VIRTUÁLIS SZÁLLÍTÁSI VÁLLALATNÁL 90 Somoski Gábor COLD METAL TRANSFER THE CMT PROCESS 96 Szabó Adél Anett A TELJES KÖLTSÉG KONCEPCIÓ JELENTSÉGE A VÁLLALATI BESZERZÉSI GYAKORLATBAN 102 Szamosi Zoltán MEZGAZDASÁGI HULLADÉKOK VIZSGÁLATA 108 Szilágyiné Biró Andrea BETÉTEDZÉS ACÉLOK KÜLÖNBÖZ HMÉRSÉKLET KARBONITRIDÁLÁSA 114 Tomkovics Tamás DARABÁRU OSZTÁLYOZÓ RENDSZEREK KISZOLGÁLÁSI STRATÉGIÁIT BEFOLYÁSOLÓ JELLEMZK; A RENDSZEREK MODULJAI KÖZÖTTI ÖSSZEFÜGGÉSEK FELTÁRÁSA 120 Tóth Zsolt EL REDUKCIÓ ALKALMAZÁSA A TBL ALGORITMUS IDKÖLTSÉGÉNEK CSÖKKENTÉSÉRE 126 Varga Zoltán KONKRÉT LOGISZTIKAI MINTARENDSZER MODELLEZÉSE 131 Vincze Dávid MATLAB INTERFACE FOR THE 3D VIRTUAL COLLABORATION ARENA 137 Wagner György INTENZÍTÁS BÁZISÚ OPTIMALIZÁLÁS FORGÁCSOLÁSI PARAMÉTEREK MEGHATÁROZÁSÁHOZ 143