Περίληψη |
Οι Υπολογισμοί Υψηλής Απόδοσης (HPC) αποκτούν ολοένα και περισσότερη
δυναμική, αξιοποιώντας τα προνόμια που προσφέρει ο Τμηματοποιημένος Χώρος
Καθολικών Διευθύνσεων (PGAS) για βέλτιστα αποτελέσματα. Μεγάλη πληθώρα
προγραμματιστικών γλωσσών και βιβλιοθηκών έχουν δημιουργηθεί που
επωφελούνται από τον PGAS, με το πιο ευρέως γνωστό να είναι το OpenSHMEM. Το
OpenSHMEM ορίζει μια διεπαφή προγραμματιστικών εφαρμογών (API) η οποία
αξιοποιεί μονόπλευρες απομακρυσμένες άμεσες προσπελάσεις μνήμης (RDMA) για
εκτεταμένη χρήση σε HPC.
Σε αυτήν την μεταπτυχιακή εργασία παρουσιάζουμε το Gmem, μία υλοποίηση του
OpenSHMEM πρότυπου, η οποία υποστηρίζει τις αρχιτεκτονικές δικτύου TCP/IP,
RoCE και Infiniband, βασιζόμενη στο GSAS. Το GSAS είναι ένα ελαφρύ και απλό PGAS
προγραμματιστικό API, το οποίο δίνει την δυνατότητα σε διεργασίες που τρέχουν σε
έναν αριθμό από κόμβους, να επικοινωνούν μεταξύ τους με τρόπο παρόμοιο στο
μοντέλο κοινόχρηστης μνήμης. Το Gmem αξιοποιεί την κοινόχρηστη μνήμη στις
επικοινωνίες που λαμβάνουν χώρα εντός ενός κόμβου, δίνοντας έτσι την ικανότητα
στους χρήστες να εκμεταλλευτούν πλήρως την τοπικότητα χώρου (Spacial Locality),
χωρίς την παρέμβαση του λειτουργικού συστήματος ή της κάρτας δικτύου. Επιπλέον,
χάρη στο RDMA καταφέρνουμε να διεξάγουμε λειτουργίες σε απομακρυσμένους
κόμβους, με εξαιρετικά χαμηλό χρόνο καθυστέρησης μεταφοράς δεδομένων
(Latency) και υψηλή ροή μεταφορών (Throughput).
Το Gmem αξιολογήθηκε σε σύγκριση με τις OpenSHMEM υλοποίησεις του
OpenMPI και του MPICH, οι οποίες βασίζονται στο Unified Communication X (UCX)
προτόκολλο, για τις αρχιτεκτονικές δικτύου TCP/IP και Infiniband. Στα πειράματα μας
μετρήθηκε η απόδοση των λειτουργιών Αποστολής/Λήψης (PUT/GET) όταν
πραγματοποιούνται σε απομακρυσμένους κόμβους, καθώς και των ατομικών
λειτουργιών μνήμης και συλλογικών λειτουργιών. Παρατηρούμε ότι το Gmem δεν
είναι μόνο ισάξιο με των ανταγωνιστικών υλοποιήσεων, αλλά σε πολλές περιπτώσεις
επιτυγχάνονται καλύτερα αποτελέσματα. Συγκεκριμένα, στις λειτουργίες λήψης
(GET) μεγάλου όγκου δεδομένων, επιτυγχάνουμε χρόνους καθυστέρησης μεταφοράς
δεδομένων (Latency) 6x χαμηλότερους από το OpenMPI, και στις ατομικές
λειτουργίες 1.25x καλύτερο χρόνο καθυστέρησης μεταφοράς (Latency).
|