Ανάπτυξη Λογισμικού και Τεχνικών Συμπίεσης Δεδομένων για τη Βελτίωση της Επίδοσης Υπολογιστικών Εφαρμογών σε Παράλληλες Αρχιτεκτονικές Μοιραζόμενης Μνήμης Εφαρμογή σε υπολογισμούς αραιών πινάκων Αντώνιος - Κορνήλιος Κούρτης Εργαστήριο Υπολογιστικών Συστημάτων ΕΜΠ 1 / 43
Σκελετός Παράλληλα Συστήματα Μοιραζόμενης Μνήμης Συμπίεση για βελτίωση επίδοσης εφαρμογών με έντονες προσβάσεις μνήμης σε ΠΣΜΜ Αραιοί πίνακες και SpMxV CSR-DU CSR-VI CSX 2 / 43
Σκελετός Παράλληλα Συστήματα Μοιραζόμενης Μνήμης Υπόβαθρο Συμπίεση για βελτίωση επίδοσης εφαρμογών με έντονες προσβάσεις μνήμης σε ΠΣΜΜ Αραιοί πίνακες και SpMxV CSR-DU CSR-VI Συμβολή CSX 2 / 43
Πολυπύρηνοι επεξεργαστές Η εποχή των πολυπύρηνων επεξεργαστών (multicore era) (διέξοδος των αρχιτεκτόνων στο φράγμα της σειριακής επίδοσης) ( ) απαιτείται αλλαγή στο λογισμικό A τρόπος προγραμματισμού (εξετάζουμε εφαρμογές χωρίς κόστος παραλληλοποίησης) επίδοση core L1 core L1 core L1 core L1 L2 L2 main memory (or off-chip cache) 3 / 43
Κλάσεις εφαρμογών (ως προς την επίδοσή τους σε ένα σύστημα μοιραζόμενης μνήμης) core core core core L1 L1 L1 L1 L2 L2 main memory (or off-chip cache) 4 / 43
Κλάσεις εφαρμογών (ως προς την επίδοσή τους σε ένα σύστημα μοιραζόμενης μνήμης) Καλή συμπεριφορά χρονική τοπικότητα αναφορών χωρίς εξαρτήσεις core core core core L1 L1 L1 L1 L2 L2 main memory (or off-chip cache) 4 / 43
Κλάσεις εφαρμογών (ως προς την επίδοσή τους σε ένα σύστημα μοιραζόμενης μνήμης) Εφαρμογές με έντονες προσβάσεις μνήμης έλλειψη χρονικής τοπικότητας αναφορών υψηλός λόγος προσβάσεων μνήμης προς πράξεις υπολογισμών περιορισμένη επεκτασιμότητα λόγω κορεσμού core core core core L1 L1 L1 L1 L2 L2 main memory (or off-chip cache) 4 / 43
Προτεινόμενη αντιμετώπιση: Συμπίεση ανταλλαγή κύκλων μνήμης για κύκλους υπολογισμών c c m c m c c 5 / 43
Προτεινόμενη αντιμετώπιση: Συμπίεση ανταλλαγή κύκλων μνήμης για κύκλους υπολογισμών c c m c m c c c m κόστος αποσυμπίεσης 5 / 43
Προτεινόμενη αντιμετώπιση: Συμπίεση ανταλλαγή κύκλων μνήμης για κύκλους υπολογισμών c c m c m c c c κόστος αποσυμπίεσης m c c c m c προϋπόθεση: υπερκέραση κόστους αποσυμπίεσης 5 / 43
Ανακεφαλαίωση Πρόβλημα: } Έντονες προσβάσεις στη μνήμη Περιορισμένη επεκτασιμότητα Πολυπύρηνοι επεξεργαστές Προσέγγιση: { } προσβάσεων μνήμης Συμπίεση Βελτίωση επίδοσης υπολογισμών Εφαρμογή: Υπολογισμοί αραιών πινάκων πυρήνας SpMxV 6 / 43
Αραιοί πίνακες Μεγάλος αριθμός μηδενικών Εφαρμογές (επιστημονικές): μερικές διαφορικές εξισώσεις γράφοι γραμμικός προγραμματισμός Αποδοτική αναπαράσταση (μέγεθος και υπολογισμοί) μη-μηδενικές αριθμητικές τιμές δεδομένα δομής πίνακα Καθιερωμένα σχήματα αποθήκευσης: COO: πρώτη προσέγγιση CSR: βασική προσέγγιση (base-line) BCSR: εξελιγμένη προσέγγιση (state-of-the-art) 7 / 43
Σχήμα COO COOrdinate format Απoθήκευση μη-μηδενικών τιμών Συντεταγμένες για κάθε μη-μηδενική τιμή 54 11 0 0 0 0 0 63 0 77 0 88 0 0 11 0 0 0 0 0 29 0 37 29 90 0 0 11 45 0 11 0 29 37 0 11 row_ind: 0 0 1 1 1 2 3 3 3 4 4 4 5 5 5 5 col_ind: 0 1 1 3 5 2 2 4 5 0 3 4 0 2 3 5 values: 54 11 63 77 88 11 29 37 29 90 11 45 11 29 37 11 nnz 8 / 43
Σχήμα COO COOrdinate format Απoθήκευση μη-μηδενικών τιμών Συντεταγμένες για κάθε μη-μηδενική τιμή 54 11 0 0 0 0 0 63 0 77 0 88 0 0 11 0 0 0 0 0 29 0 37 29 90 0 0 11 45 0 11 0 29 37 0 11 row_ind: 0 0 1 1 1 2 3 3 3 4 4 4 5 5 5 5 col_ind: 0 1 1 3 5 2 2 4 5 0 3 4 0 2 3 5 values: 54 11 63 77 88 11 29 37 29 90 11 45 11 29 37 11 nnz 8 / 43
Σχήμα COO COOrdinate format Απoθήκευση μη-μηδενικών τιμών Συντεταγμένες για κάθε μη-μηδενική τιμή 54 11 0 0 0 0 0 63 0 77 0 88 0 0 11 0 0 0 0 0 29 0 37 29 90 0 0 11 45 0 11 0 29 37 0 11 row_ind: 0 0 1 1 1 2 3 3 3 4 4 4 5 5 5 5 col_ind: 0 1 1 3 5 2 2 4 5 0 3 4 0 2 3 5 values: 54 11 63 77 88 11 29 37 29 90 11 45 11 29 37 11 nnz 8 / 43
Σχήμα CSR (Compressed Sparse Row) 54 11 0 0 0 0 0 63 0 77 0 88 0 0 11 0 0 0 0 0 29 0 37 29 90 0 0 11 45 0 11 0 29 37 0 11 nrows+1 row_ptr: 0 2 5 6 9 12 16 col_ind: 0 1 1 3 5 2 2 4 5 0 3 4 0 2 3 5 values: 54 11 63 77 88 11 29 37 29 90 11 45 11 29 37 11 nnz 9 / 43
Σχήμα CSR (Compressed Sparse Row) 54 11 0 0 0 0 0 63 0 77 0 88 0 0 11 0 0 0 0 0 29 0 37 29 90 0 0 11 45 0 11 0 29 37 0 11 nrows+1 row_ptr: 0 2 5 6 9 12 16 col_ind: 0 1 1 3 5 2 2 4 5 0 3 4 0 2 3 5 values: 54 11 63 77 88 11 29 37 29 90 11 45 11 29 37 11 nnz 9 / 43
SpMxV πολλαπλασιασμός αραιού πίνακα με διάνυσμα y = A x, όπου A αραιός Σημαντικός υπολογιστικός πυρήνας λύση ΜΔΕ (GMRES, CG) για (CFD, economic modeling) γράφοι (PageRank) έντονη ερευνητική δραστηριότητα a 11 a 12 a 13 a 21 a 22 a 23 a 31 a 32 a 33 a 41 a 42 a 43 a 14 a 24 a 34 a 44 x 1 x 2 x 3 = x 4 y 1 = a 1i x i y 2 = a 2i x i y 3 = a 3i x i y 4 = a 4i x i 10 / 43
SpMxV πολλαπλασιασμός αραιού πίνακα με διάνυσμα y = A x, όπου A αραιός Σημαντικός υπολογιστικός πυρήνας λύση ΜΔΕ (GMRES, CG) για (CFD, economic modeling) γράφοι (PageRank) έντονη ερευνητική δραστηριότητα a 11 a 12 a 13 a 21 a 22 a 23 a 31 a 32 a 33 a 41 a 42 a 43 a 14 a 24 a 34 a 44 x 1 x 2 x 3 = x 4 y 1 = a 1i x i y 2 = a 2i x i y 3 = a 3i x i y 4 = a 4i x i 10 / 43
SpMxV πολλαπλασιασμός αραιού πίνακα με διάνυσμα y = A x, όπου A αραιός Σημαντικός υπολογιστικός πυρήνας λύση ΜΔΕ (GMRES, CG) για (CFD, economic modeling) γράφοι (PageRank) έντονη ερευνητική δραστηριότητα a 11 a 12 a 13 a 14 y x 1 = 0 0 1 a 21 x a 1i x i a 21 a 22 a 23 a 24 x 2 y a 31 a 32 a 33 a 34 2 = 1 + a 24 x 4 a 2i x i x 3 y 3 = = a 3i x i a 41 a 42 a 43 a 44 x 4 y 4 = a 4i x i 10 / 43
SpMxV για CSR for (i=0; i < N; i++) for (j=row_ptr[i]; j < row_ptr[i+1]; j++) y[i] += values[j] * x[col_ind[j]]; row_ptr: 0 2 5 6 9 12 16 col_ind: 0 1 1 3 5 2 2 4 5 0 3 4 0 2 3 5 x: x 0 x 1 x 2 x 3 x 4 x 5 values: 54 11 63 77 88 11 29 37 29 90 11 45 11 29 37 11 y: y 0 y 1 y 2 y 3 y 4 y 5 11 / 43
SpMxV για CSR for (i=0; i < N; i++) for (j=row_ptr[i]; j < row_ptr[i+1]; j++) y[i] += values[j] * x[col_ind[j]]; i=3 row_ptr: 0 2 5 6 9 12 16 (όρια γραμμής) col_ind: 0 1 1 3 5 2 2 4 5 0 3 4 0 2 3 5 x: x 0 x 1 x 2 x 3 x 4 x 5 values: 54 11 63 77 88 11 29 37 29 90 11 45 11 29 37 11 y: y 0 y 1 y 2 y 3 y 4 y 5 11 / 43
SpMxV για CSR i=3 row_ptr: 0 2 5 6 9 12 16 (όρια γραμμής) col_ind: 0 1 1 3 5 2 2 4 5 0 3 4 0 2 3 5 for (i=0; i < N; i++) for (j=row_ptr[i]; j < row_ptr[i+1]; j++) y[i] += values[j] * x[col_ind[j]]; (έμμεση πρόσβαση) x: x 0 x 1 x 2 x 3 x 4 x 5 ( ) 54 11 63 77 88 11 29 37 29 90 11 45 11 29 37 11 values: ( ) y: y 0 y 1 y 2 y 3 y 4 y 5 11 / 43
Παραδοσιακές προσεγγίσεις βελτιστοποίησης SpMxV SpMxV χρησιμοποιείται συχνά πληθώρα εργασιών παραδοσιακός στόχος: βελτίωση επίδοσης υπολογισμών ειδικευμένα σχήματα αραιής αποθήκευσης (εκμετάλλευση κανονικοτήτων στους πίνακες) Παραδείγματα: διδιάστατα μπλοκ σταθερού μεγέθους BCSR [Im and Yelick 01] μονoδιάστατα μπλοκ μεταβλητού μεγέθους [Pinar and Heath 99] διαγώνια στοιχεία DIAG 12 / 43
Σχήμα BCSR Blocked CSR [Im and Yelick 01] όμοιο με CSR: μπλοκ r c αντί στοιχείων παραδοσιακός στόχος: βελτίωση επίδοσης υπολογισμών (register blocking) ειδικές εκδόσεις SpMxV γιά r c πιθανό padding 46 93 0 0 0 0 24 56 86 82 0 0 0 0 53 16 0 0 0 0 19 79 0 0 0 0 0 0 71 0 0 0 A = 0 0 86 17 24 76 0 0 0 0 39 22 30 33 0 0 0 0 0 0 18 0 79 12 0 0 0 0 0 78 10 53 brow ptr : 0 2 3 5 7 bcol ind : (0 6 4 2 4 4 6) blocks : 46 93 86 82 24 56 53 16 19 79 71 0 86 17 39 22 24 76 30 33 18 0 0 78 79 12 10 53 bval : ( 46 93 86 82 24 56 53 16 19 79 71 00 ) 13 / 43
Σχήμα BCSR Blocked CSR [Im and Yelick 01] όμοιο με CSR: μπλοκ r c αντί στοιχείων παραδοσιακός στόχος: βελτίωση επίδοσης υπολογισμών (register blocking) ειδικές εκδόσεις SpMxV γιά r c πιθανό padding 46 93 0 0 0 0 24 56 86 82 0 0 0 0 53 16 0 0 0 0 19 79 0 0 0 0 0 0 71 0 0 0 A = 0 0 86 17 24 76 0 0 0 0 39 22 30 33 0 0 0 0 0 0 18 0 79 12 0 0 0 0 0 78 10 53 brow ptr : 0 2 3 5 7 bcol ind : (0 6 4 2 4 4 6) blocks : 46 93 86 82 24 56 53 16 19 79 71 0 86 17 39 22 24 76 30 33 18 0 0 78 79 12 10 53 bval : ( 46 93 86 82 24 56 53 16 19 79 71 00 ) 13 / 43
Σχήμα BCSR Blocked CSR [Im and Yelick 01] όμοιο με CSR: μπλοκ r c αντί στοιχείων παραδοσιακός στόχος: βελτίωση επίδοσης υπολογισμών (register blocking) ειδικές εκδόσεις SpMxV γιά r c πιθανό padding 46 93 0 0 0 0 24 56 86 82 0 0 0 0 53 16 0 0 0 0 19 79 0 0 0 0 0 0 71 0 0 0 A = 0 0 86 17 24 76 0 0 0 0 39 22 30 33 0 0 0 0 0 0 18 0 79 12 0 0 0 0 0 78 10 53 brow ptr : 0 2 3 5 7 bcol ind : (0 6 4 2 4 4 6) blocks : 46 93 86 82 24 56 53 16 19 79 71 0 86 17 39 22 24 76 30 33 18 0 0 78 79 12 10 53 bval : ( 46 93 86 82 24 56 53 16 19 79 71 00 ) 13 / 43
Σχήμα BCSR Blocked CSR [Im and Yelick 01] όμοιο με CSR: μπλοκ r c αντί στοιχείων παραδοσιακός στόχος: βελτίωση επίδοσης υπολογισμών (register blocking) ειδικές εκδόσεις SpMxV γιά r c πιθανό padding A = 46 93 0 0 0 0 24 56 86 82 0 0 0 0 53 16 0 0 0 0 19 79 0 0 0 0 0 0 71 0 0 0 0 0 86 17 24 76 0 0 0 0 39 22 30 33 0 0 0 0 0 0 18 0 79 12 0 0 0 0 0 78 10 53 brow ptr : 0 2 3 5 7 bcol ind : (0 6 4 2 4 4 6) blocks : 46 93 86 82 24 56 53 16 19 79 71 0 86 17 39 22 24 76 30 33 18 0 0 78 79 12 10 53 bval : ( 46 93 86 82 24 56 53 16 19 79 71 00 ) 13 / 43
Παραλληλοποίηση SpMxV (σύγχρονοι πολυπύρηνοι επεξεργαστές) Διαμερισμός δεδομένων - ανά γραμμές Ισοκατανομή φόρτου εργασίας - με βάση τα μη-μηδενικά στοιχεία thread 0 thread 1 both threads * = thread 0 thread 1 14 / 43
Επίδοση SpMxV (CSR) στη βιβλιογραφία αναφέρονται πολλά προβλήματα επίδοσης εκτεταμένη μελέτη επίδοσης σε 100 πίνακες [Goumas et al 09] SpMxV είναι εφαρμογή με έντονες προσβάσεις μνήμης¹ (παραδοσιακές προσεγγίσεις βελτίωσης υπολογισμών είναι άστοχες) ¹για πίνακες μεγαλύτερους από την cache 15 / 43
Επίδοση SpMxV (CSR) στη βιβλιογραφία αναφέρονται πολλά προβλήματα επίδοσης εκτεταμένη μελέτη επίδοσης σε 100 πίνακες [Goumas et al 09] SpMxV είναι εφαρμογή με έντονες προσβάσεις μνήμης¹ (παραδοσιακές προσεγγίσεις βελτίωσης υπολογισμών είναι άστοχες) 32 28 24 20 16 12 all average 08 1 2 4 8 εφαρμογή συμπίεσης για βελτίωση επίδοσης SpMxV ¹για πίνακες μεγαλύτερους από την cache 15 / 43
Σύνολο εργασίας CSR SpMxV (γιά nnz N) Ανάλυση δεδομένων προς συμπίεση: s idx : s val : nnz : ws : μέγεθος δείκτη στήλης μέγεθος αριθμητικής τιμής μη μηδενικές αριθμητικές τιμές όγκος δεδομένων συνόλου εργασίας ws = δεδομένα δομής αριθμητικές τιμές {}}{{}}{ nnz s idx + nnz s val s idx = 32 bit s val = 64 bit = δ δομής αρ τιμές 16 / 43
Ανακεφαλαίωση Συμπίεση για βελτίωση επίδοσης εφαρμογών με έντονες προσβάσεις μνήμη Αραιοί πίνακες και SpMxV CSR, BCSR SpMxV έντονες προσβάσεις στη μνήμη CSR-DU CSR-VI CSX 17 / 43
Συμπίεση δεδομένων δομής Καθιερωμένες προσεγγίσεις βελτιστοποίησης: επιτυγχάνουν συμπίεση (εμμέσα) BCSR ένας δείκτης στήλης ανά μπλοκ αλλά: μπορεί να οδηγήσει σε αύξηση όγκου 18 / 43
Συμπίεση δεδομένων δομής Καθιερωμένες προσεγγίσεις βελτιστοποίησης: επιτυγχάνουν συμπίεση (εμμέσα) BCSR ένας δείκτης στήλης ανά μπλοκ αλλά: μπορεί να οδηγήσει σε αύξηση όγκου Κωδικοποίηση δέλτα (για δεικτες στηλών): Παράδειγμα: ci 40 41 450 1812 1840 3203 3233 3235 3241 3245 δ 40 1 409 1362 28 1363 30 2 6 4 τιμές δέλτα σε μία γραμμή: > 0 και < colind [Willcock and Lumsdaine 06] 18 / 43
Κωδικοποίηση δέλτα για δείκτες στηλών ci 40 41 450 1812 1840 δ 40 1 409 1362 28 19 / 43
Κωδικοποίηση δέλτα για δείκτες στηλών α κωδικοποίηση κάθε τιμής ξεχωριστά (fine grain) υψηλό κόστος αποσυμπίεσης Εισάγονται εντολές διακλάδωσεις στον εσωτερικό βρόχο του SpMxV ci 40 41 450 1812 1840 δ 40 1 409 1362 28 enc 40 1 409 1362 28 19 / 43
Κωδικοποίηση δέλτα για δείκτες στηλών α κωδικοποίηση κάθε τιμής ξεχωριστά (fine grain) υψηλό κόστος αποσυμπίεσης Εισάγονται εντολές διακλάδωσεις στον εσωτερικό βρόχο του SpMxV ci 40 41 450 1812 1840 δ 40 1 409 1362 28 enc 40 1 409 1362 28 β DCSR [Willcock and Lumsdaine 06] 6 εντολές για την υλοποίηση του SpMxV μοτίβα (patterns) από σύνολα εντολών πολύπλοκο, όχι portable, εξαρτάται από τον πίνακα 19 / 43
Προτεινόμενη κωδικοποίηση δέλτα για δείκτες στηλών CSR-DU: coarse-grained η γραμμή χωρίζεται σε περιοχές μεταβλητού μεγέθους (περιοχές δέλτα) μέγεθος δέλτα ανά περιοχή ci 40 41 450 1812 1840 δ 40 1 409 1362 28 enc 40 1 409 1362 28 DU 40 1 409 1362 28 εσωτερικοί βρόχοι χωρίς διακλαδώσεις μικρότερες δυνατότητες συμπίεσης μέγεθος περιοχής 19 / 43
Το σχήμα αποθήκευσης CSR-DU δεδομένα δομής πίνακας ctl: usize uflags body col_ind row_ptr 200 213 234 268 323 2002 2005 2009 usize 5 3 uflags D8 nr D16 header 200 13 21 34 55 1679 3 body (delta values) 4 20 / 43
CSR-DU επεκτάσεις αποστάσεις (άλματα) περιοχών μεγάλο μέγεθος δέλτα εξαιτίας αρχικής τιμής πεδίο ujmp στην επικεφαλίδα: απόσταση από προηγούμενη περιοχή εκτός εσωτερικού βρόχου 21 / 43
CSR-DU επεκτάσεις συνεχόμενα στοιχεία όταν τα στοιχεία είναι συνεχόμενα τα δεδομένα δομής μπορούν να παραληφθούν περιοχές με συνεχόμενα στοιχεία μέγεθος απόσταση από προηγούμενη περιοχή [Pinar and Heath 99] 567 580 581 582 583 584 585 732 22 / 43
CSR-DU επεκτάσεις συνεχόμενα στοιχεία όταν τα στοιχεία είναι συνεχόμενα τα δεδομένα δομής μπορούν να παραληφθούν περιοχές με συνεχόμενα στοιχεία μέγεθος απόσταση από προηγούμενη περιοχή [Pinar and Heath 99] κωδικοποίηση 567 580 581 582 583 584 585 732 παράμετρος seq: ελάχιστος αριθμός συνεχόμενων στοιχείων, για ομαδοποίηση πχ seq=7 τα στοιχεία του σχ τοποθετούνται σε περιοχές δέλτα 22 / 43
CSR-DU πειραματική αξιολόγηση Σύστημα: 2 quad-core Harpertown (2GHz, 6MB L2) C0 L1 C1 L1 C2 L1 C3 L1 Μεθοδολογία (SpMxV): σύνολο 50 πινάκων (από πραγματικές εφαρμογές) L2 L2 επαναληπτικά σύγκριση με CSR, BCSR (best) CPU CPU noseq, seq=4, seq=8 23 / 43
CSR-DU μείωση όγκου δεδομένων (σε σχέση με το CSR) CSR-DU: πίνακας dense: 249% για noseq 332% για seq μέση: 142% για noseq 193% για seq=8 211% για seq=4 BCSR: αυξάνει τον όγκο σε 28 (από τους 50) πίνακες -132% κατά μο (αύξηση) 162% στους 22 πίνακες που οδηγεί σε μείωση μόνο για 2 πίνακες καλύτερο από CSR-DU 24 / 43
CSR-DU μέση επιτάχυνση Speedup 24 22 20 18 16 14 12 10 csr bcsr csrdu (noseq) csrdu (seq=8) csrdu (seq=4) 08 1 2 4 8 Threads CSR-DU (seq = 4) 1 πυρήνας: -7% συγκριτικά με CSR 8 πυρήνες: 287% συγκριτικά με CSR, 35% συγκριτικά με BCSR 25 / 43
CSR-DU Επιλογή σχήματος 50 40 Matrices 30 20 10 csr bcsr (1x2) bcsr (1x3) bcsr (2x1) bcsr (2x2) bcsr (3x1) csrdu (noseq) csrdu (seq=8) csrdu (seq=4) 0 1 2 4 8 Threads 1 πυρήνας: CSR-DU: 18 BCSR: 15 CSR:17 8 πυρήνες: CSR-DU: 43 BCSR: 4 CSR:3 26 / 43
Ανακεφαλαίωση CSR-DU κωδικοποίηση δέλτα χοντρού κόκκου συμπίεση δεδομένων δομής γενικό σχήμα χωρισμός πίνακα σε περιοχές περιοχές δέλτα κοινό μέγεθος τιμών δέλτα περιοχές με συνεχόμενα στοιχεία ωστόσο: δεδομένα δομής αποτελούν το 1 3 του ws 27 / 43
Συμπίεση αριθμητικών τιμών Τυπικά αποτελούν το μεγαλύτερο κομμάτι του ws Η συμπίεση είναι δύσκολη (γενικά): δεν περιέχουν εγγενή πλεονασμό πληροφορίας οι πράξεις ΚΥ οδηγούν σε στρογγυλοποιημένα αποτελέσματα sign exponent (11 bit) fraction (52 bit) 63 52 0 28 / 43
Συμπίεση αριθμητικών τιμών Τυπικά αποτελούν το μεγαλύτερο κομμάτι του ws Η συμπίεση είναι δύσκολη (γενικά): δεν περιέχουν εγγενή πλεονασμό πληροφορίας οι πράξεις ΚΥ οδηγούν σε στρογγυλοποιημένα αποτελέσματα sign exponent (11 bit) fraction (52 bit) 63 52 0 Σημαντικός αριθμός πινάκων με μικρό αριθμό μοναδικών τιμών (πλεονάζουσα πληροφορία) 28 / 43
Το σχήμα CSR-VI (CSR with Values Indexed) Έμμεση πρόσβαση τιμών CSR value structure values: 54 11 63 77 88 11 29 37 29 90 11 45 11 29 37 11 nnz CSR-VI value structure val_ind: 0 1 2 3 4 1 5 6 5 7 1 8 1 5 6 1 vals_unique: 54 11 63 77 88 29 37 90 45 uv 29 / 43
Το σχήμα CSR-VI (CSR with Values Indexed) Έμμεση πρόσβαση τιμών CSR value structure values: 54 11 63 77 88 11 29 37 29 90 11 45 11 29 37 11 nnz CSR-VI value structure val_ind: 0 1 2 3 4 1 5 6 5 7 1 8 1 5 6 1 vals_unique: 54 11 63 77 88 29 37 90 45 uv 29 / 43
Το σχήμα CSR-VI (CSR with Values Indexed) Έμμεση πρόσβαση τιμών CSR value structure values: 54 11 63 77 88 11 29 37 29 90 11 45 11 29 37 11 nnz CSR-VI value structure val_ind: 0 1 2 3 4 1 5 6 5 7 1 8 1 5 6 1 vals_unique: 54 11 63 77 88 29 37 90 45 Ογκος δεδομένων CSR : nnz s val CSR-VI : uv s val + nnz s vi (s vi : μέγεθος δείκτη τιμής) s vi μικρότερος ακέραιος που μπορεί να δεικτοδοτήσει uv στοιχεία (πχ αν έχω 256 μοναδικές τιμές, s vi = 1 byte) uv 29 / 43
Το σχήμα CSR-VI (συζήτηση) Καταλληλότητα πινάκων (total-to-unique) ttu = nnz uv Υλοποίηση/επίδοση SpMxV for (i=0; i < N; i++) for (j=row_ptr[i]; j < row_ptr[i+1]; j++) y[i] += vals_unique[val_ind[j]] * x[col_ind[j]]; επιπλέον (έμμεση) πρόσβαση στη μνήμη τυχαία πρόσβαση στο vals_unique 30 / 43
CSR-VI πειραματική αξιολόγηση Σύστημα: 2 4 πυρήνες (ομοίως με CSR-DU) C0 L1 C1 L1 C2 L1 C3 L1 Μεθοδολογία (SpMxV): L2 L2 50 22 πίνακες (ttu 5) CSR-DUVI (συνδυασμός DU,VI) CPU CPU 31 / 43
CSR-VI/CSR-DUVI μείωση όγκου δεδομένων CSR-VI: μο: 392 % μέγιστη: 588 % ελάχιστη: 203 % CSR-DUVI: μο: 524 % (noseq) μο: 573 % (seq=4) μέγιστη: 881 % (seq=4) ελάχιστη: 283 % 32 / 43
CSR-VI μέση επιτάχυνση Speedup 28 26 24 22 20 18 16 14 12 csr csrvi 1 1 2 4 8 Threads 1 πυρήνας: 124% συγκριτικά με CSR 8 πυρήνες: 517% συγκριτικά με CSR 8 πυρήνες: 1 πίνακας με χειρότερη επίδοση (από CSR) 33 / 43
CSR-DUVI μέση επιτάχυνση 40 35 csr csrduvi (noseq) csrduvi (seq=8) csrduvi (seq=4) Speedup 30 25 20 15 1 1 2 4 8 Threads 8 πυρήνες: 123% συγκριτικά με CSR 8 πυρήνες: κανένας πίνακας με χειρότερη επίδοση (από CSR) μεγάλη μείωση όγκου δεδομένων ορισμένοι πίνακες χωράνε (σε σημαντικό ποσοστό) στη L2 34 / 43
Ανακεφαλαίωση CSR-DU δεδομένα δομής γενικό σχήμα περιοχές κωδικοποίηση δέλτα συνεχόμενα στοιχεία CSR-VI αριθμητικές τιμές ειδικό σχήμα κοινές τιμές έμμεσες αναφορές Πειραματική αξιολόγηση (Happertown) σημαντικά οφέλη στη συνέχεια: Πλαίσιο CSX προσαρμόσιμος SpMxV πυρήνας 35 / 43
CSX: Κίνητρο και προσέγγιση Κανονικότητες και σχήματα αποθήκευσης BCSR, [Pinar and Heath 99], DIAG πολλαπλές κανονικότητες composite formats [Agarwal et al 92] πολλαπλοί πίνακες κάθενας σε διαφορετικό σχήμα A x = (A 0 + A 1 ) x = A 0 x + A 1 x απαιτήσεις υποστήριξη πολλαπλών κανονικοτήτων επεκτασιμότητα προσαρμοσιμότητα 36 / 43
CSX: Κίνητρο και προσέγγιση Κανονικότητες και σχήματα αποθήκευσης BCSR, [Pinar and Heath 99], DIAG πολλαπλές κανονικότητες composite formats [Agarwal et al 92] πολλαπλοί πίνακες κάθενας σε διαφορετικό σχήμα A x = (A 0 + A 1 ) x = A 0 x + A 1 x απαιτήσεις υποστήριξη πολλαπλών κανονικοτήτων επεκτασιμότητα προσαρμοσιμότητα προσέγγιση σχήμα CSX (Compressed Sparse extended) επέκταση/γενίκευση περιοχών CSR-DU δημιουργία ειδικευμένου κώδικα SpMxV (στο χρόνο εκτέλεσης) ενοποιημένη ανίχνευση 36 / 43
Κανονικότητες CSX x x x περιοχές με γενικό τύπο για κάθε τύπο υλοποίηση της απαραίτητης πράξης (πχ SpMxV) 37 / 43
Κανονικότητες CSX x x x x x (y, x + i) (y, x) (y, x + 1) (y, x + 2) περιοχές με γενικό τύπο για κάθε τύπο υλοποίηση της απαραίτητης πράξης (πχ SpMxV) τύποι περιοχών περιοχές δέλτα συνεχόμενα οριζόντια στοιχεία 37 / 43
Κανονικότητες CSX x x x x x (y, x + i δ) (y, x) (y, x + δ) (y, x + 2 δ) περιοχές με γενικό τύπο για κάθε τύπο υλοποίηση της απαραίτητης πράξης (πχ SpMxV) τύποι περιοχών περιοχές δέλτα συνεχόμενα οριζόντια στοιχεία με σταθερή απόσταση δ 37 / 43
Κανονικότητες CSX x x x x x (y, x + i δ) x x x x x x x x x x x x x x x (y + i δ, x) (y + i δ, x + i δ) (y i δ, x + i δ) περιοχές με γενικό τύπο για κάθε τύπο υλοποίηση της απαραίτητης πράξης (πχ SpMxV) τύποι περιοχών περιοχές δέλτα συνεχόμενα οριζόντια στοιχεία με σταθερή απόσταση δ διαφορετικές κατευθύνσεις ειδικευμένος κώδικας ανάλλογα με τους τύπους περιοχών του πίνακα 37 / 43
Ανίχνευση κανονικοτήτων (1, 3) (2, 1) (2, 2) (2, 3) (2, 4) 1 1 (1, 3) (2, 1) (2, 2) (2, 3) (2, 4) ίδια σειρά με την αποθήκευση εύκολη ανίχνευση 38 / 43
Ανίχνευση κανονικοτήτων (1, 1) (1, 3) (2, 2) (3, 3) (4, 4) (1, 1) (1, 3) (2, 2) (3, 3) (4, 4) ίδια σειρά με την αποθήκευση εύκολη ανίχνευση 38 / 43
Ανίχνευση κανονικοτήτων (1, 1) (1, 3) (2, 2) (3, 3) (4, 4) i =nrows+j i j = min(i, j) (4, 1) (2, 1) (4, 2) (4, 3) (4, 4) (1, 1) (1, 3) (2, 2) (3, 3) (4, 4) (4, 1) (2, 1) (4, 2) (4, 3) (4, 4) sort (2, 1) (4, 1) (4, 2) (4, 3) (4, 4) ίδια σειρά με την αποθήκευση εύκολη ανίχνευση μετασχηματισμός (ανάλλογα με κανονικότητα) ταξινόμηση μετασχηματισμοί για διαφορετικές κανονικότητες (πχ μπλοκ) 38 / 43
Κωδικοποίηση πινάκων Η πλειονότητα: δ = 1 HORIZ,DIAG,VERT αλλά: DU8 DU16 DU32 Diagonal (1) Diagonal (11) Horizontal (1) Horizontal (2) Anti-diagonal (1) Vertical (1) 100 90 80 70 60 50 40 30 20 10 0 ASIC_680ks stomach Chebyshev4 pre2 Si87H76 msdoor rajat31 39 / 43
Πειραματική αξιολόγηση 15 14 13 12 11 10 09 15 14 13 12 11 10 09 stomach Si87H76 FEM_3D_thermal2 Ga41As41H72 cage13 rajat31 CSX (delta) CSX (horiz) CSX (full) G3_circuit F1 atmosmodj fdif202x202x102 40 / 43
Μελλοντικές κατευθύνσεις Ανακεφαλαίωση Συμπίεση CSR-DU CSR-VI CSX Μελλοντικές κατευθύνσεις: Πλαίσιο για προσαρμόσιμο πυρήνα SpMxV πίνακας (πχ συμμετρία πίνακα, τύπος δεδομένων) υποκείμενη αρχιτεκτονική (πχ αριθμός νημάτων,χαρακτηριστικά) Υποστήριξη διαφορετικών πράξεων αραιών πινάκων CSX Εφαρμογή τεχνικών συμπίεσης και άλλες κλάσεις υπολογισμών γράφοι βάσεις δεδομένων 41 / 43
Δημοσιεύσεις Improving the Performance of Multithreaded Sparse Matrix-Vector Multiplication using Index and Value Compression K Kourtis, G Goumas and N Koziris, ICPP08 Optimizing Sparse Matrix-Vector Multiplication Using Index and Value Compression K Kourtis and G Goumas and N Koziris CF08 Understanding the Performance of Sparse Matrix-Vector Multiplication G Goumas, K Kourtis, N Anastopoulos, Vs Karakasis and N Koziris PDP08 Performance Evaluation of the Sparse Matrix-Vector Multiplication on Modern Architectures Georgios Goumas, Kornilios Kourtis, Nikos Anastopoulos, Vasileios Karakasis and Nectarios Koziris The Journal of Supercomputing (October 2009) Υπό κρίση: Exploiting Compression Opportunities to Improve SpMxV Performance on Shared Memory Systems K Kourtis and G Goumas and N Koziris TACO CSX: An Extended Compression Format for SpMxV on Shared Memory Systems Kornilios Kourtis, Vasileios Karakasis, Georgios Goumas, and Nectarios Koziris SC10 42 / 43
EOF The First Rule of Program Optimization: Don t do it The Second Rule of Program Optimization (for experts only!): Don t do it yet - Michael A Jackson 43 / 43