Please use this identifier to cite or link to this item: https://olympias.lib.uoi.gr/jspui/handle/123456789/30621
Full metadata record
DC FieldValueLanguage
dc.contributor.authorΚλεφτάκης, Ηλίαςel
dc.date.accessioned2021-03-03T12:09:10Z-
dc.date.available2021-03-03T12:09:10Z-
dc.identifier.urihttps://olympias.lib.uoi.gr/jspui/handle/123456789/30621-
dc.identifier.urihttp://dx.doi.org/10.26268/heal.uoi.10464-
dc.rightsAttribution-NonCommercial-NoDerivs 3.0 United States*
dc.rights.urihttp://creativecommons.org/licenses/by-nc-nd/3.0/us/*
dc.subjectArgoDSMen
dc.subjectMPIen
dc.subjectOMPIen
dc.subjectOpenMPen
dc.titleΥποστήριξη σύγχρονων εκδόσεων του OpenMP σε συστάδες πολυπύρηνων υπολογιστώνel
dc.titleDeploying recent versions of OpenMP onto multicore clustersen
heal.typemasterThesis-
heal.type.enMaster thesisen
heal.type.elΜεταπτυχιακή εργασίαel
heal.classificationOpenMP-
heal.dateAvailable2021-03-03T12:10:10Z-
heal.languageel-
heal.accessfree-
heal.recordProviderΠανεπιστήμιο Ιωαννίνων. Πολυτεχνική Σχολή. Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικήςel
heal.publicationDate2020-
heal.bibliographicCitationΒιβλιογραφία: σ. 103-106el
heal.abstractΟι σύγχρονες υπολογιστικές συστάδες (clusters) είναι κατανεμημένα συστήματα που αποτελούνται από επιμέρους κόμβους, καθένας από τους οποίους είναι ένα μικρό σύστημα κοινόχρηστης μνήμης. Η αποτελεσματική χρήση τους, επομένως, απαιτεί από τον προγραμματιστή να κατανείμει τα δεδομένα και τους υπολογι- σμούς στους επιμέρους κόμβους σε πρώτο στάδιο και στους πυρήνες και τα νήματα που αποτελούν κάθε κόμβο σε δεύτερο στάδιο. Ως αποτέλεσμα, η διαδικασία είναι δύσκολη και επιρρεπής σε σφάλματα. Το OpenMP είναι ένα απλό και εύχρηστο πρότυπο για τον παράλληλο προγραμ- ματισμό συστημάτων κοινόχρηστης μνήμης. Στο παρελθόν είχαν γίνει προσπάθειες επέκτασής του ώστε να είναι εφικτή η χρήση του σε κατανεμημένα περιβάλλοντα, αλλά σταμάτησαν στις αρχικές εκδόσεις του προτύπου, πολύ πριν το OpenMP απο- κτήσει τις δυνατότητες που το έκαναν δημοφιλές και ισχυρό, όπως είναι τα tasks. Στην παρούσα εργασία, παρουσιάζουμε την πρώτη προσπάθεια προς την πλήρη και διάφανη εκτέλεση προγραμμάτων OpenMP, τα οποία χρησιμοποιούν όλα τα προηγμένα προγραμματιστικά χαρακτηριστικά του, σε clusters. Αναλύουμε τον τρόπο λειτουργίας της υλοποίησής μας, δίνοντας έμφαση στα σημαντικότερα προβλήματα που αντιμετωπίσαμε. Αυτά αφορούν τον τρόπο δια- χείρισης των κοινόχρηστων μεταβλητών μεταξύ των κόμβων, την ενσωμάτωση των βιβλιοθηκών ArgoDSM και TORC για υποστήριξη sDSM (software Distributed Shared Memory) και κατανεμημένου tasking, αντίστοιχα, και την παροχή κατανεμημένων κλειδαριών και barriers. Για την αντιμετώπισή τους απαιτήθηκαν τόσο συνολικές αλλαγές στο σύστημα υποστήριξης εκτέλεσης του παραλληλοποιητικού μεταφραστή OMPi, όσο και τροποποιήσεις στον πηγαίο κώδικα των ArgoDSM και TORC. Στόχος μας είναι να παρέχουμε ένα εύχρηστο προγραμματιστικό μοντέλο για κατανεμημένα περιβάλλοντα και όχι να υποκαταστήσουμε τη χρήση του MPI. Πα- ρόλο αυτά, τα πειράματά μας αποδεικνύουν ότι μπορούμε να πετύχουμε αξιόλογες επιδόσεις, αρκεί τα προγράμματα να μην κάνουν εκτεταμένη χρήση λειτουργιών συγχρονισμού για την εξασφάλιση της συνέπειας μνήμης και, αν χρειάζονται tasks, αυτά να δημιουργούνται από όλους τους συμμετέχοντες κόμβους.el
heal.abstractModern clusters are distributed systems consisting of individual nodes, that are small shared memory systems. Thus, to program them efficiently, one would need to distribute their data and computations among the cluster’s nodes at first phase and then among the cores and threads of each node at second phase. Even though this is a fairly common way to deal with these machines, it is considered difficult and error prone for many programmers, as it requires the use of different techniques and APIs. OpenMP is a simple and easy to use API for programming shared memory systems. In the past, several studies tried to expand it in order to be used in distributed environments, but they ceased at version 2.5, long before OpenMP obtained the functionalities that made it popular, such as tasks. In this thesis, we expand OMPi, a research OpenMP to C compiler, to support the transparent execution of parallel programs that contain OpenMP directives in clusters, while requiring little or even no modification to their source code. Moreover, to the best of our knowledge, our implementation is the first to support programs with OpenMP task directives, but with some limitations. Furthermore, we discuss how software Distributed Shared Memory (sDSM) libraries can be used to provide the illusion of a shared memory environment where such does not exist, as for example in clusters. We present the inner workings of the ArgoDSM library and its advantages that made us intergrade it in our impleimplementation. Similarly, we discuss how tasking can be used to allow the execution of independent functions, or tasks, in a distributed system, how the TORC library works and why we preferred to use it. We thoroughly analyze our implementation and focus on the main problems we faced. These include managing shared variables across nodes, incorporating ArgoDSM and TORC libraries and providing distributed locks and barriers that confront to the OpenMP requirements. We also show how every component coordinates together when executing parallel regions with reduction operations and when creating and executing tasks. To manage these problems, many changes to OMPi’s runtime system were required, as well as modifications to the source code of ArgoDSM and TORC. However, our implementation is still open for extension; we provide two APIs so these libraries can be easily substituted in the future, if need arises. Our goal is to provide an easy to use programming model for distributed environments and not to substitute the use of MPI. Nonetheless, the experimental results we show prove that we can achieve significant performance, as long as the programs do not make extensive use of synchronization operations to ensure memory coherency and, if OpenMP tasks are needed, they are created by every participant node and not by just one of them.en
heal.advisorNameΔημακόπουλος, Βασίλειοςel
heal.committeeMemberNameΔημακόπουλος, Βασίλειοςel
heal.committeeMemberNameΜανής, Γεώργιοςel
heal.committeeMemberNameΠιτουρά, Ευαγγελίαel
heal.academicPublisherΠανεπιστήμιο Ιωαννίνων. Πολυτεχνική Σχολή. Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικήςel
heal.academicPublisherIDuoi-
heal.numberOfPages108 σ.-
heal.fullTextAvailabilitytrue-
Appears in Collections:Διατριβές Μεταπτυχιακής Έρευνας (Masters) - ΜΗΥΠ

Files in This Item:
File Description SizeFormat 
Μ.Ε. ΚΛΕΦΤΑΚΗΣ ΗΛΙΑΣ 2020.pdf975.93 kBAdobe PDFView/Open


This item is licensed under a Creative Commons License Creative Commons