Παρουσίαση/Προβολή

Εικόνα επιλογής

Ειδικά Θέματα Παράλληλου Προγραμματισμού

(INF489) -  Ανδρέας-Αλέξανδρος Βασιλάκης

Περιγραφή Μαθήματος

Καλωσήρθατε στην ιστοσελίδα του μαθήματος "Ειδικά Θέματα Παράλληλου Προγραμματισμού (Α' Τομέα)" του Τμήματος Πληροφορικής του Οικονομικού Πανεπιστημίου Αθηνών. Το μάθημα διδάσκεται ως επιλογής του προπτυχιακού προγράμματος σπουδών του Τμήματος Πληροφορικής.

Ημερομηνία δημιουργίας

Σάββατο, 1 Οκτωβρίου 2022

  • Περιεχόμενο μαθήματος

    Βασικές αρχές παραλληλισμού. Επίδοση, επιτάχυνση και αποδοτικότητα των παράλληλων αλγορίθμων. Οργάνωση κοινόχρηστης μνήμης. Συνοχή (coherency) και συνέπεια (consistency) μνήμης. Στοιχεία οργάνωσης κατανεμημένης μνήμης. Δίκτυο διασύνδεσης, τοπολογίες και διαδρόμηση. Τεχνικές μεταγωγής υψηλών επιδόσεων. Κατανεμημένη κοινή μνήμη και ανομοιόμορφη προσπέλαση μνήμης (NUMA). Πολυπύρηνες αρχιτεκτονικές. Οργανώσεις SIMD και SIMT. Αρχιτεκτονικές μονάδων επιτάχυνσης γραφικών (GPUs). Aρχές και γλώσσες παράλληλου προγραμματισμού. Προγραμματισμός σε κοινό χώρο διευθύνσεων (νήματα, OpenMP/C++ threads). Προγραμματισμός με μεταβίβαση μηνυμάτων (MPI). Προγραμματισμός γενικού σκοπού με μονάδες επιτάχυνσης γραφικών, τα μοντέλα CUDA/OpenCL. Ατομικές πράξεις, συγχρονισμός (mutex, spinlock, semaphore), αποφυγή καταστάσεων ανταγωνισμού και αδιεξόδων. Διαχείριση δεδομένων στην cache/τοπική κοινόχρηστη μνήμη. Αποδοτική υλοποίηση παράλληλων αλγορίθμων σε host και GPU με τις παραπάνω τεχνικές.

    Διδάσκοντες

    Αναστάσιος Γκαραβέλης (agkar [at] aueb.gr). Ώρες γραφείου: Δευτέρα 18:00-19:00, Τετάρτη 15:00-16:00 (Τροίας 2, 3ος όρ., Εργαστήριο 301)

    Μαθησιακοί στόχοι

    Σχεδόν όλα τα υπολογιστικά συστήματα είναι πλέον παράλληλα, έχοντας πολλαπλούς επεξεργαστές ή πυρήνες, οι οποίοι μπορούν να εργαστούν ταυτοχρονισμένα για την επίλυση ενός προβλήματος. Το μάθημα αυτό αποτελεί μία εισαγωγή στην οργάνωση και τη λειτουργία των παράλληλων υπολογιστών και στις αρχιτεκτονικές τους κατηγορίες. Ο μηχανικός θα πρέπει να γνωρίζει τα προβλήματα που εμφανίζονται και τις λύσεις που μπορεί να δώσει, καθώς και να ζυγίζει τα πλεονεκτήματα και τα μειονεκτήματα των τεχνικών που εμπλέκονται. Επιπλέον, διδάσκεται ο παράλληλος προγραμματισμός που αποτελεί σήμερα απαραίτητο προσόν. Εκτός από τις γενικές γνώσεις που δίνονται ώστε να μπορεί κανείς να προγραμματίσει παράλληλα, υπάρχει και πρακτική εξάσκηση με δημοφιλή και ευρέως διαθέσιμα προγραμματιστικά μοντέλα που χρησιμοποιούνται διεθνώς.

    Μετά την επιτυχή ολοκλήρωση του μαθήματος, οι φοιτητές θα είναι σε θέση:

    • Να μελετούν και να κατανοούν την οργάνωση ενός παράλληλου υπολογιστή.
    • Να αναλύουν τα πλεονεκτήματα και τα μειονεκτήματα σε θέματα αρχιτεκτονικών επιλογών.
    • Να συνθέτουν την οργάνωση ενός παράλληλου συστήματος βάσει στόχων ή προδιαγραφών.
    • Να κατανοούν τα προβλήματα της ιεραρχίας της μνήμης, όπως η συνοχή των κρυφών μνημών ή η συνέπεια της μνήμης.
    • Να κατανοούν και να αναλύουν την τοπολογία και τις τεχνικές μεταγωγής και διαδρόμησης σε δίκτυα διασύνδεσης επεξεργαστών.
    • Να συνθέτουν παράλληλο λογισμικό.
    • Να προγραμματίζουν με το μοντέλο κοινόχρηστου χώρου διευθύνσεων, κάνοντας χρήση νημάτων και OpenMP.
    • Να προγραμματίζουν με το μοντέλο μεταβίβασης μηνυμάτων, κάνοντας χρήση του MPI.
    • Να αναλύουν τις επιδόσεις ενός παράλληλου συστήματος.

    Μέθοδοι διδασκαλίας

    Το μάθημα περιλαμβάνει δύο δίωρες διαλέξεις την εβδομάδα (Δευτέρα & Τετάρτη 7-9, αίθουσα Α47) και επικουρική διδασκαλία, με προαιρετική παρακολούθηση, στα οποία οι φοιτητές θα έχουν την ευκαιρία να εξοικειωθούν με την χρήση εργαλείων ανάπτυξης παράλληλου προγραμματισμού, να πάρουν απάντηση σε πρακτικές απορίες, να επιλύσουν στοχευμένες ασκήσεις και να λάβουν συμβουλές για τις προγραμματιστικές εργασίες. Η έναρξη των εργαστηριακών μαθημάτων θα γίνει μετά την παράδοση ενός αριθμού διαλέξεων.

    Βιβλιογραφία

    Ως βασικά εγχειρίδια του μαθήματος προτείνονται τα:

    • “Παράλληλα Συστήματα και Προγραμματισμός”, Β. Δημακόπουλος(2017).
    • “Εισαγωγή στον παράλληλο προγραμματισμό”, P. Pacheco (2015).
    • “Εισαγωγή στον παράλληλο υπολογισμό”, Πάντζιου, Μάμαλης, Τομαράς(2013).
    • “Προγραμματισμός και αρχιτεκτονική συστημάτων παράλληλης επεξεργασίας” Παπαδάκης & Διαμαντάρας (2012).
    • “Προγραμματισμός μαζικά παράλληλων επεξεργαστών”, D. B. Kirk, W-m. W. Hwu (2010).

    Τέλος, θα δοθούν σημειώσεις και βοηθητικό υλικό σε ψηφιακή μορφή στους φοιτητές όπως εγχειρίδια παράλληλου προγραμματισμού, link σε αποθετήρια ανοιχτού κώδικα, case studies και χρήσιμα links.

    Προαπαιτούμενα

    Το μάθημα απευθύνεται κυρίως σε φοιτητές που διανύουν το 3ο ή μεγαλύτερο έτος σπουδών τους, με εμπειρία στον προγραμματισμό σε γλώσσα C/C++, τα λειτουργικά συστήματα και την αρχιτεκτονική υπολογιστών.

    Μέθοδοι αξιολόγησης

    Ο τελικός βαθμός κάθε φοιτητή βασίζεται σε δύο κριτήρια:

    • Απόδοση στις εργασίες (30%)
    • Τελικές γραπτές εξετάσεις (70%)

    Απαραίτητη προϋπόθεση για να περάσει ο φοιτητής το μάθημα είναι η απόδοσή του σε κάθε κατηγορία των κριτηρίων βαθμολόγησης να καλύπτει τουλάχιστον τη βάση. Οι προγραμματιστικές εργασίες είναι υποχρεωτικές και ο βαθμός τους αποτελεί το 30% του τελικού βαθμού, με το βαθμό των γραπτών εξετάσεων να αποτελεί το υπόλοιπο 70%. Αν, όμως, ο βαθμός των γραπτών εξετάσεων είναι μικρότερος του 3.5/7.0, οι βαθμοί των εργασιών δεν προσμετρώνται και ο τελικός βαθμός ισούται με το βαθμό των γραπτών εξετάσεων. Η βαθμολόγηση της προγραμματιστικής εργασίας περιλαμβάνει σύντομη ατομική προφορική εξέταση.