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

Καθηγητής: Νεκτάριος Κοζύρης ( nkoziris@cslab.ece.ntua.gr )
Επικοινωνία: Γιώργος Γκούμας (goumas@cslab.ece.ntua.gr), Νίκος Αναστόπουλος (anastop@cslab.ece.ntua.gr)
Άτομα: 1

Γενικά

Οι αλγεβρικές πράξεις με αραιούς (sparse) πίνακες (π.χ. πολλαπλασιασμός αραιού πίνακα με διάνυσμα) βρίσκονται στην καρδιά των πλέον υπολογιστικά απαιτητικών εφαρμογών που εκτελούνται αυτή τη στιγμή στα υπερυπολογιστικά συστήματα παγκοσμίως. Για το λόγο αυτό η βελτιστοποίηση της εκτέλεσης των αλγεβρικών πράξεων που περιλαμβάνουν αραιούς πίνακες είναι ζωτικής σημασίας και αποτελεί ιδιαίτερα ενεργό πεδίο στην έρευνα των εφαρμογών που απαιτούν υψηλές επιδόσεις. Καθώς οι αραιοί πίνακες περιλαμβάνουν αριθμό μη μηδενικών στοιχείων σημαντικά μικρότερο από το μέγεθός τους, έχουν προταθεί διάφορες μορφές αποθήκευσης των αραιών πινάκων (π.χ. Compressed Row Storage - CRS, Block Compressed Row Storage - BCRS, Compressed Diagonal Storage - CDS, Jagged Diagonal Storage - JDS, κ.ά.).

Ζητούμενο

Στο πλαίσιο της προτεινόμενης διπλωματικής εργασίας θα πραγματοποιηθεί υλοποίηση και εκτέλεση αλγεβρικών πράξεων με αραιούς πίνακες σε αρχιτεκτονικές υψηλών επιδόσεων με πολλαπλές ροές εκτέλεσης (multicores, SMTs, SMPs,PC Clusters). Θα αξιολογηθεί η επίδραση της μορφής αποθήκευσης του αραιού πίνακα στην επίδοση των προγραμμάτων, χρησιμοποιώντας μια σειρά από μετρικές απόδοσης, όπως ο χρόνος εκτέλεσης, τα cache misses, TLB misses, branch mispredictions κ.λπ., που είναι δυνατόν να συλλεχθούν από μηχανισμούς μέτρησης συμβάντων που ενσωματώνουν οι σύγχρονοι επεξεργαστές (performance counters). Θα αναζητηθούν τεχνικές βελτιστοποίησης των εφαρμογών μέσω εναλλακτικών τρόπων αποθήκευσης, μετασχηματισμού του κώδικα εκτέλεσης και χρήσης τεχνικών που αξιοποιούν τα χαρακτηριστικά της πλατφόρμας εκτέλεσης (π.χ. communication overlapping, software prefetching κ.λπ.).

Στάδια υλοποίησης

  1. Μελέτη της σχετικής βιβλιογραφίας
  2. Υλοποίηση πράξεων αραιών πινάκων για όλες τις μορφές αποθήκευσης
  3. Αξιολόγηση αποτελεσμάτων - Εξαγωγή συμπερασμάτων
  4. Προτάσεις για βελτιστοποιήσεις
  5. Συγγραφή εργασίας

Προαπαιτούμενες Γνώσεις

Προγραμματισμός σε γλώσσα C, βασικές γνώσεις σε παράλληλη επεξεργασία και αρχιτεκτονική υπολογιστών

Βιβλιογραφία και σύνδεσμοι