Parallel Computing in Image Processing Using GPU and CUDA Architecture
Total Page:16
File Type:pdf, Size:1020Kb
Slovak University of Technology in Bratislava Faculty of Civil Engineering Department of Mathematics and Constructive Geometry Academic year: 2017/2018 Reg. No.: SvF-5343-63353 MASTER THESIS TOPIC Student: Bc. Alexander Baťka Student’s ID: 63353 Study programme: Mathematical and Computational Modeling Study field: 9.1.9. Applied Mathematics Thesis supervisor: Ing. Jozef Urbán, PhD. Topic: Parallel computing in image processing using GPU and CUDA architecture Language of thesis: English Specification of Assignment: Téma sa zaoberá paralelizáciou algoritmov spracovania obrazu pomocou grafických procesorov využitím architektúry CUDA (Compute Unified Device Architecture). Študent naštuduje problematiku využitia GPU pre všeobecné výpočty. Naučí sa pomocou CUDA paralelizovať výpočty používané v spracovaní obrazu ako BiConjugate Gradient Stabilized Method, filtrácia obrazu lineárnou rovnicou vedenia tepla, transformácia a registrácia obrazu. Dosiahnuté výsledky vhodne prezentuje. Selected bibliography: 1. Sanders, J. – Kandrot, E. CUDA by Example: An Introduction to General-Purpose GPU Programming. Upper Saddle River : Addison Wesley, 2011. 290 s. ISBN 978-0-13-138768-3. 2. Krivá, Z. – Mikula, K. – Stašová, O. Spracovanie obrazu: Vybrané kapitoly z prednášok. Bratislava : Slovenská technická univerzita v Bratislave, 2016. 149 s. ISBN 978-80-227-4535-2. 3. Bi-CGSTAB: A fast and smoothly converging variant of Bi-CG for the solution of nonsymmetric linear sys- tems, SIAM J. Sci. Statist. Comput., 13 (1992), pp. 631–644 4. CUDA programming: A Developers guide to parallel computing with GPUs, Shane Cook, 2013, ISBN-978- 0-12-415933-4 Assignment procedure from: 02. 10. 2017 Date of thesis submission: 10. 05. 2018 Bc. Alexander Baťka Student prof. RNDr. Radko Mesiar, DrSc. prof. RNDr. Karol Mikula, DrSc. Head of department Study programme supervisor POKYNY na vypracovanie diplomovej práce Úvodné ustanovenie V zmysle zákona č. 131/2002 Z. z. o vysokých školách a o zmene a doplnení niektorých zákonov v znení neskorších predpisov je súčasťou štúdia podľa každého študijného programu aj záverečná práca. Jej obhajoba patrí medzi štátne skúšky. Záverečnou prácou pri štúdiu podľa študijného programu druhého stupňa je diplomová práca. Podkladom na vypracovanie diplomovej práce je zadanie diplomovej práce Štruktúra záverečnej práce titulný list, zadanie záverečnej práce, pokyny na vypracovanie, vyhlásenie autora, názov a abstrakt v slovenskom a v anglickom jazyku (spolu v rozsahu jednej strany), obsah s očíslovaním kapitol, zoznam príloh, zoznam skratiek a značiek, text samotnej práce (odporúčané členenie), úvod, súčasný stav problematiky, ciele záverečnej práce, vlastné riešenie členené na kapitoly podľa charakteru práce, zhodnotenie dosiahnutých výsledkov resp. navrhnutých riešení, záver, resumé v slovenskom jazyku v rozsahu spravidla 10 % rozsahu ZP (len pre práce vypracované v cudzom jazyku), zoznam použitej literatúry, prílohy (výkresy, tabuľky, mapy, náčrty) vrátane postera s rozmermi 1000x700 mm. Rozsah a forma 1. Obsah a forma záverečnej práce musí byť spracovaná v zmysle vyhlášky MŠVVaŠ SR č. 233/2011 Z. z., ktorou sa vykonávajú niektoré ustanovenia zákona č. 131/2002 Z. z. a v zmysle Metodického usmernenia č. 56/2011 o náležitostiach záverečných prác. 2. Vyžadovaný rozsah diplomovej práce je 30 až 50 strán. Odovzdáva sa v dvoch vyhotoveniach. Jedno vyhotovenie musí byť viazané v pevnej väzbe (nie hrebeňovej) tak, aby sa jednotlivé listy nedali vyberať. Rozsiahle grafické prílohy možno v prípade súhlasu vedúceho práce odovzdať v jednom vyhotovení. 3. Autor práce je povinný vložiť prácu v elektronickej forme do akademického informačného systému. Autor zodpovedá za zhodu listinného aj elektronického vyhotovenia. 4. Po vložení záverečnej práce do informačného systému, predloží autor fakulte ním podpísaný návrh licenčnej zmluvy. Návrh licenčnej zmluvy je vytvorený akademickým informačným systémom. 5. Odporúčaný typ písma je Times New Roman, veľkosť 12 a je jednotný v celej práci. Odporúčané nastavenie strany - riadkovanie 1,5, okraj vnútorný 3,5 cm, vonkajší 2 cm, zhora a zdola 2,5 cm, orientácia na výšku, formát A4. 6. Obrázky a vzorce sa číslujú v rámci jednotlivých kapitol (napr. obr. 3.1 je obrázok č. 1 v kapitole 3). Vzorce sa číslujú na pravom okraji riadku v okrúhlych zátvorkách - napr. (3.1). 7. Všetky výpočty musia byť usporiadané tak, aby bolo možné preveriť ich správnosť. 8. Pri všetkých prevzatých vzorcoch, tabuľkách, citovaných častiach textu musí byť uvedený prameň. 9. Citovanie literatúry vrátane elektronických materiálov sa uvádza podľa STN ISO 690 (01 0197): 2012. Informácie a dokumentácia. Návod na tvorbu bibliografických odkazov na informačné pramene a ich citovanie. 10. Príklad zoznamu bibliografických odkazov: ABELOVIČ, J. a kol.: Meranie v geodetických sieťach. Bratislava, Alfa 1990, ISBN 0-1554-9173. MICHALČÁK, O. – ADLER, E.: Výskum stability dunajských hrádzí. In: Zborník vedeckých prác Stavebnej fakulty SVŠT. Bratislava: Edičné stredisko SVŠT 1976, s. 17-28. ISBN 0-3552-5214. ŠÜTTI, J.: Určovanie priestorových posunov stavebných objektov. Geodetický kartografický obzor. 2000, roč. 2, č. 3, s. 8-16. ISSN 0811-6900. Article 18. Technical Cooperation. http://www.lac.uk/iso/tc456 (2013-09-28) 11. Za jazykovú a terminologickú správnosť záverečnej práce zodpovedá diplomant. 12. Formu postera (elektronická alebo aj tlačená) určí garant študijného programu. 13. Vzor pre poster je uvedený na dokumentovom serveri v akademickom informačnom systéme univerzity. ....................................................... podpis garanta študijného programu Ustanovenia týchto pokynov som vzal na vedomie. Som si vedomý(á), že ak nebude moja diplomová práca vypracovaná v súlade s týmito pokynmi, nebude prijatá na obhajobu. V Bratislave ........................... ..................................................... podpis študenta i Cestnéˇ prehlásenie Prehlasujem, že som diplomovú prácu Parallel computing in image processing using GPU and CUDA architecture vypracoval samostatne, na základe použitej literatúry a s odbornou pomocou vedúceho práce. Bratislava May 9, 2018 ............................................... vlastnorucnýˇ podpis ii Acknowledgment: I would like to thank my supervisor Ing. Jozef Urbán, PhD. for help, time spent answer- ing my question, understanding in bad times and instant replies to emails regarding the thesis in any hour of the day. iii Abstrakt Cielom práce je porozumiet’, porovnat’ a následne integrovat’ paralelné algoritmy spra- covania obrazu, algoritmických solverov do CUDA. V rámci práce treba vybrat’ vhodné existujúce softvérové prostriedky, programovacie jazyky, prostredie, knižnicu CUDA a za pomoci správneho hardvéru vytvorit’ paralelné algoritmy na grafickej karte, porovnat’ ich z paralelným algoritmami na CPU, vyhodnotit’ nároky potrebné na zníženie casovýchˇ nárokov a zhodnotit’ cenové náklady hardvéru pre jednotlivé prístupy. Kl’úcovéˇ slová: CUDA, C++, Paralelný algoritmus iv Abstract The goal of our paper is to understand, compare and integrate parallel algorithms for image processing and algorithmic solvers to CUDA. Within the paper it is needed to chose correct existing software instruments, programming languages, development environment, CUDA library and with the help of correct hardware create parallel algorithms on graphic card, compare them with parallel algorithms on CPUs, evaluate the needs to decrease the time requirements and conclude the price of hardware for either approaches. Keywords: CUDA, C++, Parallel algorithm Contents Introduction 1 1 Hardware 3 1.1 CPU - central processing unit . .3 1.2 GPU - graphical processing unit . .5 1.3 Memory . .5 1.3.1 RAM . .6 1.3.2 GPU RAM . .6 1.4 Architecture of parallel computers . .6 1.4.1 Examples of parallel architectures . .7 2 Parallel programming 11 2.1 Models of parallel programming . 11 2.2 Communication . 12 2.2.1 Communication speed . 13 2.2.2 Collective communication . 13 2.2.3 Point-to-point communication . 13 2.3 Load balancing . 13 2.3.1 Multi-processing CPU APIs . 13 2.3.2 Multi-processing GPU APIs . 14 2.4 Memory limitations . 16 2.4.1 Programming on CPU . 16 2.4.2 Programming on GPU . 17 2.5 Comparison of computing performance . 17 2.5.1 Architecture . 18 2.5.2 Frequency and number of cores . 18 2.5.3 Bandwidth . 18 2.5.4 FLOPS . 19 2.5.5 Price/performance comparison . 19 2.5.6 Conclusion . 24 v CONTENTS vi 3 Implementation 25 3.1 Language C++ . 25 3.2 Development environment . 25 3.3 Unit testing . 26 3.4 Differentiation between programming on CPU/GPU . 26 3.4.1 Memory allocation and copying on device . 26 3.4.2 Kernel . 27 3.4.3 Blocks and grids . 28 3.4.4 Error handling . 30 3.4.5 Comparison of code on host vs. code on device . 30 3.5 Data passing and performance decrease . 32 3.5.1 Direct copy . 32 3.5.2 Data streaming and concurrency . 32 3.5.3 Unified memory . 34 4 Experiments 36 4.1 Matrix operations . 37 4.1.1 Matrix additions . 37 4.1.2 Matrix-vector multiplication . 38 4.1.3 Matrix multiplication . 39 4.2 Iterative methods . 40 4.2.1 Preconditioned BiConjugate Gradient Stabilized method (BiCGStab) 40 4.3 Image processing algorithm - Linear filtration . 42 4.3.1 Linear filtration using transient heat transfer . 43 4.3.2 Implementation comparison . 44 4.4 Distance function in image processing . 44 4.4.1 Brute force distance function . 45 4.5 Shape registration . 46 Conclusion 51 Resumé 53 Bibliography 55 Appendix 56 CONTENTS vii Acronyms API Application programming interface BiCGStab BiConjugate Gradient