Θέματα Κατανεμημένων και Παράλληλων Συστημάτων

Βασικές αρχές κατανεμημένης και παράλληλης επεξεργασίας. Σύγχρονα συστήματα και αρχιτεκτονικές κοινής και κατανεμημένης μνήμης (πολυεπεξεργαστές, πολυυπολογιστές, πολυπύρηνα συστήματα, συστήματα συστοιχιών υπολογιστών, υβριδικά συστήματα και αρχιτεκτονικές). Many-core αρχιτεκτονικές και σύγχρονες τεχνολογίες επιταχυντών-συνεπεξεργαστών. Επιτάχυνση και αποδοτικότητα παράλληλων αλγορίθμων. Τοπολογίες δικτύων διασύνδεσης. Εισαγωγή στον προγραμματισμό κοινής μεταβλητής. Παράλληλοι αλγόριθμοι σε περιβάλλον κοινής μνήμης (αλγόριθμοι ταξινόμησης, υπολογισμού προθεμάτων, υπολογισμών σε λίστες κ.α.). Παράλληλος/πολυνηματικός προγραμματισμός κοινής μνήμης (Pthreads, OpenMP). Προγραμματισμός επιταχυντών/GPUs (CUDA, OpenCL). Τεχνικές παραλληλισμού κατανεμημένης μνήμης. Παράλληλοι αλγόριθμοι σε περιβάλλον κατανεμημένης μνήμης (αλγόριθμοι ταξινόμησης, επιστημονικού υπολογισμού κ.α.). Παράλληλος προγραμματισμός κατανεμημένης μνήμης μέσω ανταλλαγής μηνυμάτων (MPI). Παράλληλος προγραμματισμός σε υβριδικό περιβάλλον (MPI+OpenMP+CUDA). Οργάνωση κατανεμημένων συστημάτων. Το Μοντέλο πελάτη-διακομιστή (client-server). Ομότιμα συστήματα (P2P systems). Ενδιάμεσο λογισμικό (middleware). Μοντέλα και αρχές υλοποίησης ενδιάμεσου λογισμικού (κλήση απομακρυσμένων διαδικασιών (RPC), κλήση απομακρυσμένων αντικειμένων (RMI)). Κατανεμημένα λειτουργικά συστήματα (πολυυπολογιστών και δικτύου – ειδικές απαιτήσεις, θέματα σχεδίασης και απόδοσης, κατανεμημένα συστήματα αρχείων κ.α.). Βασικά αλγοριθμικά θέματα κατανεμημένου υπολογισμού (χρονοσφραγίδες, εκλογή αρχηγού, αμοιβαίος αποκλεισμός, ανοχή σε σφάλματα). Υπολογισμός σε περιβάλλον συστοιχίας υπολογιστών (Cluster computing), τεχνολογίες και εργαλεία προγραμματισμού, τεχνολογίες δικτυακής επικοινωνίας κ.α. Επεξεργασία σε υπολογιστικά πλέγματα (Grid computing), τεχνικές δρομολόγησης εργασιών, πολιτικές εκχώρησης πόρων κ.α. Κατανεμημένη επεξεργασία σε κινητά αδόμητα δίκτυα (πρωτόκολλα δρομολόγησης, τεχνικές ομαδοποίησης κ.α.).

 

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

  1. Tanenbaum A.S., Van Steen M., Κατανεμημένα Συστήματα: Αρχές και Παραδείγματα, Εκδόσεις Κλειδάριθμος (μετάφραση), 2006.
  2. Coulouris G., Dollimore J., Kindberg T., Blair G., Κατανεμημένα Συστήματα, Εκδόσεις Da Vinci Ε.Π.Ε. (μετάφραση), 2018.
  3. Πάντζιου Γ., Μάμαλης Β., Τομαράς Α., Εισαγωγή στον Παράλληλου Υπολογισμό: Πρότυπα, Αλγόριθμοι, Προγραμματισμός, Εκδόσεις Νέων Τεχνολογιών, 2013.
  4. Peter S. Pacheco, Εισαγωγή στον Παράλληλο Προγραμματισμό, Εκδόσεις Κλειδάριθμος (μετάφραση), 2015.
  5. Κάβουρας Ι.Κ., Μήλης Ι.Ζ., Ξυλωμένος Γ.Β., Ρουκουνάκη Α.Α., Κατανεμημένα Συστήματα με Java, Εκδόσεις Κλειδάριθμος, 2011.
  6. Παπαδάκης Σ., Διαμαντάρας Κ., Προγραμματισμός και Αρχιτεκτονική Συστημάτων Παράλληλης Επεξεργασίας, Εκδόσεις Κλειδάριθμος, 2012.
  7. Kirk D.B., Hwu W.M., Προγραμματισμός Μαζικά Παράλληλων Επεξεργαστών, Εκδόσεις Κλειδάριθμος (μετάφραση), 2010.
  8. Kai Hwang, Jack Dongarra, and Geoffrey Fox, Distributed and Cloud Computing, Morgan Kaufmann, 2011.
  9. Thomas Rauber, Gudula Rünger, Parallel Programming for Multicore and Cluster Systems, Springer, 2010.
  10. Quinn M.J., Parallel Programming in C with MPI and OpenMP, McGraw-Hill, 2003.
  11. Wilkinson B., Allen M., Parallel Programming – Techniques and Applications Using Networked Work stations and Parallel Computers, Pearson, Prentice Hall, 2006.
  12. Δημακόπουλος, Β., 2015. Παράλληλα συστήματα και προγραμματισμός [ηλεκτρ. βιβλ.] Αθήνα:Σύνδεσμος Ελληνικών Ακαδημαϊκών Βιβλιοθηκών. http://hdl.handle.net/11419/3209
  13. Tel G., Introduction to Distributed Algorithms, Cambridge University Press, 2001.
  14. Lynch N.A., Distributed Algorithms, Morgan Kaufmann, 1997.
  15. Attiya H., Welch J., Distributed Computing Fundamentals, Simulations, and Advanced Topics, McGraw-Hill, 2004.