Analysing and Optimizing GPU Kernels with Machine Learning
Analýza a optimalizace GPU kernelů pomocí strojového učení
diploma thesis (DEFENDED)
View/ Open
Permanent link
http://hdl.handle.net/20.500.11956/119111Identifiers
Study Information System: 218966
Collections
- Kvalifikační práce [11190]
Author
Advisor
Referee
Straka, Milan
Faculty / Institute
Faculty of Mathematics and Physics
Discipline
Software Systems
Department
Department of Software Engineering
Date of defense
1. 7. 2020
Publisher
Univerzita Karlova, Matematicko-fyzikální fakultaLanguage
English
Grade
Excellent
Keywords (Czech)
strojové učení, neuronové sítě, GPU, kernel, optimalizace, analýzaKeywords (English)
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