Περίληψη |
Το τέλος του ανταγωνισμού ταχύτητας των επεξεργαστών στις αρχές του αιώνα σήμανε
την έναρξη της εποχής των πολυπύρηνων επεξεργαστών. Για να επωφεληθεί μια εφαρμογή
από τους πολλαπλούς πυρήνες, οι προγραμματιστές πρέπει πλέον να χρησιμοποιούν παράλληλα προγραμματιστικά μοντέλα. Οι τάσεις της βιομηχανίας ημιαγωγών δείχνουν ότι ένα ολοκληρωμένο κύκλωμα σε μια δεκαετία θα μπορεί να ενσωματώσει εκατοντάδες πυρήνες· η αρχιτεκτονική θα είναι ετερογενής, με λίγους δυνατούς (και ενεργοβόρους) και πολλούς αδύνατους (και καλής ενεργειακής απόδοσης) πυρήνες· οι κρυφές μνήμες θα είναι λιγότερο ή και καθόλου συνεπείς. Όσο πλησιάζει η νέα εποχή των υπερπολυπύρηνων επεξεργαστών, αποτελεί τεράστια πρόκληση να βρεθεί ένα παραγωγικό, αποδοτικό και κλιμακώσιμο σε τέτοιες αρχιτεκτονικές προγραμματιστικό μοντέλο.
Τα μοντέλα διεργασιών με εξαρτήσεις έχουν σημαντική απήχηση. Ο προγραμματιστής
παρέχει ένα σειριακό πρόγραμμα, αποτελούμενο από μικρές συναρτήσεις (διεργασίες) που
τρέχουν μέχρι τέλους, μαζί με πληροφορία σχετικά με το ποιά δεδομένα αυτές χρησιμοποιούν. Ένα σύστημα χρόνου εκτέλεσης αναλύει τις εξαρτήσεις, δρομολογεί και εκτελεί
τις διεργασίες παράλληλα. Παρά την αυξανόμενη δημοφιλία τους, τα μοντέλα αυτά δεν είναι κλιμακώσιμα στις επερχόμενες υπερπολυπύρηνες αρχιτεκτονικές, αφού απευθύνονται
κυρίως σε σημερινούς ομογενείς επεξεργαστές με συνεκτικές κρυφές μνήμες. Οι υλοποιήσεις των συστημάτων χρόνου εκτέλεσης που τα συνοδεύουν φαίνονται να μην είναι ούτε
κλιμακώσιμες, ούτε κατάλληλες για ετερογενείς και λιγότερο συνεκτικές αρχιτεκτονικές.
Η εργασία μας εξερευνά τις προκλήσεις στον παράλληλο προγραμματισμό της επόμενης
δεκαετίας. Ασχολούμαστε με δύο προβλήματα. Πρώτον, πώς πρέπει ένα σύστημα χρόνου
εκτέλεσης να σχεδιαστεί, ώστε να κλιμακώνει σε υπερπολυπύρηνους επεξεργαστές που θα
είναι διαθέσιμοι σε δέκα χρόνια; Και δεύτερον, πώς μπορούμε να υλοποιήσουμε και να
αξιολογήσουμε τέτοια συστήματα, αφού σήμερα δε διαθέτουμε τέτοιους επεξεργαστές;
Σχετικά με το πρώτο πρόβλημα, επαυξάνουμε ένα υπάρχον μοντέλο με εξαρτήσεις ώστε
να υποστηρίζει εμφωλευμένο παραλληλισμό και ακανόνιστες δομές δεδομένων με δείκτες.
Στη συνέχεια σχεδιάζουμε και υλοποιούμε το Myrmics, ένα σύστημα χρόνου εκτέλεσης που
συνοδεύει το προγραμματιστικό αυτό μοντέλο. Το Myrmics είναι ειδικά σχεδιασμένο για
μελλοντικούς, ετερογενείς, μη συνεκτικούς επεξεργαστές και κλιμακώνει χρησιμοποιώντας
καινοτόμους, κατανεμημένους αλγόριθμους και πολιτικές για ιεραρχική διαχείρηση μνήμης, ανάλυση εξαρτήσεων και δρομολόγηση διεργασιών. Τα πειράματά μας αποκαλύπτουν
ότι η κλιμακωσιμότητα του Myrmics είναι συγκριτικά καλή σε σχέση με βελτιστοποιημένους κώδικες αναφοράς σε MPI, ενώ οι επιβαρύνσεις της αυτόματης παραλληλοποίησης
παραμένουν αρκετά χαμηλές (10–30%). Επιβεβαιώνουμε ότι πολλοί από τους αλγόριθμους
και πολιτικές που προτείνουμε είναι ελπιδοφόροι.
Σχετικά με το δεύτερο πρόβλημα, δημιουργούμε ένα ετερογενές πρωτότυπο σε FPGA
με 520 πυρήνες, που μοντελοποιεί πιστά υπερπολυπύρηνους επεξεργαστές σύμφωνα με τις
τρέχουσες προβλέψεις. Το χρησιμοποιούμε για να αξιολογήσουμε το Myrmics. Το πρωτότυπο βασίζεται στο Formic, ένα νέο τυπωμένο κύκλωμα που σχεδιάζουμε ειδικά για μεγάλες
κατασκευές. Εκτιμούμε ότι το πρωτότυπό μας τρέχει κώδικα 50.000 φορές γρηγορότερα από
προσομοιωτές σε λογισμικό για παρόμοιο αριθμό πυρήνων.
|