Παράλληλοι Αλγόριθμοι και Συστήματα (MAE840)

Από Wiki Τμήματος Μαθηματικών

Γενικά

Σχολή Σχολή Θετικών Επιστημών
Τμήμα Τμήμα Μαθηματικών
Επίπεδο Σπουδών Προπτυχιακό
Κωδικός Μαθήματος MAE840
Εξάμηνο 8
Τίτλος Μαθήματος ΠΑΡΑΛΛΗΛΟΙ ΑΛΓΟΡΙΘΜΟΙ ΚΑΙ ΣΥΣΤΗΜΑΤΑ
Αυτοτελείς Διδακτικές Δραστηριότητες Διαλέξεις και Εργαστηριακές Ασκήσεις (Εβδομαδιαίες Ώρες Διδασκαλίας: 3, Πιστωτικές Μονάδες: 6)
Τύπος Μαθήματος Ειδικού Υποβάθρου
Προαπαιτούμενα Μαθήματα
Γλώσσα Διδασκαλίας και Εξετάσεων Ελληνική
Το Μάθημα Προσφέρεται σε Φοιτητές Erasmus
Ηλεκτρονική Σελίδα Μαθήματος (URL) Δείτε το eCourse, την Πλατφόρμα Ασύγχρονης Εκπαίδευσης του Πανεπιστημίου Ιωαννίνων.

Μαθησιακά Αποτελέσματα

Μαθησιακά Αποτελέσματα Με την επιτυχή ολοκλήρωση του μαθήματος, ο φοιτητής:
  • Θα μπορεί να κατανοήσει μεθόδους παράλληλης αλγοριθμοποίησης.
  • Θα μπορεί να περιγράψει τις βασικές λειτουργίες ενός παράλληλου και ενός κατανεμημένου συστήματος.
  • Θα έχει κατανοήσει τις βασικές έννοιες και τεχνικές/μηχανισμούς προγραμματισμού, επικοινωνίας και θέματα διαφάνειας που χρησιμοποιούνται τόσο στα σύγχρονα παράλληλα όσο και στα κατανεμημένα συστήματα.
  • Θα είναι σε θέση να χρησιμοποιήσει και να προγραμματίσει συνήθεις παράλληλες βιβλιοθήκες προγραμματισμού όπως η OpenMP και κατανεμημένα εργαλεία διαχείρισης και προγραμματισμού όπως το MPI.
  • Θα γνωρίζει τις τεχνικές κατανομής πόρων, δεδομένων και εργασιών σε πολυπύρηνα υπολογιστικά συστήματα κοινού διαύλου ή συνεργαζόμενα μέσω δικτύου και τους αναγκαίους μηχανισμούς συγχρονισμού και ελέγχου της επικοινωνίας.
  • Θα διαθέτει κατάλληλη θεωρητική και πρακτική γνώση έτσι ώστε να μπορεί να ανταποκριθεί στις απαιτήσεις των σύγχρονων τάσεων σχεδιασμού, ανάπτυξης και υποστήριξης παράλληλων και κατανεμημένων αλγορίθμων και εφαρμογών.
Γενικές Ικανότητες
  • Αναζήτηση, ανάλυση και σύνθεση δεδομένων με χρήση τεχνολογιών πληροφορικής
  • Λήψη αποφάσεων
  • Προγραμματιστικός σχεδιασμός και υλοποίηση - Εμπέδωση
  • Αυτόνομη Εργασία

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

ΘΕΩΡΙΑ:

  • Εισαγωγικά στοιχεία. Ιστορική ανασκόπηση της παράλληλης και κατανεμημένης επεξεργασίας.
  • Πρότυπο von Neumann. Κατηγοριοποίηση κατά Flynn. Διασωλήνωση. Πολύ-επεξεργαστές, Πολύ-υπολογιστές.
  • Συστήματα κατανεμημένης και κοινόχρηστης μνήμης.
  • Αρχιτεκτονικές μνήμης ενιαίου και μη-ενιαίου χρόνου πρόσβασης.
  • Υπολογισμός απόδοσης. Κλιμάκωση. Δίκτυα διασύνδεσης παράλληλων υπολογιστών.
  • Νόμος του Grosch, του Amdahl, των Gustafson Barsis. Σχεδιασμός παράλληλων εφαρμογών.
  • Παραλληλοποίηση προγραμμάτων - MPI. Συγχρονισμός. Γράφοι εξάρτησης.
  • Χρονοδρομολόγηση. Συνάφεια διαμοιραζόμενης μνήμη. MESI. Παράλληλη Επεξεργασία σε GPU.
  • Μοντέλα και μηχανισμοί επικοινωνίας διεργασιών.
  • Διανυσματική Επεξεργασία. Συστοιχίες και υπολογιστική πλέγματος. Παραδείγματα παραλληλοποίησης εφαρμογών. Θέματα συγχρονισμού.

ΕΡΓΑΣΤΗΡΙΟ:

  • Εισαγωγικές έννοιες προγραμματισμού με το gcc. Δείκτες, κλάσεις, δυναμικές δομές. Δημιουργία διεργασιών σε Linux, διαχωρισμός των εννοιών user-space και kernel-space, γονικές διεργασίες και σχέσεις γονέα-παιδιού, Διαχείριση διεργασιών.
  • Containers, Templates, STL (c++ standard templates library).
  • Εισαγωγή στο Boost και σε προχωρημένα θέματα της C++.
  • Εισαγωγή στο C++ Armadilo
  • Ενδοεπικοινωνία διεργασιών. Στατικές περιοχές μνήμης, σωληνώσεις, περιοχές κοινής μνήμης, σηματοδοσία διεργασιών.
  • Δημιουργία νημάτων και διαχείριση νημάτων. Χρήση κοινών περιοχών μνήμης νημάτων, κρίσιμες περιοχές, μοντέλο παραγωγού καταναλωτή, σηματοδοσία νημάτων.
  • Διαχείριση και συγχρονισμός νημάτων, προστασία κρίσιμης περιοχής με χρήση mutex locks και semaphores. Παρουσίαση νημάτων εκτέλεσης υπό συνθήκη και φράγματα συγχρονισμού.
  • Εισαγωγή στο MPI, ρυθμίσεις του MPI, παρουσίαση βασικών συναρτήσεων του MPI, τα πρώτα προγράμματα σε MPI.
  • Παρουσίαση βασικών σύγχρονων μεθόδων αποστολής-λήψης μηνυμάτων σε MPI.
  • Παρουσίαση ασύγχρονων μεθόδων αποστολής λήψης. Παραδείγματα.
  • Χρήση συλλογικών μεθόδων του MPI (Gather-Scatter-Reduce-Broadcast) και παραδείγματα.
  • Βασικές δομές οργάνωσης κατανεμημένων προγραμμάτων. Παραδείγματα κατανεμημένων υπολογισμών. Σύνθετοι τύποι δεδομένων με χρήση του MPI.
  • Δημιουργία σύνθετων δομών δεδομένων με το MPI Και αποστολή μηνυμάτων δομών δεδομένων.
  • Παράλληλος προγραμματισμός OpenMP και Epiphany-SDK, BSP.

Διδακτικές και Μαθησιακές Μέθοδοι - Αξιολόγηση

Τρόπος Παράδοσης Στην τάξη
Χρήση Τεχνολογιών Πληροφορίας και Επικοινωνιών Χρήση Εργαστηρίου Μικροϋπολογιστών
Οργάνωση Διδασκαλίας
Δραστηριότητα Φόρτος Εργασίας Εξαμήνου
Διαλέξεις (13Χ3) 39
Αυτοτελής Μελέτη 78
Επίλυση Ασκήσεων - εργασίες 33
Σύνολο Μαθήματος 150
Αξιολόγηση Φοιτητών
  • Με χρήση νέων ΤΠΕ και μετρικών χρήσης της πλατφόρμας ασύγχρονης τηλεκπαίδευσης (30%)
  • Εξέταση εργαστηριακών ασκήσεων (20%)
  • Γραπτή εξέταση (50%)

Συνιστώμενη Βιβλιογραφία

Δείτε την υπηρεσία Εύδοξος ή το τοπικό αποθετήριο του Τμήματος Μαθηματικών για τα παρεχόμενα συγγράμματα ανά ακαδημαϊκό έτος. Συγγράμματα και άλλες πηγές εκτός της υπηρεσίας Εύδοξος:

  • Parallel Scientific Computing in C++ and MPI: A Seamless Approach to Parallel Algorithms and their Implementation, G.M. Karniadakis and R.M. Kirby, 2003, Cambridge University press, ISBN: 0-521-81754-4
  • Using OpenMP, Portable Shared Memory Parallel Programming., B. Chapman, G. Jost and R. Pas, 2008, MIT press, ISBN: 9780262533027
  • Learning Boost C++ libraries, A. Mukherjee, 2015, PACKT, ISBN:978-1-78355-121-7
  • Boost C++ Application Development Cookbook - Second Edition: Recipes to simplify your application development, 2 Edition, A. Polukhin, 2017, PACKT, ISBN:978-1-78728-224-7
  • C++17 STL Cookbook, J. Galowicz, PACKT,978-1-78712-049-5, 2017