206 Παράλληλος Προγραμματισμός

Σκοπός

Στόχος του μαθήματος είναι οι μεταπτυχιακοί φοιτητές, μετά την επιτυχή παρακολούθησή τους, να είναι σε θέση: (α) να γνωρίζουν τις διαφορές μεταξύ του κλασικού σειριακού προγραμματισμού σε σχέση με τον Παράλληλο Προγραμματισμό, (β) να γνωρίζουν τον τρόπο με τον οποίο μπορούν να μετατρέψουν σειριακούς αλγορίθμους σε παράλληλους, χρησιμοποιώντας την κατάλληλη αρχιτεκτονική καθώς και το κατάλληλο μοντέλο προγραμματισμού, (γ) να έχουν τη δυνατότητα να δημιουργούν και να εκτελούν παράλληλα προγράμματα είτε σε υπερυπολογιστή (grid computer) είτε σε συστοιχία Η/Υ με το λογισμικό MATLAB.

Περίγραμμα

  • Εισαγωγή: γενικά περί παράλληλου προγραμματισμού, παράλληλες αρχιτεκτονικές, μέτρα απόδοσης, κατηγοριοποίηση κατά Φλυν (Flynn) και νόμος του Άμνταλ (Amdahl), κατευθυνόμενοι μη-Κυκλικοί Γράφοι (DAGs) και διαγράμματα Gantt.

  • Παράλληλες αρχιτεκτονικές: γενική επισκόπηση και εμβάθυνση στις κλάσεις SIMD, MIMD κοινής και κατανεμημένης μνήμης.

  • Παράλληλος προγραμματισμός-εργαλεία: αρχές παράλληλου προγραμματισμού κοινής μνήμης και SIMD, προγραμματισμός στο μοντέλο κοινής μνήμης, προγραμματισμός με μεταβίβαση μηνυμάτων, προγραμματισμός πελάτη-εξυπηρετητή.

  • Παράλληλοι αλγόριθμοι επεξεργασίας πινάκων, ταξινόμησης, αναζήτησης κ.α. για διάφορες αρχιτεκτονικές. Υπολογισμός παράλληλης πολυπλοκότητας (επεξεργασία, επικοινωνία).

Προτεινόμενη βιβλιογραφία

[1]   B. Wilkinson, M. Allen, Parallel Programming, 2nd edition, Prentice Hall, 2004.

[2]   C. Lin, L. Snyder, Principles of Parallel Programming, Addison-Wesley, 2008.

[3]   T. Rauber, G. Runger, Parallel Programming for Multicore and Cluster Systems , Springer, 2010.

[4]   D. Bertsekas, J. Tsitsiklis, Parallel and Distributed Computation: Numerical Methods , Prentice Hall, 1989.

[5]   J..Kepner, Parallel MATLAB for Multicore and Multinode Computers, SIAM, 2009.

[6]   P. Luszczek, Parallel Programming in Matlab, International Journal of High Performance Computing Applications, vol. 23, pp. 277–283, 2009.

[7]   G. Sharma, J. Martin, Matlab : A language for Parallel Computing, International Journal of Parallel Programming, vol. 37, pp. 3–36, 2009.

[8]   A. Grama, V. Kumar, A. Gupta, G. Karypis, Introduction to Parallel Computing, Addison Wesley, 2003.

[9]   Σ. Παπαδάκης, Κ. Διαμαντάρας, Προγραμματισμός και Αρχιτεκτονική Συστημάτων Παράλληλης Επεξεργασίας , Εκδόσεις Κλειδάριθμος , 2012.

[10]   Γ. Πάντζιου, Β. Μάμαλης, Α. Τομαράς, Εισαγωγή στον Παράλληλο Υπολογισμό , Εκδόσεις Νέων Τεχνολογιών , 2013.

[11]   M. B en -A ri , Ταυτόχρονος Προγραμματισμός , Εκδόσεις Κλειδάριθμος , 1998.