GRAFIKUS PROCESSZOROK ALKALMAZÁSA KÉPFELDOLGOZÁSI FELADATOKRA Simon Pál PhD hallgató Miskolci Egyetem Hatvany József Informatikai Tudományok Doktori Iskola ABSTRACT 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ó képfeldolgozá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ó képessé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 képfeldolgozó 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 képes 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 képesek akár 150-szer gyorsabban is elvégezni a hagyományos processzorokhoz képest, a nagy probléma kisebb feladatokra osztásával, majd az eredmények későbbi egyesítésével. Ezen képesség miatt nagyon alkalmasak képfeldolgozá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 képes processzor található, így számítási teljesítménye többszörösen nagyobb mint amire a CPU képes [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 képesek 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 képes 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 képfeldolgozó 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ú képen. 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 képfeldolgozó eljárások végrehajtásához. A leggyakoribb művelet a konvolúció, amelyet minden képpontra 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 képpontokra 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ó kép 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 képek 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ű képeken. [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
66,95
89,11
135,62
145,88
sebességnövekedés
Összetett képfeldolgozó eljárásokat is implementáltak már GPU-ra, mint az orvosdiagnosztikai képfeldolgozás során használható kép javítási és objektum elkülönítési eljárások [9]. De szegmentáláson kívül a képen 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 képfeldolgozó algoritmus készült kép 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 kép 76800 pixel
640x480 kép 307200 pixel
960x720 kép 691200 pixel
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
1280x960 1280x1024 kép kép 1228800 1310720 pixel pixel
ÖSSZEFOGLALÁS A grafikus processzorok alkalmazása képfeldolgozá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ú képek 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] [2] [3] [4]
[5]
[6] [7] [8]
[9] [10] [11] [12] [13]
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.] http://www.nvidia.com/object/personal-supercomputing.html, [Megtekintve 2011 November 2.] Owens, J., Houston, M., Luebke, D., Green, S., Stone, J., Phillips, J.: GPU Computing, Proceedings of the IEEE 96(5), 879–899, 2008 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 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. 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. 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. 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 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. 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. 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. Lalonde, Byrns, Gagnon, Teasdale, and Laurendeau: Real-time eye blink detection with gpu-based sift tracking, CRV, vol. 00, pp. 481–487, 2007. 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 EGYSZER SÍ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 LEHET SÉ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 LEHET SÉ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 H LÉ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 FOGASGY R S 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 LEHET SÉGEK VIZSGÁLATA EGY E-PIACTÉRREL INTEGRÁLT VIRTUÁLIS SZÁLLÍTÁSI VÁLLALATNÁL 90 Somosk i Gábor COLD METAL TRANSFER – THE CMT PROCESS Szabó Adél Anett A TELJES KÖLTSÉG KONCEPCIÓ BESZERZÉSI GYAKORLATBAN
JELENT SÉGE
96 A
Szamosi Zoltán MEZ GAZDASÁGI HULLADÉKOK VIZSGÁLATA Szilágyiné Biró Andrea BETÉTEDZÉS ACÉLOK KARBONITRIDÁLÁSA
KÜLÖNBÖZ
VÁLLALATI 102 108
H MÉRSÉKLET 114
Tomkovics Tamás DARABÁRU OSZTÁLYOZÓ RENDSZEREK KISZOLGÁLÁSI STRATÉGIÁIT BEFOLYÁSOLÓ JELLEMZ K; A RENDSZEREK MODULJAI KÖZÖTTI ÖSSZEFÜGGÉSEK FELTÁRÁSA 120 Tóth Zsolt EL REDUKCIÓ ALKALMAZÁSA A TBL ALGORITMUS ID KÖ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