Please use this identifier to cite or link to this item: https://olympias.lib.uoi.gr/jspui/handle/123456789/31020
Full metadata record
DC FieldValueLanguage
dc.contributor.authorΚασμερίδης, Ηλίαςel
dc.date.accessioned2021-05-12T08:29:10Z-
dc.date.available2021-05-12T08:29:10Z-
dc.identifier.urihttps://olympias.lib.uoi.gr/jspui/handle/123456789/31020-
dc.identifier.urihttp://dx.doi.org/10.26268/heal.uoi.10849-
dc.rightsAttribution-NonCommercial-NoDerivs 3.0 United States*
dc.rights.urihttp://creativecommons.org/licenses/by-nc-nd/3.0/us/*
dc.subjectΕπιταχυντές γραφικώνel
dc.subjectΠαράλληλα συστήματαel
dc.subjectGraphics processing unitsen
dc.subjectParallel systemsen
dc.subjectCUDAen
dc.subjectOpenMP
dc.titleΣτοχεύοντας επιταχυντές γραφικών βασισμένους σε CUDΑ μέσω OpenMPel
dc.titleTargeting CUDA-based graphics accelerators through OpenMPen
heal.typemasterThesis-
heal.type.enMaster thesisen
heal.type.elΜεταπτυχιακή εργασίαel
heal.classificationOpenMP-
heal.dateAvailable2021-05-12T08:30:10Z-
heal.languageel-
heal.accessfree-
heal.recordProviderΠανεπιστήμιο Ιωαννίνων. Πολυτεχνική Σχολή. Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικήςel
heal.publicationDate2021-
heal.bibliographicCitationΒιβλιογραφία: σ. 85-87el
heal.abstractΤα ετερογενή συστήματα τείνουν να γίνουν τα συνηθέστερα στον κόσμο της παράλληλης επεξεργασίας, με τους επιταχυντές γραφικών (GPUs) να αποτελούν πλέον το δεύτερο βασικό συστατικό τους, μετά τους κύριους επεξεργαστές. Με την εξέλιξη των εξειδικευμένων μονάδες γραφικής επεξεργασίας σε γενικότερου σκοπού, δόθηκε η δυνατότητα χρήσης του γραφικού υλικού από απλούς προγραμματιστές εφαρμογών, μέσω κατάλληλων διεπαφών. Η CUDA είναι ένα παράδειγμα διεπαφής και πλατφόρμας προγραμματισμού υψηλών επιδόσεων, η οποία επιτρέπει στους προγραμματιστές να χρησιμοποιούν τους πυρήνες μιας συσκευής γραφικής επεξεργασίας για γενικούς παράλληλους υπολογισμούς. Όμως, η συγγραφή ενός προγράμματος που κάνει χρήση CUDA είναι μια δύσκολη διαδικασία, καθώς η ετερογένεια του υλικού μεταφράζεται και σε προγραμματιστική ετερογένεια• απαιτούνται δύο ειδών κώδικες, ένας για τους κύριους επεξεργαστές και ένας για τους επιταχυντές γραφικών που υπάρχουν στο σύστημα. Για την αντιμετώπιση προκλήσεων αυτής της φύσης, προγραμματιστικά πρότυπα όπως το OpenMP έχουν εισάγει νέα σύνολα οδηγιών ώστε να γίνεται απρόσκοπτα η συγγραφή ενιαίου κώδικα και η αυτόματη φόρτωση και εκτέλεση τμημάτων του σε συνοδές υπολογιστικές συσκευές. Στην παρούσα εργασία περιγράφεται μία υλοποίηση των οδηγιών αυτών στο πλαίσιο του παραλληλοποιητικού μεταφραστή OMPi, στοχεύοντας επιταχυντές που βασίζονται στο μοντέλο της CUDA. Για την υποστήριξη των οδηγιών, εμπλουτίστηκε το τμήμα μεταγλώττισης του μεταφραστή, το οποίο περιλαμβάνει τη συντακτική ανάλυση των οδηγιών OpenMP και τον μετασχηματισμό τους σε κώδικα C. Επιπλέον, εισήχθησαν βοηθητικές λειτουργίες που αφορούν το αφηρημένο συντακτικό δέντρο του OMPi, μια δενδρική απεικόνιση της συντακτικής δομής του πηγαίου κώδικα χρήστη. Οι λειτουργίες αυτές καθιστούν εύκολη την μελλοντική εισαγωγή νέων οδηγιών ή επέκταση των ήδη υπάρχοντων. Τέλος, δημιουργήθηκε η βιβλιοθήκη υποστήριξης εκτέλεσης CUDADEV, η οποία αποτελεί τη γέφυρα επικοινωνίας μεταξύ του κύριου συστήματος και των επιταχυντών αυτής της κλάσης. Για την CUDADEV, υλοποιήθηκε τόσο η διεπαφή hostpart, η οποία αποτελεί τον πυρήνα της επικοινωνίας κυρίου συστήματος-συσκευής, όσο και το τμήμα devpart, ένα επίπεδο υποστήριξης λειτουργικότητας OpenMP στο εσωτερικό του κώδικα που εκτελείται στη συσκευή. Το τμήμα hostpart της συσκευής CUDADEV, χρησιμοποιεί στο εσωτερικό του τη προγραμματιστική διεπαφή CUDA Driver, για τον χειρισμό μιας μονάδας γραφικής επεξεργασίας CUDA. Μέσω της εκτέλεσης δοκιμαστικών εφαρμογών σε δύο διαφορετικά συστήματα που διαθέτουν δύο εντελώς διαφορετικές μονάδες γραφικής επεξεργασίας CUDA, επιβεβαιώνεται η ορθότητα των νέων υλοποιήσεων, όπως επίσης και αξιολογούνται οι επιδόσεις τους. Συνεπάγεται ότι η νέα λειτουργικότητα μπορεί να επιτύχει έως και τρεις φορές καλύτερες επιδόσεις, συγκριτικά με την παραλληλοποίηση στον κύριο επεξεργαστή μέσω της αντίστοιχης οδηγίας OpenMP, ενώ για σειριακά προγράμματα, η επιτάχυνση δύναται να φτάσει τις 170 φορές.el
heal.abstractHeterogeneous systems tend to become a common place in the world of parallel processing systems, with graphics accelerators (GPUs) now being their second key component, after main processors. With the evolution of graphics processing units into general purpose devices, developers were given the opportunity to use their hardware programmatically, through suitable interfaces. CUDA is an example of a high-performance programming interface and platform that allows developers to use the cores of a graphics processing unit for general parallel computing. However, writing a program that utilizes the CUDA functionality is a difficult process, as hardware heterogeneity translates into programming heterogeneity; two types of code are required, the first one is executed by the main processor and is responsible for any type of device handling, while the second one pertains to the graphics accelerators in the system. To tackle challenges of this nature, high-performance programming standards such as OpenMP have introduced new sets of directives, allowing programmers to write unified code and automatically offload and execute parts of it on computing devices. This work describes an implementation of these directives in the context of the OMPi compiler, targeting accelerators based on the CUDA model. To support the directives, we extended OMPi compiler functionality, which typically includes the analysis of the OpenMP instructions and their transformation to C code. In addition, we introduced some auxiliary features related to the abstract syntax tree, a tree representation of the user source code syntax. These features enable the introduction new directives or the extension of existing ones in the future. Finally, this work presents CUDADEV, a runtime library which enables communication between the host system and graphics accelerators of this class. CUDADEV consists of the hostpart interface, the core of the main processor-device communication, as well as the devpart library that brings OpenMP functionality support within the code running on the device. The hostpart section of the library, utilizes the CUDA Driver API in order to handle the targeted CUDA device. By running different benchmarking applications on two different systems with two completely different CUDA GPUs, we verified the correctness of the new implementations, as well as evaluated their performance. As far as the results are concerned, the new functionality can achieve up to three times better performance than the main processor parallelism through the corresponding OpenMP directive, while for serial programs, the speedup can reach 170 times.en
heal.advisorNameΔημακόπουλος, Βασίλειοςel
heal.committeeMemberNameΔημακόπουλος, Βασίλειοςel
heal.committeeMemberNameΜανής, Γεώργιοςel
heal.committeeMemberNameΦούντος, Ιωάννηςel
heal.academicPublisherΠανεπιστήμιο Ιωαννίνων. Πολυτεχνική Σχολή. Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικήςel
heal.academicPublisherIDuoi-
heal.numberOfPages198 σ.-
heal.fullTextAvailabilitytrue-
Appears in Collections:Διατριβές Μεταπτυχιακής Έρευνας (Masters) - ΜΗΥΠ

Files in This Item:
File Description SizeFormat 
Μ.Ε. ΚΑΣΜΕΡΙΔΗΣ ΗΛΙΑΣ 2021.pdf855.1 kBAdobe PDFView/Open


This item is licensed under a Creative Commons License Creative Commons