Υποστήριξη σύγχρονων εκδόσεων του OpenMP σε συστάδες πολυπύρηνων υπολογιστών
Φόρτωση...
Ημερομηνία
Συγγραφείς
Κλεφτάκης, Ηλίας
Τίτλος Εφημερίδας
Περιοδικό ISSN
Τίτλος τόμου
Εκδότης
Πανεπιστήμιο Ιωαννίνων. Πολυτεχνική Σχολή. Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής
Περίληψη
Τύπος
Είδος δημοσίευσης σε συνέδριο
Είδος περιοδικού
Είδος εκπαιδευτικού υλικού
Όνομα συνεδρίου
Όνομα περιοδικού
Όνομα βιβλίου
Σειρά βιβλίου
Έκδοση βιβλίου
Συμπληρωματικός/δευτερεύων τίτλος
Περιγραφή
Οι σύγχρονες υπολογιστικές συστάδες (clusters) είναι κατανεμημένα συστήματα
που αποτελούνται από επιμέρους κόμβους, καθένας από τους οποίους είναι ένα
μικρό σύστημα κοινόχρηστης μνήμης. Η αποτελεσματική χρήση τους, επομένως,
απαιτεί από τον προγραμματιστή να κατανείμει τα δεδομένα και τους υπολογι-
σμούς στους επιμέρους κόμβους σε πρώτο στάδιο και στους πυρήνες και τα νήματα
που αποτελούν κάθε κόμβο σε δεύτερο στάδιο. Ως αποτέλεσμα, η διαδικασία είναι
δύσκολη και επιρρεπής σε σφάλματα.
Το OpenMP είναι ένα απλό και εύχρηστο πρότυπο για τον παράλληλο προγραμ-
ματισμό συστημάτων κοινόχρηστης μνήμης. Στο παρελθόν είχαν γίνει προσπάθειες
επέκτασής του ώστε να είναι εφικτή η χρήση του σε κατανεμημένα περιβάλλοντα,
αλλά σταμάτησαν στις αρχικές εκδόσεις του προτύπου, πολύ πριν το OpenMP απο-
κτήσει τις δυνατότητες που το έκαναν δημοφιλές και ισχυρό, όπως είναι τα tasks.
Στην παρούσα εργασία, παρουσιάζουμε την πρώτη προσπάθεια προς την πλήρη
και διάφανη εκτέλεση προγραμμάτων OpenMP, τα οποία χρησιμοποιούν όλα τα
προηγμένα προγραμματιστικά χαρακτηριστικά του, σε clusters.
Αναλύουμε τον τρόπο λειτουργίας της υλοποίησής μας, δίνοντας έμφαση στα
σημαντικότερα προβλήματα που αντιμετωπίσαμε. Αυτά αφορούν τον τρόπο δια-
χείρισης των κοινόχρηστων μεταβλητών μεταξύ των κόμβων, την ενσωμάτωση των
βιβλιοθηκών ArgoDSM και TORC για υποστήριξη sDSM (software Distributed Shared
Memory) και κατανεμημένου tasking, αντίστοιχα, και την παροχή κατανεμημένων κλειδαριών και barriers. Για την αντιμετώπισή τους απαιτήθηκαν τόσο συνολικές
αλλαγές στο σύστημα υποστήριξης εκτέλεσης του παραλληλοποιητικού μεταφραστή
OMPi, όσο και τροποποιήσεις στον πηγαίο κώδικα των ArgoDSM και TORC.
Στόχος μας είναι να παρέχουμε ένα εύχρηστο προγραμματιστικό μοντέλο για
κατανεμημένα περιβάλλοντα και όχι να υποκαταστήσουμε τη χρήση του MPI. Πα-
ρόλο αυτά, τα πειράματά μας αποδεικνύουν ότι μπορούμε να πετύχουμε αξιόλογες
επιδόσεις, αρκεί τα προγράμματα να μην κάνουν εκτεταμένη χρήση λειτουργιών
συγχρονισμού για την εξασφάλιση της συνέπειας μνήμης και, αν χρειάζονται tasks,
αυτά να δημιουργούνται από όλους τους συμμετέχοντες κόμβους.
Modern 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.
Modern 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.
Περιγραφή
Λέξεις-κλειδιά
ArgoDSM, MPI, OMPI, OpenMP
Θεματική κατηγορία
OpenMP
Παραπομπή
Σύνδεσμος
Γλώσσα
el
Εκδίδον τμήμα/τομέας
Πανεπιστήμιο Ιωαννίνων. Πολυτεχνική Σχολή. Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής
Όνομα επιβλέποντος
Δημακόπουλος, Βασίλειος
Εξεταστική επιτροπή
Δημακόπουλος, Βασίλειος
Μανής, Γεώργιος
Πιτουρά, Ευαγγελία
Μανής, Γεώργιος
Πιτουρά, Ευαγγελία
Γενική Περιγραφή / Σχόλια
Ίδρυμα και Σχολή/Τμήμα του υποβάλλοντος
Πανεπιστήμιο Ιωαννίνων. Πολυτεχνική Σχολή. Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής
Πίνακας περιεχομένων
Χορηγός
Βιβλιογραφική αναφορά
Βιβλιογραφία: σ. 103-106
Ονόματα συντελεστών
Αριθμός σελίδων
108 σ.
Λεπτομέρειες μαθήματος
item.page.endorsement
item.page.review
item.page.supplemented
item.page.referenced
Άδεια Creative Commons
Άδεια χρήσης της εγγραφής: Attribution-NonCommercial-NoDerivs 3.0 United States