ΠΕΡΙΕΧΟΜΕΝΑ Εισαγωγή Αρχιτεκτονικές παράλληλης επεξεργασίας



Σχετικά έγγραφα
7. Παραλληλοποίηση Κώδικα, Χρονοδρομολόγηση

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

9. Συστολικές Συστοιχίες Επεξεργαστών

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

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

Βασικές Έννοιες Πληροφορικής

ΚΕΦΑΛΑΙΟ 1: Τα είδη των Δικτύων Εισαγωγή

Αρχιτεκτονική σχεδίαση με ηλεκτρονικό υπολογιστή

2. Στοιχεία Αρχιτεκτονικής Παράλληλων Υπολογιστών... 45

Ethernet Ethernet ΙΕΕΕ CSMA/CD

Κατανεμημένα Συστήματα: Θεωρία και Προγραμματισμός. Ενότητα # 1: Εισαγωγή Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Κεφάλαιο 3. Διδακτικοί Στόχοι

Κεφάλαιο 3.3: Δίκτυα. Επιστήμη ΗΥ Κεφ. 3.3 Καραμαούνας Πολύκαρπος

ΕΝΙΑΙΟ ΠΛΑΙΣΙΟ ΠΡΟΓΡΑΜΜΑΤΟΣ ΣΠΟΥΔΩΝ

επιφάνεια πυριτίου Αναφορά στο Εκπαιδευτικό Υλικό : 5. Αναφορά στο Εργαστήριο :

Α Ν Α Λ Τ Η Α Λ Γ Ο Ρ Ι Θ Μ Ω Ν Κ Ε Υ Α Λ Α Ι Ο 5. Πως υπολογίζεται ο χρόνος εκτέλεσης ενός αλγορίθμου;

Λειτουργικά. Τεχνολογικό Εκπαιδευτικό Ίδρυμα Δυτικής Μακεδονίας Σιώζιος Κων/νος - Πληροφορική Ι

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

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

Τεχνολογίες & Εφαρμογές Πληροφορικής Ενότητα 7: Τοπικά δίκτυα

Τεχνολογία Πολυμέσων. Ενότητα # 3: Συστήματα πολυμέσων Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Διασύνδεση τοπικών δικτύων

Εισαγωγή στην Πληροφορική

Ποσοτικές Μέθοδοι στη Διοίκηση Επιχειρήσεων ΙΙ Σύνολο- Περιεχόμενο Μαθήματος

Συστήματα πολυμέσων. Εισαγωγή Υλικό συστημάτων πολυμέσων Λογισμικό συστημάτων πολυμέσων Συστήματα πραγματικού χρόνου Χρονοπρογραμματισμός

Εισαγωγή. Κατανεµηµένα Συστήµατα 01-1

Είναι η διαδικασία εύρεσης της διαδρομής που πρέπει να ακολουθήσει ένα πακέτο για να φτάσει στον προορισμό του. Η διαδικασία αυτή δεν είναι πάντα

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

ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Α Γενικού Λυκείου (Μάθημα Επιλογής)

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

Κεφάλαιο 1.6: Συσκευές αποθήκευσης

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Αποµακρυσµένη κλήση διαδικασιών

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

ο ρόλος των αλγορίθμων στις υπολογιστικές διαδικασίες Παύλος Εφραιμίδης Δομές Δεδομένων και Αλγόριθμοι

Μάθημα 6: Αρχιτεκτονική TCP/IP

Ενότητα 12 (κεφάλαιο 28) Αρχιτεκτονικές Εφαρμογών

Παράλληλη Επεξεργασία Κεφάλαιο 7 ο Αρχιτεκτονική Συστημάτων Κατανεμημένης Μνήμης

1.5.1 ΓΕΦΥΡΑ (BRIDGE) Εικόνα Επίπεδα λειτουργίας επαναλήπτη, γέφυρας, δρομολογητή και πύλης ως προς το μοντέλο OSI.

ΜΑΘΗΜΑ 1- MULTIPLE CHOICE

i Throughput: Ο ρυθμός ολοκλήρωσης έργου σε συγκεκριμένο χρόνο

ΠΕΡΙΕΧΟΜΕΝΑ 1 ΚΕΦΑΛΑΙΟ ΟΙ ΥΠΟΛΟΓΙΣΤΕΣ ΑΠΟ ΤΗΝ ΑΡΧΑΙΟΤΗΤΑ ΜΕΧΡΙ ΣΗΜΕΡΑ Ιστορική αναδρομή Υπολογιστικές μηχανές

Τμήμα του εθνικού οδικού δικτύου (Αττική οδός)

Επιµέλεια Θοδωρής Πιερράτος

Μάθημα 4.1 Βασικές μονάδες προσωπικού υπολογιστή

Οι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι:

Λειτουργικά Συστήματα (διαχείριση επεξεργαστή, μνήμης και Ε/Ε)

ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΑΡΧΕΣ ΤΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ Η/Υ

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΜΑΪΟΥ

Τι είναι ένα λειτουργικό σύστημα (ΛΣ); Μια άλλη απεικόνιση. Το Λειτουργικό Σύστημα ως μέρος του υπολογιστή

Μάθημα 3: Αρχιτεκτονική Υπολογιστών

Διαβιβάζεται συνημμένως στις αντιπροσωπίες το έγγραφο - C(2017) 6321 final - Annex 1 Part 6/11.

ΤΜΗΜΑΤΑ ΗΛΕΚΤΡΟΝΙΚΟΥ ΥΠΟΛΟΓΙΣΤΗ

περιεχόμενα υπολογιστικό πρόβλημα αλγόριθμοι παράδειγμα ταξινόμησης ταξινόμηση αλγόριθμοι τεχνολογία αλγορίθμων Παύλος Εφραιμίδης

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

Διαφορές single-processor αρχιτεκτονικών και SoCs

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

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

Λειτουργικά Συστήματα Πραγματικού Χρόνου

Ανάπτυξη & Σχεδίαση Λογισμικού (ΗΥ420)

Μετρικές & Επιδόσεις. Κεφάλαιο V

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

Βάσεις δεδομένων και Microsoft Access

ΚΕΦΑΛΑΙΟ 2ο ΠΡΟΣΟΜΟΙΩΣΗ ΔΙΑΚΡΙΤΩΝ ΓΕΓΟΝΟΤΩΝ

ΕΠΙΣΤΗΜΟΝΙΚΟΙ ΥΠΟΛΟΓΙΣΜΟΙ: Μια ενδιαφέρουσα σταδιοδρομία

Οδηγίες σχεδίασης στο περιβάλλον Blender

Προσομοίωση Συστημάτων

ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ 7ο ΚΕΦΑΛΑΙΟ

ΚΕΦΑΛΑΙΟ 1.7. Πρωτόκολλα και Αρχιτεκτονική Δικτύου

Σχεδιασµός βασισµένος σε συνιστώσες

AEI Πειραιά Τ.Τ. Τμ. Μηχ/κων Αυτοματισμού ΤΕ. Δίκτυα Μετάδοσης Δεδομένων. Διάλεξη 1: Εισαγωγή στα δίκτυα υπολογιστών και βασικές αρχές

SNMP ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ

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

RobotArmy Περίληψη έργου

Κεφάλαιο 1.5: Τα βασικά μέρη ενός υπολογιστή

Επαναληπτικές Ασκήσεις Μαθήματος

7.9 ροµολόγηση. Ερωτήσεις

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

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

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

ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ Ι. Σημειώσεις Θεωρίας

ΠΕΡΙΕΧΟΜΕΝΑ. Μονοδιάστατοι πίνακες Πότε πρέπει να χρησιμοποιούνται πίνακες Πολυδιάστατοι πίνακες Τυπικές επεξεργασίες πινάκων

Σχεδιαστικά Προγράμματα Επίπλου

Παράλληλη Επεξεργασία Κεφάλαιο 1 Γιατί Παράλληλος Προγραμματισμός;

1. Δύναμη. Η ιδέα της Δύναμης δίνει μία ποσοτική περιγραφή της αλληλεπίδρασης α) μεταξύ δύο σωμάτων β) μεταξύ ενός σώματος και του περιβάλλοντος του.

AEI Πειραιά Τ.Τ. Τμ. Μηχ/κων Αυτοματισμού ΤΕ. Δίκτυα Υπολογιστών. Διάλεξη 1: Εισαγωγή στα δίκτυα υπολογιστών και βασικές αρχές

ΤΙΤΛΟΣ ΜΑΘΗΜΑΤΟΣ: Δίκτυα Μεταγωγής & Τεχνικές Μεταγωγής Σε Δίκτυα Ευρείας Περιοχής

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής. Ακαδημαϊκό Έτος

Κεφάλαιο 4: Λογισμικό Συστήματος

Εισαγωγή στα Συστήματα Ψηφιακής Επεξεργασίας Σήματος

Εισαγωγή στο 3DS Max 2009

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

Συνήθεις διαφορικές εξισώσεις προβλήματα οριακών τιμών

Θέματα διπλωματικών εργασιών σε. Συστοιχίες παράλληλης εξυηρέτησης εφαρμογών Διαδικτύου

Βασικά ζητήματα μιας βάσης δεδομένων

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

Σχεδιασμός Επεξεργασίας και Τηλεπεξεργασίας

Δίκτυα Υπολογιστών Firewalls. Χάρης Μανιφάβας

Νέες Επικοινωνιακές Τεχνολογίες

ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ ΙΙ

Transcript:

ΠΕΡΙΕΧΟΜΕΝΑ 1 Εισαγωγή 11 1.1 Παράλληλη επεξεργασία................................. 13 1.2 Κατανεμημένη επεξεργασία............................... 14 1.3 Εφαρμογές παράλληλων υπολογιστών....................... 16 1.3.1 Προσομοίωση ρευμάτων των ωκεανών................ 18 1.3.2 Ακτινανίχνευση (ray tracing)........................ 19 1.3.3 Προσομοίωση της κίνησης των γαλαξιών............... 20 1.3.4 Εξόρυξη δεδομένων από βάσεις δεδομένων............. 21 2 Αρχιτεκτονικές παράλληλης επεξεργασίας 23 2.1 Ιστορία της αρχιτεκτονικής των υπολογιστών.................. 23 2.2 Κατάταξη των διαφόρων υπολογιστικών αρχιτεκτονικών......... 26 2.2.1 Ταξινόμηση με βάση τις ακολουθίες εντολών και δεδομένων 26 2.2.2 Ταξινόμηση με βάση την κατανομή της μνήμης: πολυεπεξεργαστές και πολυ-υπολογιστές............... 31 Ο πολυεπεξεργαστής........................ 31 Ο πολυ-υπολογιστής......................... 31 2.2.3 Πολυπύρηνοι επεξεργαστές......................... 34 2.3 Διαχείριση κοινόχρηστης μνήμης........................... 38 2.3.1 Η κρυφή μνήμη στον μονοεπεξεργαστή................ 39 2.3.2 Διατήρηση συνοχής μεταξύ κρυφής και κύριας μνήμης.... 42 2.3.3 Πρωτόκολλα συνοχής κρυφής μνήμης................. 44 5

6 Περιεχόμενα Η μέθοδος της κατασκοπίας......................... 44 2.3.4 Το πρωτόκολλο καταλόγου......................... 50 2.3.5 Σύγκριση των μεθόδων συνοχής της μνήμης............. 51 2.4 Συστοιχίες υπολογιστών.................................. 51 2.4.1 Προγραμματισμός παράλληλων μηχανών και συστοιχιών υπολογιστών.................................... 53 Η διασύνδεση OpenMP............................ 53 Η διασύνδεση MPI................................ 57 2.4.2 Σχεδίαση συστοιχίας.............................. 59 3 Δίκτυα διασύνδεσης 65 3.1 Κριτήρια επιδόσεων μηχανισμών επικοινωνίας................. 66 Παράδειγμα..................................... 68 3.2 Ένα απλό δίκτυο....................................... 68 3.2.1 Πρωτόκολλα επικοινωνίας.......................... 69 3.3 Σύνδεση υπολογιστών σε δίκτυο............................ 71 3.3.1 Λειτουργική ταξινόμηση δικτύων..................... 72 3.3.2 Τοπολογίες δικτύων............................... 73 3.3.3 Σύνδεση κόμβων με μια κοινή γραμμή................. 74 Το δίκτυο διαύλου................................ 74 Διαιτησία του διαύλου............................. 75 Σύγκριση απόδοσης των διαφόρων αλγορίθμων διαιτησίας του διαύλου............................. 78 Το δίκτυο Ethernet................................ 79 Βασική τοπολογία του Ethernet και επεκτάσεις.......... 80 3.3.4 Σύνδεση κόμβων με ξεχωριστές γραμμές............... 82 Παράδειγμα..................................... 85 Δίκτυα κατανεμημένης επεξεργασίας με ξεχωριστές γραμμές 86 Δρομολόγηση πακέτων............................ 87 Μεταγωγοί...................................... 89 Έλεγχος κυκλοφορίας............................. 89 3.4 Προτυποποίηση δικτύων κατανεμημένης επεξεργασίας.......... 90 3.4.1 Το μοντέλο OSI του οργανισμού ISO.................. 90 Η στοίβα πρωτοκόλλων TCP/IP...................... 92 Το πρωτόκολλο IP................................ 94 Το πρωτόκολλο TCP.............................. 96

Περιεχόμενα 7 3.4.2 Υπερταχέα δίκτυα κορμού οπτικών ινών............... 97 3.4.3 Ευρυζωνικά δίκτυα στο σπίτι........................ 98 Επιπτώσεις της ευρυζωνικότητας στην κατανεμημένη επεξεργασία............................. 98 4 Γενικά ζητήματα παραλληλοποίησης 101 4.1 Μέτρηση της απόδοσης των παράλληλων αλγορίθμων........... 101 4.1.1 Ο νόμος του Amdahl.............................. 105 4.1.2 Μέτρο Karp-Flatt................................. 107 4.1.3 Ο νόμος Gustafson-Barsis.......................... 109 4.2 Επικοινωνία μεταξύ διεργασιών............................ 110 4.2.1 Βασικές λειτουργίες του υλικού...................... 111 4.2.2 Χρήση κοινόχρηστων πόρων........................ 112 4.2.3 Πρακτικοί τρόποι κλειδώματος της μνήμης............. 114 4.3 Συγχρονισμός διεργασιών................................. 117 4.4 Αδιέξοδα και αποφυγή τους............................... 119 Παράδειγμα: στατική αποφυγή αδιεξόδων.............. 120 4.5 Παράλληλες εντολές και δομές υψηλού επιπέδου............... 122 4.5.1 Οι εντολές fork και join........................... 122 4.5.2 Οι εντολές parbegin και parend..................... 124 4.5.3 Η δομή monitor.................................. 125 Παράδειγμα: Το μοντέλο παραγωγού/καταναλωτή με χρήση της δομής monitor........................ 127 5 Παραλληλοποίηση εργασιών 129 5.1 Εισαγωγή............................................. 129 5.2 Βήμα 1: Ανάλυση....................................... 132 5.2.1 Εξαρτήσεις δεδομένων............................. 133 5.2.2 Εξαρτήσεις ελέγχου............................... 138 5.3 Βήμα 2: Ομαδοποίηση εργασιών σε διεργασίες................ 138 5.4 Βήμα 3: Χρονοδρομολόγηση.............................. 143 5.4.1 Ανάθεση και χρονοδρομολόγηση..................... 144 5.4.2 Μοντέλο Α: ντετερμινιστικό με μηδενικό χρόνο επικοινωνίας 145 Ειδική περίπτωση 1: ο ΓΕ είναι δάσος εισόδου ή δάσος εξόδου................................. 148 Ειδική περίπτωση 2: μόνο δύο επεξεργαστές............ 149

8 Περιεχόμενα 5.4.3 Μοντέλο Β: Ντετερμινιστικό, αλλά όχι αμελητέος χρόνος επικοινωνίας.................................... 151 Παραλληλία και κόστος επικοινωνίας.................. 152 Διπλή εκτέλεση εργασιών (task duplication)............. 152 5.4.4 Ευρετικοί αλγόριθμοι.............................. 154 Δρομολόγηση με λίστα προτεραιότητας (list scheduling)... 154 Δρομολόγηση με ομαδοποίηση (clustering)............. 154 6 Ένθετοι βρόχοι 155 6.1 Εισαγωγή............................................. 155 6.2 Η δομή του βρόχου..................................... 156 6.2.1 Απλοί βρόχοι.................................... 156 6.2.2 Κανονικοποίηση βρόχων (Loop Normalization).......... 157 6.2.3 Ένθετοι βρόχοι................................... 161 6.3 Λεξικογραφική διάταξη των στιγμιοτύπων.................... 167 7 Εξαρτήσεις σε ένθετους βρόχους 173 7.1 Εξαρτήσεις ροής....................................... 173 7.1.1 Εξαρτήσεις ροής σε απλούς βρόχους.................. 173 7.1.2 Ανάλυση εξαρτήσεων............................. 175 Κυρτό περίγραμμα εξαρτήσεων...................... 180 7.1.3 Εξαρτήσεις ροής σε πολλαπλά ένθετους βρόχους......... 181 7.1.4 Ένας εύκολος αλλά επικίνδυνος τρόπος υπολογισμού των διανυσμάτων εξάρτησης ροής....................... 184 7.2 Αντιεξαρτήσεις........................................ 186 7.2.1 Αντιεξαρτήσεις σε απλούς βρόχους................... 186 7.2.2 Αντιεξαρτήσεις σε πολλαπλά ένθετους βρόχους.......... 190 7.3 Εξαρτήσεις εξόδου...................................... 192 7.4 Ένα παράδειγμα βρόχου με περισσότερες από μία εξαρτήσεις..... 194 8 Χρονοδρομολόγηση 199 8.1 Η μέθοδος των υπερεπιπέδων............................. 199 8.2 Μη ομοιόμορφες εξαρτήσεις.............................. 219 8.3 Ασκήσεις............................................. 231 9 Απεικόνιση 235 9.1 Απεικόνιση ένθετων βρόχων.............................. 235

Περιεχόμενα 9 9.2 Απεικόνιση μέσω μετασχηματισμών......................... 236 9.3 Αντιμετάθεση βρόχων................................... 238 9.4 Στρέβλωση βρόχων..................................... 241 10 Υπολογισμοί στην GPU: παράλληλη επεξεργασία σε κάρτες γραφικών 247 10.1 Εισαγωγή............................................. 247 10.2 Η αρχιτεκτονική CUDA.................................. 249 10.2.1 Το μοντέλο μνήμης............................... 252 10.2.2 Το μοντέλο εκτέλεσης CUDA....................... 254 Το μοντέλο SPMD................................ 254 10.2.3 Υλοποίηση του μοντέλου........................... 257 10.2.4 Ένα παράδειγμα.................................. 259 Βήμα 1: Καθορισμός αρχικών συνθηκών του συστήματος CUDA................................. 259 Βήμα 2: Δέσμευση μνήμης.......................... 263 Βήμα 3: Μεταφορά των δεδομένων από τη μνήμη της κυρίως διεργασίας στη μνήμη της GPU.............. 264 Βήμα 4: Η συνάρτηση πυρήνα....................... 266 Βήμα 5: Η εκτέλεση της συνάρτησης πυρήνα............ 268 Βήμα 6: Συγχρονισμός............................. 269 Βήμα 7: Μεταφορά των αποτελεσμάτων από τη μνήμη της κάρτας γραφικών στη μνήμη της κυρίως διεργασίας 270 Βήμα 8: Αποδέσμευση των μη απαραίτητων πόρων....... 270 10.3 Το μοντέλο OpenCL.................................... 274 Βήμα 1: Απόδοση αρχικών τιμών..................... 277 Βήμα 2: Δημιουργία θεματικού πλαισίου συσκευής (device context) και ουράς διαταγών (command queue)... 280 Βήμα 3: Δέσμευση μνήμης σε CPU και GPU............ 281 Βήμα 4: Αντιγραφή δεδομένων στη μνήμη της συσκευής... 282 Βήμα 5: Προετοιμασία της συνάρτησης πυρήνα.......... 284 Βήμα 6: Μεταβίβαση ορισμάτων..................... 287 Βήμα 7: Καθορισμός διάταξης νημάτων και εκτέλεση πυρήνα 288 Βήμα 8: Συγχρονισμός............................. 290 Βήμα 9: Αντιγραφή των αποτελεσμάτων από τη μνήμη της συσκευής στη μνήμη της κυρίως διεργασίας..... 292

10 Περιεχόμενα Βήμα 10: Αποδέσμευση των πόρων που δεν είναι απαραίτητοι για τη συνέχιση της διεργασίας..... 292 10.4 Ασκήσεις............................................. 297 Α Μαθηματικά & αλγοριθμικά εργαλεία 299 Α.1 Υπολογισμός των οριακών σημείων της κυρτής περιοχής εξαρτήσεων 301 Α.2 Επίλυση συστημάτων διοφαντικών εξισώσεων................ 303 Β Απεικόνιση ένθετων βρόχων 313 Γ Συστολικές συστοιχίες επεξεργαστών 327 Γ.1 Μεθοδολογία απεικόνισης ενός αλγορίθμου σε συστολική συστοιχία 328 Γ.2 Βήμα 1: Μετατροπή του κώδικα σε κώδικα μοναδικής ανάθεσης... 329 Γ.3 Βήμα 2: Σχεδίαση γράφου εξάρτησης (ΓΕ).................... 329 Γ.4 Βήμα 3: Μετατροπή μακρινών συνδέσεων σε τοπικές............ 332 Γ.5 Βήμα 4: Προβολή, χρονοδιάγραμμα......................... 332 Γ.6 Βήμα 5: Σχεδίαση συστολικού επεξεργαστή................... 336 Βιβλιογραφία 339 Ευρετήριο 346

ΚΕΦΑΛΑΙΟ 1 ΕΙΣΑΓΩΓΗ Από την αρχή της ιστορίας των υπολογιστών υπάρχουν συνεχώς αυξανόμενες απαιτήσεις βελτίωσης της επίδοσης των υπολογιστικών συστημάτων. Κάθε γενιά πρέπει να είναι σαφώς ταχύτερη από την προηγούμενη. Η ταχύτητα ενός υπολογιστή κρίνεται κυρίως από την ταχύτητα του επεξεργαστή και κατά δεύτερο λόγο από την ταχύτητα του συστήματος της μνήμης που τροφοδοτεί τον επεξεργαστή με δεδομένα. Τόσο ο επεξεργαστής όσο και η μνήμη υλοποιούνται με τη χρήση ολοκληρωμένων κυκλωμάτων. Ωστόσο, τα τελευταία χρόνια, η αύξηση της ταχύτητας των ολοκληρωμένων κυκλωμάτων γίνεται όλο και πιο δύσκολη καθώς η πυκνότητα ολοκλήρωσης (πλήθος τρανζίστορ ανά cm 2 ) έχει φθάσει σε οριακό σημείο και οποιαδήποτε περαιτέρω βελτίωση απαιτεί εξαιρετικά υψηλό κόστος. Ταυτόχρονα εμφανίζεται μια ραγδαία εξέλιξη στον τομέα των δικτύων υπολογιστών η οποία κάνει δυνατή τη γρήγορη πρόσβαση σε απομακρυσμένα υπολογιστικά συστήματα με στόχο την ανταλλαγή δεδομένων. Έτσι, η βελτίωση της επίδοσης του συστήματος με τη διασύνδεση πολλών επεξεργαστικών μονάδων γίνεται όλο και πιο ελκυστική (αν όχι η μοναδική) λύση με μη απαγορευτικό κόστος. Η παράλληλη επεξεργασία είναι πλέον ένα απαραίτητο συστατικό στην αρχιτεκτονική των σύγχρονων υπολογιστών. Έχει στόχο τη βελτίωση της ταχύτητας επεξεργασίας χωρίς να είναι απαραίτητη η βελτίωση της τεχνολογίας του υλικού. Μιλώντας γενικά, ένας υπολογιστής θεωρείται παράλληλος αν αποτελείται από πολλές επεξεργαστικές μονάδες οι οποίες συνεργάζονται στενά για τη λύση ενός προβλήματος σε 11

12 Κεφάλαιο 1. Εισαγωγή χρόνο μικρότερο από τον χρόνο που θα χρειαζόταν ένας επεξεργαστής μόνος του για να λύσει το ίδιο πρόβλημα. Οι επεξεργαστές αυτοί λέγονται στενά συζευγμένοι (tightly coupled). Μέχρι τις αρχές της δεκαετίας του 2000 ένα τσιπ τυπικά φιλοξενούσε έναν επεξεργαστή, οπότε ένα παράλληλο σύστημα αποτελούνταν από N επεξεργαστές/τσιπ (με ή χωρίς τοπική μνήμη) συνδεδεμένους σε δίκτυο. Με την έλευση των πολυπύρηνων επεξεργαστών (multicore processors) στις αρχές της δεκαετίας του 2000, εμφανίστηκαν πολλοί επεξεργαστές μέσα στο ίδιο τσιπ συνδεδεμένοι μεταξύ τους με εσωτερικό δίκτυο. Οι μικροί αυτοί εσωτερικοί επεξεργαστές ονομάζονται πυρήνες ώστε να τους διακρίνουμε από το συνολικό πακέτο (package) που εξακολουθεί να ονομάζεται «επεξεργαστής». Αυτό το μοντέλο επεξεργαστών κυριαρχεί σήμερα, με το πλήθος των πυρήνων να υπερβαίνει τους 10 ανά επεξεργαστή. Πολλοί πολυπύρηνοι επεξεργαστές μπορούν πάλι να συνδεθούν εξωτερικά μεταξύ τους, δημιουργώντας ένα ακόμη μεγαλύτερο παράλληλο σύστημα. Και χωρίς αυτή τη διασύνδεση όμως, ένας πολυπύρηνος επεξεργαστής είναι εγγενώς παράλληλος από μόνος του. Έτσι, η παράλληλη επεξεργασία μπήκε πλέον στον χώρο της λεγόμενης «επιτραπέζιας υπολογιστικής» (desktop computing), δηλαδή στους υπολογιστές γραφείου και τους φορητούς υπολογιστές, καθώς και στην ονομαζόμενη «φορητή υπολογιστική» (mobile computing), δηλαδή στα κινητά τηλέφωνα και άλλες «έξυπνες» ηλεκτρονικές συσκευές. Μια άλλη καινοτομία των τελευταίων ετών είναι η ραγδαία ανάπτυξη των δικτύων και η σχετικά φθηνή δημιουργία υπερταχέων τυποποιημένων δικτύων τοπικής εμβέλειας, ή ακόμη και ευρείας περιοχής. Τέτοια παραδείγματα είναι το GigaBit Ethernet και το δίκτυο οπτικών ινών WDM, με ταχύτητες της τάξης των GigaBit ανά δευτερόλεπτο (GigaBit per Second Gbps) ή και μεγαλύτερες. Η διάδοση τέτοιων δικτύων έδωσε τη δυνατότητα ανάπτυξης ενός νέου υπολογιστικού μοντέλου όπου πολλοί, απλοί υπολογιστές γραφείου, συνδεόμενοι μέσα από το γρήγορο δίκτυο μπορούν να λειτουργούν ως μια μεγάλη, εικονική παράλληλη μηχανή. Αυτή η τεχνολογία είναι γνωστή ως υπολογιστικά πλέγματα (grid computing) ενώ οι ομάδες τέτοιων υπολογιστών ονομάζονται υπολογιστικές συστοιχίες (computer clusters). Η τεχνολογία αυτή γίνεται όλο και πιο διαδεδομένη τα τελευταία χρόνια. Επειδή οι υπολογιστές σε ένα πλέγμα δεν είναι υποχρεωμένοι να βρίσκονται στον ίδιο χώρο, τα μοντέλα αυτά ονομάζονται και μοντέλα κατανεμημένης επεξεργασίας (distributed processing). Συχνά επίσης χρησιμοποιείται ο όρος υπολογιστικό νέφος (cloud computing) για να περιγράψει την κατάσταση όπου ένα σύνολο υπολογιστών, πιθανόν κατανεμημένων σε διαφορετικά μέρη του κόσμου, παρέχει υπηρεσίες στον τελικό χρήστη/πελάτη μέσω του Διαδικτύου (Internet). Ο πελάτης δε γνωρίζει ποιοι ακριβώς υπολογιστές παρέ-

1.1. Παράλληλη επεξεργασία 13 χουν ποια ακριβώς υπηρεσία ή πώς αυτοί πιθανόν συνεργάζονται για να παρέχουν τις υπηρεσίες τους (από όπου και ο όρος «νέφος»). Ο χρήστης αντιμετωπίζει ολόκληρο το σύνολο των υπολογιστών σαν ένα σημείο εξυπηρέτησης. Στις επόμενες ενότητες εξηγούμε με απλά παραδείγματα τις έννοιες της παράλληλης και της κατανεμημένης επεξεργασίας, και διακρίνουμε ομοιότητες και διαφορές μεταξύ τους. 1.1 Παράλληλη επεξεργασία Συνοπτικά, τα βασικά προβλήματα που αντιμετωπίζει η καθαρή παράλληλη επεξεργασία είναι τα εξής: Η επικοινωνία μεταξύ των επεξεργαστών Η διαχείριση της μνήμης Η τοπολογία του δικτύου διασύνδεσης μεταξύ των επεξεργαστών Θέματα ανοχής στα σφάλματα Θέματα παράλληλου λογισμικού, όπως η κατάτμηση των αλγορίθμων σε μέρη που μπορούν να εκτελεστούν παράλληλα, ο σχεδιασμός παράλληλων λειτουργικών συστημάτων, η ανάπτυξη παράλληλων μεταφραστών, κλπ. Η παράλληλη επεξεργασία μπορεί να γίνει καλύτερα κατανοητή με ένα παράδειγμα: Ας υποθέσουμε ότι μια πόλη βρίσκεται δίπλα σε ένα ποτάμι, και υπάρχει φόβος το ποτάμι να ξεχειλίσει με τις βροχές του ερχόμενου χειμώνα που αναμένεται βαρύς. Έστω ότι ο χειμώνας απέχει μόλις 2 μήνες από τώρα. Στόχος μας (η εφαρμογή μας) είναι να μεταφερθούν κάποιοι σάκοι με άμμο στις όχθες ενός ποταμού για προστασία από τις πλημμύρες. Έχει υπολογιστεί ότι για το φράγμα αυτό απαιτούνται 100000 σάκοι άμμου οι οποίοι τώρα βρίσκονται στοιβαγμένοι σε μια μεγάλη αποθήκη στο κέντρο της πόλης. Υπολογίζεται ότι ένας άνθρωπος μόνος του (δηλαδή ένας επεξεργαστής), εργαζόμενος οκτώ ώρες την ημέρα μπορεί να μεταφέρει 500 σάκους σε μία ημέρα. Με αυτόν τον ρυθμό, ένας άνθρωπος μόνος του θα ολοκληρώσει το έργο σε 200 μέρες, δηλαδή περίπου σε 6,5 μήνες. Αυτό προφανώς δεν είναι αποδεκτό επειδή δεν ικανοποιεί την απαίτηση ολοκλήρωσης του έργου σε χρόνο μικρότερο από 2 μήνες. Η εργασία μπορεί να επιταχυνθεί αν στο έργο δουλέψουν ταυτόχρονα, π.χ., 100 άνθρωποι. Στην περίπτωση αυτή, θεωρητικά το έργο θα τελειώσει στο 1/100 του χρόνου, δηλαδή σε 2 ημέρες.

14 Κεφάλαιο 1. Εισαγωγή Για να γίνει όμως αυτό, οι άνθρωποι (επεξεργαστές) πρέπει να συνεργαστούν, πράγμα που προϋποθέτει ότι επικοινωνούν μεταξύ τους με κάποιο αποδοτικό τρόπο. Για παράδειγμα, πρέπει να μη στοιβάζουν όλοι τους σάκους στην ίδια θέση αλλά να απλώνουν το φράγμα κατά μήκος του ποταμού. Πρέπει για παράδειγμα να συμφωνήσουν εκ των προτέρων ποιο τμήμα του ποταμού θα αναλάβει ο καθένας (κατάτμηση του αλγορίθμου σε κομμάτια που θα εκτελεστούν παράλληλα). Επίσης, θα πρέπει να υπάρχει κάποιος αποδοτικός τρόπος να διανέμονται οι σάκοι στον καθέναν επειδή, διαφορετικά, αν προσπαθήσουν και οι 100 ταυτόχρονα να πάνε στην αποθήκη και να πάρουν ένα σάκο, θα δημιουργηθεί συνωστισμός και αδιαχώρητο και τελικά πιθανόν να μην εξυπηρετηθεί κανείς. Ενδεχομένως θα ήταν πιο αποδοτικό να δημιουργηθεί μια αλυσίδα όπου ο ένας θα δίνει στον άλλο από ένα σάκο, και ο τελευταίος θα τον αποθέτει στην όχθη του ποταμού. Αυτό απαιτεί κάποια συνεννόηση μεταξύ των ανθρώπων, η οποία επιτυγχάνεται στην περίπτωσή μας με την απλή οπτική επαφή, αλλά στην περίπτωση των υπολογιστών επιτυγχάνεται με ανταλλαγή μηνυμάτων μεταξύ των επεξεργαστών. Τέλος, θα πρέπει να ενημερώνει ο ένας τον άλλο ότι πιάνει δουλειά ή ότι σταματάει, είτε διότι τελείωσε η βάρδια του είτε για άλλο λόγο (π.χ. ατύχημα). Από το παράδειγμα γίνεται σαφές ότι η παράλληλη επεξεργασία απαιτεί στενή συνεργασία μεταξύ των επεξεργαστών, με την οποία λύνουν κάποιο κοινό πρόβλημα. Ο στόχος της συνεργασίας είναι η επιτάχυνση της εργασίας και η καλύτερη απόδοση. Για τους λόγους αυτούς οι παράλληλοι υπολογιστές αποτελούνται από επεξεργαστές που βρίσκονται πολύ κοντά ο ένας στον άλλο, όχι απλώς στο ίδιο δωμάτιο ή στο ίδιο κουτί αλλά συχνά επάνω στην ίδια μητρική κάρτα ή ακόμη και στο ίδιο τσιπ. Στόχος είναι η ελαχιστοποίηση του χρόνου επικοινωνίας μεταξύ τους και, επομένως, το δίκτυο διασύνδεσης έχει τυπικά πολύ μεγάλη ταχύτητα. Σε ορισμένες μάλιστα περιπτώσεις οι επεξεργαστές σχεδιάζονται ειδικά για τη λύση ενός συγκεκριμένου προβλήματος ή μιας κατηγορίας ομοειδών προβλημάτων (π.χ. πολλαπλασιασμός πινάκων, βασικοί αλγόριθμοι επεξεργασίας εικόνας, κλπ.). Αυτοί οι υπολογιστές λέγονται ειδικού σκοπού, σε αντίθεση με τους υπολογιστές γενικού σκοπού που, όπως λέει και το όνομά τους, έχουν σχεδιαστεί να εκτελούν οποιαδήποτε εφαρμογή. 1.2 Κατανεμημένη επεξεργασία Η κατανεμημένη επεξεργασία μοιάζει σε πολλά σημεία με την παράλληλη. Καταρχήν, όπως και στην παράλληλη επεξεργασία έχουμε πολλούς υπολογιστές που επι-

1.2. Κατανεμημένη επεξεργασία 15 κοινωνούν μεταξύ τους και ανταλλάσσουν πληροφορίες. Σε αντίθεση όμως με την παράλληλη επεξεργασία, οι αποστάσεις μεταξύ των υπολογιστών συχνά είναι ιδιαίτερα μεγάλες, και για λόγους οικονομίας αλλά και για λόγους απόστασης συνδέονται μεταξύ τους με τυποποιημένα εμπορικά δίκτυα (π.χ. γραμμές ADSL). Οι τοπικοί υπολογιστές ενός κατανεμημένου συστήματος είναι σε μεγάλο βαθμό ανεξάρτητοι και χρειάζεται να επικοινωνούν λιγότερο συχνά από όσο οι επεξεργαστές ενός παράλληλου συστήματος. Οι υπολογιστές αυτοί λέμε ότι είναι χαλαρά συζευγμένοι (loosely coupled). Αν και η ταχύτητα είναι ένα κριτήριο αξιολόγησης ενός κατανεμημένου συστήματος όπως και ενός παράλληλου συστήματος, υπάρχουν κάποια πιο σημαντικά κριτήρια στην απόδοση των κατανεμημένων συστημάτων. Ένα χαρακτηριστικό παράδειγμα κατανεμημένου συστήματος είναι το δίκτυο των Αυτόματων Ταμειακών Μηχανών (ATM) μιας τράπεζας. Οι υπολογιστές αυτοί είναι κατανεμημένοι σε όλο τον χώρο, π.χ. της Ελλάδας, συνδέονται μεταξύ τους με κάποιο σχετικά γρήγορο δίκτυο επικοινωνίας, και λειτουργούν σε μεγάλο βαθμό ανεξάρτητα ο ένας από τον άλλο. Ένας πελάτης μπορεί να κάνει ανάληψη χρημάτων ή κατάθεση σε οποιοδήποτε ΑΤΜ σε όλη την Ελλάδα δίνοντας ως είσοδο στον τοπικό υπολογιστή τον προσωπικό του κωδικό αριθμό και το ποσό που θέλει να πάρει ή να καταθέσει. Είναι πιθανό κάθε υπολογιστής για λόγους ταχύτητας να ψάχνει πρώτα σε μια τοπική βάση δεδομένων και, αν δε βρεθεί ο πελάτης εκεί, να συνεχίζει την αναζήτηση σε κάποια κεντρική βάση ή σε κάποιο άλλο σταθμό. Κύριος στόχος του δικτύου ΑΤΜ δεν είναι τόσο η μεγιστοποίηση της ταχύτητας της συναλλαγής (αν και αυτό είναι επίσης επιθυμητό), αλλά και η ασφάλεια (security) των δεδομένων και η ακεραιότητά τους (integrity). Για παράδειγμα, αν ζητηθούν ταυτόχρονα από τον ίδιο λογαριασμό χρήματα από δύο διαφορετικούς τοπικούς υπολογιστές (γιατί π.χ. ο λογαριασμός είναι κοινός), οι δύο συναλλαγές πρέπει να μπουν σε σειρά για να μη γίνει λάθος στην αφαίρεση. Έστω για παράδειγμα ότι ο λογαριασμός ενός πελάτη είναι πιστωμένος με 3000, και ταυτόχρονα ζητούνται 2000 από δύο διαφορετικές ταμειακές μηχανές από τον λογαριασμό αυτόν. Αν οι δύο συναλλαγές δεν εκτελεστούν σειριακά, τότε και οι δύο υπολογιστές θα δουν ότι το πιστωτικό υπόλοιπο (3000 ) είναι μεγαλύτερο από το ποσό που ζητήθηκε (2000 ) και άρα θα εγκρίνουν και τις δύο συναλλαγές, με αποτέλεσμα στο τέλος ο λογαριασμός να μείνει με αρνητικό υπόλοιπο 1000. Γενικά, τα προβλήματα που αντιμετωπίζει η κατανεμημένη επεξεργασία συνοψίζονται στα εξής: Θέματα δικτύων. Κατάτμηση των δεδομένων σε κατανεμημένα υποσύνολα.

16 Κεφάλαιο 1. Εισαγωγή Αποδοτική διαχείριση ταυτόχρονων συναλλαγών (concurrency). Αποφυγή αδιεξόδων (deadlocks). Ανοχή σε σφάλματα (fault tolerance). Με την ανάπτυξη ιδιαίτερα γρήγορων δικτύων επικοινωνίας, τα όρια μεταξύ παράλληλης και κατανεμημένης επεξεργασίας μπορεί να γίνουν δυσδιάκριτα, όπως στην περίπτωση των συστοιχιών όπου χωρικά απομακρυσμένοι υπολογιστές μπορούν να είναι στενά συζευγμένοι ανταλλάσσοντας μεγάλο όγκο δεδομένων και συνεργαζόμενοι σαν μια μεγάλη παράλληλη μηχανή για την επίλυση ενός προβλήματος. Στο βιβλίο αυτό γίνεται μια συστηματική μελέτη της σχεδίασης παράλληλων συστημάτων, τόσο σε επίπεδο αρχιτεκτονικής υπολογιστών όσο και σε επίπεδο προγραμματισμού. Δίνεται ιδιαίτερη έμφαση στην παραλληλοποίηση αλγορίθμων, εξηγούνται οι διάφοροι τύποι εξαρτήσεων δεδομένων, αναλύονται τα προβλήματα της χρονοδρομολόγησης, και παρέχονται μεθοδολογίες απεικόνισης παράλληλων αλγορίθμων σε παράλληλα συστήματα. Εξηγούνται βασικές έννοιες της παράλληλης επεξεργασίας, και σε μικρότερο βαθμό θίγονται θέματα κατανεμημένης επεξεργασίας κυρίως όσο αφορά θέματα δικτύων. Επίσης, περιγράφονται βασικές αρχιτεκτονικές δικτύων παράλληλης επεξεργασίας και γίνεται εκτενής αναφορά στην υλοποίηση παράλληλων αλγορίθμων σε πραγματικές αρχιτεκτονικές παράλληλης επεξεργασίας. Στην επόμενη ενότητα περιγράφονται ενδεικτικά κάποιες εφαρμογές που απαιτούν τη χρήση παράλληλης επεξεργασίας. 1.3 Εφαρμογές παράλληλων υπολογιστών Οι παράλληλοι υπολογιστές χρησιμοποιούνται σε μια μεγάλη ποικιλία προβλημάτων, από εμπορικές έως μεγάλες επιστημονικές εφαρμογές που απαιτούν τεράστια υπολογιστική ισχύ. Όπως είπαμε, ήδη οι πολυπύρηνοι επεξεργαστές που κυκλοφορούν στο εμπόριο με στόχο την αγορά μέσου κόστους και επιδόσεων εφαρμόζουν παράλληλη επεξεργασία. Αν και το πλήθος των πυρήνων δεν είναι πολύ μεγάλο στην περίπτωση αυτή (π.χ. 4-8), η χρήση τέτοιων μηχανημάτων είναι πλέον εξαιρετικά διαδεδομένη. Φυσικά υπάρχουν (ήδη από τη δεκαετία του 70) μεγάλοι παράλληλοι υπολογιστές με δεκάδες ή εκατοντάδες επεξεργαστές, οι οποίοι όμως ανήκουν στην κατηγορία κορυφαίας τεχνολογίας (high-end) και απευθύνονται μόνο σε μεγάλες επιχειρήσεις ή μεγάλους οργανισμούς. Οι παράλληλοι εμπορικοί υπολογιστές συνήθως χρησιμοποιού-

1.3. Εφαρμογές παράλληλων υπολογιστών 17 νται ως εξυπηρετητές ή διακομιστές (servers) από μεσαίες ή μεγάλες επιχειρήσεις και οργανισμούς, με σκοπό την αύξηση των πελατών που εξυπηρετούνται σε μια μονάδα χρόνου. Υπάρχει σχέση ευθείας αναλογίας μεταξύ μεγέθους επιχείρησης και των επιδόσεων του παράλληλου υπολογιστικού συστήματος που απαιτείται για τη διαχείριση και την υποστήριξη της παραγωγής της. Ένα χαρακτηριστικό μετροπρόγραμμα είναι οι συναλλαγές ανά λεπτό (transactions per minute tpm) που χρησιμοποιείται για την αξιολόγηση της επίδοσης ενός υπολογιστικού συστήματος ως προς την ταχύτητα προσπέλασης μιας βάσης δεδομένων. Το κριτήριο tpm έχει άμεση συνάφεια με επιχειρήσεις των οποίων η δραστηριότητα εξαρτάται άμεσα από την αποδοτική διαχείριση δεδομένων, όπως λογαριασμοί πελατών (τράπεζες, χρηματιστηριακοί οίκοι), πελατολόγια (πωλητές), μισθοδοσία (όλες οι εταιρείες), αποθήκες (σούπερ-μάρκετ, μεγάλα καταστήματα), κλπ. Το μετροπρόγραμμα (benchmark) TPC-C 1 σχεδιάστηκε ακριβώς με σκοπό τη μέτρηση της επίδοσης συστημάτων στη διεκπεραίωση σύνθετων ερωτημάτων (complex queries). Το συγκεκριμένο μετροπρόγραμμα προσομοιώνει ένα μεγάλο περιβάλλον καταχώρισης δεδομένων από πολλούς περιφερειακούς σταθμούς, σε μια μεγάλη βάση δεδομένων της τάξης των 3000GB. Ένα άλλο μετροπρόγραμμα με αυξανόμενη σημασία τα τελευταία χρόνια είναι οι συναλλαγές Ιστού ανά δευτερόλεπτο (Web interactions per second). Η ραγδαίως αυξανόμενη δημοτικότητα του Διαδικτύου οδήγησε το TPC στην πρόταση του μετροπρογράμματος TPC-W Web για τη μέτρηση αυτού του δείκτη. Το συγκεκριμένο μετροπρόγραμμα βασίζεται στη μέσω Διαδικτύου προσπέλαση κατανεμημένων πληροφοριών μεγέθους 500 GB. Οι επιστημονικές εφαρμογές αποτελούν το άλλο μεγάλο πεδίο εφαρμογής της παράλληλης επεξεργασίας. Η παράλληλη επεξεργασία αποτελεί βασικό εργαλείο σε προβλήματα προσομοίωσης φυσικών φαινομένων με πάρα πολύ μεγάλους αριθμούς παραμέτρων. Τυπικά παραδείγματα αποτελούν η πρόγνωση του καιρού για μεγάλα χρονικά διαστήματα, οι κινήσεις των αστέρων, η ατομική δομή των υλικών, η μελέτη των μηχανών εσωτερικής καύσης, η αεροδυναμική μελέτη αυτοκινήτων ή αεροπλάνων, η συμπεριφορά μικροηλεκτρονικών διατάξεων, κ.ά. Οι εφαρμογές αυτές έχουν εξαιρετικά μεγάλες απαιτήσεις πράξεων ανά δευτερόλεπτο (> 100 GFLOPS 2 ) κα- 1 Ορίστηκε από το Transaction Processing Council (TPC), δείτε στη διεύθυνση http://www.tpc.org/ tpcc/. 2 GigaFLOPS = Giga FLoating point Operations Per Second Δισεκατομμύριο Πράξεις Κινητής Υποδιαστολής ανά Δευτερόλεπτο.

18 Κεφάλαιο 1. Εισαγωγή θώς επίσης και εξαιρετικά μεγάλες απαιτήσεις σε μνήμη (> 100 GB 3 ). Οι εφαρμογές αυτές ονομάζονται Μεγάλες προκλήσεις (Grand Challenges) της επιστήμης των υπολογιστών, και είναι μεταξύ άλλων: Η ανάλυση της μεταβολής του κλίματος του πλανήτη Η ανάλυση των γονιδίων του ανθρώπου Η μελέτη της ροής ρευστών Η αεροδυναμική μελέτη οχημάτων ή αεροσκαφών Η προσομοίωση των ωκεανών Η μοντελοποίηση υπεραγωγών Η κβαντική χρωμοδυναμική Η όραση των υπολογιστών Η αναζήτηση σε εξαιρετικά μεγάλες βάσεις δεδομένων Η ακτινανίχνευση Η προσομοίωση της κίνησης των γαλαξιών Μερικές επιστημονικές εφαρμογές υψηλών απαιτήσεων περιγράφονται πιο αναλυτικά στη συνέχεια. Αυτές είναι η προσομοίωση των ωκεανών, η φωτοαπόδοση τρισδιάστατων σκηνών, η προσομοίωση της κίνησης των άστρων σε ένα γαλαξία, και η εξόρυξη δεδομένων από μια βάση δεδομένων. 1.3.1 Προσομοίωση ρευμάτων των ωκεανών Σημαντικό ρόλο στη διαμόρφωση του κλίματος παίζει η αλληλεπίδραση μεταξύ ατμόσφαιρας και ωκεανών, καθώς οι τελευταίοι αποτελούν τα τρία τέταρτα της επιφάνειας της γης. Τα καλά μοντέλα συμπεριφοράς των ωκεανών είναι υπερβολικά πολύπλοκα. Η κατάσταση του ωκεανού μια συγκεκριμένη στιγμή εξαρτάται από την κατάστασή του στο παρελθόν, καθώς και από τις παρούσες συνθήκες, ενώ όλες οι παράμετροι υπεισέρχονται σε ένα πολύπλοκο σύστημα εξισώσεων που λύνεται μόνο αριθμητικά με τη χρήση υπολογιστή. Επειδή οι ωκεανοί είναι τεράστιοι σε έκταση, δεν είναι δυνατόν να περιγράψουμε την κατάσταση κάθε μορίου του νερού. Αυτό που γίνεται είναι ότι ο ωκεανός τεμαχίζεται σε πάρα πολλούς κύβους (π.χ. 20Km 20Km 0.1Km) 3 GigaByte.

1.3. Εφαρμογές παράλληλων υπολογιστών 19 οι οποίες αποτελούν τις ελάχιστες μονάδες όγκου που μελετούμε. Θεωρούμε ότι οι κύβοι αυτοί σε κάθε χρονική στιγμή έχουν μια συγκεκριμένη θερμοκρασία, πίεση, κλπ., και οι παράμετροι αυτές αλληλεπιδρούν με τις παραμέτρους των διπλανών κύβων. Έτσι, αν θέλουμε να βρούμε τη θερμοκρασία του ωκεανού για τα επόμενα 5 έτη, πρέπει να τεμαχίσουμε το διάστημα αυτό σε μικρότερα χρονικά βήματα, π.χ. των 8 ωρών, και να υποθέσουμε ότι η θερμοκρασία του κύβου < x, y, z > τη χρονική στιγμή t εξαρτάται από τη θερμοκρασία (και άλλες παραμέτρους) των γειτονικών κύβων της προηγούμενης στιγμής t 1. Για έναν ωκεανό όπως ο Ατλαντικός, με διαστάσεις 2000Km πλάτος 2000Km μήκος 8Km βάθος, χρειάζονται 100 100 80 = 800000 κύβοι. Για 5 έτη με χρονική ανάλυση 8 ωρών, χρειάζονται 5 365 3 = 5500 χρονικές επαναλήψεις. Από τους αριθμούς αυτούς είναι προφανές ότι είναι απαραίτητη η χρήση πολυεπεξεργασίας, αν θέλουμε να έχουμε τα αποτελέσματα του αλγορίθμου μέσα σε ένα εύλογο χρονικό διάστημα. Ο αλγόριθμος έχει υψηλό βαθμό παραλληλίας, επειδή τα αποτελέσματα κάθε κύβου εξαρτώνται από τα αποτελέσματα των διπλανών του. Έτσι, αν σε κάθε κύβο αντιστοιχεί ένας επεξεργαστής, οι πράξεις μπορούν να εκτελεστούν παράλληλα, ενώ μόνο οι γειτονικοί επεξεργαστές ανταλλάσσουν δεδομένα. 1.3.2 Ακτινανίχνευση (ray tracing) Η τρισδιάστατη φωτοαπόδοση αντικειμένων με γραφικά (3-D rendering) χρησιμεύει στη ρεαλιστική απεικόνιση συνθετικών σκηνών στο επίπεδο, με τα δεδομένα βάθους, τη σκίαση, την επικάλυψη των αντικειμένων, τον φωτισμό, το χρώμα των αντικειμένων, κλπ. Οι εφαρμογές της επεξεργασίας αυτής είναι πάρα πολλές, από την εικονική πραγματικότητα μέχρι τις ταινίες του Hollywood. Το πρόβλημα, όπως φαίνεται και στο Σχήμα 1.1, είναι η εύρεση του σημείου P της οθόνης στο οποίο απεικονίζεται το σημείο P ενός αντικειμένου στον τρισδιάστατο χώρο. Αυτό γίνεται με απλές γεωμετρικές πράξεις, αρκεί να σχεδιάσουμε την ακτίνα (ray) που συνδέει το κέντρο O του οπτικού άξονα με το σημείο P. Αν κάποιο άλλο σημείο, π.χ. το Q, βρίσκεται στην ίδια ακτίνα αλλά σε μεγαλύτερο βάθος, δηλαδή πιο πίσω από το σημείο P, τότε το σημείο αυτό δεν εμφανίζεται αφού καλύπτεται από το P (εφόσον βέβαια δεν είναι διαφανές το αντικείμενο στο οποίο ανήκει το P). Με απλά λόγια, αυτό που πρέπει να γίνει είναι η «ανίχνευση» (tracing) της ακτίνας για να εντοπιστούν όλα τα σημεία που ανήκουν σε αυτή, και τελικά να απεικονιστεί το σημείο με το μικρότερο βάθος. Η όλη διαδικασία λέγεται ακτινανίχνευση (ray-tracing) και είναι ιδιαίτερα χρονοβόρα, όπως μπορεί κανείς να καταλάβει αν σκεφθεί πόσες ακτί-

20 Κεφάλαιο 1. Εισαγωγή P Q P' O Σχήμα 1.1: Ακτινανίχνευση (ray-tracing). νες φωτός πρέπει να ανιχνευθούν για να συμπληρωθεί μια οθόνη, π.χ. 1024 1024 πίξελ. Το ευχάριστο είναι ότι οι ακτίνες είναι ανεξάρτητες μεταξύ τους. Έτσι, οι πράξεις που πρέπει να γίνουν για την ακτίνα X δεν έχουν σχέση με τις πράξεις που πρέπει να γίνουν για μια οποιαδήποτε άλλη ακτίνα Y. Αυτό μας δίνει μεγάλη ευελιξία ως προς την παραλληλοποίηση των πράξεων. Έτσι, διαφορετικοί επεξεργαστές μπορούν να απασχολούνται σε διαφορετικές ακτίνες χωρίς να χρειάζεται μεγάλος όγκος επικοινωνίας μεταξύ τους. 1.3.3 Προσομοίωση της κίνησης των γαλαξιών Ένα άλλο πεδίο επιστημονικής εφαρμογής της παράλληλης επεξεργασίας είναι η αστρονομία και, συγκεκριμένα, η μελέτη της κίνησης των άστρων. Το επιστημονικό υπόβαθρο, δηλαδή οι νόμοι της φυσικής για την κίνηση των σωμάτων είναι δεδομένοι. Το πρόβλημα είναι η εκτίμηση της τροχιάς των άστρων μέσα σε κάποιο χρονικό διάστημα. Η λύση δίνεται από την ανάλυση των δυνάμεων βαρύτητας που ασκούνται μεταξύ τους, από την αρχική ταχύτητα κίνησης, καθώς και από την αρχική θέση των άστρων. Αν και το πρόβλημα μοιάζει με άσκηση ρουτίνας σε γνωστές εξισώσεις, μια πιο προσεκτική ματιά αποκαλύπτει ότι οι υπολογιστικές απαιτήσεις είναι τεράστιες. Σε ένα γαλαξία με n άστρα, απαιτείται ο υπολογισμός O(n 2 ) δυνάμεων από τον γνωστό τύπο της φυσικής: F = G m1 m 2 r 2. Έτσι, αν εξετάζουμε ένα εκατομμύριο άστρα, χρειάζεται ο υπολογισμός περίπου 1 τρισεκατομμυρίου (!) δυνάμεων για να βρούμε την έλξη που ασκείται από κάθε άστρο προς κάθε άλλο άστρο. Ευτυχώς, οι δυνάμεις βαρύτητας εξασθενίζουν αντιστρόφως ανάλογα με το τετράγωνο τις απόστασης και

1.3. Εφαρμογές παράλληλων υπολογιστών 21 έτσι μπορεί προσεγγιστικά να αγνοηθεί η επίδραση άστρων που έχουν πολύ μεγάλη απόσταση μεταξύ τους. Αυτή η απλή προσέγγιση μπορεί να μειώσει τις υπολογιστικές απαιτήσεις κατά 10000 έως 100000 φορές, αλλά η ανάγκη πολυεπεξεργασίας είναι προφανής. Αν σε κάθε άστρο αντιστοιχεί και ένας επεξεργαστής τότε, λόγω μεγάλης αλληλεπίδρασης μεταξύ πολλών άστρων, απαιτείται η επικοινωνία μεταξύ πολλών επεξεργαστών και όχι μόνο μεταξύ λίγων γειτόνων. 1.3.4 Εξόρυξη δεδομένων από βάσεις δεδομένων Η εξαγωγή χρήσιμης γνώσης από μια βάση δεδομένων (ΒΔ) λέγεται εξόρυξη δεδομένων (data mining). Για παράδειγμα, η εκτίμηση των προτιμήσεων και των ενδιαφερόντων ενός πελάτη βιβλιοπωλείου από τους τίτλους ή άλλα στοιχεία των βιβλίων που έχει αγοράσει είναι μια χρήσιμη γνώση για τον βιβλιοπώλη, ο οποίος μπορεί να ταξινομήσει τους πελάτες ανάλογα με τα αγοραστικά τους μοτίβα, να κάνει εξειδικευμένες διαφημιστικές εκστρατείες σε συγκεκριμένα άτομα ή ομάδες πληθυσμού, κλπ. Η εξόρυξη δεδομένων διαφέρει από το απλό ερώτημα (query) σε μια βάση δεδομένων. Έτσι, το να βρει κανείς ποιοι πελάτες αγόρασαν βιβλία μαγειρικής την περασμένη εβδομάδα δεν αποτελεί εξόρυξη δεδομένων αλλά ένα απλό ερώτημα στη ΒΔ του βιβλιοπωλείου. Όμως, η εύρεση σχέσεων ανάμεσα σε βιβλία (π.χ. βιβλία που συχνά οι πελάτες τα αγοράζουν μαζί) ή η εύρεση συσχέτισης ανάμεσα σε μια ηλικιακή ομάδα (π.χ. νέοι άνδρες) και κάποιο είδος βιβλίου (π.χ. μουσική, αθλητισμός, κλπ.) αποτελεί εξόρυξη πληροφοριών. Από υπολογιστική άποψη, το πρόβλημα έχει ως εξής: Δίνεται μια βάση δεδομένων όπου υπάρχουν εγγραφές κάποιων συναλλαγών. Στη συγκεκριμένη περίπτωση, μια συναλλαγή ορίζεται από έναν κωδικό, τα στοιχεία του πελάτη, και τα στοιχεία των βιβλίων που αγόρασε μια συγκεκριμένη στιγμή. Θέλουμε να βρούμε ποια υποσύνολα του συνόλου των στοιχείων συμβαίνουν ταυτόχρονα με κάποια συχνότητα επάνω από κάποιο προκαθορισμένο όριο. Το υποσύνολο λέγεται στοιχειοσύνολο (itemset) και περιέχει k στοιχεία, όπου k < n και n είναι το πλήθος των στοιχείων που περιέχει μια εγγραφή. Το πλήθος των πιθανών υποσυνόλων που πρέπει να μελετήσουμε αυξάνεται εκθετικά με το πλήθος n των στοιχείων μιας εγγραφής, ενώ η στατιστική μελέτη και ο υπολογισμός των συχνοτήτων εμφάνισης κάποιου συνδυασμού αυξάνεται γραμμικά με το πλήθος των εγγραφών, δηλαδή με το μέγεθος της ΒΔ. Για πολύ μεγάλες βάσεις δεδομένων (> 100000 εγγραφές) και μεγάλο πλήθος στοιχείων ανά εγγραφή, είναι προφανής η ανάγκη χρήσης παράλληλων υπολογιστικών μοντέλων ώστε το αποτέλεσμα να παραχθεί σε εύλογο χρονικό διάστημα.