Knowledge base: Warsaw University of Technology

Settings and your account

Back

Interactive Module for GPU Threads Visualization

Mateusz Chiliński

Abstract

Our thesis helps in diagnosing and optimising algorithms that are run by Nvidia graphics cards. It consists of two modules: - the measurement module that works along the algorithm to take measurements - the analytical module, which allows the analysis of the results Our thesis focuses on the diagnostics of the performance of single threads on Nvidia graphics cards, thanks to which it is easier to optimise algorithms in the case of branching or any other negative effects associated with Nvidia architecture. Despite our measurement module being dedicated to the Nvidia architecture, it can be easily transformed into any other SIMD (Single Instruction Multiple Data) architecture. The analytical module is universal, hence the choice of Python - it is a portable tool between all the systems and easy to install and use. In our work, we also included several examples of algorithms with analysis that show how the tool can be used for diagnostic purposes. The main task we have done was to create already mentioned modules in a way that makes it as easy as possible to use and integrate with existing algorithms. Additionaly, thanks to the analysis of the examples we created, we have shown the branching phenomenon and the overflow of shared memory on Nvidia's graphics cards. The system is a library that the programmer uses in his work, and an analytical module that is independent and written in Python. The repository also contains usage examples. Library, which we also call the measurement module, must be added to the project. The computer on which we compile and run the project must meet the Nvidia requirements - the solution presented in this work requires a Nvidia graphics card that has CUDA along with CC greater than 3.0. Of course the measurement module can be transferred to GPUs made by other manufacturers, as long as they allow monitoring the work of a particular thread.
Diploma type
Engineer's / Bachelor of Science
Diploma type
Engineer's thesis
Author
Mateusz Chiliński (FMIS) Mateusz Chiliński,, Faculty of Mathematics and Information Science (FMIS)
Title in Polish
Interaktywny moduł wizualizacji pracy wątków GPU
Supervisor
Krzysztof Kaczmarski (FMIS/DIPS) Krzysztof Kaczmarski,, Department of Information Processing Systems (FMIS/DIPS)Faculty of Mathematics and Information Science (FMIS)
Certifying unit
Faculty of Mathematics and Information Science (FMIS)
Affiliation unit
Department of Information Processing Systems (FMIS/DIPS)
Study subject / specialization
, Informatyka (Computer Science)
Language
(pl) Polish
Status
Finished
Defense Date
08-02-2019
Issue date (year)
2019
Reviewers
Paweł Rzążewski (FMIS/DIPS) Paweł Rzążewski,, Department of Information Processing Systems (FMIS/DIPS)Faculty of Mathematics and Information Science (FMIS) Krzysztof Kaczmarski (FMIS/DIPS) Krzysztof Kaczmarski,, Department of Information Processing Systems (FMIS/DIPS)Faculty of Mathematics and Information Science (FMIS) Krzysztof Kaczmarski (FMIS/DIPS) Krzysztof Kaczmarski,, Department of Information Processing Systems (FMIS/DIPS)Faculty of Mathematics and Information Science (FMIS) Paweł Rzążewski (FMIS/DIPS) Paweł Rzążewski,, Department of Information Processing Systems (FMIS/DIPS)Faculty of Mathematics and Information Science (FMIS)
Keywords in Polish
Nvidia, cuda, gpu, rozgałęzienie wątków, optymalizacja, diagnostyka, algorytmy
Keywords in English
Nvidia, cuda, gpu, branching, optimalisation, diagnostics, algorithms
Abstract in Polish
Nasza praca inżynierska pomaga zdiagnozować jak i zoptymalizować algorytmy, których platformą docelową są procesory graficzne firmy Nvidia. Składa się ona z dwóch modułów: - modułu pomiarowego, który działa wraz z algorytmem w celu wykonania pomiarów - modułu analitycznego, który pozwala na analizę otrzymanych rezultatów w sposób łatwy i czytelny Nasza praca koncentruje się na diagnostyce pojedynczych wątków wykonywanych na procesorach graficznych firmy Nvidia, dzięki czemu dużo łatwiej zoptymalizować konkretny algorytm w przypadku pojawienia się branchingu lub innych negatywnych efektów związanych z architekturą Nvidii. O ile moduł pomiarowy jest dedykowany rozwiązaniu Nvidii, to można go łatwo przepisać na dowolną inną architekturę SIMD (ang. Single Instruction Multiple Data). Moduł analityczny jest uniwersalny, stąd też wybór Pythona - jest to narzędzie przenośne między praktycznie wszystkimi systemami i łatwe w instalacji, jak i obsłudze. W naszej pracy zawarliśmy także kilka przykładowych algorytmów wraz z kompleksową analizą, które pokazują, w jaki sposób narzędzie może być wykorzystywane w celach diagnostycznych. Głównym zadaniem, które wykonaliśmy jest stworzenie dwóch wyżej wymienionych modułów w sposób umożliwiający jak najłatwiejsze użycie i integrację z istniejącymi algorytmami. Dodatkowo, dzięki analizie stworzonych przez nas przykładów, pokazaliśmy zjawisko branchingu jak i przepełnienia pamięci wspólnej na procesorach graficznych firmy Nvidia. System ma postać biblioteki, którą programista wykorzystuje w swojej pracy, oraz modułu analitycznego, który jest niezależny i napisany w języku Python. Repozytorium zawiera także przykłady użycia systemu. W przypadku biblioteki, nazywanej przez nas także modułem pomiarowym, musi zostać ona dodana do projektu. Dodatkowo, komputer, na którym kompilujemy i uruchamiamy projekt, musi spełniać wymagania stawiane przez Nvidię - rozwiązanie prezentowane w tej pracy wymaga karty graficznej Nvidii, która posiada CUDA, jak i CC większego niż 3.0. Oczywiście schemat w przypadku modułu pomiarowego może zostać przeniesiony na procesory graficzne innych producentów, o ile pozwalają na monitorowanie pracy poszczególnego wątku.
File
  • File: 1
    PracaDyplomowa.pdf
Request a WCAG compliant version
Local fields
Identyfikator pracy APD: 29532

Uniform Resource Identifier
https://repo.pw.edu.pl/info/bachelor/WUT6fa232866a8e429685b42f2f65f19582/
URN
urn:pw-repo:WUT6fa232866a8e429685b42f2f65f19582

Confirmation
Are you sure?
Report incorrect data on this page