Θέματα Μεταγλωττιστών

Σχετικά έγγραφα
Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική Υπολογιστών

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 12 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Θέματα Μεταγλωττιστών

ΟΡΓΑΝΩΣΗ ΚΑΙ ΣΧΕΔΙΑΣΗ Η/Υ

Οργάνωση Η/Υ. Γιώργος Δημητρίου. Μάθημα 8 ο Μερική Επικάλυψη. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Τμήμα Πληροφορικής

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

ILP (integer linear programming) βασιζόμενη εξαρτώμενη από τους πόρους μεταγλώττιση

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 11 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Ασκήσεις Caches

8. Παράλληλη εκτέλεση βρόχων

Ζητήµατα Απόδοσης. Ιεραρχία Μνήµης. Αναγκαιότητα για Ιεραρχία Μνήµης. Processor-DRAM Gap (latency) Ε-85: Ειδικά Θέµατα Λογισµικού

Ασκήσεις Caches

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 1 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Άσκηση 1η. Θεωρήστε ένα σύστημα μνήμης με μία cache: 4 way set associative μεγέθους 256ΚΒ,

ΠΕΡΙΕΧΟΜΕΝΑ Υλικό και Λογισμικό Αρχιτεκτονική Υπολογιστών Δομή, Οργάνωση και Λειτουργία Υπολογιστών 6

Οργάνωση Η/Υ. Γιώργος ηµητρίου. Μάθηµα 9 ο. Πανεπιστήµιο Θεσσαλίας - Τµήµα Μηχανικών Η/Υ, Τηλεπικοινωνιών και ικτύων

Ασκήσεις Caches. Αρχιτεκτονική Υπολογιστών. 5ο εξάμηνο ΣΗΜΜΥ ακ. έτος: Νεκ. Κοζύρης

z = c 1 x 1 + c 2 x c n x n

Περιεχόμενα. Δομές δεδομένων. Τεχνικές σχεδίασης αλγορίθμων. Εισαγωγή στον προγραμματισμό. Υποπρογράμματα. Επαναληπτικά κριτήρια αξιολόγησης

εισαγωγικές έννοιες Παύλος Εφραιμίδης Δομές Δεδομένων και

2x 1 + x 2 x 3 + x 4 = 1. 3x 1 x 2 x 3 +2x 4 = 3 x 1 +2x 2 +6x 3 x 4 = 4

ΟΡΓΑΝΩΣΗ ΚΑΙ ΣΧΕΔΙΑΣΗ Η/Υ

ΕΘΝΙKΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ. Ονοματεπώνυμο: ΑΜ:

Συστήματα μνήμης και υποστήριξη μεταφραστή για MPSoC

Αρχιτεκτονική Υπολογιστών

Οργάνωση επεξεργαστή (2 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

ΤΕΛΙΚΟ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ

Εξωτερική Αναζήτηση. Ιεραρχία Μνήμης Υπολογιστή. Εξωτερική Μνήμη. Εσωτερική Μνήμη. Κρυφή Μνήμη (Cache) Καταχωρητές (Registers) μεγαλύτερη ταχύτητα

Διάλεξη 04: Παραδείγματα Ανάλυσης

Διάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων

Εισαγωγή στους Υπολογιστές

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 4. Παραδείγματα Ανάλυσης Πολυπλοκότητας Ανάλυση Αναδρομικών Αλγόριθμων

Αρχιτεκτονική Υπολογιστών

Γραμμικός Προγραμματισμός Μέθοδος Simplex

Εργαστήριο 1. Βαθμός ΑΜ Εργ1.2 Σχόλια Εργ1.3 Σχόλια (20)

διανύσματα - Πίνακες - Struct Στατικό διάνυσμα Είσοδος Έξοδος δεδομένων Συναρτήσεις Χειρισμός σφαλμάτων ΤΕΤΑΡΤΗ ΔΙΑΛΕΞΗ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

Φόρμα Σχεδιασμού Διάλεξης (ημ/α:15/10/07, έκδοση:0.1 ) 1. Κωδικός Μαθήματος : 2. Α/Α Διάλεξης : 1 1. Τίτλος : 1. Εισαγωγή στην Αρχιτεκτονική Η/Υ

Θέματα Μεταγλωττιστών

Διδάσκων: Παναγιώτης Ανδρέου

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών Κρυφές Μνήμες. (οργάνωση, λειτουργία και απόδοση)

Οργάνωση Υπολογιστών (ΙI)

Ασκήσεις στα Προηγμένα Θέματα Αρχιτεκτονικής Υπολογιστών

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Τμήμα Πληροφορικής

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΔΕΥΤΕΡΗ ΠΡΟΟΔΟΣ ΣΤΗΝ ΟΡΓΑΝΩΣΗ ΣΤΟΥΣ Η/Y (ΗΥ232)

Ασκήσεις Αρχιτεκτονικής Υπολογιστών

Αρχιτεκτονική υπολογιστών

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ

Διαχείριση Εφοδιαστικής Αλυσίδας ΙΙ

Παράλληλα Συστήματα. Γιώργος Δημητρίου. Ενότητα 4 η : Παράλληλος Προγραμματισμός. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος.

Πρόβλημα 37 / σελίδα 207

Προγραμματισμός συστημάτων UNIX/POSIX. Θέμα επιλεγμένο από τους φοιτητές: Προγραμματιστικές τεχνικές που στοχεύουν σε επιδόσεις

ÁÎÉÁ ÅÊÐÁÉÄÅÕÔÉÊÏÓ ÏÌÉËÏÓ

Μεταγλωττιστές Βελτιστοποίηση

Α1. Στον προγραµµατισµό χρησιµοποιούνται δοµές δεδοµένων. 1. Τι είναι δυναµική δοµή δεδοµένων; Μονάδες 3 2. Τι είναι στατική δοµή δεδοµένων;

Διάλεξη 6: Δείκτες και Πίνακες

Αρχιτεκτονική Υπολογιστών

S, (5, -3, 34, -23, 7) ( *, _

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ II. χειμερινό εξάμηνο & εαρινό εξάμηνο (σε κίτρινο υπόβαθρο)

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ

Μεταγλωττιστές Βελτιστοποίηση

Δομές Δεδομένων & Αλγόριθμοι

Κύρια μνήμη. Μοντέλο λειτουργίας μνήμης. Ένα τυπικό υπολογιστικό σύστημα σήμερα. Οργάνωση Υπολογιστών (ΙI)

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ Κεφάλαιο 3 ο. Πίνακες. Επικοινωνία:

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2

Πληροφοριακά Συστήματα Διοίκησης. Επισκόπηση μοντέλων λήψης αποφάσεων Τεχνικές Μαθηματικού Προγραμματισμού

Στόχοι και αντικείμενο ενότητας. Βασικές κατασκευές ΓΠ. Έλεγχος ροής προγράμματος. #4.. Εντολές Επιλογής

ΒΑΣΙΚΑ ΣΤΟΙΧΕΙΑ ΘΕΩΡΙΑΣ ΤΗΣ ΜΕΘΟΔΟΥ SIMPLEX

Επιλέξτε Σωστό ή Λάθος για καθένα από τα παρακάτω:

ΠΛΕ075: Προηγμένη Σχεδίαση Αλγορίθμων και Δομών Δεδομένων. Λουκάς Γεωργιάδης

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2016

Πανεπιστήµιο Θεσσαλίας

Διδάσκων: Παναγιώτης Ανδρέου

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ.

ΘΕΜΑ Α. Λύση: 1. Σωστό, 2. Λάθος, 3. Σωστό, 4. Λάθος, 5. Λάθος. Ποια η διαφορά μεταξύ διερμηνευτή και μεταγλωττιστή; Απάντηση:

ΑΕΠΠ Ερωτήσεις θεωρίας

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

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

ΘΕΜΑ 1ο. Μονάδες 10. Β. ίνεται το παρακάτω τμήμα αλγορίθμου: Όσο Ι < 10 επανάλαβε Εμφάνισε Ι Ι Ι + 3 Τέλος_επανάληψης ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ ΠΙΝΑΚΕΣ. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 9 ο

Προγραμματισμός Η/Υ. Ενότητα 4: Εντολές Επιλογής

Διπλωματική Εργασία του φοιτητή του Τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών της Πολυτεχνικής Σχολής του Πανεπιστημίου Πατρών

ΠΛΕ- 074 Αρχιτεκτονική Υπολογιστών 2

Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων

Παράλληλα Συστήματα. Γιώργος Δημητρίου. Ενότητα 3 η : Παράλληλη Επεξεργασία. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

add $t0,$zero, $zero I_LOOP: beq $t0,$s3, END add $t1, $zero,$zero J_LOOP: sub $t2, $s3, $t0 add $t2, $t2, $s1 int i, j, tmp; int *arr, n;

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. 1 ο ΚΕΦΑΛΑΙΟ

Γλώσσες Προγραμματισμού Μεταγλωττιστές

I. ΑΛΓΟΡΙΘΜΟΣ II. ΠΡΑΞΕΙΣ - ΣΥΝΑΡΤΗΣΕΙΣ III. ΕΠΑΝΑΛΗΨΕΙΣ. 1. Τα πιο συνηθισμένα σενάρια παραβίασης αλγοριθμικών κριτηρίων είναι:

Πληροφορική 2. Δομές δεδομένων και αρχείων

Transcript:

Γιώργος Δημητρίου Ενότητα 10 η : Βελτιστοποιήσεις Τοπικότητας και Παραλληλισμού: Εξαρτήσεις και Μετασχηματισμοί Βρόχων

Επεξεργασία Πινάκων Παραλληλισμός επιπέδου βρόχου Λόγω παραλληλισμού δεδομένων Επιτυγχάνεται με καλή εκμετάλλευση της τοποθέτησης των πινάκων στη μνήμη Μετασχηματισμοί βρόχων Καλύτερος διαχωρισμός σε παράλληλα επεξεργαζόμενα μπλοκ δεδομένων Μείωση επικοινωνίας Καλύτερη απόδοση της μνήμης Καλύτερη δρομολόγηση εντολών

Εξαρτήσεις Δεδομένων και Παραλληλοποίηση Βρόχοι DOALL: βρόχοι των οποίων οι επαναλήψεις μπορούν να εκτελούνται ταυτόχρονα Όχι εξαρτήσεις δεδομένων μεταξύ επαναλήψεων Παράλληλη εκτέλεση

Παραδείγματα for i = 11, 20 a[i] = a[i] + 3 Παράλληλος! for i = 11, 20 a[i] = a[i-1] + 3 Παράλληλος;

Παραδείγματα for i = 11, 20 a[i] = a[i] + 3 Παράλληλος for i = 11, 20 a[i] = a[i-1] + 3 Σειριακός for i = 11, 20 a[i] = a[i-10] + 3 Παράλληλος;

ψευδοεξαρτήσεις Εξαρτήσεις Βαθμωτών Μεταβλητών Εξάρτηση ΑΜΕ (πραγματική εξάρτηση) a = = a Εξάρτηση ΕΜΑ (αντι-εξάρτηση) = a a = Εξάρτηση ΕΜΕ (εξάρτηση εξόδου) a = a =

Προσπελάσεις Πίνακα for i = 2, 5 a[i] = a[i] + 3 ανάγνωση a[2] a[3] a[4] a[5] εγγραφή a[2] a[3] a[4] a[5]

Αντι-εξαρτήσεις Πίνακα for i = 2, 5 a[i-2] = a[i] + 3 ανάγνωση a[2] a[3] a[4] a[5] εγγραφή a[0] a[1] a[2] a[3]

Πραγματικές Εξαρτήσεις Πίνακα for i = 2, 5 a[i] = a[i-2] + 3 ανάγνωση a[0] a[1] a[2] a[3] εγγραφή a[2] a[3] a[4] a[5]

Τεχνικές Ανάλυσης Νέες τεχνικές ανάλυσης για ανίχνευση παραλληλισμού Δε μας κάνουν οι τεχνικές της ανάλυσης ροής δεδομένων, επειδή αυτές: δε διαφοροποιούν τα μονοπάτια κατά την εκτέλεση του κώδικα Θυμηθείτε τη συνάρτηση meet! δε μελετάνε τις επιδράσεις μεταξύ επαναλήψεων ενός βρόχου Η πληροφορία συντίθεται επαναληπτικά για όλες τις επαναλήψεις μαζί (κλείσιμο)

Δυναμική Εξάρτηση Δεδομένων Έστω o και o δύο λειτουργίες μνήμης σε δυναμική εκτέλεση, όχι απαραίτητα διαφορετικές, πιθανά από διαφορετικές επαναλήψεις ενός βρόχου Υπάρχει εξάρτηση δεδομένων από τη λειτουργία o στην o, εάν και μόνο εάν μία από τις o, o είναι εγγραφή οι o και o μπορούν να αναφέρονται στην ίδια διεύθυνση η o εκτελείται πριν την o

Στατική Εξάρτηση Δεδομένων Έστω a και a δύο προσπελάσεις πίνακα σε στατική σειρά εντολών, όχι απαραίτητα διαφορετικών Υπάρχει εξάρτηση δεδομένων από την προσπέλαση a στην a, εάν και μόνο εάν μία από τις a, a είναι εγγραφή υπάρχουν δυναμικά στιγμιότυπα o της a και o της a τέτοια ώστε τα στιγμιότυπα o και o να μπορούν να αναφέρονται στην ίδια διεύθυνση το στιγμιότυπο o να εκτελείται πριν το o

Αναγνώριση Βρόχων DOALL Βρες τις εξαρτήσεις δεδομένων στο βρόχο Αν δεν υπάρχουν εξαρτήσεις βρόχου (δηλαδή εξαρτήσεις μεταξύ επαναλήψεων ή loop-carried dependences), τότε ο βρόχος είναι παράλληλος

Υπολογισμός Εξαρτήσεων for i = 2, 5 a[i-2] = a[i] + 3 Έχουμε εξάρτηση μεταξύ a[i] και a[i-2], εάν Υπάρχουν δύο επαναλήψεις i r και i w εντός του χώρου επαναλήψεων, τέτοιες ώστε οι i r και i w να διαβάζουν και να γράφουν, αντίστοιχα, το ίδιο στοιχείο πίνακα: i r, i w, 2 i r, i w 5, i r = i w -2

Υπολογισμός Εξαρτήσεων for i = 2, 5 a[i-2] = a[i] + 3 Έχουμε εξάρτηση μεταξύ a[i-2] και a[i-2], εάν Υπάρχουν δύο επαναλήψεις i v και i w εντός του χώρου επαναλήψεων, τέτοιες ώστε οι i v και i w να γράφουν το ίδιο στοιχείο πίνακα: i v, i w, 2 i v, i w 5, i v -2= i w -2

Παραλληλοποίηση for i = 2, 5 a[i-2] = a[i] + 3 Υπάρχει εξάρτηση βρόχου μεταξύ a[i] και a[i-2]; Υπάρχει εξάρτηση βρόχου μεταξύ a[i-2] και a[i-2];

Φωλιασμένοι Βρόχοι Ποιος βρόχος είναι παράλληλος; Είναι και οι δύο βρόχοι παράλληλοι; for i1 = 0, 5 for i2 = 0, 3 a[i1,i2] = a[i1-2,i2-1] + 3

Χώροι Επαναλήψεων Αναπαράσταση βρόχων όπου κάθε επανάληψη αναπαριστάται ως συντεταγμένες στο χώρο επαναλήψεων for i1 = 0, 5 for i2 = 0, 3 a[i1,i2] = 3 i1 i2

Σειρά Εκτέλεσης Σειριακή εκτέλεση των επαναλήψεων σε αλφαβητική σειρά: (0,0), (0,1),, (0,3), (1,0), (1,1),, (1,3), (2,0), Για φώλιασμα βάθους n: i1 Αν I = (i 1,i 2,,i n ) και I = (i 1,i 2,,i n ), τότε I I, εάν και μόνο εάν k τέτοιο ώστε (i 1,,i k-1 ) = (i 1,,i k-1 ) και i k < i k i2

Παράλληλοι Φωλιασμένοι Βρόχοι for i1 = 0, 5 for i2 = 0, 3 a[i1,i2] = a[i1-2,i2-1] + 3 Έχουμε εξάρτηση δεδομένων μεταξύ a[i1,i2] και a[i1-2,i2-1], εάν Υπάρχουν i1 r, i2 r, i1 w, i2 w, τέτοια ώστε 0 i1 r, i1 w 5, 0 i2 r, i2 w 3, i1 r - 2 = i1 w και i2 r - 1 = i2 w

Εξαρτήσεις βρόχου Εάν δεν υπάρχουν εξαρτήσεις βρόχου, ο βρόχος είναι παραλληλοποιήσιμος Εξάρτηση εξωτερικού βρόχου: i1 r i1 w Εξάρτηση εσωτερικού βρόχου: i1 r = i1 w i2 r i2 w Επέκταση για οποιοδήποτε βάθος φωλιάσματος k

Φωλιασμένοι Βρόχοι for i1 = 0, 5 for i2 = 0, 3 a[i1,i2] = a[i1-2,i2-1] + 3 Ποιος βρόχος έχει εξάρτηση βρόχου; i1 i2

Επίλυση των Εξαρτήσεων Πολλές φορές οι διευθύνσεις μνήμης δε μπορούν να υπολογιστούν από το μεταγλωττιστή! Παράδειγμα: read(n) for i = 0, 3 a[i] = a[n] + 3

Ανάλυση Εξαρτήσεων Δεδομένων Ανάλυση μόνο για όρια επαναλήψεων και δείκτες πινάκων που είναι ακέραιες γραμμικές συναρτήσεις μεταβλητών Παράδειγμα: for i1 = 1, n for i2 = 2*i1, 100 a[i1+2*i2+3][4*i1+2*i2][i1*i1] = = a[1][2*i1+1][i2] + 3 μη γραμμική συνάρτηση

Εξισώσεις for i1 = 1, n for i2 = 2*i1, 100 a[i1+2*i2+3][4*i1+2*i2][i1*i1] = = a[1][2*i1+1][i2] + 3 Έχουμε εξάρτηση δεδομένων, εάν Υπάρχουν i1 r, i2 r, i1 w, i2 w, τέτοια ώστε 0 i1 r,i1 w n, 2*i1 r i2 r 100, 2*i1 w i2 w 100, i1 w + 2*i2 w +3 = 1, 4*i1 w + 2*i2 w = 2*i1 r + 1 Σημειώστε: Δεν αναλύουμε μη γραμμικές συναρτήσεις!

Επίλυση Αν το σύστημα δεν έχει λύση: Δεν υπάρχει εξάρτηση δεδομένων Αν το σύστημα έχει λύση: Μπορεί να υπάρχει εξάρτηση δεδομένων

Ακριβής Επίλυση Εξισώσεων Με ακέραιο προγραμματισμό (integer programming): Αντικατάστησε ισότητες με ανισότητες: a =b a b και b a οπότε λαμβάνουμε τη σχέση προς επίλυση: int i, Ai b Όμως ο ακέραιος προγραμματισμός είναι NP-complete, και επομένως ακριβός για να υλοποιηθεί στα πλαίσια μεταγλωττιστή!

Μη Ακριβής Επίλυση Έλεγχος MKD (GCD) ή έλεγχος του Banerjee Δύο αποτελέσματα: ΟΧΙ καμία εξάρτηση ΔΕ ΓΝΩΡΙΖΟΥΜΕ υποθέτουμε ότι υπάρχει εξάρτηση Μπορούμε να περιορίσουμε την ανακρίβεια με επιπλέον περιορισμούς Θυσιάζουμε παραλληλισμό για καλύτερη απόδοση του μεταγλωττιστή!

Έλεγχος ΜΚΔ Έστω ο βρόχος: for i = 1, 100 a[2*i] = = a[2*i+1] + 3 Υπάρχει εξάρτηση στις αναφορές του a; Επίλυσε τη γραμμική Διοφαντική εξίσωση: 2*i w = 2*i r + 1

Θεώρημα ΜΚΔ Η γραμμική Διοφαντική εξίσωση a 1 x 1 a2x2... anx n c έχει ακέραια λύση (x 1, x 2,, x n ) εάν και μόνο εάν ο ΜΚΔ των a 1, a 2,, a n διαιρεί το c

Παραδείγματα Παράδειγμα 1: gcd(2,-2) = 2. Καμία λύση! 2x 2x2 1 1 Παράδειγμα 2: gcd(24,36,54) = 6. Πολλές λύσεις! 24x 36y 54z 30

Πολλαπλές Εξισώσεις x 2 y z 0 3x 2 y z 5 Εξίσωση 1: gcd(1,-2,1) = 1. Πολλές λύσεις Εξίσωση 2: gcd(3,2,1) = 1. Πολλές λύσεις Υπάρχει λύση που να ικανοποιεί ταυτόχρονα και τις δύο εξισώσεις;

Ακριβής Ανάλυση Στις περισσότερες περιπτώσεις οι αναφορές πινάκων οδηγούν σε απλά προβλήματα ακέραιου προγραμματισμού Μέθοδοι, βάσει των οποίων μπορούμε να απαντήσουμε με ακρίβεια αν υπάρχει ή όχι εξάρτηση: Εφαρμογή απαλοιφής Fourier-Motzkin + τεχνική branch-and-bound Omega package του University of Maryland

Μετασχηματισμοί Βρόχων για Εκμετάλλευση Τοπικότητας CPU C C Cache Memory

Τοπικότητα στην Κρυφή Μνήμη Αν ένας πίνακας Α αποθηκεύεται σε στήλες: A[1,1] A[2,1] A[1,2] A[2,2] A[1,3] for i = 1, 100 for j = 1, 200 A[i, j] = A[i, j] + 3 Κακή εκμετάλλευση τοπικότητας!

Εναλλαγή Βρόχων Αν ένας πίνακας Α αποθηκεύεται σε στήλες: A[1,1] A[2,1] A[1,2] A[2,2] A[1,3] for i = 1, 100 for j = 1, 200 A[i, j] = A[i, j] + 3 for j = 1, 200 for i = 1, 100 A[i, j] = A[i, j] + 3 Καλύτερη εκμετάλλευση τοπικότητας!

Εναλλαγή Βρόχων Κάποιες φορές η εναλλαγή δεν είναι επιτρεπτή for i = 2, 100 for j = 1, 200 A[i, j] = A[i-1, j+1] + 3 i πχ εξάρτηση από το σημείο (3,3) στο (4,2) j

Διανύσματα Εξάρτησης i j Διάνυσμα Εξάρτησης (1,-1) = (4,2)-(3,3) Διάνυσμα Κατεύθυνσης (+, -) από τα πρόσημα του προηγουμένου Εναλλαγή βρόχων δεν επιτρέπεται αν υπάρχει εξάρτηση με κατεύθυνση (+, -)

Συνένωση Βρόχων (Loop Fusion) for i = 1, 1000 A[i] = B[i] + 3 for j = 1, 1000 C[j] = A[j] + 5 for i = 1, 1000 A[i] = B[i] + 3 C[i] = A[i] + 5 Επαναχρησιμοποίηση του A[i]

Κατανομή Βρόχων (Loop Distribution) for i = 1, 1000 A[i] = A[i-1] + 3 C[i] = B[i] + 5 for i = 1, 1000 A[i] = A[i-1] + 3 for i = 1, 1000 C[i] = B[i] + 5 Ο δεύτερος βρόχος είναι παράλληλος

Δημιουργία Μπλοκ (Register Blocking) for j = 1, 2*m for i = 1, 2*n A[i, j] = A[i-1, j] + A[i-1, j-1] for j = 1, 2*m, 2 for i = 1, 2*n, 2 A[i, j] = A[i-1,j] + A[i-1,j-1] A[i, j+1] = A[i-1,j+1] + A[i-1,j] A[i+1, j] = A[i, j] + A[i, j-1] A[i+1, j+1] = A[i, j+1] + A[i, j] Επαναχρησιμοποίηση του A[i, j]

Συμβολικοί Καταχωρητές for j = 1, 2*M, 2 for i = 1, 2*N, 2 r1 = A[i-1,j] r2 = r1 + A[i-1,j-1] A[i, j] = r2 r3 = A[i-1,j+1] + r1 A[i, j+1] = r3 A[i+1, j] = r2 + A[i, j-1] A[i+1, j+1] = r3 + r2 Μείωση λειτουργιών μνήμης load/store 8MN loads 4MN loads

Εισαγωγή Βαθμωτών Μεταβλητών (Scalar Replacement) for i = 2, N+1 = A[i-1]+1 A[i] = t1 = A[1] for i = 2, N+1 = t1 + 1 t1 = A[i] = t1 Μείωση προσπελάσεων μνήμης για πίνακες

Τεχνική «Unroll-and-Jam» for j = 1, 2*M for i = 1, N A[i, j] = A[i-1, j] + A[i-1, j-1] for j = 1, 2*M, 2 for i = 1, N A[i, j]=a[i-1,j]+a[i-1,j-1] A[i, j+1]=a[i-1,j+1]+a[i-1,j] Περισσότερες ευκαιρίες εισαγωγής βαθμωτών μεταβλητών

Μεγάλοι Πίνακες Αποθήκευση ανά γραμμή for i = 1, 1000 for j = 1, 1000 A[i, j] = A[i, j] + B[j, i] Κακή εκμετάλλευση τοπικότητας στον Β Δε βοηθά η εναλλαγή

Δημιουργία Μπλοκ for v = 1, 1000, 20 for u = 1, 1000, 20 for j = v, v+19 for i = u, u+19 A[i, j] = A[i, j] + B[j, i] Καλύτερη εκμετάλλευση τοπικότητας

Ξεδίπλωμα για Εκμετάλλευση ILP for i = 1, 10 a[i] = b[i]; *p =... for i = 1, 10, 2 a[i] = b[i]; *p = a[i+1] = b[i+1]; *p = Περισσότερες εντολές για δρομολόγηση Λιγότερες δυναμικές διακλαδώσεις Μεγαλύτερος κώδικας