Designing Decoupled Compiler Transformation APIs

Πτυχιακή Εργασία uoadl:2958380 251 Αναγνώσεις

Μονάδα:
Τμήμα Πληροφορικής & Τηλεπικοινωνιών
Πληροφορική
Ημερομηνία κατάθεσης:
2021-07-28
Έτος εκπόνησης:
2021
Συγγραφέας:
ΜΠΑΖΙΩΤΗΣ ΣΤΕΦΑΝΟΣ
Στοιχεία επιβλεπόντων καθηγητών:
Γιάννης Σμαραγδάκης, Καθηγητής, Σχολή Πληροφορικής ΕΚΠΑ
Πρωτότυπος Τίτλος:
Designing Decoupled Compiler Transformation APIs
Γλώσσες εργασίας:
Αγγλικά
Ελληνικά
Μεταφρασμένος τίτλος:
Σχεδιάζοντας Αποσυνδεδεμένες Διεπαφές για Μετασχηματισμούς Μεταγλωττιστών
Περίληψη:
Ο θεμελιώδης σχεδιασμός μεταγλωττιστών που έχουν ως κύριο στόχο βελτιστοποιούν τον κώδικα
δεν έχει αλλάξει εδώ και δεκαετίες. Προσανατολίζεται γύρω από τα
περάσματα (passes), κάθε ένα από τα οποία προσπαθεί να εφαρμόσει ένα
συγκεκριμένο μετασχηματισμό. Ένα περίφημο όφελος αυτού του σχεδιασμού
είναι ο διαχωρισμός των αρμοδιοτήτων, επειδή κάθε πέρασμα ασχολείται
με έναν και μόνο μετασχηματισμό. Αλλά αυτό που ίσως είναι δύσκολο να διακρίνουμε είναι ότι επίσης υπονομεύει τον διαχωρισμό των αρμοδιοτήτων.

Στα σύγχρονα παραδείγματα αυτού του σχεδιασμού, κάθε πέρασμα έχει
τουλάχιστον δύο ευθύνες: να πραγματοποιήσει έναν μετασχηματισμό
και να αποφασίσει αν ένας μετασχηματισμός είναι επικερδής. Αναπόφευκτα,
ο κώδικας που ασχολείται με κάθε μία από αυτές τις ευθύνες είναι
στενά συνδεδεμένος και δε μπορεί κάποιος να έχει διεπαφή ή να αλλάξει
κάθε κομμάτι ξεχωριστά.

Ωστόσο, αυτές οι δύο ευθύνες είναι ριζικά διαφορετικές και οι άνθρωποι
που έχουν την τεχνογνωσία να βελτιώσουν τη μία δεν έχουν απαραίτητα
ούτε καν τη γνώση να καταλάβουν την άλλη. Για παράδειγμα, το πρόβλημα
του κέρδους ενός μετασχηματισμού μπορεί να αναληφθεί από έναν
ερευνητή μηχανικής μάθησης ο οποίος ενδιαφέρεται να βελτιώσει τις
ευρεστικές αλλά δεν ενδιαφέρεται καθόλου να μάθει πως ο μεταγλωττιστής
φέρνει εις πέρας τους μετασχηματισμούς.

Σε αυτή την εργασία, παρουσιάζουνε ένα πρότυπο ενός μετασχηματισμού,
υλοποιημένο πάνω στο σύνολο εργαλείων LLVM, το οποίο χρησιμοποιούμε
για να προάγουμε έναν ευρύτερο στόχο. Αυτός ο στόχος είναι να
απομονώσουμε τους μετασχηματισμούς στις δικές τους ανεξάρτητες
και με μεγάλο βαθμό λεπτομέρειας διεπαφές. Τέτοιες διεπαφές θα πρέπει
να προσφέρουν μεγάλο έλεγχο και ελάχιστο γνωστικό φορτίο στο χρήστη,
είτε αυτός εξειδικεύεται στους μεταγλωττιστές είτε όχι.

Ο μετασχηματισμός που επιλέξαμε είναι η ανακατανομή βρόγχων (loop distribution) επειδή είναι εύκολα κατανοητός ενώ είναι δυνατόν να αποδειχθεί εξαιρετικά χρήσιμος. Η υλοποίησή του είναι συγκρίσιμη με αυτή της έκδοσης που χρησιμοποιείται αυτή τη στιγμή από τους χρήστες του LLVM.
Κύρια θεματική κατηγορία:
Τεχνολογία – Πληροφορική
Λέξεις-κλειδιά:
μεταγλωττιστές, μετασχηματισμοί, αφηρημένες διεπαφές προγραμματισμού, κατανομή βρόγχων, LLVM
Ευρετήριο:
Ναι
Αρ. σελίδων ευρετηρίου:
3
Εικονογραφημένη:
Ναι
Αρ. βιβλιογραφικών αναφορών:
8
Αριθμός σελίδων:
44
Decoupling_Compiler_Transformations v2.pdf (331 KB) Άνοιγμα σε νέο παράθυρο