Úkolem této práce je implementace SVM klasifikátorů na GPU. Je zde nastíněn úvod do programování v jazyce CUDA C, který je také použit pro realizaci klasifikátoru se čtyřmi běžně používanými typy kernel funkcí, tedy lineární, polynomiální, RBF a tangenciální. Pro potřebu porovnání výsledků byl naprogramován generátor vstupních dat (model klasifikátoru a testovací obrazy), který je vhodný pro získání různě komplexních modelů bez nutnosti reálného měření dat. Dalším úkolem je porovnání časů běhu a výsledků klasifikace s volně dostupným toolboxem LIBSVM. Důležitou součástí této práce je optimalizace implementovaného klasifikátoru v programovacím jazyce CUDA C.
Annotation in English
The goal of this work is the implementation of SVM classifiers on GPU. There is a brief introduction to the CUDA C programming language, which is also used for the implementation of the classifier with four commonly used types of kernel functions, a linear, polynomial, RBF and tangential. To compare the results need to be programmed generator of input data (model classifier and test patterns), which is suitable for obtaining various complex models without the need for real life measurement data. Another challenge is the comparison of run times and the classification results with freely available LIBSVM toolbox. An integral part of this work is to optimize the classifier implemented in CUDA C programming language.
SVM classification, linear kernel function, polynomial kernel function, Gaussian RBF, hyperbolic tangent function, NVIDIA CUDA C, parallel programming on GPU
Length of the covering note
34 stran (45 505 znaků)
Language
CZ
Annotation
Úkolem této práce je implementace SVM klasifikátorů na GPU. Je zde nastíněn úvod do programování v jazyce CUDA C, který je také použit pro realizaci klasifikátoru se čtyřmi běžně používanými typy kernel funkcí, tedy lineární, polynomiální, RBF a tangenciální. Pro potřebu porovnání výsledků byl naprogramován generátor vstupních dat (model klasifikátoru a testovací obrazy), který je vhodný pro získání různě komplexních modelů bez nutnosti reálného měření dat. Dalším úkolem je porovnání časů běhu a výsledků klasifikace s volně dostupným toolboxem LIBSVM. Důležitou součástí této práce je optimalizace implementovaného klasifikátoru v programovacím jazyce CUDA C.
Annotation in English
The goal of this work is the implementation of SVM classifiers on GPU. There is a brief introduction to the CUDA C programming language, which is also used for the implementation of the classifier with four commonly used types of kernel functions, a linear, polynomial, RBF and tangential. To compare the results need to be programmed generator of input data (model classifier and test patterns), which is suitable for obtaining various complex models without the need for real life measurement data. Another challenge is the comparison of run times and the classification results with freely available LIBSVM toolbox. An integral part of this work is to optimize the classifier implemented in CUDA C programming language.
SVM classification, linear kernel function, polynomial kernel function, Gaussian RBF, hyperbolic tangent function, NVIDIA CUDA C, parallel programming on GPU
Research Plan
Seznamte se s problematikou SVM klasifikátorů, matematickými principy, na kterých jsou založeny a způsoby, kterými jsou implementovány.
Seznamte se s jazykem C (a jeho rozšířením pro CUDA), metodikou programování masivně paralelních výpočtů.
Implementujte tzv. forward run (tzn. pouze samotnou klasifikaci, nikoliv trénování SVM) pro běžně používané kernel funkce:
lineární, polynomiální, tangenciální a RBF. Experimentujte s různými přistupy k implementaci na GPU.
Navrhněte vhodnou sadu testů sloužící k otestování implementace: uvažte různé geometrie úlohy a různě složité klasifikátory.
Otestujte svoji implementaci (jak ve smyslu korektnosti výsledků, tak i ve smyslu rychlosti), porovnejte s volně dostupným toolboxem LIBSVM.
Na základě rychlostních testů identifikujte tzv. kritická místa a pokuste se je odstranit.
Research Plan
Seznamte se s problematikou SVM klasifikátorů, matematickými principy, na kterých jsou založeny a způsoby, kterými jsou implementovány.
Seznamte se s jazykem C (a jeho rozšířením pro CUDA), metodikou programování masivně paralelních výpočtů.
Implementujte tzv. forward run (tzn. pouze samotnou klasifikaci, nikoliv trénování SVM) pro běžně používané kernel funkce:
lineární, polynomiální, tangenciální a RBF. Experimentujte s různými přistupy k implementaci na GPU.
Navrhněte vhodnou sadu testů sloužící k otestování implementace: uvažte různé geometrie úlohy a různě složité klasifikátory.
Otestujte svoji implementaci (jak ve smyslu korektnosti výsledků, tak i ve smyslu rychlosti), porovnejte s volně dostupným toolboxem LIBSVM.
Na základě rychlostních testů identifikujte tzv. kritická místa a pokuste se je odstranit.
Recommended resources
CUDA C Programming Guide\\
CUDA C Best Practices Guide\\
další materiály dodá vedoucí bakalářské práce
Recommended resources
CUDA C Programming Guide\\
CUDA C Best Practices Guide\\
další materiály dodá vedoucí bakalářské práce