Κώστας Διαμαντάρας Τμήμα Πληροφορικής ΤΕΙ Θεσσαλονίκης 2011 Παράλληλη εκτέλεση βρόχων.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Αρχιτεκτονική και απόδοση Υπολογιστών
Advertisements

DILIGENT A DIgital Library Infrastructure on Grid ENabled Technology Proposal/Contract no.: Γιάννης Ιωαννίδης Πανεπιστήμιο Αθηνών.
ΕΙΣΑΓΩΓΗ ΟΜΑΔΑ: ΚΑΤΕΡΙΝΑ ΓΙΑΝΝΑΚΑΡΑ ΗΛΙΑΝΑ ΔΙΑΝΙΗΛΙΔΟΥ ΕΛΕΝΑ ΚΟΒΙΤΟΥ ΦΑΙΗ ΔΙΑΜΑΝΤΟΠΟΥΛΟΥ ΙΩΑΝΝΑ ΓΡΑΜΜΕΝΙΔΟΥ ΤΜΗΜΑ: Β1 ΣΧΟΛΕΙΟ: 2Ο ΠΡΟΤΥΠΟ ΠΕΙΡΑΜΑΤΙΚΟ ΓΥΜΝΑΣΙΟ.
Κ. Διαμαντάρας Α. Βαφειάδης Τμήμα Πληροφορικής ΑΤΕΙ Θεσσαλονίικης 2011 Συστήματα Μνήμης – Οργάνωση κύριας μνήμης.
Κώστας Διαμαντάρας Τμήμα Πληροφορικής ΤΕΙ Θεσσαλονίκης 2011 Υπηρεσίες Web και Συστάδες υπολογιστών.
Δημιουργία ιστοσελίδων στο διαδίκτυο με Dreamweaver, PHP, MySQL και Apache ΠΛΗΡΟΦΟΡΙΚΗ Ι (Β ή Γ Λυκείου) ΜΑΘΗΜΑ ΕΝΔΙΑΦΕΡΟΝΤΟΣ(2ωρο) [Στην περίπτωση που.
ΡΟΗ Υ: ΥΠΟΛΟΓΙΣΤΙΚΑ ΣΥΣΤΗΜΑΤΑ
Παραλληλοποίηση κώδικα
Κώστας Διαμαντάρας Τμήμα Πληροφορικής ΤΕΙ Θεσσαλονίκης 2011 Πολυεπεξεργαστές.
Κ. Διαμαντάρας Α. Βαφειάδης Τμήμα Πληροφορικής ΑΤΕΙ Θεσσαλονίικης 2011 Pipelining – Βασικές αρχές.
Πίνακες.
1 Α. Βαφειάδης Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Πρώτο Αρχιτεκτονική.
Σεμινάρια Σεπτεμβρίου 2011 Πληροφορική ως εργαστηριακό μάθημα (Ε. Μ.) Μιχάλης Τορτούρης ΕΜΕ Πληροφορικής.
Ανακτηση Πληροφοριασ σε νεφη Υπολογιστων
MPI: Πολλαπλασιασμός Πινάκων
1 Α. Βαφειάδης Τ.Ε.Ι Θεσσαλονίκης – Τμήμα Πληροφορικής Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Εργαστηριακό Μέρος Μέρος: Τρίτο Εξάμηνο: Έβδομο Καθηγητής:
Βρόχος με συνθήκη εισόδου στη C, οδηγούμενος από μετρητή: for
Προηγμένες Αρχιτεκτονικές Υπολογιστών Εισαγωγή
Κώστας Διαμαντάρας Τμήμα Πληροφορικής ΤΕΙ Θεσσαλονίκης 2011 Παράλληλος Προγραμματισμός.
Κώστας Διαμαντάρας Τμήμα Πληροφορικής ΤΕΙ Θεσσαλονίκης 2011 Συστολικοί επεξεργαστές.
ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ
Οι πλευρές αυτές ονομάζονται
Κώστας Διαμαντάρας Τμήμα Πληροφορικής ΤΕΙ Θεσσαλονίκης 2011 Συστολικοί επεξεργαστές - Παραδείγματα.
Κ. Διαμαντάρας Α. Βαφειάδης Τμήμα Πληροφορικής ΑΤΕΙ Θεσσαλονίικης 2011 Συστήματα Μνήμης – Βασικές Αρχές Cache.
1. ΒΟΛΟΣ Πέμπτη 3 Μαρτίου 2011, 17.00’ ’ Ξενοδοχείο ΞΕΝΙΑ ΒΟΛΟΥ ΤΟ ΕΘΝΙΚΟ ΠΛΑΙΣΙΟ ΠΡΟΣΟΝΤΩΝ (NQF): ΘΕΩΡΙΑ ΚΑΙ ΠΡΑΞΗ ΤΑ ΠΡΟΣΟΝΤΑ ΣΤΟΥΣ ΧΩΡΟΥΣ ΤΗΣ.
Η επιρροή του χώρου εργασίας των σχολικών τάξεων στη μάθηση
1 Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Τέταρτο Pipelining –
Β΄ ΓΕΛ ΕισΑρχΕπ Η/Υ Γεωργαλλίδης Δημήτρης 1 Ο Λύκειο Ρόδου.
ΒΡΟΧΟΙ ΜΑΘΗΜΑ 5. ΒΡΟΧΟΙΒΡΟΧΟΙ Ο Βρόχος (loop) αποτελείται από προτάσεις επανάληψης. Οι προτάσεις επανάληψης είναι οι προτάσεις που επαναλαμβάνουν ένα.
ΔΕΞΙΟΤΗΤΕΣ ΕΠΙΚΟΙΝΩΝΙΑΣ 1 ΠΕΡΙΓΡΑΦΗ ΤΩΝ ΜΝΗΜΩΝ ΕΝΟΣ Η/Υ ΤΜΗΜΑ: Τ6 ΟΝΟΜΑΤΑ: ΣΕΛΑΛΜΑΖΙΔΗΣ ΤΑΣΟΣ ΦΙΛΙΑΣ ΑΝΤΩΝΗΣ ΦΙΛΙΑΣ ΑΝΤΩΝΗΣ ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ.
Ορισμός - Αιτιολογία υποκαλιαιμίας Στρατής Κασιμάτης Νεφρολόγος, «Ιπποκράτειο» Νοσοκομείο Θεσσαλονίκης Μαρώνεια, Σεπτέμβριος 2010.
Θεωρία Γράφων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές Κεφάλαιο 1: Βασικές Έννοιες (ορισμοί) Data Engineering Lab.
Eντολες Επαναληψης - Βροχοι (repetition and loops)
1 Οργάνωση και Αρχιτεκτονική Υπολογιστών Πρόγραμμα Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Οργάνωση και Αρχιτεκτονική.
Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Ακαδημαϊκό Έτος Εξάμηνο: Η’ Ασφάλεια Πληροφοριακών Συστημάτων Ενότητα Γ: Απομακρυσμένη Αυθεντικοποίηση.
ΤΕΧΝΗΤΗ ΝΟΗΜΟΣΥΝΗ 5 ο Εξάμηνο - Ενότητα 8 - Προβλήματα Προσπάθειας και Αποτυχίας Δημοσθένης Σταμάτης Τμήμα Πληροφορικής T.E.I. ΘΕΣΣΑΛΟΝΙΚΗΣ.
Η ΠΛΗΡΟΦΟΡΙΚΗ στην ΕΚΠΑΙΔΕΥΣΗ Αδάμ Κ. Αγγελής Παιδαγωγικό Ινστιτούτο.
© Ασκήσεις στα Προηγμένα Θέματα Αρχιτεκτονικής Υπολογιστών ακ. έτος Νεκτάριος Κοζύρης Νίκος Αναστόπουλος
1 Οργάνωση και Αρχιτεκτονική Υπολογιστών Πρόγραμμα Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Οργάνωση και Αρχιτεκτονική.
Eντολες Επαναληψης - Βροχοι (repetition and loops)
ΕΙΣΑΓΩΓΗ ΣΤΑ ΨΗΦΙΑΚΑ ΜΕΣΑ.
Μεταπτυχιακές Σπουδές
Το Συντακτικό της PROLOG
ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ
Μεταγλωττιστές (Compilers) (Θ) Ενότητα 12: Παραγωγή Ενδιάμεσου Κώδικα (Σημασιολογικές ρουτίνες μετάφρασης-Μέρος Β) Κατερίνα Γεωργούλη Τμήμα Μηχανικών Πληροφορικής.
1 Α. Βαφειάδης Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Δεύτερο.
1 Α. Βαφειάδης Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Τρίτο Συστήματα.
ΜΑΘ3122/106 – Γλώσσα προγραμματισμού Ξενοφών Ζαμπούλης ΜΑΘ3122/106 – Γλώσσα προγραμματισμού Επανάληψη.
1 Οργάνωση και Αρχιτεκτονική Υπολογιστών Πρόγραμμα Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Οργάνωση και Αρχιτεκτονική.
1 Α. Βαφειάδης Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Δεύτερο.
1 Α. Βαφειάδης Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Πρώτο Αρχιτεκτονική.
Έρευνα για την ανάπτυξη ψηφιακών βιβλιοθηκών από τις ελληνικές ακαδημαϊκές βιβλιοθήκες Δρ. Εμμανουήλ Γαρουφάλλου και Παναγιώτης Μπαλατσούκας
1 Αρχιτεκτονική υπολογιστών Ενότητα 12 : Δομή και Λειτουργία της CPU 2/2 Φώτης Βαρζιώτης Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου.
Πρόγραμμα Προπτυχιακών Σπουδών Ροή Λ: Λογισμικό Κώστας Κοντογιάννης Αναπλ. Καθηγητής Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Ε.Μ.Π.
Διπλωματική Εργασία: Ανάπτυξη παράλληλων αλγορίθμων για γεωγραφικά προβλήματα Μεταπτυχιακό στα Συστήματα Τηλεπικοινωνιών και στην Πληροφορική Τμήμα Μηχανικών.
Τμήμα Εφαρμοσμένης Πληροφορικής και Πολυμέσων ΤΕΙ Ηρακλείου Καθηγητής: Ιωάννης Μαυρικάκης.
Εμβαδόν τραπεζίου Τραπέζιο λέγεται το τετράπλευρο που έχει τις δύο απέναντι πλευρές του παράλληλες. Οι πλευρές αυτές ονομάζονται μεγάλη βάση (Β) και μικρή.
Ενισχυτική διδασκαλία
ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ «ΓΙΑ» Για μτ από ατ μέχρι ττ [με_βήμα β] εντολές Τέλος_επανάληψης : περιοχή εντολών μτ : η μεταβλητή της.
Δρ. Ιωάννης Α. Πικραμμένος1 ΑΣΥΡΜΑΤΕΣ ΕΠΙΚΟΙΝΩΝΙΕΣ Ιωάννης Α. Πικραμμένος, Δρ. Μηχ. ΕΜΠ.
ΑΝ Χ<> Α_Μ(Χ) ΤΟΤΕ ΓΡΑΨΕ “Λάθος” ΤΕΛΟΣ_ΑΝ
Δομή Επιλογής Μάθημα 4ο Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον Τάξη Γ Οικονομίας & Πληροφορικής Θετικών Σπουδών 2ο Γενικό Λύκειο Αλιβερίου |
ΒΙΒΛΙΟ ΠΛΗΡΟΦΟΡΙΚΗΣ Σελίδες 2ο Κεφάλαιο - Παράγραφο 2.7 ΔΟΜΗ ΕΠΙΛΟΓΗΣ
Μανασσάκης Βασίλης Καθηγητής Πληροφορικής
ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΛΟΠΟΝΝΗΣΟΥ ΤΜΗΜΑ ΝΟΣΗΛΕΥΤΙΚΗΣ «ΠΛΗΡΟΦΟΡΙΚΗ ΥΓΕΙΑΣ»
Βελτιστοποίηση και Επεξεργασία Ερωτημάτων
Οικιακή Οικονομία Α’ Γυμνασίου Μάθημα 6ο. Διδάσκων καθηγητής
Άσκηση Pipeline 1 Δεδομένα Έχουμε ένα loop... Rep: lw $2,100($3)
Πληροφορική Γ’ Γυμνασίου
Ασφαλής χρήση του κινητού τηλεφώνου
Μεταγράφημα παρουσίασης:

Κώστας Διαμαντάρας Τμήμα Πληροφορικής ΤΕΙ Θεσσαλονίκης 2011 Παράλληλη εκτέλεση βρόχων

Εισαγωγή Προηγμένες Αρχιτεκτονικές Η/Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 2 Ορισμός: Εμφωλευμένοι βρόχοι (nested loops) λέγονται οι βρόχοι που βρίσκεται ο ένας μέσα στον άλλο, πχ for (i=1; i<=1000; i++) { for (j=1; j<10; j++) { for (k=20; k>=0; k--) { } Οι εμφωλευμένοι βρόχοι είναι στα περισσότερα προβλήματα η κύρια πηγή καθυστέρησης Συνεπώς είναι πολύ σημαντική η καλύτερη δυνατή παραλληλοποίηση των βρόχων

Πυρήνας ή Σώμα του βρόχου Βήμα Αρχικό όριο Τελικό όριο Γενική μορφή απλού βρόχου Προηγμένες Αρχιτεκτονικές Η/Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 3 Γενικά, ένας απλός (μη εμφωλευμένος βρόχος) έχει την εξής μορφή: for (i=p; i<=q; i=i+s) { /*κάποιες εντολές*/ H(i); } Το i καλείται : δείκτης Είναι συνήθως ακέραιος Αλλά όχι απαραίτητα...

Κανονικός απλός βρόχος Προηγμένες Αρχιτεκτονικές Η/Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 4 Ορισμός: Κανονικός λέγεται ένας βρόχος που έχει: Αρχικό όριο (p) = 0 Τελικό όριο (q) > 0 Βήμα (s) = 1 Παράδειγμα: for (i=0; i<=10; i++) { /*κάποιες εντολές*/ H(i); }

Μή κανονικός βρόχος Προηγμένες Αρχιτεκτονικές Η/Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 5 Παράδειγμα: Ο αλγόριθμος Fibonacci: int F[11]; F[0] = 0; F[1] = 1; for (i=2; i<=10; i++) { F[i] = F[i-1] + F[i-2]; } Αρχικό όριο p=2. Τελικό όριο q=10. Βήμα s=1. Πυρήνας του βρόχου = « F[i] = F[i-1] + F[i- 2];».

Στιγμιότυπα και μετρητής επανάληψης Προηγμένες Αρχιτεκτονικές Η/Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 6 Κάθε επανάληψη του βρόχου καλείται «στιγμιότυπο» Το i’ καλείται μετρητής επανάληψης και δεν ισούται με τον δείκτη i καθώς το i’ ξεκινάει από το 0 ενώ το i ξεκινάει από το 2. Αν ο βρόχος ήταν κανονικός, τότε το i’ και το i θα ταυτίζονταν. ΕπανάληψηΔείκτης ( i )Πράξεις που εκτελούνται i’ = 0 i =2 F[2] = F[1] + F[0]; i’ = 1 i =3 F[3] = F[2] + F[1]; i’ = 2 i =4 F[4] = F[3] + F[2]; i’ = 3 i =5 F[5] = F[4] + F[3]; i’ = 8 i =10 F[10] = F[9] + F[8];

Κανονικοποίηση βρόχου Προηγμένες Αρχιτεκτονικές Η/Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 7 Όχι κανονικός βρόχος: /* s θετικό */ for (i=p; i<=q; i=i+s) { H(i); } Ή /* s αρνητικό*/ for (i=p; i>=q; i=i+s) { H(i); } Ισοδύναμος κανονικός βρόχος: for (I=0; I<=Q; I++) { H(p+I*s); } Όπου αντικαθιστούμε i με p+I*s και Q με (q-p)/s I = (i-p)/s

Παράδειγμα: Κανονικοποίηση Fibonacci Προηγμένες Αρχιτεκτονικές Η/Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 8 Αρχικός βρόχος: for (i=2; i<=10; i=i+1) { F[i]=F[i-1]+F[i-2]; } p=2 q=10 s=1 Κανονικοποιημένος βρόχος: for (I=0; I<=8; I=I+1) { F[I+2]=F[I+1]+F[I]; } Q=8 i = I+2

Επαλήθευση: Κανονικοποίηση Fibonacci Προηγμένες Αρχιτεκτονικές Η/Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 9 for (i=2; i<=10; i=i+1) { F[i]=F[i-1]+F[i-2]; } i=2: F[2]=F[1]+F[0]; i=3: F[3]=F[2]+F[1]; i=4: F[4]=F[3]+F[2]; i=5: F[5]=F[4]+F[3]; i=6: F[6]=F[5]+F[4];... for (I=0; I<=8; I=I+1) { F[I+2]=F[I+1]+F[I]; } I=0: F[2]=F[1]+F[0]; I=1: F[3]=F[2]+F[1]; I=2: F[4]=F[3]+F[2]; I=3: F[5]=F[4]+F[3]; I=4: F[6]=F[5]+F[4];...

Παράδειγμα: Κανονικοποίηση βρόχου με βήμα > 1 Προηγμένες Αρχιτεκτονικές Η/Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 10 Αρχικός βρόχος: for (i=-2; i<=10; i=i+2) { x[i+2]=f(x[i+1],x[i]); } p=-2 q=10 s=2 Κανονικός βρόχος: for (I=0; I<=6; I++) { x[2*I] = f( x[2*I-1], x[2*I-2] ); } Q=(10-(-2))/2 = 6 i=-2+I*2

Επαλήθευση Προηγμένες Αρχιτεκτονικές Η/Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 11 for (i=-2; i<=10; i=i+2) { x[i+2]=f(x[i+1],x[i]); } i=-2: x[0]=f(x[-1],x[-2]); i=0: x[2]=f(x[1],x[0]); i=2: x[4]=f(x[3],x[2]); i=4: x[6]=f(x[5],x[4]); i=6: x[8]=f(x[7],x[6]);... for (I=0; I<=6; I++) { x[2*I] = f( x[2*I-1], x[2*I-2] ); } I=0: x[0]=f(x[-1],x[-2]); I=1: x[2]=f(x[1],x[0]); I=2: x[4]=f(x[3],x[2]); I=3: x[6]=f(x[5],x[4]); I=4: x[8]=f(x[7],x[6]);...

Παράδειγμα: Κανονικοποίηση βρόχου με αρνητικό βήμα Προηγμένες Αρχιτεκτονικές Η/Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 12 Αρχικός βρόχος: for (i=100; i>=2; i=i-3) { A[i-2]=3*A[i]-B[i-1]; } p=100 q=2 s=-3 Κανονικός βρόχος: for (I=0; I<=32; I++) { A[98-3*I]=3*A[100-3*I]- B[99-3*I-1]; } Q=floor((2-100)/(-3)) = 32 i=100-3*I

Επαλήθευση Προηγμένες Αρχιτεκτονικές Η/Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 13 for (i=100; i>=2; i=i-3) { A[i-2]=3*A[i]-B[i-1]; } i=100: A[98]=3*A[100]- B[99]; i=97: A[95]=3*A[97]- B[96]; i=94: A[92]=3*A[94]- B[93]; i=91: A[89]=3*A[91]- B[90];... for (I=0; I<=32; I++) { A[98-3*I]=3*A[100-3*I]- B[99-3*I-1]; } I=0: A[98]=3*A[100]- B[99]; I=1: A[95]=3*A[97]- B[96]; I=2: A[92]=3*A[94]- B[93]; I=3: A[89]=3*A[91]- B[90];...

Παράδειγμα: Κανονικοποίηση βρόχου με δεκαδικό βήμα Προηγμένες Αρχιτεκτονικές Η/Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 14 Αρχικός βρόχος: j = 0; for (i=-1; i<=1; i=i+0.01) { x[j] = f(i); j++; } p=-1 q=1 s=0.01 Κανονικός βρόχος: j = 0; for (I=0; I<=200; I++) { x[j] = f( *I); j++; } Q=(1-(-1))/0.01 = 200 i= *I

Επαλήθευση Προηγμένες Αρχιτεκτονικές Η/Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 15 j = 0; for (i=-1; i<=1; i=i+0.01) { x[j] = f(i); j++; } i=-1: x[0]=f(-1); j=1; i=-0.99: x[1]=f(-0.99); j=2; i=-0.98: x[1]=f(-0.98); j=3; i=-0.97: x[3]=f(-0.97); j=4;... j = 0; for (I=0; I<=200; I++) { x[j] = f( *I); j++; } I=0: x[0]=f(-1); j=1; I=1: x[1]=f(-0.99); j=2; I=2: x[1]=f(-0.98); j=3; I=3: x[3]=f(-0.97); j=4;...

Εμφωλευμένοι βρόχοι Προηγμένες Αρχιτεκτονικές Η/Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 16 Όταν ο πυρήνας ενός βρόχου είναι επίσης βρόχος τότε λέμε ότι έχουμε ένα εμφωλευμένο βρόχο. Ορισμός: Διάσταση ή βάθος ενός εμφωλευμένου βρόχου είναι το πλήθος των βρόχων που βρίσκονται ο ένας μέσα στον άλλο Παράδειγμα: for (i1=p1; i1<=q1; i1+=s1) { for (i2=p2; i2<=q2; i2+=s2) { for (i3=p3; i3<=q3; i3+=s3) { } Βάθος = 3

Στιγμιότυπα, επαναλήψεις, όρια και σώμα εμφωλευμένου βρόχου Προηγμένες Αρχιτεκτονικές Η/Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 17 Όλοι οι παρακάτω ορισμοί αφορούν εμφωλευμένο βρόχο βάθους n με δείκτες i1, i2,..., in : for (i1=p1; i1<=q1; i1++) { for (i2=p2; i2<=q2; i2++) { for (in=pn; in<=qn; in++) { } Ορισμοί: Στιγμιότυπο : το διάνυσμα των δεικτών i=[i1, i2,..., in] για συγεκριμένες τιμές των i1, i2,..., in Όρια: τα διανύσματα P=[p1, p2,..., pn] και Q=[q1, q2,..., qn].

Στιγμιότυπα, επαναλήψεις, όρια και σώμα εμφωλευμένου βρόχου Προηγμένες Αρχιτεκτονικές Η/Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 18 Ορισμοί (συνέχεια): Χώρος στιγμιοτύπων (ή χώρος δεικτών): το σύνολο όλων των τιμών που μπορεί να πάρει το διάνυσμα i=[i1, i2,..., in] με βάση τα όρια P=[p1, p2,..., pn] και Q=[q1, q2,..., qn]. Παράδειγμα: for (i1=0; i1<=2; i1++) { /* p1=0; q1=2 */ for (i2=-1; i2<=1; i2++) { /* p2=-1; q2=1 */ } Χώρος στιγμιοτύπων = {[0,-1], [0,0], [0,1], [1,-1], [1,0], [1,1], [2,-1], [2,0], [2,1]}

Παράδειγμα 1: Χώρος Στιγμιοτύπων, Σταθερά όρια Προηγμένες Αρχιτεκτονικές Η/Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 19 for (i1=0; i1<=2; i1++) { /* p1=0; q1=2 */ for (i2=-1; i2<=1; i2++) { /* p2=-1; q2=1 */ }

Παράδειγμα 2: Χώρος Στιγμιοτύπων, Όρια = συναρτήσεις των δεικτών Προηγμένες Αρχιτεκτονικές Η/Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 20 for (i1=0; i1<=3; i1++) { /* p1=0; q1=3 */ for (i2=0; i2<=i1; i2++) { /* p2=0; q2=i1 */ }

Στιγμιότυπα, επαναλήψεις, όρια και σώμα εμφωλευμένου βρόχου Προηγμένες Αρχιτεκτονικές Η/Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 21 Ορισμοί (συνέχεια): Όπως και στην μονοδιάστατη περίπτωση, για κάθε δείκτη i1, i2,..., ορίζουμε την επανάληψη I1, I2,..., κλπ. Όπως και στην μονοδιάστατη περίπτωση, ισχύει i1=p1+I1*s1 i2=p2+I2*s in=pn+In*sn Χώρος επαναλήψεων: το σύνολο όλων των τιμών που μπορεί να πάρει το διάνυσμα Ι=[Ι1, Ι2,..., Ιn]. Σώμα ή πυρήνας: το περιεχόμενο του πιο εσωτερικού βρόχου.

Λεξικογραφική διάταξη στιγμιοτύπων Προηγμένες Αρχιτεκτονικές Η/Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 22 Ένα στιγμιότυπο i προηγείται ενός στιγμιοτύπου j αν κατά τη σειριακή εκτέλεση του βρόχου το i εκτελείται πριν από το j. Γράφουμε i prec j Ένα στιγμιότυπο i έπεται ενός στιγμιοτύπου j αν κατά τη σειριακή εκτέλεση του βρόχου το i εκτελείται μετά από το j. Γράφουμε i succ j Για να βρούμε αν ένα διάνυσμα-στιγμιότυπο i προηγείται ή έπεται ενός διανύσματος-στιγμιοτύπου j κάνουμε λεξικογραφική σύγκριση

Λεξικογραφική σύγκριση διανυσμάτων Προηγμένες Αρχιτεκτονικές Η/Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 23 Το διάνυσμα [i 1, i 2,..., i n ] προηγείται λεξικογραφικά του διανύσματος [j 1, j 2,..., j n ] Αν ( i 1 < j 1 ) ή ( i 1 ==j 1 και i 2 < j 2 ) ή ( i 1 ==j 1 και i 2 ==j 2 και i 3 < j 3 ) ή ( i 1 ==j 1 και i 2 ==j 2 και... και i n-1 ==j n-1 και i n < j n ) Ακριβώς όπως στο λεξικό, όπου η λέξη «Αυγή» προηγείται του «Αυγό» και η λέξη «Μέρα» προηγείται της «Νύχτα»

Λεξικογραφική σύγκριση διανυσμάτων Προηγμένες Αρχιτεκτονικές Η/Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 24 Το διάνυσμα [i 1, i 2,..., i n ] έπεται λεξικογραφικά του διανύσματος [j 1, j 2,..., j n ] Αν ( i 1 > j 1 ) ή ( i 1 ==j 1 και i 2 > j 2 ) ή ( i 1 ==j 1 και i 2 ==j 2 και i 3 > j 3 ) ή ( i 1 ==j 1 και i 2 ==j 2 και... και i n-1 ==j n-1 και i n > j n ) Παραδείγματα: [2,8,12] prec [3,0,0] [2,8,12] prec [2,9,0] [2,8,12] prec [2,8,15] [2,8,12] succ [2,8,0] [2,8,12] succ [2,7,20] [2,8,12] succ [1,9,0]

Σχεδιασμός Γράφου Εξάρτησης Προηγμένες Αρχιτεκτονικές Η/Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 25 Ορισμός. Γράφος Εξάρτησης (ΓΕ) [Dependence Graph (DG)]: Γράφος με κόμβους τις πράξεις (εργασίες) που πρέπει να εκτελεστούν και ακμές που ενδεικνύουν τις εξαρτήσεις μεταξύ των κόμβων. Υπάρχουν τρια πιθανά είδη εξαρτήσεων μεταξύ δύο κόμβων A και B Εξαρτήσεις ροής που προκύπτουν από κινδύνους read-after- write (RAW) Αντιεξαρτήσεις, που προκύπτουν από κινδύνους write-after- read (WAR) Εξαρτήσεις εξόδου, που προκύπτουν από κινδύνους write- after-write (WAW)

Εξαρτήσεις Ροής Προηγμένες Αρχιτεκτονικές Η/Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 26 Έχουμε εξάρτηση ροής μεταξύ δύο στιγμιοτύπων i, j όταν Το i γράφει σε μια θέση μνήμης X απ’ όπου το j διαβάζει και Το στιγμιότυπο i προηγείται του j Κίνδυνος Read-After-Write: Αν το j εκτελεστεί πριν από το i τότε το j θα διαβάσει εσφαλμένη τιμή του Χ Ορισμός. Εφόσον δύο στιγμιότυπα i, j συνδέονται με εξάρτηση ροής τότε ορίζουμε ως διάνυσμα εξάρτησης τη διαφορά d = j - i

Παράδειγμα: Εξαρτήσεις Ροής Προηγμένες Αρχιτεκτονικές Η/Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 27 for (i=0; i<=5; i++) { Α[i+2]=2*A[i]-1; } Ξετύλιγμα βρόχου: Στιγμ.Πράξεις (εργασίες) i=0 Α[2]=2*A[0]-1; i=1 Α[3]=2*A[1]-1; i=2 Α[4]=2*A[2]-1; i=3 Α[5]=2*A[3]-1; i=4 Α[6]=2*A[4]-1; i=5Α[7]=2*A[5]-1; Εξάρτηση ροής d=2

Παράδειγμα: Εξαρτήσεις Ροής Προηγμένες Αρχιτεκτονικές Η/Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 28 for (i=0; i<=5; i++) { Α[i+2]=2*A[i]-1; } Γράφος εξάρτησης i=0i=0 i=1 i=2i=2 i=3i=3 i=4i=4 i=5i=5

Αντιεξαρτήσεις Προηγμένες Αρχιτεκτονικές Η/Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 29 Έχουμε αντιεξάρτηση μεταξύ δύο στιγμιοτύπων i, j όταν Το i γράφει σε μια θέση μνήμης X απ’ όπου το j διαβάζει και Το στιγμιότυπο i έπεται του j Κίνδυνος Write-After-Read: Αν το i εκτελεστεί πριν από το j τότε το j θα διαβάσει εσφαλμένη τιμή του Χ Ορισμός. Εφόσον δύο στιγμιότυπα i, j συνδέονται με εξάρτηση ροής τότε ορίζουμε ως διάνυσμα απόστασης της αντι-εξάρτησης τη διαφορά d* = i - j

Παράδειγμα: Αντιεξαρτήσεις Προηγμένες Αρχιτεκτονικές Η/Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 30 for (i=0; i<=5; i++) { Α[i]=A[i+2]+1; } Ξετύλιγμα βρόχου: Στιγμ.Πράξεις (εργασίες) i=0 Α[0]=A[2]+1; i=1 Α[1]=A[3]+1; i=2 Α[2]=A[4]-1; i=3 Α[3]=A[5]-1; i=4 Α[4]=A[6]-1; i=5Α[5]=A[7]-1; Αντιεξάρτηση d*=2

Παράδειγμα: Αντιεξαρτήσεις Προηγμένες Αρχιτεκτονικές Η/Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 31 for (i=0; i<=5; i++) { Α[i]=A[i+2]+1; } Γράφος εξάρτησης i=0i=0 i=1 i=2i=2 i=3i=3 i=4i=4 i=5i=5

Εξαρτήσεις ροής και αντιεξαρτήσεις Προηγμένες Αρχιτεκτονικές Η/Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 32 Και στις δύο περιπτώσεις το στιγμιότυπο i γράφει ενώ το στιγμιότυπο j διαβάζει. Και στις δύο περιπτώσεις για να υπάρχει εξάρτηση (είτε εξάρτηση ροής είτε αντιεξάρτηση) πρέπει το i να γράφει στην ίδια θέση απ’ όπου διαβάζει το j Η μόνη διαφορά είναι ότι: Αν το i προηγείται του j τότε μιλάμε για εξάρτηση ροής Αν το j προηγείται του i τότε μιλάμε για αντιεξάρτηση

Εξαρτήσεις εξόδου Προηγμένες Αρχιτεκτονικές Η/Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 33 Έχουμε εξάρτηση εξόδου μεταξύ δύο στιγμιοτύπων i, j όταν Το i και το j γράφουν στην ίδια θέση μνήμης X και Το στιγμιότυπο i προηγείται του j Κίνδυνος Write-After-Write: Αν το j εκτελεστεί πριν από το i τότε το i θα εγγράψει τελευταίο και στη μνήμη θα παραμείνει τελικά η εσφαλμένη τιμή του Χ Σπάνια περίπτωση καθώς διαδοχικές εγγραφές στην ίδια τιμή δεν συνηθίζονται (στους περισσότερους αλγορίθμους)

Παράδειγμα: Εξαρτήσεις εξόδου Προηγμένες Αρχιτεκτονικές Η/Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 34 for (i=0; i<=5; i++) { Α[i]=Β[i]+1; A[i+1]=g(i); } Ξετύλιγμα βρόχου: Στιγμ.Πράξεις (εργασίες) i=0 Α[0]=B[0]+1; A[1]=g(0); i=1 Α[1]=B[1]+1; A[2]=g(1); i=2 Α[2]=B[2]+1; A[3]=g(2); i=3 Α[3]=B[3]+1; A[4]=g(3); i=4 Α[4]=B[4]+1; A[5]=g(4); i=5 Α[5]=B[5]+1; A[6]=g(5); Εξ. εξόδου d=1

Παράδειγμα: Εξαρτήσεις εξόδου Προηγμένες Αρχιτεκτονικές Η/Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 35 for (i=0; i<=5; i++) { Α[i]=Β[i]+1; A[i+1]=g(i); } Γράφος εξάρτησης i=0i=0 i=1 i=2i=2 i=3i=3 i=4i=4 i=5i=5

Παράδειγμα 1: Εξαρτήσεις σε εμφωλευμένους βρόχους Προηγμένες Αρχιτεκτονικές Η/Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 36 for (i1=0; i1<=5; i1++) { for (i2=0; i2<4; i2++) { Α[i1+1,i2]=2*A[i1,i2]; } Στιγμιότυπο i=[ i1, i2 ]: Εγγραφή A [i1+1,i2]=2*A[i1,i2]; Στιγμιότυπο j=[ j1, j2 ]: Ανάγνωση Α[j1+1,j2]=2*A[j1,j2]; Για να υπάρχει εξάρτηση (είτε εξάρτηση ροής είτε αντιεξάρτηση) πρέπει [i1+1,i2]=[j1,j2]

Παράδειγμα 1: Εξαρτήσεις σε εμφωλευμένους βρόχους (συνέχεια) Προηγμένες Αρχιτεκτονικές Η/Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 37 Στη συγκεκριμένη περίπτωση έχουμε [i1+1,i2]=[j1,j2] δηλαδή i1+1=j1, i2=j2 i1=j1-1, i2=j2 οπότε i1<j1, i2=j2 Συνεπώς το στιγμιότυπο i προηγείται του j και άρα έχουμε μια εξάρτηση ροής

Παράδειγμα 2: Εξαρτήσεις σε εμφωλευμένους βρόχους Προηγμένες Αρχιτεκτονικές Η/Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 38 for (i1=0; i1<=10; i1++) { for (i2=0; i2<=12; i2++) { Α[i1,i2+1]=2*A[i1+1,i2]; } Στιγμιότυπο i=[ i1, i2 ]: Εγγραφή A [i1,i2+1]=2*A[i1+1,i2]; Στιγμιότυπο j=[ j1, j2 ]: Ανάγνωση Α[j1,j2+1]=2*A[j1+1,j2]; Για να υπάρχει εξάρτηση (είτε εξάρτηση ροής είτε αντιεξάρτηση) πρέπει [i1,i2+1]=[j1+1,j2]

Παράδειγμα 2: Εξαρτήσεις σε εμφωλευμένους βρόχους (συνέχεια) Προηγμένες Αρχιτεκτονικές Η/Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 39 Στη συγκεκριμένη περίπτωση έχουμε [i1,i2+1]=[j1+1,j2] δηλαδή i1=j1+1, i2+1=j2 i1=j1+1, i2=j2-1 οπότε i1>j1, i2<j2 Συνεπώς το στιγμιότυπο i έπεται του j και άρα έχουμε μια αντιεξάρτηση