Περιεχόμενα ΚΕΦΑΛΑΙΟ 1 EΙΣΑΓΩΓΗ...29 ΚΕΦΑΛΑΙΟ 2 ΙΣΤΟΡΙΑ ΤΗΣ ΥΠΟΛΟΓΙΣΤΙΚΗΣ ΜΕ GPU...53. Πρόλογος... 15. Ευχαριστίες... 23. Αφιέρωση...



Σχετικά έγγραφα
ΠΕΡΙΓΡΑΜΜΑ ΜΑΘΗΜΑΤΟΣ

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

ΠΕΡΙΓΡΑΜΜΑ ΜΑΘΗΜΑΤΟΣ. Τμήμα Μηχανικών Οικονομίας και Διοίκησης ΕΠΙΠΕΔΟ ΣΠΟΥΔΩΝ Προπτυχιακό ΚΩΔΙΚΟΣ ΜΑΘΗΜΑΤΟΣ ΓΕ0175 ΕΞΑΜΗΝΟ ΣΠΟΥΔΩΝ 9

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

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

Το ανοργάνωτο Parking

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

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

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

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

Κεφάλαιο 1: Κίνηση και γεωμετρικά σχήματα

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

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

Ενότητα 1: Πώς να διδάξεις ηλικιωμένους για να χρησιμοποιήσουν τη ψηφιακή τεχνολογία

Εφαρμογές Προσομοίωσης

ΣΧΕΔΙΑΣΗ ΤΕΜΑΧΙΩΝ ΣΕ ΣΥΣΤΗΜΑ CAD ΚΑΙ ΕΝΤΑΞΗ ΤΟΥΣ ΣΕ ΕΚΠΑΙΔΕΥΤΙΚΗ ΒΑΣΗ ΔΕΔΟΜΕΝΩΝ

Η διαδικασία Παραγωγής Συνθετικής Εικόνας (Rendering)

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

Το ολοκληρωμένο κύκλωμα μιας ΚΜΕ. «Φέτα» ημιαγωγών (wafer) από τη διαδικασία παραγωγής ΚΜΕ

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

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

Γραφικά & Οπτικοποίηση. Κεφάλαιο 1. Εισαγωγή. Γραφικά & Οπτικοπίηση: Αρχές & Αλγόριθμοι Κεφάλαιο 1

Λογισμικό διδασκαλίας των μαθηματικών της Γ Τάξης Γυμνασίου

Γραφικά Ι. Ενότητα 1: Εισαγωγή. Θεοχάρης Θεοχάρης Σχολή Θετικών Επιστημών Τμήμα Πληροφορικής και Τηλεπικοινωνιών

Σενάριο 5. Μετασχηµατισµοί στο επίπεδο. Γνωστική περιοχή: Γεωµετρία Α' Λυκείου. Συµµετρία ως προς άξονα. Σύστηµα συντεταγµένων.

Στοιχεία από την αρχιτεκτονική των μικροϋπολογιστών

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

Βασικές έννοιες προγραμματισμού

ΗΥ 134. Εισαγωγή στην Οργάνωση και στον Σχεδιασμό Υπολογιστών Ι. Διάλεξη 1. Εισαγωγή. Νίκος Μπέλλας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων

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

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

Δθμιουργία, μελζτθ και βελτιςτοποίθςθ φωτορεαλιςτικϊν απεικονίςεων πραγματικοφ χρόνου με χριςθ προγραμματιηόμενων επεξεργαςτϊν γραφικϊν

ΚΕΦΑΛΑΙΟ 2: Χειρισµός εδοµένων

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

Πρόγραμμα σπουδών για την τεχνολογία των DRONES

Ο πρώτος ηλικιακός κύκλος αφορά μαθητές του νηπιαγωγείου (5-6 χρονών), της Α Δημοτικού (6-7 χρονών) και της Β Δημοτικού (7-8 χρονών).

ΠΛΗΡΟΦΟΡΙΚΗ: ΥΠΟΛΟΓΙΣΤΕΣ & ΤΕΧΝΟΛΟΓΙΕΣ ΔΙΑΔΙΚΤΥΟΥ

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

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

ΠΕΡΙΓΡΑΦΙΚΗ ΣΤΑΤΙΣΤΙΚΗ ΑΝΑΛΥΣΗ ΠΙΝΑΚΕΣ ΣΥΧΝΟΤΗΤΩΝ ΚΑΙ ΡΑΒΔΟΓΡΑΜΜΑΤΑ Α. Ερωτήσεις για το/τη φοιτητή/φοιτήτρια

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 11/10/07

Διδακτική της Πληροφορικής ΙΙ

Εισαγωγικές Έννοιες. ημήτρης Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Εθνικό Μετσόβιο Πολυτεχνείο

Διαδικασίες παραγωγής λογισμικού. Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση

Αποτελέσματα. ΜΟΔΙΠ Πανεπιστημίου Κρήτης Ερωτηματολόγιο 'Μερικές Διαφορικές Εξισώσεις' Ερωτηματολόγιο

ΣΧΕΔΙΑΣΗ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ - VHDL ΑΝΤΩΝΗΣ ΠΑΣΧΑΛΗΣ

Εκπαιδευτική Τεχνολογία - Πολυμέσα. Ελένη Περιστέρη, Msc, PhD

ΠΕΡΙΓΡΑΦΙΚΗ ΣΤΑΤΙΣΤΙΚΗ ΑΝΑΛΥΣΗ ΠΙΝΑΚΕΣ ΣΥΧΝΟΤΗΤΩΝ ΚΑΙ ΡΑΒΔΟΓΡΑΜΜΑΤΑ Α. Ερωτήσεις για το/τη φοιτητή/φοιτήτρια

Ρετσινάς Σωτήριος ΠΕ 1703 Ηλεκτρολόγων ΑΣΕΤΕΜ

Γεωµετρία Β' Λυκείου. Συµµεταβολή µεγεθών. Εµβαδόν ισοσκελούς τριγώνου. Σύστηµα. συντεταγµένων. Γραφική παράσταση συνάρτησης. Μέγιστη - ελάχιστη τιµή.

METROPOLIS. Ένα περιβάλλον σχεδιασμού για ετερογενή συστήματα

ΔΙΔΑΚΤΙΚΗ ΤΗΣ ΧΗΜΕΙΑΣ

1 η ΕΝΟΤΗΤΑ ΕΙΣΑΓΩΓΗ (Προγραμματισμός & MATLAB)

Ενότητα 1: Πώς να διδάξεις ηλικιωμένους για να χρησιμοποιήσουν τη ψηφιακή τεχνολογία. Ημερομηνία: 15/09/2017. Intellectual Output:

ΒΑΣΙΚΕΣ ΣΠΟΥΔΕΣ ΣΤΟ ΤΜΗΜΑ ΦΥΣΙΚΗΣ

ΠΕΡΙΓΡΑΦΙΚΗ ΣΤΑΤΙΣΤΙΚΗ ΑΝΑΛΥΣΗ ΠΙΝΑΚΕΣ ΣΥΧΝΟΤΗΤΩΝ ΚΑΙ ΡΑΒΔΟΓΡΑΜΜΑΤΑ Α. Ερωτήσεις για το/τη φοιτητή/φοιτήτρια

215 Μηχανικών Η/Υ και Πληροφορικής Πάτρας

ΕΚΘΕΣΗ ΑΚΑΔΗΜΑΪΚΩΝ ΕΝΔΙΑΦΕΡΟΝΤΩΝ

ΠΕΡΙΓΡΑΦΙΚΗ ΣΤΑΤΙΣΤΙΚΗ ΑΝΑΛΥΣΗ ΠΙΝΑΚΕΣ ΣΥΧΝΟΤΗΤΩΝ ΚΑΙ ΡΑΒΔΟΓΡΑΜΜΑΤΑ Α. Ερωτήσεις για το/τη φοιτητή/φοιτήτρια

ΗΥ 232. Οργάνωση και Σχεδίαση Υπολογιστών. Διάλεξη 1. Εισαγωγή στο μάθημα. Νίκος Μπέλλας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων

Γεωμετρικές Σκιές. Θ. Θεοχάρης Ι. Κακαδιάρης - Γ. Πασσαλής

Αποτελέσματα. ΜΟΔΙΠ Πανεπιστημίου Κρήτης Ερωτηματολόγιο 'Μιγαδική Ανάλυση' Ερωτηματολόγιο

3. Περιγράμματα Μαθημάτων Προγράμματος Σπουδών

ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΠΤΥΧΙΑΚΩΝ ΣΠΟΥΔΩΝ (ΠΜΣ) «ΠΛΗΡΟΦΟΡΙΚΗ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΕΣ» ΤΟΥ ΤΜΗΜΑΤΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΟΥ Α.Π.Θ.

ΠΕΡΙΓΡΑΜΜΑ ΜΑΘΗΜΑΤΟΣ

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

2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ

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

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

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

DeSqual Ενότητες κατάρτισης 1. Ενδυνάμωση των εξυπηρετούμενων

ΔΙΔΑΣΚΑΛΙΑ ΤΗΣ ΕΝΝΟΙΑΣ ΤΟΥ ΟΡΙΟΥ ΣΥΝΑΡΤΗΣΗΣ

ΠΕΡΙΓΡΑΦΙΚΗ ΣΤΑΤΙΣΤΙΚΗ ΑΝΑΛΥΣΗ ΠΙΝΑΚΕΣ ΣΥΧΝΟΤΗΤΩΝ ΚΑΙ ΡΑΒΔΟΓΡΑΜΜΑΤΑ Α. Ερωτήσεις για το/τη φοιτητή/φοιτήτρια

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

ΟΜΑΔΑ Ε ΓΕΩΡΓΙΟΥ ΦΩΤΕΙΝΗ ΗΛΙΟΥΔΗ ΑΦΡΟΔΙΤΗ ΜΕΤΑΛΛΙΔΟΥ ΧΡΥΣΗ ΝΙΖΑΜΗΣ ΑΛΕΞΑΝΔΡΟΣ ΤΖΗΚΑΛΑΓΙΑΣ ΑΝΔΡΕΑΣ ΤΡΙΓΚΑΣ ΑΓΓΕΛΟΣ

Πιο συγκεκριμένα, η χρήση του MATLAB προσφέρει τα ακόλουθα πλεονεκτήματα.

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

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

Προγραμματισμός. Το περιβάλλον του scratch

ΠΕΡΙΓΡΑΦΙΚΗ ΣΤΑΤΙΣΤΙΚΗ ΑΝΑΛΥΣΗ ΠΙΝΑΚΕΣ ΣΥΧΝΟΤΗΤΩΝ ΚΑΙ ΡΑΒΔΟΓΡΑΜΜΑΤΑ Α. Ερωτήσεις για το/τη φοιτητή/φοιτήτρια

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

H Συμβολή της Υπολογιστικής Σκέψης στην Προετοιμασία του Αυριανού Πολίτη

Γραφικά με υπολογιστές. Διδάσκων: Φοίβος Μυλωνάς. Διαλέξεις #11-#12

ΠΕΡΙΓΡΑΜΜΑ ΜΑΘΗΜΑΤΟΣ ΣΧΟΛΗ ΠΟΛΥΤΕΧΝΙΚΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΟΙΚΟΝΟΜΙΑΣ ΚΑΙ ΔΙΟΙΚΗΣΗΣ ΕΠΙΠΕΔΟ ΣΠΟΥΔΩΝ ΠΡΟΠΤΥΧΙΑΚΟ ΚΩΔΙΚΟΣ ΜΑΘΗΜΑΤΟΣ ΓΕ0102 ΕΞΑΜΗΝΟ ΣΠΟΥΔΩΝ 2

Μάθημα 3.8 Τεχνικές μεταφοράς δεδομένων Λειτουργία τακτικής σάρωσης (Polling) Λειτουργία Διακοπών DMA (Direct Memory Access)

Τα σχέδια μαθήματος 1 Εισαγωγή

Σενάριο 14: Προγραμματίζοντας ένα Ρομπότ ανιχνευτή

ΡΟΜΠΟΤΙΚΗ ΚΑΙ ΕΚΠΑΙΔΕΥΣΗ

Διαδικασία μετασχηματισμού του Προγράμματος Σπουδών σε μιντιακές δράσεις. Λοΐζος Σοφός

Διαδικασίες παραγωγής λογισμικού. I. Sommerville 2006 Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Κεφ. 4

Εισαγωγή Συμβόλαιο Μαθήματος

Διαδικασίες παραγωγής λογισμικού. Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση

Salinity Project: Ανακρίνοντας τo θαλασσινό νερό

Δραστηριότητες & Υλικό για τα Μαθηματικά του Δημοτικού

Αναζητήσεις στο Διαδίκτυο

ισδιάστατοι μετασχηματισμοί ΚΕΦΑΛΑΙΟ 4: ισδιάστατοι γεωμετρικοί μετασχηματισμοί

ΤΜΗΜΑ ΟΙΚΟΝΟΜΙΚΩΝ ΕΠΙΣΤΗΜΩΝ (χειμ ) : ΟΙΚ107 / Ηλεκτρονικοί υπολογιστές Ι (Σταυρακούδης)

21. ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 4 - ΔΗΜΙΟΥΡΓΩΝΤΑΣ ΜΕ ΤΟ BYOB BYOB. Αλγόριθμος Διαδικασία Παράμετροι

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

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

Transcript:

Περιεχόμενα Πρόλογος... 15 Ευχαριστίες... 23 Αφιέρωση... 27 ΚΕΦΑΛΑΙΟ 1 EΙΣΑΓΩΓΗ...29 1.1 Oι GPU ως παράλληλοι υπολογιστές... 31 1.2 Αρχιτεκτονική μιας σύγχρονης GPU... 37 1.3 Γιατί περισσότερη ταχύτητα ή παραλληλία;... 40 1.4 Γλώσσες και μοντέλα παράλληλου προγραμματισμού... 44 1.5 Βασικοί στόχοι... 46 1.6 Οργάνωση του βιβλiου... 48 Αναφορές και πρόσθετη βιβλιογραφία... 51 ΚΕΦΑΛΑΙΟ 2 ΙΣΤΟΡΙΑ ΤΗΣ ΥΠΟΛΟΓΙΣΤΙΚΗΣ ΜΕ GPU...53 2.1 Εξέλιξη των διοχετεύσεων γραφικών... 54 2.1.1 Η εποχή των διοχετεύσεων γραφικών σταθερών συναρτήσεων... 55 2.1.2 Εξέλιξη των προγραμματίσιμων γραφικών πραγματικού χρόνου... 60 2.1.3 Ενοποιημένοι επεξεργαστές γραφικών και υπολογισμών... 63 2.1.4 GPGPU: ένα ενδιάμεσο βήμα... 65 2.2 Yπολογιστική με GPU... 67 2.2.1 Επεκτάσιμες GPU... 68 2.2.2 Πρόσφατες εξελίξεις... 69 2.3 Μελλοντικές τάσεις... 70 Αναφορές και πρόσθετη βιβλιογραφία... 71 9

10 Περιεχόμενα ΚΕΦΑΛΑΙΟ 3 ΕΙΣΑΓΩΓΗ ΣΤΗΝ CUDA...75 3.1 Παραλληλία δεδομένων...76 3.2 Η δομή των προγραμμάτων της CUDA...77 3.3 Ένα παράδειγμα πολλαπλασιασμού μητρών...79 3.4 Μνήμες συσκευής και μεταφορά δεδομένων...83 3.5 Συναρτήσεις πυρήνα και νημάτωση...89 3.6 Περίληψη...95 3.6.1 Δηλώσεις συναρτήσεων...95 3.6.2 Εκκίνηση πυρήνα...96 3.6.3 Εκ των προτέρων ορισμένες μεταβλητές...96 3.6.4 API χρόνου εκτέλεσης...96 Αναφορές και πρόσθετη βιβλιογραφία...97 ΚΕΦΑΛΑΙΟ 4 ΤΑ ΝΗΜΑΤΑ ΤΗΣ CUDA...99 4.1 Η οργάνωση των νημάτων της CUDA...100 4.2 Χρήση των blockidx και threadidx...104 4.3 Συγχρονισμός και διαφανής επεκτασιμότητα...110 4.4 Ανάθεση νημάτων...112 4.5 Χρονοπρογραμματισμός νημάτων και ανοχή λανθάνοντος χρόνου...114 4.6 Περίληψη...117 4.7 Ασκήσεις...117 ΚΕΦΑΛΑΙΟ 5 ΜΝΗΜΕΣ CUDA TM...119 5.1 Σημασία της αποδοτικότητας προσπέλασης μνήμης...120 5.2 Τύποι μνήμης των συσκευών CUDA...121 5.3 Μια στρατηγική μείωσης της κυκλοφορίας στην καθολική μνήμη...126 5.4 Η μνήμη ως περιοριστικός παράγοντας της παραλληλίας...136 5.5 Περίληψη...138 5.6 Ασκήσεις...139

Περιεχόμενα 11 ΚΕΦΑΛΑΙΟ 6 ΖΗΤΗΜΑΤΑ ΑΠΟΔΟΣΗΣ...141 6.1 Περισσότερα για την εκτέλεση νημάτων... 142 6.2 Εύρος ζώνης καθολικής μνήμης... 151 6.3 Δυναμική διαμέριση πόρων SM... 160 6.4 Εκ των προτέρων προσκόμιση δεδομένων... 163 6.5 Μίγμα εντολών... 165 6.6 Αναλυτικότητα νημάτων... 167 6.7 Μέτρηση απόδοσης και περίληψη... 168 6.8 Ασκήσεις... 171 Αναφορές και πρόσθετη βιβλιογραφία... 174 ΚΕΦΑΛΑΙΟ 7 ΖΗΤΗΜΑΤΑ ΚΙΝΗΤΗΣ ΥΠΟΔΙΑΣΤΟΛΗΣ...175 7.1 Μορφή κινητής υποδιαστολής... 176 7.1.1 Κανονικοποιημένη αναπαράσταση του M... 177 7.1.2 Κωδικοποίηση του Ε με υπέρβαση... 177 7.2 Αναπαραστάσιμοι αριθμοί... 180 7.3 Ειδικά μοτίβα bit και ακρίβεια αναπαράστασης... 185 7.4 Αριθμητική ορθότητα και στρογγυλοποίηση... 187 7.5 Αλγοριθμικά ζητήματα... 189 7.6 Περίληψη... 190 7.7 Ασκήσεις... 191 Αναφορές και πρόσθετη βιβλιογραφία... 192 ΚΕΦΑΛΑΙΟ 8 ΜΕΛΕΤΗ ΠΕΡΙΠΤΩΣΗΣ ΕΦΑΡΜΟΓΗΣ: ΠΡΟΧΩΡΗΜΕΝΗ ΑΝΑΚΑΤΑΣΚΕΥΗ MRI...193 8.1 Υπόβαθρο εφαρμογής... 194 8.2 Επαναληπτική ανακατασκευή... 199 8.3 Υπολογισμός του F H d... 201 Βήμα 1. Προσδιορισμός της δομής παραλληλίας του πυρήνα... 203 Βήμα 2. Παράκαμψη του περιορισμού εύρους ζώνης της μνήμης... 211

12 Περιεχόμενα Βήμα 3. Χρήση τριγωνομετρικών συναρτήσεων υλικού...219 Βήμα 4. Πειραματική βελτιστοποίηση απόδοσης...223 8.4 Τελική αξιολόγηση...224 8.5 Ασκήσεις...228 Αναφορές και πρόσθετη βιβλιογραφία...229 ΚΕΦΑΛΑΙΟ 9 ΜΕΛΕΤΗ ΠΕΡΙΠΤΩΣΗΣ ΕΦΑΡΜΟΓΗΣ: ΜΟΡΙΑΚΗ ΟΠΤΙΚΟΠΟΙΗΣΗ ΚΑΙ ΑΝΑΛΥΣΗ...231 9.1 Υπόβαθρο εφαρμογής...232 9.2 Υλοποίηση ενός απλού πυρήνα...234 9.3 Αποδοτικότητα εκτέλεσης εντολών...240 9.4 Συγκερασμός μνήμης...242 9.5 Πρόσθετες συγκρίσεις απόδοσης...246 9.6 Χρήση πολλών GPU...248 9.7 Ασκήσεις...249 Αναφορές και πρόσθετη βιβλιογραφία...250 ΚΕΦΑΛΑΙΟ 10 ΠΑΡΑΛΛΗΛΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΙΚΗ ΣΚΕΨΗ...251 10.1 Στόχοι του παράλληλου προγραμματισμού...252 10.2 Ανάλυση προβλήματος...254 10.3 Επιλογή αλγορίθμου...258 10.4 Υπολογιστική σκέψη...266 10.5 Ασκήσεις...268 Αναφορές και πρόσθετη βιβλιογραφία...268 ΚΕΦΑΛΑΙΟ 11 ΣΥΝΤΟΜΗ ΕΙΣΑΓΩΓΗ ΣΤΗΝ OPENCL TM...269 11.1 Υπόβαθρο...270 11.2 Μοντέλο παραλληλίας δεδομένων...271 11.3 Αρχιτεκτονική συσκευής...275 11.4 Συναρτήσεις πυρήνα...277 11.5 Διαχείριση συσκευών και εκκίνηση πυρήνων...277

Περιεχόμενα 13 11.6 Χάρτης ηλεκτροστατικού δυναμικού σε OpenCL... 280 11.7 Περίληψη... 286 11.8 Ασκήσεις... 287 Αναφορές και πρόσθετη βιβλιογραφία... 288 ΚΕΦΑΛΑΙΟ 12 ΣΥΜΠΕΡΑΣΜΑΤΑ ΚΑΙ ΜΕΛΛΟΝΤΙΚΕΣ ΠΡΟΟΠΤΙΚΕΣ...289 12.1 Και πάλι οι στόχοι... 290 12.2 Η εξέλιξη της αρχιτεκτονικής μνήμης... 291 12.2.1 Μεγάλοι χώροι εικονικών και φυσικών διευθύνσεων... 291 12.2.2 Ενοποιημένος χώρος μνήμης συσκευής... 294 12.2.3 Διευθετήσιμη κρυφή μνήμη και πρόχειρη μνήμη... 294 12.2.4 Βελτιωμένες αδιαίρετες λειτουργίες... 296 12.2.5 Βελτιωμένη προσπέλαση καθολικής μνήμης... 296 12.3 Εξέλιξη του ελέγχου εκτέλεσης πυρήνα... 297 12.3.1 Κλήσεις συναρτήσεων μέσα σε συναρτήσεις πυρήνα... 297 12.3.2 Χειρισμός εξαιρέσεων σε συναρτήσεις πυρήνα... 298 12.3.3 Ταυτόχρονη εκτέλεση πολλών πυρήνων... 299 12.3.4 Διακόψιμοι πυρήνες... 299 12.4 Απόδοση του επεξεργαστή... 300 12.4.1 Ταχύτητα διπλής ακρίβειας... 300 12.4.2 Καλύτερη απόδοση ροής ελέγχου... 300 12.5 Περιβάλλον προγραμματισμού... 301 12.6 Λαμπρές προοπτικές... 302 Αναφορές και πρόσθετη βιβλιογραφία... 302 ΠΑΡΑΡΤΗΜΑ Α ΠΗΓΑΙΟΣ ΚΩΔΙΚΑΣ ΠΟΛΛΑΠΛΑΣΙΑΣΜΟΥ ΜΗΤΡΩΝ ΠΟΥ ΕΚΤΕΛΕΙΤΑΙ ΜΟΝΟ ΣΤΗ CPU...305 A.1 matrixmul.cu... 306 A.2 matrixmul_gold.cpp... 309

14 Περιεχόμενα A.3 matrixmul.h...310 A.4 assist.h...310 A.5 Αναμενόμενη έξοδος...314 ΠΑΡΑΡΤΗΜΑ Β ΥΠΟΛΟΓΙΣΤΙΚΕΣ ΔΥΝΑΤΟΤΗΤΕΣ GPU... 317 B.1 Πίνακες υπολογιστικών δυνατοτήτων GPU...317 B.2 Παραλλαγές συγκερασμού μνήμης...319 Ευρετήριο...325

Πρόλογος ΓΙΑΤΙ ΓΡΑΨΑΜΕ ΑΥΤΟ ΤΟ ΒΙΒΛΙΟ Τα μαζικά εμπορικά υπολογιστικά συστήματα που συνδυάζουν πολυπύρηνες (multicore) CPU και GPU πάρα πολλών πυρήνων (many-core) έχουν φέρει την υπολογιστική κλίμακας terascale στους φορητούς υπολογιστές, και την υπολογιστική κλίμακας petascale στις συστοιχίες. Οπλισμένοι με τέτοια υπολογιστική ισχύ, ζούμε την αυγή της ευρείας χρήσης των υπολογιστικών πειραμάτων στην επιστήμη, την τεχνολογία, την υγεία, και τις επιχειρήσεις. Πολλοί θα καταφέρουν να επιτύχουν σημαντικές ανακαλύψεις στον επιστημονικό τομέα του ο καθένας, ανακαλύψεις με μια χωρίς προηγούμενο κλίμακα, δυνατότητα ελέγχου, και δυνατότητα παρατήρησης. Το βιβλίο αυτό παρέχει ένα κρίσιμο συστατικό του οράματος: διδάσκει παράλληλο προγραμματισμό σε εκατομμύρια προπτυχιακούς και μεταπτυχιακούς φοιτητές ώστε οι ικανότητες υπολογιστικής σκέψης και παράλληλου προγραμματισμού να γίνουν κτήμα όλων, όπως η άλγεβρα. Ξεκινήσαμε με ένα μάθημα που τώρα είναι γνωστό ως ECE498AL. Κατά τις διακοπές των Χριστουγέννων του 2006, δουλεύαμε πυρετωδώς στις διαφάνειες των παραδόσεων και τις εργαστηριακές ασκήσεις. Ο David δούλευε στο σύστημα, προσπαθώντας να αποκτήσει τις πρώτες GeForce 8800 GTX κάρτες GPU από αποστολές που προορίζονταν για πελάτες στο Illinois, κάτι που θα γινόταν εφικτό μόνο λίγες εβδομάδες μετά από το ξεκίνημα του εξαμήνου. Έγινε επίσης σαφές ότι η CUDA δε θα κυκλοφορούσε στο ευρύ κοινό παρά μόνο μερικές εβδομάδες μετά από το ξεκίνημα του εξαμήνου. Τις πρώτες λίγες ε- βδομάδες, έπρεπε να τακτοποιήσουμε τα νομικά ζητήματα ώστε να μπορέσουμε να προσφέρουμε το μάθημα σε φοιτητές με μια συμφωνία "εχεμύθειας". Ε- πίσης, έπρεπε να το γνωστοποιήσουμε ώστε οι φοιτητές να δηλώσουν συμμετοχή, μια και το μάθημα δεν ανακοινώθηκε παρά μόνο μετά από την περίοδο των προεγγραφών στα μαθήματα. Κάναμε την πρώτη μας παράδοση στις 16 Ιανουαρίου του 2007. Όλα ήταν τακτοποιημένα. Ο David πήγαινε κάθε εβδομάδα στην Urbana για το μάθημα. 15

16 Πρόλογος Είχαμε 52 φοιτητές, δύο περισσότερους από τη διαθέσιμη δυναμικότητα. Είχαμε πρόχειρες διαφάνειες για τις 10 πρώτες παραδόσεις. Ο πτυχιακός φοιτητής του Wen-mei, ο John Stratton, προσφέρθηκε ευχαρίστως εθελοντικά ως βοηθός και ετοίμασε το εργαστήριο. Όλοι οι φοιτητές υπέγραψαν συμφωνία "εχεμύθειας" ώστε να μπορούμε να προχωρήσουμε στις πρώτες παραδόσεις μέχρι να κυκλοφορήσει η CUDA. Μαγνητοσκοπήσαμε τις παραδόσεις αλλά δεν τις κυκλοφορήσαμε στο Διαδίκτυο μέχρι τον Φεβρουάριο. Είχαμε πτυχιακούς φοιτητές από τη φυσική, την αστρονομία, τη χημεία, τους ηλεκτρολόγους μηχανολόγους, τους μηχανολόγους, καθώς και από την επιστήμη και την τεχνολογία των υπολογιστών. Ο ενθουσιασμός που υπήρχε στην αίθουσα άξιζε τον κόπο. Από τότε, διδάξαμε το μάθημα τρεις φορές ως εξαμηνιαίο και δύο φορές ως ε- ντατικό εβδομαδιαίο. Το μάθημα ECE498AL έγινε μόνιμο ως ECE408 στο Πανεπιστήμιο του Illinois, Urbana-Champaign. Αρχίσαμε να γράφουμε κάποια από τα πρώτα κεφάλαια του βιβλίου κατά τις παραδόσεις του ECE498AL τη δεύτερη φορά. Δοκιμάσαμε αυτά τα κεφάλαια στην τάξη της άνοιξης του 2009 και στο θερινό τμήμα του 2009. Τα πρώτα τέσσερα κεφάλαια δοκιμάστηκαν επίσης στο MIT από τον Nicolas Pinto την άνοιξη του 2009. Επίσης, δημοσιεύσαμε αυτά τα πρώτα κεφάλαια στον Ιστό και πήραμε πολύτιμη ανάδραση από πολλά άτομα. Η ανάδραση που πήραμε μας ενθάρρυνε και αποφασίσαμε να γράψουμε ένα πλήρες βιβλίο. Εδώ σας παρουσιάζουμε ταπεινά την πρώτη του έκδοση. ΤΟ ΚΟΙΝΟ ΤΟΥ ΒΙΒΛΙΟΥ Το κοινό του βιβλίου είναι οι μεταπτυχιακοί και προπτυχιακοί φοιτητές όλων των επιστημονικών και τεχνικών τομέων στους οποίους χρειάζονται ικανότητες υπολογιστικής σκέψης και παράλληλου προγραμματισμού, για τη χρήση ευρέως διαθέσιμου υπολογιστικού υλικού κλίμακας terascale με στόχο την επίτευξη σημαντικών ανακαλύψεων. Υποθέτουμε ότι ο αναγνώστης διαθέτει τουλάχιστον κάποια βασική πείρα προγραμματισμού σε C και, επομένως, ανήκει στους πιο προχωρημένους προγραμματιστές του τομέα της Επιστήμης των Υπολογιστών ή και έξω από αυτόν. Στοχεύουμε ιδιαίτερα σε επιστήμονες υπολογισμών όπως είναι οι μηχανολόγοι, οι πολιτικοί μηχανικοί, οι ηλεκτρολόγοι μηχανικοί, οι μηχανικοί-βιολόγοι, οι φυσικοί, και οι χημικοί, οι οποίοι χρησιμοποιούν υ- πολογισμούς για να προωθήσουν τον τομέα των ερευνών τους. Ως τέτοιοι, οι επιστήμονες αυτοί είναι και ειδικοί στον τομέα τους και προχωρημένοι προ-

Πρόλογος 17 γραμματιστές. Το βιβλίο υιοθετεί την προσέγγιση της αύξησης των βασικών προγραμματιστικών ικανοτήτων σε C, ώστε να διδάξει παράλληλο προγραμματισμό σε C. Χρησιμοποιούμε C για CUDA, ένα περιβάλλον παράλληλου προγραμματισμού που υποστηρίζεται στις GPU της NVIDIA, και προσομοιώνεται σε λιγότερο παράλληλες CPU. Υπάρχουν περίπου 200 εκατομμύρια από αυτούς τους επεξεργαστές στα χέρια καταναλωτών και επαγγελματιών, και περισσότερων από 40.000 προγραμματιστών που χρησιμοποιούν CUDA. Οι ε- φαρμογές που θα αναπτύξετε καθώς μαθαίνετε θα μπορούν να εκτελεστούν από μια πολύ μεγάλη κοινότητα χρηστών. ΠΩΣ ΘΑ ΧΡΗΣΙΜΟΠΟΙΗΣΕΤΕ ΤΟ ΒΙΒΛΙΟ Θέλουμε να σας μεταφέρουμε ένα μέρος της εμπειρίας μας από τη διδασκαλία του ECE498AL με τη χρήση του υλικού που περιγράφεται στο βιβλίο. Μια προσέγγιση τριών φάσεων Στο μάθημα ECE498AL οι παραδόσεις και οι ασκήσεις προγραμματισμού είναι σε ισορροπία μεταξύ τους και οργανωμένες σε τρεις φάσεις: Φάση 1: Μία παράδοση με βάση το Κεφάλαιο 3 είναι αφιερωμένη στη διδασκαλία του βασικού μοντέλου μνήμης/νημάτων της CUDA, τις επεκτάσεις της CUDA για τη γλώσσα C, και τα βασικά εργαλεία προγραμματισμού και αποσφαλμάτωσης (debugging). Μετά από την παράδοση, οι φοιτητές μπορούν να γράψουν έναν α- πλοϊκό παράλληλο κώδικα πολλαπλασιασμού μητρών σε μία ή δύο ώρες. Φάση 2: Η επόμενη φάση αποτελείται από μια σειρά 10 παραδόσεων που δίνουν στους φοιτητές μια εννοιολογική κατανόηση του μοντέλου μνήμης της CUDA, του μοντέλου νημάτωσης της CUDA, των χαρακτηριστικών απόδοσης υλικού της GPU, της αρχιτεκτονικής των σύγχρονων συστημάτων υπολογιστών, και των συνήθων μοτίβων προγραμματισμού παραλληλίας δεδομένων που είναι απαραίτητα για την ανάπτυξη μιας υψηλών επιδόσεων παράλληλης εφαρμογής. Οι παραδόσεις αυτές βασίζονται στα Κεφάλαια 4 έως 7. Η απόδοση των κωδίκων πολλαπλασιασμού μητρών που γράφουν αυξάνεται περίπου 10 φορές στη διάρκεια αυτής της περιόδου. Επίσης, σε αυτό το χρονικό διάστημα οι φοιτητές ολοκληρώνουν ασκήσεις σχετικά με τη συνέλιξη (convolution), τη

18 Πρόλογος μείωση διανυσμάτων (vector reduction), και τη σάρωση προθέματος (prefix scan). Φάση 3: Όταν οι φοιτητές αποκτήσουν στέρεες ικανότητες προγραμματισμού σε CUDA, οι υπόλοιπες παραδόσεις καλύπτουν την υπολογιστική σκέψη, ένα μεγαλύτερο εύρος μοντέλων παράλληλης εκτέλεσης, και αρχές του παράλληλου προγραμματισμού. Οι παραδόσεις αυτές βασίζονται στα Κεφάλαια 8 έως 11. (Ηχογραφήσεις και μαγνητοσκοπήσεις αυτών των παραδόσεων είναι διαθέσιμες στο Διαδίκτυο (http://courses.ece.illinois.edu/ece498/al).) Η συναρμολόγηση: το τελικό έργο Ενώ οι παραδόσεις, τα εργαστήρια, και τα κεφάλαια αυτού του βιβλίου βοηθούν τους φοιτητές να αποκτήσουν τα διανοητικά θεμέλια, αυτό που δένει μαζί το σύνολο της εμπειρίας μάθησης είναι το τελικό έργο (final project). Το τελικό έργο είναι τόσο σημαντικό για το μάθημα ώστε έχει εξέχουσα θέση σε αυτό και απαιτεί προσπάθεια σχεδόν 2 μηνών. Περιλαμβάνει πέντε καινοτόμες πτυχές: παροχή συμβουλών, εργαστήριο, "κλινική", τελική αναφορά, και συμπόσιο. (Παρόλο που πολλές από τις πληροφορίες που αφορούν το τελικό έργο είναι διαθέσιμες στην τοποθεσία Ιστού του ECE498AL (http://courses.ece.illinois. edu/ece498/al), θα θέλαμε να κάνουμε γνωστή τη συλλογιστική που κρύβεται πίσω από τη σχεδίαση των παραπάνω πτυχών.) Οι φοιτητές ενθαρρύνονται να βασίσουν τα τελικά έργα τους σε προβλήματα που αντιπροσωπεύουν τρέχουσες δυσκολίες τις οποίες αντιμετωπίζει η ερευνητική κοινότητα. Για να τροφοδοτούν τη διαδικασία, οι διδάσκοντες στρατολογούν αρκετές σημαντικές ερευνητικές ομάδες της υπολογιστικής επιστήμης ώστε να προτείνουν προβλήματα και να παίξουν τον ρόλο συμβούλων. Από τους συμβούλους ζητείται να συνεισφέρουν μια προδιαγραφή του έργου, μίας ή δύο σελίδων, που να περιγράφει σε συντομία τη σημασία της εφαρμογής, τι είναι αυτό που θα ήθελε ο σύμβουλος να επιτύχει από την εφαρμογή σε συνεργασία με τις ομάδες των φοιτητών, τις τεχνικές δεξιότητες (τους συγκεκριμένους τύπους μαθημάτων Μαθηματικών, Φυσικής, Χημείας) που απαιτούνται για την κατανόηση και την εργασία στην εφαρμογή, και μια λίστα Διαδικτυακών και παραδοσιακών πόρων στους οποίους μπορούν να ανατρέξουν οι φοιτητές για να βρουν τεχνικό υπόβαθρο, γενικές πληροφορίες, και δομικές μονάδες, μαζί με διευθύνσεις URL ή ftp προς συγκεκριμένες υλοποιήσεις και παραδείγματα κώδικα. Αυτές οι προδιαγραφές του έργου παρέχουν επίσης στους φοιτη-

Πρόλογος 19 τές εμπειρίες μάθησης για να ορίσουν τα δικά τους ερευνητικά έργα αργότερα στη σταδιοδρομία τους. (Υπάρχουν διαθέσιμα πολλά παραδείγματα στην τοποθεσία Ιστού του μαθήματος ECE498AL.) Οι φοιτητές ενθαρρύνονται επίσης να είναι σε επαφή με τους πιθανούς συμβούλους τους στη διάρκεια της διαδικασίας επιλογής έργου. Όταν οι φοιτητές και οι σύμβουλοι συμφωνήσουν σε ένα έργο, είναι σε στενή επικοινωνία που περιλαμβάνει συχνή παροχή συμβουλών και αναφορές σχετικά με το έργο. Εμείς οι διδάσκοντες προσπαθούμε να διευκολύνουμε τη σχέση συνεργασίας μεταξύ φοιτητών και συμβούλων τους, ώστε η εμπειρία να αποβεί πολύτιμη και για τους δύο. Το εργαστήριο του έργου Το κυριότερο μέσο για να συνεισφέρει ολόκληρη η τάξη στις ιδέες των τελικών έργων όλων είναι το εργαστήριο του έργου. Συνήθως αφιερώνουμε έξι από τις παραδόσεις σε εργαστήρια έργων. Τα εργαστήρια είναι σχεδιασμένα προς όφελος των φοιτητών. Για παράδειγμα, αν ένας φοιτητής έχει καταλήξει σε ένα έργο, το εργαστήριο εξυπηρετεί ως τόπος για την παρουσίαση της προκαταρκτικής συλλογιστικής, τη λήψη ανάδρασης, και τη συγκρότηση ομάδων. Αν ένας φοιτητής δεν έχει διαλέξει κάποιο έργο, μπορεί απλώς να παρίσταται στις παρουσιάσεις, να συμμετέχει στις συζητήσεις, και να προσχωρήσει σε μια από τις ομάδες έργων. Οι φοιτητές δε βαθμολογούνται στη διάρκεια των εργαστηρίων, ώστε να διατηρείται μια μη απειλητική ατμόσφαιρα και να μπορούν να εστιάζονται σε ένα χρήσιμο διάλογο με τους εκπαιδευτές, τους βοηθούς διδάσκοντες, και την υπόλοιπη τάξη. Το χρονοδιάγραμμα του εργαστηρίου σχεδιάζεται έτσι ώστε οι εκπαιδευτές και οι βοηθοί διδάσκοντες να έχουν στη διάθεσή τους περισσότερο χρόνο για την παροχή ανάδρασης στις ομάδες έργων, και να κάνουν ερωτήσεις οι φοιτητές. Οι παρουσιάσεις περιορίζονται χρονικά σε 10 λεπτά, ώστε να υπάρχει χρόνος για ανάδραση και ερωτήσεις στην τάξη. Αυτό περιορίζει το μέγεθος της τάξης σε περίπου 36 παρουσιαστές, αν υποθέσουμε διάρκεια παράδοσης 90 λεπτών. Όλες οι παρουσιάσεις φορτώνονται από πριν σε έναν προσωπικό υπολογιστή ώστε να υπάρχει αυστηρός έλεγχος του χρονοδιαγράμματος και να μεγιστοποιείται ο χρόνος για ανάδραση. Επειδή δεν κάνουν παρουσιάσεις όλοι οι φοιτητές στο εργαστήριο, μπορέσαμε να έχουμε μέχρι 50 σε κάθε τάξη, με πρόσθετο χρόνο εργαστηρίου σύμφωνα με τις ανάγκες.

20 Πρόλογος Οι εκπαιδευτές και οι βοηθοί διδάσκοντες πρέπει να δεσμευτούν ότι θα παρακολουθήσουν όλες τις παρουσιάσεις και θα παρέχουν χρήσιμη ανάδραση. Συνήθως, οι φοιτητές χρειάζονται την περισσότερη βοήθεια για να απαντήσουν στις εξής ερωτήσεις. Πρώτον, μήπως τα έργα είναι πολύ μεγάλα ή πολύ μικρά για τον διαθέσιμο χρόνο; Δεύτερον, υπάρχει ήδη εργασία στον συγκεκριμένο τομέα από την οποία μπορεί να επωφεληθεί το έργο; Τρίτον, οι προτιθέμενοι υπολογισμοί παράλληλης εκτέλεσης είναι κατάλληλοι για το μοντέλο προγραμματισμού της CUDA; Το έγγραφο σχεδιασμού Αφού οι φοιτητές επιλέξουν ένα έργο και σχηματίσουν ομάδα, τους ζητείται να υποβάλουν ένα έγγραφο σχεδιασμού για το έργο. Αυτό τους βοηθάει να καταστρώσουν τα βήματα του έργου πριν καταπιαστούν με αυτό. Η ικανότητα ενός τέτοιου σχεδιασμού θα είναι σημαντική στην επιτυχία της σταδιοδρομίας τους αργότερα. Στο έγγραφο σχεδιασμού πρέπει να περιγράφεται το υπόβαθρο και οι λόγοι εκτέλεσης του έργου, οι στόχοι σε επίπεδο εφαρμογής και οι πιθανές επιπτώσεις, οι κυριότερες λειτουργίες της τελικής εφαρμογής, μια επισκόπηση της σχεδίασης, ένα πρόγραμμα υλοποίησης, οι στόχοι απόδοσης, ένα πρόγραμμα δοκιμών επαλήθευσης και αποδοχής, και ένα χρονοδιάγραμμα του έργου. Οι βοηθοί διδάσκοντες οργανώνουν μια "κλινική" έργου για τις τελικές ομάδες έργων στη διάρκεια της τελευταίας εβδομάδας πριν από το συμπόσιο της τάξης. Αυτή η "κλινική" βοηθάει να εξασφαλιστεί ότι οι φοιτητές παραμένουν εστιασμένοι στο έργο και ότι έχουν προσδιορίσει τα πιθανά εμπόδια νωρίς στη διαδικασία. Από τις ομάδες των φοιτητών ζητείται να προσέλθουν στην "κλινική" με ένα αρχικό προσχέδιο των εξής τριών εκδόσεων της εφαρμογής τους: (1) Του καλύτερου ακολουθιακού κώδικα CPU όσο αφορά την απόδοση, με SSE2 και άλλες βελτιστοποιήσεις που εγκαθιστούν μια στέρεα σειριακή βάση για τις συγκρίσεις επιτάχυνσης (2) Του καλύτερου παράλληλου κώδικα CUDA όσο αφορά την απόδοση. Η έκδοση αυτή είναι το κύριο προϊόν του έργου (3) Μιας έκδοσης ακολουθιακού κώδικα CPU που βασίζεται στον ίδιο αλγόριθμο με την έκδοση 1, και χρησιμοποιεί απλή ακρίβεια. Η έκδοση αυτή χρησιμοποιείται από τους φοιτητές για τον χαρακτηρισμό της επιβάρυνσης που έχει ο παράλληλος αλγόριθμος σε επιπλέον υπολογισμούς.

Πρόλογος 21 Από τις ομάδες των φοιτητών ζητείται να είναι έτοιμοι να συζητήσουν τις βασικές ιδέες που χρησιμοποιούν σε κάθε έκδοση του κώδικα, τυχόν ζητήματα ακρίβειας αναπαράστασης κινητής υποδιαστολής, οποιεσδήποτε συγκρίσεις με προηγούμενα αποτελέσματα της εφαρμογής, και τις πιθανές επιπτώσεις στον επιστημονικό τομέα αν επιτύχουν πολύ μεγάλη επιτάχυνση. Από την πείρα μας, ο βέλτιστος χρόνος της "κλινικής" είναι 1 εβδομάδα πριν από το συμπόσιο της τάξης. Αν τοποθετηθεί νωρίτερα, συνήθως το αποτέλεσμα είναι λιγότερο ώριμα έργα και λιγότερο χρήσιμες συναντήσεις. Αν τοποθετηθεί αργότερα, οι φοιτητές δε θα έχουν τον απαιτούμενο χρόνο για να τροποποιήσουν τα έργα τους σύμφωνα με την ανάδραση. Η αναφορά του έργου Από τους φοιτητές ζητείται να υποβάλουν μια αναφορά έργου με τα κυριότερα ευρήματα της ομάδας τους. Έξι παραδόσεις συνδυάζονται σε ένα συμπόσιο τάξης που διαρκεί μία ολόκληρη ημέρα. Στη διάρκεια του συμποσίου, οι φοιτητές χρησιμοποιούν χρονικές μονάδες παρουσίασης σε αναλογία με το μέγεθος της ομάδας τους. Κατά την παρουσίαση, οι φοιτητές υπογραμμίζουν τα καλύτερα μέρη της αναφοράς έργου τους προς όφελος όλης της τάξης. Η παρουσίαση έχει σημαντικό βάρος στη βαθμολογία. Κάθε φοιτητής πρέπει να απαντήσει σε ερωτήσεις που του κάνουν τα άτομα της ομάδας τους ως ανεξάρτητοι, ώστε να μπορούν να δοθούν διαφορετικοί βαθμοί στα άτομα μιας ομάδας. Το συμπόσιο αποτελεί μια σπουδαία ευκαιρία για τους φοιτητές να μάθουν να δημιουργούν μια μεστή παρουσίαση που θα παρακινήσει τους συναδέλφους τους να διαβάσουν το πλήρες άρθρο. Μετά από την παρουσίαση, οι φοιτητές υποβάλλουν επίσης μια πλήρη αναφορά του τελικού έργου. ΣΥΜΠΛΗΡΩΜΑΤΙΚΟ ΗΛΕΚΤΡΟΝΙΚΟ ΥΛΙΚΟ Οι εργαστηριακές ασκήσεις, οι οδηγίες για το τελικό έργο, και δείγματα προδιαγραφών έργων είναι διαθέσιμα σε εκπαιδευτικούς που χρησιμοποιούν αυτό το βιβλίο στη διδασκαλία τους. Το βιβλίο παρέχει το διανοητικό περιεχόμενο για τα μαθήματα, αλλά το πρόσθετο υλικό είναι κρίσιμο για την επίτευξη των συνολικών στόχων της εκπαίδευσης. Σας καλούμε να επωφεληθείτε από το η- λεκτρονικό υλικό που συνοδεύει το βιβλίο, το οποίο είναι διαθέσιμο στην τοποθεσία Ιστού www.elsevierdirect.com/9780123814722.

22 Πρόλογος Τέλος, μη διστάσετε να στείλετε τις παρατηρήσεις και τα σχόλιά σας. Θέλουμε να μαθαίνουμε οποιεσδήποτε ιδέες έχετε για τη βελτίωση του βιβλίου και του συμπληρωματικού ηλεκτρονικού υλικού. Φυσικά, θέλουμε επίσης να ξέρουμε αν σας άρεσε το βιβλίο. David B. Kirk και Wen-mei W. Hwu

ΚΕΦΑΛΑΙΟ Ιστορία της υπολογιστικής με GPU ΠΕΡΙΕΧΟΜΕΝΑ ΚΕΦΑΛΑΙΟΥ 2.1 Εξέλιξη των διοχετεύσεων γραφικών...54 2.1.1 Η εποχή των διοχετεύσεων γραφικών σταθερών συναρτήσεων...55 2.1.2 Εξέλιξη των προγραμματίσιμων γραφικών πραγματικού χρόνου...60 2.1.3 Ενοποιημένοι επεξεργαστές γραφικών και υπολογισμών...63 2.1.4 GPGPU: ένα ενδιάμεσο βήμα...65 2.2 Υπολογιστική με GPU...67 2.2.1 Επεκτάσιμες GPU...68 2.2.2 Πρόσφατες εξελίξεις...69 2.3 Μελλοντικές τάσεις...70 Αναφορές και πρόσθετη βιβλιογραφία...71 ΕΙΣΑΓΩΓΗ Για τους προγραμματιστές CUDA και OpenCL, οι μονάδες επεξεργασίας γραφικών (graphics processing units GPU) είναι μαζικά παράλληλοι επεξεργαστές αριθμητικών υπολογισμών που προγραμματίζονται σε C με επεκτάσεις της. Ο προγραμματισμός αυτών των επεξεργαστών δεν απαιτεί την κατανόηση των αλγορίθμων ή της ορολογίας γραφικών. Ωστόσο, η γνώση της ιστορίας τους ρίχνει φως στα δυνατά και τα αδύνατά τους σημεία όσο αφορά σημαντικά υπολογιστικά μοτίβα. Ειδικότερα, η ιστορία βοηθά να αποσαφηνιστεί το σκεπτικό πίσω από σημαντικές αποφάσεις αρχιτεκτονικής σχεδίασης των σύγχρονων προγραμματίσιμων GPU: μαζική πολυνημάτωση (multithreading), σχετικά μικρές κρυφές μνήμες σε σχέση με τις κεντρικές μονάδες επεξεργασίας (central 53

54 ΚΕΦΑΛΑΙΟ 2 Ιστορία της υπολογιστικής με GPU processing units CPU), και σχεδίαση διασυνδέσεων μνήμης με έμφαση στο εύρος ζώνης. Οι γνώσεις για τις ιστορικές εξελίξεις είναι επίσης πιθανό να εφοδιάσουν τον αναγνώστη με το πλαίσιο που χρειάζεται ώστε να εκτιμήσει τη μελλοντική εξέλιξη των GPU ως υπολογιστικών συσκευών. 2.1 ΕΞΕΛΙΞΗ ΤΩΝ ΔΙΟΧΕΤΕΥΣΕΩΝ ΓΡΑΦΙΚΩΝ Το υλικό της διοχέτευσης τριδιάστατων γραφικών (3D graphics pipeline) εξελίχθηκε από τα μεγάλα και ακριβά συστήματα των αρχών της δεκαετίας του 1980 στους μικρούς σταθμούς εργασίας και κατόπιν στους επιταχυντές (accelerators) των PC στο δεύτερο μισό της δεκαετίας του 1990. Κατά τη διάρκεια αυτής της περιόδου, η τιμή των κορυφαίων σε απόδοση υποσυστημάτων γραφικών μειώθηκε από 50000 δολάρια σε 200 δολάρια. Μέσα στο ίδιο διάστημα, η απόδοσή τους αυξήθηκε από 50 εκατομμύρια πίξελ ανά δευτερόλεπτο σε 1 δισεκατομμύριο πίξελ ανά δευτερόλεπτο, και από 100000 κορυφές ανά δευτερόλεπτο σε 10 εκατομμύρια κορυφές ανά δευτερόλεπτο. Αν και αυτές οι πρόοδοι οφείλονται κατά μεγάλο μέρος στο όλο και συρρικνούμενο μέγεθος των στοιχείων ημιαγωγών, έχουν επίσης προκύψει ως αποτέλεσμα των καινοτομιών στους αλγορίθμους γραφικών και τη σχεδίαση υλικού που διαμόρφωσε τις εγγενείς δυνατότητες του υλικού στις σύγχρονες GPU. Η αξιοσημείωτη πρόοδος στην απόδοση του υλικού γραφικών είχε ως κίνητρο τη ζήτηση στην αγορά των εφαρμογών υπολογιστών για υψηλής ποιότητας γραφικά σε πραγματικό χρόνο. Ένα βιντεοπαιχνίδι, για παράδειγμα, θα πρέπει να αποδώσει στην οθόνη εξαιρετικά σύνθετες σκηνές σε μια διαρκώς αυξανόμενη ανάλυση, με ρυθμό 60 καρέ ανά δευτερόλεπτο. Το αποτέλεσμα είναι ότι, στη διάρκεια των τελευταίων 30 ετών, η αρχιτεκτονική των γραφικών έχει εξελιχθεί από μια απλή διοχέτευση για τη σχεδίαση γραμμικών σχεδίων σε μια εξαιρετικά παράλληλη σχεδίαση, η οποία αποτελείται από πολλές παράλληλες διοχετεύσεις ικανές να αποδίδουν τις πολύπλοκες αλληλεπιδραστικές εικόνες των τριδιάστατων σκηνών. Ταυτόχρονα, πολλές από τις σχετικές λειτουργίες του υλικού έγιναν πολύ πιο εξελιγμένες και προγραμματίσιμες από τον χρήστη.

2.1 Εξέλιξη των διοχετεύσεων γραφικών 55 2.1.1 Η εποχή των διοχετεύσεων γραφικών σταθερών συναρτήσεων Από την αρχή της δεκαετίας του 1980 μέχρι το τέλος της δεκαετίας του 1990, το κορυφαίο σε απόδοση υλικό γραφικών χρησιμοποιούσε διοχετεύσεις σταθερών συναρτήσεων (fixed-function pipelines), οι οποίες ήταν διευθετήσιμες (configurable) αλλά όχι προγραμματίσιμες (programmable). Την ίδια εποχή, απέκτησαν δημοτικότητα διάφορες σημαντικές βιβλιοθήκες διασύνδεσης προγραμματισμού εφαρμογών (application programming interface API) γραφικών. Ένα API είναι ένα τυποποιημένο επίπεδο λογισμικού (δηλαδή μια συλλογή συναρτήσεων βιβλιοθήκης) το οποίο επιτρέπει στις εφαρμογές (όπως τα παιχνίδια) να χρησιμοποιούν υπηρεσίες και λειτουργίες του λογισμικού ή του υλικού. Ένα API, για παράδειγμα, μπορεί να επιτρέψει σε ένα παιχνίδι να στείλει εντολές σε μια μονάδα επεξεργασίας γραφικών με σκοπό τη σχεδίαση αντικειμένων σε μια οθόνη. Τέτοιου είδους διασύνδεση εφαρμογών για λειτουργίες πολυμέσων είναι το DirectX της Microsoft. Το συστατικό Direct3D του DirectX παρέχει συναρτήσεις διασύνδεσης προς τους επεξεργαστές γραφικών. Το άλλο σημαντικό API είναι το OpenGL, μια ανοιχτή πρότυπη διασύνδεση που υποστηρίζεται από πολλούς κατασκευαστές και είναι δημοφιλής στις εφαρμογές επαγγελματικών σταθμών εργασίας. Αυτή η εποχή της διοχέτευσης γραφικών σταθερών συναρτήσεων αντιστοιχεί κατά προσέγγιση στις πρώτες επτά γενιές του DirectX. Η Εικόνα 2.1 παρουσιάζει ένα παράδειγμα διοχέτευσης γραφικών σταθερών συναρτήσεων στις πρώτες GPU GeForce της NVIDIA. Η διασύνδεση λαμβάνει εντολές και δεδομένα γραφικών από τη CPU. Οι εντολές δίνονται συνήθως από τα προγράμματα εφαρμογών με την κλήση μιας συνάρτησης API. Η διασύνδεση διαθέτει εξειδικευμένο υλικό άμεσης προσπέλασης μνήμης (Direct Memory Access DMA) για την αποδοτική μαζική μεταφορά δεδομένων από το υπολογιστικό σύστημα προς τη διοχέτευση γραφικών και αντίστροφα. Επίσης, επιστρέφει δεδομένα κατάστασης και το αποτέλεσμα της εκτέλεσης των εντολών.

56 ΚΕΦΑΛΑΙΟ 2 Ιστορία της υπολογιστικής με GPU ΕΙΚΟΝΑ 2.1 Μια διοχέτευση γραφικών GeForce της NVIDIA, σταθερών συναρτήσεων. Πριν περιγράψουμε τα υπόλοιπα στάδια της διοχέτευσης, πρέπει να αποσαφηνίσουμε ότι ο όρος κορυφή (vertex) αναφέρεται συνήθως στη γωνία ενός πολυγώνου. Η διοχέτευση γραφικών της GeForce είναι σχεδιασμένη για να αποδίδει τρίγωνα, οπότε ο όρος κορυφή χρησιμοποιείται συνήθως σε αυτή την περίπτωση ως αναφορά στις γωνίες ενός τριγώνου. Η επιφάνεια ενός αντικειμένου σχεδιάζεται ως ένα σύνολο τριγώνων. Όσο μικρότερο είναι το μέγεθος των τριγώνων, τόσο καλύτερη ποιότητα εικόνας επιτυγχάνεται. Το στάδιο ελέγχου κορυφών στην Εικόνα 2.1 δέχεται παραμετροποιημένα δεδομένα τριγώνων από τη CPU. Κατόπιν, το στάδιο ελέγχου κορυφών μετατρέπει τα δεδομένα των τριγώνων σε μια μορφή κατανοητή στο υλικό, και τοποθετεί τα έτοιμα δεδομένα στην κρυφή μνήμη κορυφών (vertex cache). Το στάδιο σκίασης, μετασχηματισμού, και φωτισμού κορυφών (vertex shading, transform, and lighting VS/T&L) στην Εικόνα 2.1 μετασχηματίζει τις κορυφές και ορίζει τιμές σε κάθε μία από αυτές (π.χ. χρώματα, καθέτους επιφανείας,

2.1 Εξέλιξη των διοχετεύσεων γραφικών 57 συντεταγμένες υφής, εφαπτόμενες). Η σκίαση γίνεται από το υλικό σκίασης πίξελ (pixel shader). Η μονάδα σκίασης κορυφών μπορεί να ορίσει ένα χρώμα σε κάθε κορυφή, αλλά το χρώμα δεν εφαρμόζεται σε πίξελ του τριγώνου αμέσως αλλά αργότερα. Το στάδιο διευθέτησης τριγώνων (triangle setup) δημιουργεί περαιτέρω εξισώσεις πλευρών που χρησιμοποιούνται για την παρεμβολή χρωμάτων (color interpolation) και άλλων δεδομένων ανά κορυφή (όπως συντεταγμένες υφής texture coordinates) στα πίξελ στα οποία εφάπτεται το τρίγωνο. Το στάδιο ράστερ (raster) καθορίζει ποια πίξελ περιλαμβάνονται σε κάθε τρίγωνο. Για κάθε ένα από αυτά τα πίξελ, το στάδιο αυτό εκτελεί για κάθε κορυφή μία παρεμβολή των τιμών που είναι απαραίτητες για τη σκίαση του πίξελ, μαζί με το χρώμα, τη θέση, και τη θέση της υφής που θα αποδοθούν στο πίξελ. Το στάδιο σκίασης (shader) στην Εικόνα 2.1 καθορίζει το τελικό χρώμα κάθε πίξελ. Αυτό μπορεί να παραχθεί ως συνδυασμένη επίδραση πολλών τεχνικών: παρεμβολής (interpolation) χρωμάτων κορυφής, χαρτογράφησης υφής (texture mapping), μαθηματικών φωτισμού ανά πίξελ, ανακλάσεων, κ.ά. Το στάδιο σκίασης περιέχει πολλά εφέ που καθιστούν τις αποδιδόμενες εικόνες πιο ρεαλιστικές. Στην Εικόνα 2.2 φαίνεται η χαρτογράφηση υφής, μια από τις λειτουργίες αυτού του σταδίου. Η εικόνα παρουσιάζει ένα παράδειγμα στο οποίο μια υφή παγκόσμιου χάρτη χαρτογραφείται επάνω σε ένα σφαιρικό αντικείμενο. Παρατηρήστε ότι το σφαιρικό αντικείμενο περιγράφεται ως μια μεγάλη συλλογή τριγώνων. Αν και το στάδιο σκίασης πρέπει να εκτελέσει μόνον ένα μικρό πλήθος υπολογισμών μετασχηματισμού συντεταγμένων, για να προσδιορίσει τις ακριβείς συντεταγμένες του σημείου υφής που θα σχεδιαστεί επάνω σε κάποιο σημείο ενός από τα τρίγωνα που περιγράφει το σφαιρικό αντικείμενο, ο αριθμός των πίξελ που καλύπτονται από την εικόνα απαιτεί την εκτέλεση ενός πολύ μεγάλου αριθμού μετασχηματισμών συντεταγμένων για κάθε καρέ κατά το στάδιο σκίασης. Το στάδιο λειτουργίας ράστερ (raster operation ROP) στην Εικόνα 2.2 εκτελεί τις τελικές λειτουργίες ράστερ στα πίξελ. Εφαρμόζει χρωματικές λειτουργίες ράστερ οι οποίες αναμιγνύουν το χρώμα επικαλυπτόμενων και γειτονικών αντικειμένων για την επίτευξη εφέ διαφάνειας (transparency) και εξομάλυνσης ορίων (antialiasing). Προσδιορίζει επίσης τα ορατά αντικείμενα για ένα δεδομένο σημείο παρατήρησης και απορρίπτει τα μη ορατά πίξελ. Ένα πίξελ είναι αόρατο όταν βρίσκεται πίσω από τα πίξελ άλλων αντικείμενων από το δεδομένο σημείο παρατήρησης.