Závěrečná práce: Bc. Filip Petrovič: Framework pro auto-tuning paralelních kernelů
Diplomová práce
Framework pro auto-tuning paralelních kernelů
Framework for Parallel Kernels Auto-tuning
Anotace
Výstupom tejto práce je framework pre auto-tuning paralelných kernelov, ktoré sú napísané v jazyku OpenCL alebo CUDA. Framework zahrňuje pokročilú funkcionalitu, vrátane podpory pre kompozície kernelov a online auto-tuning. Text práce popisuje API a vnútornú štruktúru frameworku a prezentuje viacero príkladov využitia frameworku pre optimalizáciu kernelov.
Abstract
The result of this thesis is a framework for auto-tuning of parallel kernels which are written in either OpenCL or CUDA language. The framework includes advanced functionality such as support for composite kernels and online auto-tuning. The thesis describes API and internal structure of the framework and presents several examples of its utilization for kernel optimization.
Zadání práce
Při urychlování běhu aplikací jsou výkonově kritické části kódu často implementovány jako paralelní kernely (např. v OpenCL či CUDA), který dokáží běžet na akcelerátorech, popř. i konvenčním CPU. Implementace vysoce optimalizovaných kernelů je velmi náročná: programátor musí identifikovat, které aspekty kódu ovlivňují jeho efektivitu a experimentovat s jejich variantami (např. měnit pořadí vnořených cyklů, měnit stupeň rozvinutí cyklů, způsob uspořádání dat v paměti aj.). Prostor variant kódu je mnohorozměrný, jeho manuální prohledávání je tedy často nepraktické. Navíc optimální kombinace variant kódu je často rozdílná pro rozdílný hardware, velikost vstupu, parametry výpočtu aj. Autotuning je metoda, která umožňuje automatické prohledávání variant kódu a výběr nejrychlejší varianty na základě empirického měření času běhu. Aplikace s integrovaným autotuningem je tedy schopna adaptovat své parametry na konkrétní nastavení, data či konkrétní hardware a zlepšit efektivitu svého běhu.
V diplomové práci student navrhne a implementuje framework pro autotuning kernelů v alespoň jednom z jazyků OpenCL či C for CUDA. Funkcionalita implementovaného frameworku bude zahrnovat:
1) možnost vytvořit kernely, jejich vstupy a výstupy a tyto kernely nad danými vstupy a výstupy spouštět
2) vytvoření a prohledávání prostoru parametrů tuningu (měnící varianty kódu), tyto parametry budou do kódu kernelů exportovány jako makra preprocesoru, kernely pak budou v průběhu prohledávání prostoru parametrů tuningu rekompilovány s exportovanými makry
3) schopnost globální optimalizace kernelů: stejně jako kernel může být optimalizovaná kompozice kernelů, kde každý parametr tuningu může ovlivňovat více kernelů i kód spouštějící kernely (např. lze měnit formát dat vstupu a výstupu, počty spuštění kernelu aj.)
4) možnou integraci do produkčního software a tuning za běhu výpočtu (tzv. online tuning, kdy aplikace provádí svůj výpočet a tuner transparentně mění nastavení parametrů tuningu a hledá optimum)
V práci je doporučeno vyjít z existujícího tuneru CLTune, který implementuje body 1-2, avšak nepodporuje funkcionalitu vyžadovanou v bodech 3-4.
18. 5. 2018 11:21, doc. RNDr. Jiří Filipovič, Ph.D., učo 72898
- Zadáno/změněno 21. 6. 2018 17:08, Helena Kryštofová
- Záznam založen 7. 5. 2018 09:54, Jana Zemanová, učo 9619
- Zveřejnit od 17. 5. 2018 09:18, Alena Dvořáková
- Práce převzata 17. 5. 2018 09:18, Alena Dvořáková
Práce na příbuzné téma
Seznam prací, které mají shodná klíčová slova.
-
Evolution of Nvidia GPU from microarchitectures Pascal to Ampere
Mgr. Marek Toma, učo 485275 -
Implementace výpočtu ideálních odezev filtrů optického toku na GPU
RNDr. David Wiesner, Ph.D., učo 255597 -
Autotuning OpenCL implementace výpočtu mapy elektrostatického potenciálu
Mgr. Filip Petrovič -
Path tracing on GPU
Mgr. Vilém Otte -
Key derivation functions and their GPU implementations
Mgr. Ondrej Mosnáček, učo 409879 -
Generátor efektivního kódu fúzovaných CUDA kernelů
Mgr. Bedřich Lakomý, učo 172901 -
Research of Fedora Status for Machine Learning
Mgr. Dominik Tuchyňa -
Akcelerace kódování LDGM na grafických kartách
Mgr. Vojtěch David




