Ιεραρχίες µνήµης. Μιχάλης ρακόπουλος. Υπολογιστική Επιστήµη & Τεχνολογία, #02

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

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

Ιεραρχία Μνήμης. Ιεραρχία μνήμης και τοπικότητα. Σκοπός της Ιεραρχίας Μνήμης. Κρυφές Μνήμες

Επίλυση ενός τριδιαγώνιου γραµµικού συστήµατος Ax = d µε τη µέθοδο απαλοιφής του Gauss (µέθοδος του Thomas)

Επίλυση Γραµµικών Συστηµάτων

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 7: Αλγόριθμοι γραμμικής άλγεβρας

Matrix Algorithms. Παρουσίαση στα πλαίσια του μαθήματος «Παράλληλοι. Αλγόριθμοι» Γ. Καούρη Β. Μήτσου

ΕΙΣΑΓΩΓΗ ΣΤΟ MATLAB- SIMULINK

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

Ασκήσεις Caches

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

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

Επιστημονικοί Υπολογισμοί - Μέρος ΙΙΙ: Παράλληλοι Υπολογισμοί

Κεφάλαιο 7 Ιεραρχία Μνήμης (Memory Hierarchy)

Ασκήσεις Caches

Παρουσίαση συλλογών υποπρογραμμάτων για γραμμική άλγεβρα: blas lapack

Αρχιτεκτονική Επεξεργαστών Ψ.Ε.Σ

Επιστηµονικός Υπολογισµός Ι

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

Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών H/Y Department of Electrical and Computer Engineering. Εργαστήριο 8. Χειμερινό Εξάμηνο

Είναι το «μυαλό» του υπολογιστή μας. Αυτός κάνει όλους τους υπολογισμούς και τις πράξεις. Έχει δική του ενσωματωμένη μνήμη, τη λεγόμενη κρυφή

Τεχνολογίες Κύριας Μνήμης

Επίκουρος Καθηγητής Παν/µίου Ιωαννίνων. Μαθηµατικά Ι Ακαδ. Έτος /58

ΓΡΑΜΜΙΚΗ ΑΛΓΕΒΡΑ. ΕΝΟΤΗΤΑ: Άλγεβρα των Πινάκων (1) ΔΙΔΑΣΚΩΝ: Βλάμος Παναγιώτης ΙΟΝΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

QR είναι ˆx τότε x ˆx. 10 ρ. Ποιά είναι η τιµή του ρ και γιατί (σύντοµη εξήγηση). P = [X. 0, X,..., X. (n 1), X. n] a(n + 1 : 1 : 1)

i Στα σύγχρονα συστήματα η κύρια μνήμη δεν συνδέεται απευθείας με τον επεξεργαστή

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

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

Matrix Algorithms. Παρουσίαση στα πλαίσια του μαθήματος «Παράλληλοι Αλγόριθμοι» Γ. Καούρη Β. Μήτσου

Υπολογιστές Ι. Άδειες Χρήσης. Πολυδιάστατοι πίνακες. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

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

Παράλληλοι Αλγόριθµοι

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

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

Μηχανοτρονική. Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο,

ΠΛΕ- 027 Μικροεπεξεργαστές

ΚΕΦΑΛΑΙΟ 1 ΥΛΙΚΟ ΥΠΟΛΟΓΙΣΤΩΝ

Ιεραρχία Μνήμης. Εικονική μνήμη (virtual memory) Επεκτείνοντας την Ιεραρχία Μνήμης. Εικονική Μνήμη. Μ.Στεφανιδάκης

ΗΜΥ 100 Εισαγωγή στην Τεχνολογία ιάλεξη 5

Τυπικές χρήσεις της Matlab

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

Αλγόριθμοι και Δομές Δεδομένων (Ι) (εισαγωγικές έννοιες)

Γραµµική Αλγεβρα. Ενότητα 1 : Εισαγωγή στη Γραµµική Αλγεβρα. Ευστράτιος Γαλλόπουλος Τµήµα Μηχανικών Η/Υ & Πληροφορικής

ΠΑΡΑΛΛΗΛΗ ΕΠΕΞΕΡΓΑΣΙΑ

Γραμμική Άλγεβρα Ι,

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

Γραµµική Αλγεβρα. Ενότητα 2 : Επίλυση Γραµµικών Εξισώσεων. Ευστράτιος Γαλλόπουλος Τµήµα Μηχανικών Η/Υ & Πληροφορικής

ΒΟΗΘΗΤΙΚΕΣ ΣΗΜΕΙΩΣΕΙΣ ΣΤΑ ΓΕΝΙΚΑ ΜΑΘΗΜΑΤΙΚΑ

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 6: Πίνακες [2/2] (Δισδιάστατοι)

Τι είναι αλγόριθμος; Υποπρογράμματα (υποαλγόριθμοι) Βασικές αλγοριθμικές δομές

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

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

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

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

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

ΜΕΜ251 Αριθμητική Ανάλυση

Επιστηµονικός Υπολογισµός Ι

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

Γραµµική Αλγεβρα. Ενότητα 2 : Επίλυση Γραµµικών Εξισώσεων. Ευστράτιος Γαλλόπουλος Τµήµα Μηχανικών Η/Υ & Πληροφορικής

Τετραγωνικά μοντέλα. Τετραγωνικό μοντέλο συνάρτησης. Παράδειγμα τετραγωνικού μοντέλου #1. Παράδειγμα τετραγωνικού μοντέλου #1

3 η ΑΣΚΗΣΗ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ ΥΠΟΛΟΓΙΣΤΩΝ

Τμήμα Λογιστικής. Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές. Μάθημα 8. 1 Στέργιος Παλαμάς

Τετραγωνικά μοντέλα. Τετραγωνικό μοντέλο συνάρτησης. Παράδειγμα τετραγωνικού μοντέλου #1. Παράδειγμα τετραγωνικού μοντέλου #1

Ενότητα 4. Εισαγωγή στην Πληροφορική. Αναπαράσταση δεδοµένων. Αναπαράσταση πληροφορίας. υαδικοί αριθµοί. Χειµερινό Εξάµηνο

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

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

ΓΡΑΜΜΙΚΗ ΑΛΓΕΒΡΑ (Εξ. Ιουνίου - 02/07/08) ΕΠΙΛΕΓΜΕΝΕΣ ΑΠΑΝΤΗΣΕΙΣ

Γραµµική Αλγεβρα. Ενότητα 1 : Εισαγωγή στη Γραµµική Αλγεβρα. Ευστράτιος Γαλλόπουλος Τµήµα Μηχανικών Η/Υ & Πληροφορικής

Εισαγωγή στην Αριθμητική Ανάλυση

ΗΜΥ 100 Εισαγωγή στην Τεχνολογία ιάλεξη 9

a 11 a 1n b 1 a m1 a mn b n

ΚΕΦΑΛΑΙΟ 3 ΑΡΙΘΜΗΤΙΚΗ ΕΠΙΛΥΣΗ ΓΡΑΜΜΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ. nn n n

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

Κεντρική Μονάδα Επεξεργασίας

Χρονικές σειρές 4 o μάθημα: ΠΙΝΑΚΕΣ ΚΑΙ ΔΙΑΝΥΣΜΑΤΑ

Κεφάλαιο 5 Ανάλυση Αλγορίθμων

ΕΣ 08 Επεξεργαστές Ψηφιακών Σηµάτων. Βιβλιογραφία Ενότητας

Διάλεξη 14 Εισαγωγή στην Ιεραρχία Μνήμης

Μήτρες Ειδικές μήτρες. Στοιχεία Γραμμικής Άλγεβρας

Κεφάλαιο 5. ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ -. Σερπάνος 2. Σημείωση

Εισαγωγή στον Προγραµµατισµό. Ανάλυση (ή Επιστηµονικοί8 Υπολογισµοί)

ΗΜΥ 100 Εισαγωγή στην Τεχνολογία ιάλεξη 9

µέχρι και την Τρίτη και ώρα 22:30 1η Ασκηση ΑΜΕΣΟΙ ΜΕΘΟ ΟΙ ΓΙΑ ΤΗΝ ΕΠΙΛΥΣΗ ΓΡΑΜΜΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ

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

ΤΗΛΕΠΙΣΚΟΠΗΣΗ. Γραµµικοί Μετασχηµατισµοί (Linear Transformations) Τονισµός χαρακτηριστικών εικόνας (image enhancement)

Παράλληλος προγραμματισμός: παράλληλες λ υπολογιστικές πλατφόρμες και ανάλυση προγραμμάτων

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

Λύσεις και Υποδείξεις Επιλεγµένων Ασκήσεων

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

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

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

ΠΛΕ- 027 Μικροεπεξεργαστές 9ο μάθημα: Αρχιτεκτονική συστήματος μνήμης: Κρυφές μνήμες εισαγωγή

5269: Υπολογιστικές Μέθοδοι για Μηχανικούς Συστήματα Γραμμικών Αλγεβρικών Εξισώσεων

ΠΛΗ111. Ανοιξη Μάθηµα 2 ο. Αλγόριθµοι και Αφηρηµένοι Τύποι εδοµένων. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

5269: Υπολογιστικές Μέθοδοι για Μηχανικούς Συστήματα Γραμμικών Αλγεβρικών Εξισώσεων

7 ΑΛΓΕΒΡΑ ΜΗΤΡΩΝ. 7.2 ΜΗΤΡΕΣ ΕΙΔΙΚΗΣ ΜΟΡΦΗΣ (Ι)

Εάν A = τότε ορίζουμε την ορίζουσα του πίνακα ως τον αριθμό. det( A) = = ( 2)4 3 1 = 8 3 = 11. τότε η ορίζουσά του πίνακα ισούται με

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

Ορισµός. Εστω συναρτήσεις: f : N R και g : N R. η f(n) είναι fi( g(n) ) αν υπάρχουν σταθερές C 1, C 2 και n 0, τέτοιες ώστε:

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

Transcript:

Ιεραρχίες µνήµης Μιχάλης ρακόπουλος Υπολογιστική Επιστήµη & Τεχνολογία, #02 1

Απόδοση υπολογιστικών συστηµάτων Ταχύτητα: Χρόνος ή καλύτερα Mflop/s. 1 Mflop/s = 10 6 floating point operations Benchmarks: Προγράµµατα για µέτρηση υπολογιστικών επιδόσεων (ταχύτητα επεξεργασίας, µνήµης, προσπέλασης περιφερειακών κ.λ.π) Peak: Μέγιστη ϑεωρητική ταχύτητα επεξεργασίας (δίνεται από τον κατασκευαστή - πρακτικά ανέφικτη) Linpack: Benchmark για ταχύτητα επεξεργασίας (επίλυση γραµµικών συστηµάτων µε µέθοδο Gauss) Στην πράξη: PEAK >> LINPACK > πραγµατικές εφαρµογές Ιεραρχίες µνήµης Μ. ρακόπουλος 2 Benchmark: επίλυση γραµµικών συστηµάτων function megaflops = bench(n) A = rand(n,n); b = rand(n,1); % cost for Gaussian elimination flop = (2/3)*n^3; tic; x = A\b; t = toc; megaflops = flop/t/1.e6 ; Ιεραρχίες µνήµης Μ. ρακόπουλος 3 Benchmark: αποτελέσµατα 250 MATLAB A\b benchmark 1.2GHz x86 CPU, 256K cache 200 150 Mflop/s 100 50 0 0 100 200 300 400 500 600 700 800 900 1000 n Ιεραρχίες µνήµης Μ. ρακόπουλος 4 2

Ταχύτητητες επεξεργαστών και µνήµης Οι σηµερινοί επεξεργαστές εκτελούν µια εντολή περίπου σε 1nanosec. Μια προσπέλαση στη µνήµη RAM γίνεται κάθε 100nanosec(!). Η µνήµη ΕΝ µπορεί να τροφοδοτήσει µε δεδοµένα την ΚΜΕ µε ϱυθµό που να ανταποκρίνεται στις δυνατότητες επεξεργασίας. Το χάσµα διευρύνεται: οι επεξεργαστές γρηγορότεροι κατά 60% κάθε χρόνο (ν. Moore) η µνήµη γίνεται γρηγορότερη µόλις κατά 7% κάθε χρόνο. Ιεραρχίες µνήµης διαφορετικών ταχυτήτων µε σκοπό την ϐελτίωση της ταχύτητας µεταφοράς δεδοµένων στον επεξεργαστή. Ιεραρχίες µνήµης Μ. ρακόπουλος 5 Ιεραρχίες µνήµης bytes nanosec 100s Ks Ms Gs Ts ΜΕΓΑΛΥΤΕΡΗ ΧΩΡΗΤΙΚΟΤΗΤΑ CPU registers L1&L2 cache L3 cache RAM hard disk ΜΕΓΑΛΥΤΕΡΗ ΤΑΧΥΤΗΤΑ 1s 10s 100s 10,000,000s Τα δεδοµένα προς άµεση χρήση πρέπει να ϐρίσκονται όσο πιο ψηλά γίνεται!! Ιεραρχίες µνήµης Μ. ρακόπουλος 6 Καταχωρητές - registers Η ΚΜΕ εκτελεί πράξεις µε δεδοµένα που ϐρίσκονται στους καταχωρητές και όχι στη µνήµη. Παράδειγµα σε Java: public static void simpleadd(float a, float b) { float c = a + b; } Assembly για bytecode: public static void simpleadd(float, float); Code: 0: fload_0 1: fload_1 2: fadd 3: fstore_2 4: return Ιεραρχίες µνήµης Μ. ρακόπουλος 7 3

Καταχωρητές - registers (συνεχ.) Οι compilers προσπαθούν να κρατήσουν τα δεδοµένα που χρησιµοποιούνται πιο συχνά στους καταχωρητές s = 0; for i=1:n s = s + a(i)*b(i); Εδώ τοsπαραµένει στον καταχωρητή. Αρχή επαναχρησιµοποίησης δεδοµένων (data reuse) Ιεραρχίες µνήµης Μ. ρακόπουλος 8 Cache Γρήγορη µνήµη, συνήθως ενσωµατωµένη στον επεξεργαστή. Cache hit Αναφορά σε δεδοµένα που ϐρίσκονται ήδη στο cache - ελάχιστο κόστος. Cache miss Τα δεδοµένα ΕΝ ϐρίσκονται στο cache µεταφορά τους από άλλη µνήµη (RAM, δίσκο, κλπ) - υψηλό κόστος Τα δεδοµένα ϕορτωνονται από την RAM στην cache σε blocks - cache lines Ιεραρχίες µνήµης Μ. ρακόπουλος 9 Cache (συνεχ.) Η λειτουργίας της µνήµης cache (αλλά και άλλων κατηγοριών µνήµης) ϐασίζεται στην αρχή της τοπικότητας της αναφοράς (locality of reference). Μεγαλύτερη η πιθανότητατα αναφοράς σε δεδοµένα D: που χρησιµοποιήθηκαν πρόσφατα (χρονική αναφορά), π.χ. σε loops, for k = 1:10 for i = 1:N...=...x(i)... for i = 1:N for k = 1:10...=...x(i)... ή, που ϐρίσκονται σε γειτονικές στη µνήµη ϑέσης µε τα δεδοµένα D (χωρική αναφορά), π.χ. διαδοχικά στοιχεία ενός διανύσµατος w i, w i+1. Η µεταφορά δεδοµένων από RAM σε cache γίνεται σε οµάδες (γειτονικές ϑέσεις µνήµης), µε σκοπό την πιθανή αξιοποίηση χωρικών αναφορών. Ιεραρχίες µνήµης Μ. ρακόπουλος 10 4

Αποθήκευση πινάκων στη µνήµη Απεικόνιση 2 πινάκων στην ΜΟΝΟ ΙΑΣΤΑΤΗ µνήµη: Fortran, Matlab C 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 0011 1 0011 2 0011 3 0011 4 5 6 7 8 9 10 11 12 13 14 15 16 MNHMH 1 2 3 4 5 6 7... Ιεραρχίες µνήµης Μ. ρακόπουλος 11 Βέλτιστη πρόσθεση πινάκων ιαστάσειςa(n,n),b(n,n),c(n,n) Αποθήκευση κατά στήλες (Fortran, Matlab) Αλγόριθµος 1 for i=1:n, for j=1:n, A(i,j) = B(i,j) + C(i,j); Αλγόριθµος 2 for j=1:n, for i=1:n, A(i,j)= B(i,j) + C(i,j); Πως διατρέχει την µνήµη ο κάθε αλγόριθµος? Ποιός από τους 2 είναι πιο αποτελεσµατικός (γρήγορος) στη Fortran? Τι συµβαίνει στη C (σε αποθήκευση τωνa, B, C κατά γραµµές)? Ιεραρχίες µνήµης Μ. ρακόπουλος 12 Πολλαπλασιασµός πίνακα µε διάνυσµα y = Ax, Ανά γραµµές (εσωτερικά γινόµενα) y i = A i x y = zeros(m,1); for i = 1:m, y(i) = A(i,:)*x; mn πολλαπλασιασµοί και m(n 1) προσθέσεις. Ανά στήλες (γραµµικός συνδυασµός) y = n j=1 x ja j A R m n, x R n, y R m y = zeros(m,1); for j = 1:n, y = y + x(j)*a(:,j); mn πολλαπλασιασµοί και mn προσθέσεις. Για m = n = 4096 και τυχαία A, x, το MATLAB χρειάζεται 0.37 και 0.04 sec αντίστοιχα. Ιεραρχίες µνήµης Μ. ρακόπουλος 13 5

Πολλαπλασιασµός πίνακα µε διάνυσµα - cache lines Σε 4 cache lines µε 8 ϑέσεις, για m = 128, n = 32 και πολ/σµό ανά στήλες A(1:8,1) x(1:8) y(1:8) OLD DATA y(1:8) = y(1:8) + x(1)*a(1:8,1) y(9:16) x(1:8) y(1:8) A(9:16,1) y(9:16) = y(9:16) + x(1)*a(9:16,1) Φορτώνοντας 5 blocks εκτελούµε 16 από τους 128 32 πολ/σµούς. Τα blocks που συνολικά ϑα φορτωθούν είναι: x A y 4 32 128/8 32 128/8 Ιεραρχίες µνήµης Μ. ρακόπουλος 14 Ο συµβολισµός O Μια συνάρτηση f(n) είναι τάξης O(g(n)), συµβολίζεται f(n) O(g(n)), αν υπάρχουν ϑετικές σταθερές c και n 0 τέτοιες ώστε: f(n) cg(n), n n 0 cg(n) f(n) n0 n Π.χ. Αν f(n) πολυώνυµο τάξης k τότε f(n) O(n k ) Ιεραρχίες µνήµης Μ. ρακόπουλος 15 6

Ιεραρχίες µνήµης και υπολογιστικοί πυρήνες Αναγνώριση ϐασικών, σχετικά απλών πυρήνων (πράξεων) ικανών να διατυπώσουν πολύπλοκους αλγορίθµους. Π.χ. πράξεις γραµµικής άλγεβρας ϐάση αριθµητικών υπολογισµών. Καθορισµός κατάλληλου interface συµφωνία (standard). Αποτελεσµατικός προγραµµατισµός των πυρήνων σε συναρτήσεις, µε εκµετάλλευση των ιεραρχιών µνήµης για συγκεκριµένο υπολογιστή! (συνήθως παρέχονται από τον κατασκευαστή). BLAS: Basic Linear Algebra Subprograms Σύνθετοι αριθµητικοί αλγόριθµοι προγραµµατίζονται µε κλήση σε συναρτήσεις BLAS Η ϐιβλιοθήκη αριθµητικής γραµµικής άλγεβρας LAPACK, που χρησιµοποιεί και το MATLAB, ϐασίζεται στα BLAS. Ιεραρχίες µνήµης Μ. ρακόπουλος 16 BLAS 1 Πράξεις µεταξύ διανυσµάτων (1 πίνακες) Για διανύσµατα n στοιχείων: O(n) πράξεις Επιστρέφουν διάνυσµα ή αριθµό Βασικές πράξεις (x, y διανύσµατα, α αριθµός): saxpy: y = αx + y. scal: y = αx. rot: x = cx + sy και y = sx + cy (συνήθως c cos, s sin). dot: Εσωτερικό γινόµενο x T y.... νόρµες και διάφορες άλλες πράξεις διανυσµάτων. Ιεραρχίες µνήµης Μ. ρακόπουλος 17 BLAS 2 Πράξεις πίνακα (2 ) µε διάνυσµα (διανύσµατα). Επιστρέφουν διάνυσµα ή πίνακα Για πίνακα n n: O(n 2 ) πράξεις Βασικές πράξεις (x, y διανύσµατα, A πίνακας, T τριγωνικός πίνακας): Γινόµενο πίνακα µε διάνυσµα: y = y + Ax, A R m n. Rank-one update: A = A + yx T, A R m n, y R m, x R n Επίλυση τριγωνικών συστηµάτων: Επιλύει Tx = y ως προς το x. Ιεραρχίες µνήµης Μ. ρακόπουλος 18 BLAS 3 Πράξεις µεταξύ πινάκων που επιστρέφουν πίνακες O(n 3 ) πράξεις. Βασικές πράξεις (A, B, C πίνακες, T τριγωνικός πίνακας): Γινόµενο πινάκων: C = C + AB (συµφωνία διαστάσεων). Ο πυρήνας gemm στην πράξη είναι πιο γενικός και υπολογίζει µε α, β αριθµούς και op για δυνατότητα αναστροφής. Επίλυση τριγωνικών συστηµάτων µε πίνακες: Επιλύει TX = Y ως προς το X, για τριγωνικό πίνακα T. C = βc + α op(a) op(b) Ιεραρχίες µνήµης Μ. ρακόπουλος 19 7

Ιστορική ανάπτυξη των πυρήνων BLAS Μαθηµατικά οι αλγόριθµοι είναι ισοδύναµοι (BLAS1 BLAS2 BLAS3). Αλλά: 1800 GEMM/1.2GHz AthlonMP/256KB cache 1600 BLAS 3 1400 1200 MFlop/s 1000 800 600 400 200 BLAS 2 BLAS 1 0 100 200 300 400 500 600 700 800 900 1000 n Ιστορικά αναπτύχθηκαν για µέγιστη απόδοση στους υπολογιστές της εποξής τους BLAS1 (ca 1970), BLAS2 (ca. 1985), BLAS3 (1990). Ιεραρχίες µνήµης Μ. ρακόπουλος 20 Ενα απλό µοντέλο µνήµης Εστω ιεραρχία µνήµης 2 επιπέδων: µόνο γρήγορη και αργή µνήµη. Ολα τα δεδοµένα αρχικά στην αργή µνήµη. m αριθµός δεδοµένων που διαβάζονται/γράφονται από/στην ΑΜ. t m χρόνος για αναφορά σε δεδοµένα στην ΑΜ. f αριθµός αριθµητικών πράξεων (flop). t f χρόνος ανά αριθµητική πράξη (στη ΓΜ) << t m. q = f/m µέσος όρος flop ανά προσπέλαση της ΑΜ. min δυνατός χρόνος: τ = ft f όταν όλα τα δεδοµένα είναι στη ΓΜ. Πραγµατικός χρόνος: T = ft f + mt m = τ(1 + t m /(t f q)) q T τ Ιεραρχίες µνήµης Μ. ρακόπουλος 21 Ανάλυση ταχύτητας στους πυρήνες BLAS Η σηµασία του q: m Αιτιολογία για m f q y = y + αx 3n ιάβασε x, y γράψε y 2n 2/3 y = y + Ax n 2 + O(n) ιάβασε A 2n 2 2 C = C + AB 4n 2 ιάβασε A, B, C, γράψε C 2n 3 n/2 για κάθε λέξη που ϕέρνουµε απο ΑΜ, µπορούµε να κάνουµε το πολύ q πράξεις στη γρήγορη µνήµη. Οσο µεγαλύτερο το q τόσο περισσότερο ο αλγόριθµος δουλεύει στην ΓΜ. Ιεραρχίες µνήµης Μ. ρακόπουλος 22 8

Πολ/σµός πινάκων Αλγόριθµος εσωτερικού γινοµένου C = C + AB for i=1:n for j=1:n for k=1:n C(i,j) = C(i,j) + A(i,k)*B(k,j); Ιεραρχίες µνήµης Μ. ρακόπουλος 23 Πολ/σµός πινάκων (συνεχ.) Αλγόριθµος εσωτερικού γινοµένου ή πιο συνοπτικά σε MATLAB: a 1,: for i=1:n for j=1:n C(i,j) = C(i,j) + A(i,:)*B(:,j); a 2,: [ ] b:,1 b :,2... b :,n. a n,: Ιεραρχίες µνήµης Μ. ρακόπουλος 24 Πολ/σµός πινάκων Αλγόριθµος εξωτερικού γινοµένου: b 1,: [ ] b 2,: a:,1 a :,2... a :,n. b n,: for k=1:n C = C + A(:,k)*B(k,:); Ιεραρχίες µνήµης Μ. ρακόπουλος 25 Αλγόριθµοι πολλαπλασιασµού πινάκων C = C + AB, A, B, C R n n Παραδοχές: 1. Ιεραρχία µνήµης 2 επιπέδων: ΑΜ και ΓΜ. 2. Χωρητικότητα ΑΜ > 3n 2 (χωράει και τους 3 πίνακες: A, B, C). 3. 2n < χωρητικότητα ΓΜ, έστω M n 2. 4. Γίνεται ϐέλτιστη επαναχρησιµοποίηση δεδοµένων (έχουµε δηλ. πλήρη έλεγχο των δεδοµένων που µεταφέρονται ανάµεσα σε ΑΜ και ΓΜ). Ιεραρχίες µνήµης Μ. ρακόπουλος 26 9

Αλγόριθµος I: unblocked πολ/σµός πινάκων for i=1:n % read A(i,:) into fast memory for j=1:n % read C(i,j) into fast memory % read B(:,j) into fast memory for k=1:n C(i,j) = C(i,j) + A(i,k)*B(k,j) % write C(i,j) back to slow memory Ιεραρχίες µνήµης Μ. ρακόπουλος 27 Αλγόριθµος I: ανάλυση Αναφορές σε ΑΜ, m q = f/m = 2n 3 /(n 3 + 3n 2 ) 2 εν υπάρχει ϐελτίωση σε σχέση µε BLAS 2! Το q δεν επηρεάζεται από µεταθέσεις των i, j, k. ιάβασε στήλη του B n ϕορές n 3 ιάβασε γραµµή του A µια ϕορά για κάθε i n 2 ιάβασε και γράψε στοιχείο του C µια ϕορά 2n 2 m = n 3 + 3n 2 Ιεραρχίες µνήµης Μ. ρακόπουλος 28 Αλγόριθµος II: πολ/σµός µε χρήση υποπινάκων Χωρισµός των A, B, C σε N N blocks µε b b στοιχεία το καθένα και b = n/n το blocksize. b n C(i,j) C(i,j) A(i,k) 00 00 11 11 = + * B(k,j) 01 01 01 01 n = b*n Π.χ. για N = 2: [ ] C11 C 12 = C 21 C 22 [ C11 C 12 C 21 C 22 ] + [ A11 A 12 A 21 A 22 Ο πολ/σµός σε blocks είναι ισοδύναµος µε πολ/σµο µεταξύ στοιχείων. C IJ = A IK B KJ. ] [ ] B11 B 12 B 21 B 22 Ιεραρχίες µνήµης Μ. ρακόπουλος 29 10

Αλγόριθµος II: πολ/σµός µε χρήση υποπινάκων (συνεχ.) for i=1:n for j=1:n I = ((i-1)*n+1):i*n; J = ((j-1)*n+1):j*n; % read block C(I,J) into fast memory for k=1:n K = ((k-1)*n+1):k*n; % read block A(I,K) into fast memory % read block B(K,J) into fast memory C(I,J) = C(I,J) + A(I,K)*B(K,J) %blocks % write C(I,J) back to slow memory Ιεραρχίες µνήµης Μ. ρακόπουλος 30 Αλγόριθµος II: ανάλυση ιάβασε block του B, N 3 ϕορές Nn 2 ιάβασε block του A, N 3 ϕορές Nn 2 Αναφορές σε ΑΜ ιάβασε και γράψε block του C µια ϕορά 2n 2 m = (2N + 2)n 2 q = f/m = 2n 3 /((2N + 2)n 2 ) n/n = b, για µεγάλα n. Βελτίωση της απόδοσης µε αύξηση του b. Καλύτερος από τους προηγούµενους! Περιορισµός: Και οι 3 υποπίνακες των A, B, C πρέπει να «χωράνε» στην ΓΜ (cache): 3b 2 <= M, άρα q b M/3. Θεώρηµα: Οποιαδήποτε προσεταιριστική αναδιοργάνωση του παραπάνω αλγορίθµου περιορίζεται από q = O( M) Ιεραρχίες µνήµης Μ. ρακόπουλος 31 Τεχνικές για ϐελτίωση απόδοσης επεξεργαστών Ιεραρχίες µνήµης. Παράλληλη επεξεργασία µέσα σε ένα επεξεργαστή Πολλαπλές λειτουργικές µονάδες που δουλεύουν παράλληλα. pipelining Συνήθως αξιοποιούνται απο compilers αλλά ϐοηθάει και η «ανθρώπινη» επέµβαση (ϐλ. ιεραρχίες µνήµης) Ιεραρχίες µνήµης Μ. ρακόπουλος 32 11

Χωρίς Pipelining 18:00 19:00 20:00 21:00 22:00 23:00 24:00 a b c d 6h!!! Ιεραρχίες µνήµης Μ. ρακόπουλος 33 Με pipelining 18:00 19:00 20:00 21:00 22:00 23:00 24:00 a b 3.5h!!! c d Ιεραρχίες µνήµης Μ. ρακόπουλος 34 12

Pipelining στις αριθµητικές µονάδες Π.χ. πολ/σµός τωνa = 0.3e-1 καιb = 0.2e2: 1 flop = πολλές απλούστερες πράξεις S1 Βρες ταaκαιbστη µνήµη. S2 Φόρτωσε ταaκαιbστους καταχωρητές. S3 Εναρµόνισε τους εκθέτες:.3 10 1.2 10 2 =.0003 10 2.2 10 2. S4 Πολλαπλασίασε:.00006 10 2. S5 Κανονικοποίησε το αποτέλεσµα:.6 10 0. S6 Αποθήκευσε το αποτέλεσµα. Καθένα από τα παραπάνω στάδια εκτελείται σε διαφορετική µονάδα στην CPU. Αν κάθε στάδιο εκτελείται σε 1 κύκλο: χρειάζονται 6 κύκλοι για 1 πολ/σµό. Ιεραρχίες µνήµης Μ. ρακόπουλος 35 Pipelining στις αριθµητικές µονάδες (συνεχ.) Για 2 πολλαπλασµούς Π1, Π2 µε pipelining: χρειάζονται 7 = 6 + 1 κύκλοι αντί για 12 (χωρίς pipelining)! Γενικά n πράξεις σε pipeline µε s στάδια χρειάζονται: Κύκλος S1 S2 S3 S4 S5 S6 1 Π1 2 Π2 Π1 3 Π2 Π1 4 Π2 Π1 5 Π2 Π1 6 Π2 Π1 7 Π2 s + n 1 κύκλοι αντί ns Ιεραρχίες µνήµης Μ. ρακόπουλος 36 13