Παράλληλα Συστήματα

Κωδικός Μαθήματος: Ν2-7020Β
Εβδομαδιαίες ώρες διδασκαλίας: 4 (2Θ + 1ΑΠ + 1Ε)
Πιστωτικές μονάδες: 5
Τυπικό εξάμηνο διδασκαλίας: 7ο
Κατηγορία μαθήματος: Μαθήματα Γενικής Υποδομής
Προαπαιτούμενα:  

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

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

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

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

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

ΘΕΩΡΙΑ:

  • Σύγχρονα Παράλληλα Συστήματα και Αρχιτεκτονικές – πολυυπολογιστές (supercomputers), πολυπύρηνα συστήματα (multicore), συστήματα συστοιχιών υπολογιστών (clusters), υβριδικά συστήματα και αρχιτεκτονικές, GPUs
  • Τεχνικές Παραλληλοποίησης σε Περιβάλλον Κατανεμημένης Μνήμης
  • Επίλυση κλασσικών προβλημάτων υπολογισμού σε περιβάλλον κατανεμημένης μνήμης (αλγόριθμοι ταξινόμησης, αλγόριθμοι πολλαπλασιασμού πινάκων, και αλγόριθμοι επίλυσης γραμμικών συστημάτων)
  • Μοντέλα Παράλληλου Προγραμματισμού & Σχεδιασμός Παράλληλων Προγραμμάτων
  • Προγραμματισμός σε κοινό χώρο διευθύνσεων (OpenMP), προγραμματισμός με μεταβίβαση μηνυμάτων (MPI), και συνδυασμός των παραπάνω (υβριδικό μοντέλο)
  • Προγραμματισμός GPUs (το μοντέλο προγραμματισμού CUDA)
  • Προγραμματισμός σε περιβάλλοντα συστοιχιών υπολογιστών και δικτύων σταθμών εργασίας (clusters&NOWs / MPI, Condor)
  • Μέτρηση της Απόδοσης Παράλληλων Προγραμμάτων

ΕΡΓΑΣΤΗΡΙΟ – ΑΣΚΗΣΕΙΣ ΠΡΑΞΗΣ:

Επιλεγμένες Ασκήσεις – Ανάπτυξη Εφαρμογών με χρήση εργαλείων παράλληλου προγραμματισμού κοινής και κατανεμημένης μνήμης: (OpenMP, CUDA, MPI, Condor)

Βιβλιογραφία
  1. Πάντζιου Γ., Μάμαλης Β., Τομαράς Α., Εισαγωγή στον Παράλληλου Υπολογισμό: Πρότυπα, Αλγόριθμοι, Προγραμματισμός, Εκδόσεις Νέων Τεχνολογιών, 2013.
  2. Grama Α., Gupta A., Karypis D., Kumar V., Introduction to Parallel Computing, 2nd Edition, Addison-Wesley, 2003.
  3. Quinn M.J., Parallel Programming in C with MPI and OpenMP, McGraw-Hill, 2003.
  4. Wilkinson B., Allen M., Parallel Programming – Techniques and Applications Using Networked Work stations and Parallel Computers, Pearson, Prentice Hall, 2006.
  5. Andrews G.R., Foundations of Multithreaded, Parallel and Distributed Programming, Addison-Wesley, 2000.
  6. Παπαδάκης Σ., Διαμαντάρας Κ., Προγραμματισμός και Αρχιτεκτονική Συστημάτων Παράλληλης Επεξεργασίας, Εκδόσεις Κλειδάριθμος, 2012.
  7. Kirk D.B., Hwu W.M., Προγραμματισμός Μαζικά Παράλληλων Επεξεργαστών, Εκδόσεις Κλειδάριθμος, 2010.
  8. LLNL MPI Tutorial, http://www.llnl.gov/computing/tutorials/mpi/
  9. LLNL OpenMP Tutorial, http://www.llnl.gov/computing/ tutorials/openMP/
  10. NVIDIA CUDA Tutorial: http://www.nvidia.com/docs/IO/116711/sc11-cuda-c-basics.pdf

Internationalisation I18n