Προγραμματισμός Συστημάτων¶
Επίσημο περίγραμμα μαθήματος του ΤΜΗΥΠ (Πανεπιστήμιο Πατρών), όπως δημοσιεύεται στη σελίδα του μαθήματος και στο συνημμένο αρχείο «Περίγραμμα Μαθήματος». Το κείμενο παρατίθεται αυτούσιο, χωρίς τα πρότυπα οδηγιών του εντύπου.
Στόχοι¶
- Με την επιτυχή ολοκλήρωση του μαθήματος, οι φοιτητές/φοιτήτριες θα είναι σε θέση να:
- Ερμηνεύουν τις ποσοτικές αρχές σχεδίασης αρχιτεκτονικών συστημάτων (π.χ., νόμος του Amdahl, roofline).
- Αναλύουν την απόδοση υπολογιστικών συστημάτων σε επίπεδο FLOP/s, memory bandwidth και I/O throughput.
- Περιγράφουν και συγκρίνουν διαφορετικά μοντέλα ταξινόμησης παράλληλων συστημάτων (Flynn, SIMD/MIMD, NUMA/SMP).
- Εξηγούν προβλήματα συνοχής (coherence) και consistency σε πολυπύρηνους επεξεργαστές, και φαινόμενα όπως το false sharing.
- Αξιολογούν αρχιτεκτονικές επιλογές για επιταχυντές, GPUs, DSAs (Αρχιτεκτονικές Συγκεκριμένου Τομέα) και τα τοπολογικά χαρακτηριστικά των δικτύων πολυεπεξεργαστών.
- Συγκρίνουν και ερμηνεύουν διαφορετικά μοντέλα απόδοσης σε πολυεπεξεργαστικά συστήματα.
- Αξιοποιούν την απόδοση ενός υπολογιστικού συστήματος με κατάλληλες τεχνικές παράλληλου προγραμματισμού.
- Διακρίνουν τα διαφορετικά είδη εξαρτήσεων δεδομένων.
- Εκμεταλλεύονται τις δυνατότητες του μεταγλωττιστή για παραγωγή αποδοτικού κώδικα.
- Αναπτύξουν μια παράλληλη εφαρμογή με χρήση των προγραμματιστικών μοντέλων POSIX Threads και OpenMP
- Χρησιμοποιούν και αξιοποιούν εργαλεία μέτρηση απόδοσης ενός κώδικα.
- Περιγράφουν, αναλύουν και βελτιώνουν παράλληλο κώδικα.
Περιεχόμενο (ύλη)¶
Το μάθημα εξετάζει τις αρχές σχεδίασης και τις συστημικές πτυχές της παράλληλης υπολογιστικής από την πλευρά της αρχιτεκτονικής υπολογιστών και της παράλληλης επεξεργασίας. Δίνεται ιδιαίτερη έμφαση στην ποσοτική ανάλυση της απόδοσης, αξιοποιώντας μετρικές όπως FLOP/s, latency και διεκπεραιωτική ικανότητα (throughput). Οι φοιτητές/φοιτήτριες εισάγονται σε θεμελιώδεις νόμους όπως τον νόμο του Amdahl, καθώς και σε μοντέλα όπως το roofline, που επιτρέπουν την κατανόηση των περιορισμών και των δυνατοτήτων απόδοσης ενός συστήματος με βάση τα χαρακτηριστικά του υλικού και του λογισμικού. Στη συνέχεια, αναλύονται οι βασικές ταξινομήσεις και αρχιτεκτονικές παραλληλίας: από τα απλά SIMD μονοπάτια μέχρι τα MIMD συστήματα με πολλαπλούς πυρήνες και ανεξάρτητες μονάδες μνήμης.
Παρουσιάζονται οι αρχές σχεδίασης συμμετρικών πολυεπεξεργαστών (SMPs), οι τρόποι οργάνωσης της ιεραρχίας κρυφής μνήμης, καθώς και οι μηχανισμοί συνοχής και συνέπειας (coherence και consistency), με έμφαση σε φαινόμενα όπως το false sharing, που επηρεάζουν σημαντικά την απόδοση πολυνηματικών προγραμμάτων. Παρουσιάζονται τα συστήματα NUMA και η επίδρασή τους στην προσβασιμότητα της μνήμης και στη συμπεριφορά των νημάτων. Τέλος, αναλύονται οι αρχιτεκτονικές συγκεκριμένου τομέα (Domain-Specific Architectures) όπως τα systolic arrays και άλλες μορφές DSAs, καθώς και GPU αρχιτεκτονικές που αξιοποιούνται σε εφαρμογές υψηλής απόδοσης και τεχνητής νοημοσύνης.
Εξετάζονται τεχνικές ανάπτυξης αποδοτικού κώδικα σε σύγχρονα υπολογιστικά συστήματα, αξιοποιώντας την ιεραρχία μνήμης, αναλύοντας τις εξαρτήσεις δεδομένων και χρησιμοποιώντας διανυσματικές εντολές, με άμεση χρήση τους ή μέσω του μεταγλωττιστή. Εξετάζονται βασικά στοιχεία προγραμματισμού συστημάτων, όπως διεργασίες και νήματα επιπέδου πυρήνα και χρήστη, και πως αυτά αξιοποιούνται για την εκμετάλλευση πολυεπεξεργαστικού υλικού. Πραγματοποιείται πρακτική μελέτη των νημάτων του προτύπου POSIX και του μοντέλου προγραμματισμού OpenMP και εξετάζεται η αξιολόγηση της απόδοσης των προγραμμάτων χρησιμοποιώντας εργαλεία που βασίζονται σε μετρητές απόδοσης των σύγχρονων επεξεργαστών.
Αξιολόγηση¶
Η αξιολόγηση πραγματοποιείται στην ελληνική γλώσσα και περιλαμβάνει εργασίες και τελική γραπτή εξέταση. Η αξιολόγηση της εμπέδωσης της θεωρίας γίνεται μέσω της τελικής γραπτής εξέτασης, η οποία περιλαμβάνει ερωτήσεις πολλαπλής επιλογής, σύντομης απάντησης, ανάπτυξης και επίλυσης προβλημάτων. Μετά την ανακοίνωση των αποτελεσμάτων, οι φοιτητές/φοιτήτριες έχουν τη δυνατότητα να δουν το γραπτό τους, να κατανοήσουν τα λάθη τους και τον τρόπο βαθμολόγησης.
Βιβλιογραφία¶
- Διαφάνειες του μαθήματος (αναρτώνται στο eClass).
- «Αρχιτεκτονική Υπολογιστών: Μια Ποσοτική Προσέγγιση», J. Hennessy και D. Patterson, 6η Αμερικάνικη Έκδοση Εκδόσεις Κλειδάριθμος, 2020. (Κωδικός Βιβλίου στον Εύδοξο: 94644180).
- «Εισαγωγή στον Παράλληλο Προγραμματισμό», Peter Pacheco, Matthew Malensek, 2η Αμερικάνικη Έκδοση, Εκδόσεις Κλειδάριθμος, 2026 (Κωδικός Βιβλίου στον Εύδοξο: 143563108).
- «Εισαγωγή στην Παράλληλη Επεξεργασία», Α. Μάργαρης, Εκδόσεις Τζιόλα, 2024 (Κωδικός Βιβλίου στον Εύδοξο: 133030593).
- «Computer Systems: A Programmer's Perspective», R. E. Bryant και D. R. O’Hallaron, Pearson, 2015.
Συναφή επιστημονικά περιοδικά:
- IEEE Micro
- IEEE Transactions on Computers
- ACM Transactions on Parallel Computing
- ACM Transactions on Architecture and Code Optimization