Ο υπολογιστικός πυρήνας του Πολλαπλασιασμού Αραιού Πίνακα με Διάνυσμα
επιταχύνεται ελάχιστα σε συστήματα κοινής μνήμης με πολλαπλές υπολογιστικές μο-
νάδες. Προηγούμενη έρευνα έχει δείξει ότι μια αποτελεσματική στρατηγική για να
βελτιωθεί η επίδοση του προβλήματος είναι η μείωση του όγκου δεδομένων που συμ-
μετέχουν στους υπολογισμούς. Τα αποθηκευτικά σχήματα για τα μη-μηδενικά στοι-
χεία των αραιών πινάκων, που χρησιμοποιούνται για να μειώσουν τον αρχικό όγκο δε-
δομένων του πίνακα, εκμεταλλεύονται κανονικότητες (δομές που συναντιούνται συ-
χνά) μέσα στον πίνακα. Το αποθηκευτικό σχήμα Compressed Sparse eXtended (CSX)
αξιοποιεί αυτές τις δομές εφαρμόζοντας μια επιθετική τεχνική συμπιέσης ώστε να
ελαττώσει το μέγεθος δεδομένων του αραιού πίνακα. Ο σκοπός της συγκεκριμένης
διπλωματικής εργασίας είναι να ερευνήσει την επίδοση του CSX σε πολυπύρηνες αρ-
χιτεκτονικές και να προτείνει ορισμένες βελτιώσεις στην τεχνική συμπίεσης.
Το κυρίως αντικείμενο της συγκεκριμένης διπλωματικής εργασίας είναι η αξιο-
λόγηση της ευριστικής μεθόδου που χρησιμοποιείται στο CSX, η οποία επιλέγει κα-
νονικότητες (κυρίως μπλοκ) που χρησιμοποιούνται στη συμπίεση, μέσα από εκτενείς
μετρήσεις σε μια ποικιλία από πίνακες και πολυπύρηνες αρχιτεκτονικές. Πρώτα, υλο-
ποιήθηκε μια επέκταση στον αρχικό κώδικα που επιτρέπει τον διαχωρισμό των μεγά-
λων μπλοκ σε μικρότερα, τα οποία εμφανίζονται πιο συχνά σε έναν πίνακα. Η νέα
αυτή επέκταση επιφέρει καλύτερη συμπίεση, εφόσον περισσότερα μη-μηδενικά στοι-
χεία του πίνακα κωδικοποιούνται σε μπλοκ. Στη συνέχεια, ερευνήθηκε εξοντωτικά το
πεδίο όλων των διαφορετικών κωδικοποιήσεων, ώστε να προσδιοριστούν οι παράμε-
τροι που επηρεάζουν την επίδοση του SpMxV και να αξιολογηθεί η ευριστική μέθοδος
που χρησιμοποιείται στο σχήμα CSX.
Η συνεισφορά αυτής της διπλωματικής είναι διπλή. (αʹ) Η επέκταση που έγινε στο
πεδίο των μπλοκ οδήγησε σε βελτίωση της επίδοσης, αφού επιτυγχάνεται μεγαλύτε-
ρος βαθμός συμπίεσης. (βʹ) Η αξιολόγηση της ευριστικής προσέφερε μια επιπρόσθετη
κατανόηση για τα χαρακτηριστικά που επηρεάζουν την επίδοση και θα βοηθήσει στην
δημιουργία μιας πιο εξελιγμένης ευριστικής μεθόδου που θα προσαρμόζεται καλύτερα
στην εκάστοτε αρχιτεκτονική.
The Sparse Matrix Vector Multiplication (SpMxV) kernel scales poorly on shared
memory systems with multiple processing units. Previous research has demonstrated
that an effective strategy to improve the performance of the kernel is to drastically
reduce the data volume involved in the computations. This can be achieved by exploiting
substructures (patterns of non-zero elements occurring frequently) within the
sparse matrix, in order to reduce the initial data volume of the matrix. The Compressed
Sparse eXtended storage format (CSX) exploits these substructures by applying aggressive
compression in the indexing metadata of the sparse matrix. The purpose of this
diploma thesis is to study the performance of CSX on multicore architectures and
propose some improvements on the compression technique.
The major subject of this diploma thesis is the evaluation of the heuristic method
used in CSX, which selects the patterns (basically blocks) that will be used for compression,
through extensive measurements on a variety of sparse matrices and multicore
architectures. Firstly, an extension to the initial code has been implemented that allows
the splitting of larger blocks into smaller ones that occur more frequently in the matrix.
This new extension provides better compression results, since more non-zero elements
of the matrix can be encoded into patterns. Secondly, we explore the search space of
the different matrix encodings exhaustively in order to determine the parameters that
affect performance of SpMxV and evaluate the heuristic used in the CSX format.
The contribution of this diploma thesis is two-fold: (αʹ) Our extension for splitting
large blocks leads to performance improvements, since we achieve a higher level of
compression, (βʹ) The evaluation of the CSX heuristic provided us with a better understanding
of the performance characteristics of the different matrix encodings, which
will help us to implement a more sophisticated heuristic that will better adapt to the
underlying architecture.