Analysing and Optimizing GPU Kernels with Machine Learning
Analýza a optimalizace GPU kernelů pomocí strojového učení
diplomová práce (OBHÁJENO)

Zobrazit/ otevřít
Trvalý odkaz
http://hdl.handle.net/20.500.11956/119111Identifikátory
SIS: 218966
Kolekce
- Kvalifikační práce [11320]
Autor
Vedoucí práce
Oponent práce
Straka, Milan
Fakulta / součást
Matematicko-fyzikální fakulta
Obor
Softwarové systémy
Katedra / ústav / klinika
Katedra softwarového inženýrství
Datum obhajoby
1. 7. 2020
Nakladatel
Univerzita Karlova, Matematicko-fyzikální fakultaJazyk
Angličtina
Známka
Výborně
Klíčová slova (česky)
strojové učení, neuronové sítě, GPU, kernel, optimalizace, analýzaKlíčová slova (anglicky)
machine learning, neural networks, GPU, kernel, optimization, analysisGrafické výpočetní jednotky (GPU) byly původně používány výhradně pro účely grafického vykreslování. To se změnilo zavedením technologií jako je CUDA, které umožnily použití grafických procesorů jako kterýchkoliv jiných výpočetních zařízení. Psaní efektivního programu pro GPU, nazývaného také GPU kernel, je však jednou z nejnáročnějších programovacích disciplín. Nejnovější výzkum v této oblasti naznačuje, že tyto problémy by mohly být potenciálně zmírněny metodami strojového učení. Jeden obzvláště úspěšný přístup je založen na využití rekurentních neuronových sítí (RNNs) nad různými reprezentacemi zdrojového kódu. V této práci představujeme dvě řešení založená na RNNs, která jsou schopna odvodit výkonové charakteristiky CUDA GPU kernelu přímo z jeho mezikódu, který se nazývá PTX. Použitelnost námi vyvinutých dvou metod vyhodnocujeme ve dvou optimalizačních úlohách pro GPU. V první úloze jsou naše metody schopny dosáhnout přesnosti okolo 82 %, což jsou výsledky, které jsou pouze o málo horší než kterých dosahují nedávné práce v této oblasti. Při druhé, náročnější úloze, kde je cílem správně klasifikovat jednu z deseti tříd, dosahují naše dvě metody přesnosti nad 50%. Tyto slibné výsledky naznačují velký potenciál dalšího výzkumu, který by se ubíral podobným směrem. 1
Graphics processing units (GPUs) were originally used solely for the purpose of graph- ics rendering. This changed with the introduction of technologies like CUDA that enabled to use graphics processors as any other computing device. However, writing an efficient program for GPUs, also called GPU kernel, is one of the most difficult programming disciplines. The latest research in the field suggests that these difficulties could be po- tentially mitigated with machine learning methods. One especially successful approach is based on the utilization of recurrent neural networks (RNNs) over different representa- tions of source code. In this work, we present two RNN-based solutions that are able to derive performance characteristics of a CUDA GPU kernel directly from its intermediate representation called PTX. We assess the applicability of our two methods in two GPU op- timization tasks. In heterogeneous device mapping task, our methods are able to achieve accuracies of around 82%, results that are slightly worse than the current state of the art. In a more challenging achieved occupancy task, where the goal is to correctly predict one out of ten classes, our two methods achieve accuracies above 50%. These promising results indicate great potential in additional research focused in a similar direction. 1