Ιστοσελίδα Μαθήματος ΕΜ 361: Παράλληλοι Υπολογισμοί (Parallel Computing)

Χειμερινό Εξάμηνο 2010/11

 

Διδάσκων:  Βαγγέλης Χαρμανδάρης

email: vagelis@tem.uoc.gr

 

ΤΕΛΙΚΗ ΒΑΘΜΟΛΟΓΙΑ

 

ΒΑΘΜΟΙ ΑΣΚΗΣΕΩΝ

Ύλη του Μαθήματος

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

· Η κατανόηση βασικών αρχών της παράλληλης επεξεργασίας και των παράλληλων υπολογιστικών συστημάτων.

· Η περιγραφή του απαραίτητου, και πιο διαδεδομένου, λογισμικού για τον προγραμματισμό παράλληλων προγραμμάτων.

· Η εφαρμογή των παράλληλων υπολογισμών σε διάφορα επιστημονικά υπολογιστικά προβλήματα.

 

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

 

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

· Parallel Programming, B. Wilkinson, M. Allen, Prentice Hall, 2nd Ed. 2005.

· Parallel Computing: Theory and Practice, M. J. Quinn, McGraw-Hill, 1994.

· Parallel Scientific Computing in C++ and MPI, G. Karniadakis and R.M. Kirby II, Cambridge, 2003.

· Designing and Building Parallel Programs, Ian Foster, Addison-Wesley 1994.

· Parallel Programming with MPI, P. Pacheco, Morgan Kaufman Pub. 1997.

· Στοιχεία Παράλληλου Υπολογισμού, Α. Τομαράς, Γ.  Πάντζιου,  Εκδόσεις Νέων Τεχνολογιών, 2004.

 

Διδασκαλία  - Αξιολόγηση

Για τις διδακτικές ανάγκες του μαθήματος θα χρησιμοποιηθούν οι σημειώσεις και φυλλάδια, σε μορφή slides,  τα οποία θα μοιράζονται σε τακτά χρονικά διαστήματα.  Επίσης η υλοποίηση των παράλληλων αλγορίθμων θα  γίνει σε συστοιχία Η/Υ(cluster) του τμήματος μας.

 

Η αξιολόγηση θα βασιστεί κατά κύριο λόγο στη συμμετοχή, στις εργαστηριακές ασκήσεις, σε ένα project και στο τελικό διαγώνισμα. Θα δοθούν 3 σειρές εργαστηριακών ασκήσεων οι οποίες είναι υποχρεωτικές . Στις εργαστηριακές ασκήσεις θα γίνεται υλοποίηση των σχετικών μεθόδων και θα χρησιμοποιούνται για την επίλυση προβλημάτων που προκύπτουν κυρίως από εφαρμογές. Για την υλοποίηση των παράλληλων αλγορίθμων θα χρησιμοποιηθεί η γλώσσα FORTRAN ή C και η βιβλιοθήκη επικοινωνίας MPI. Πιο συγκεκριμένα ο βαθμός θα προκύπτει ως εξής: 3 ασκήσεις (30%) +  Σύντομη Τελική Εξέταση (30%) + Project (50%). Η βάση είναι 50%.

 

Ηλεκτρονική Λίστα Αλληλογραφίας

Ενημέρωση σχετικά με το μάθημα (για τις σειρές ασκήσεων, ημερομηνίες εξετάσεων, κ.τ.λ.) γίνεται από την ηλεκτρονική λίστα αλληλογραφίας. Για να γραφτείτε στην ηλεκτρονική λίστα αλληλογραφίας του μαθήματος στείλτε email με κενό θέμα και περιεχόμενο subscribe em361-list στην διεύθυνση majordomo@tem.uoc.gr. Στην συνέχεια θα σας σταλεί ένα email στο οποίο θα χρειαστεί να απαντήσετε χρησιμοποιώντας κάποιο συγκεκριμένο μήνυμα για επιβεβαίωση. Για να εγγραφείτε στην λίστα πρέπει να χρησιμοποιήσετε την ηλεκτρονική διεύθυνση που σας παρέχεται από το Πανεπιστήμιο Κρήτης (για παράδειγμα username@tem.uoc.gr ή username@math.uoc.gr).

 

 

Σημειώσεις του Μαθήματος

· Πρόγραμμα Διδασκαλίας — Ημερολόγιο του Μαθήματος

· Κεφάλαιο 1: Εισαγωγή

· Κεφάλαιο 2: Αρχιτεκτονική Παράλληλων Υπολογιστικών Συστημάτων

· Κεφάλαιο 3: Θεωρία — Απόδοση Παράλληλου Προγραμματισμού

· Κεφάλαιο 4: Παράλληλοι Αλγόριθμοι

· Κεφάλαιο 5: Λογισμικό I (OpenMP)

· Κεφάλαιο 5: Λογισμικό II (MPI)

· Κεφάλαιο 6: Εφαρμογές ΙΙ

· Πιθανά Projects

 

Σειρές Ασκήσεων

· Σειρά Ασκήσεων 1

· Σειρά Ασκήσεων 2

· Σειρά Ασκήσεων 3

 

Παραδείγματα — Κώδικες

· Το ‘Κόσκινο του Ερατοσθένη’Sieve.c,                Sieve.f90

· ‘Hello World’ in OpenMP:   hello_OpenMP.c               hello_OpenMP.f90

· Loop in OpenMP:        loop_OpenMP.c

· Dot Product in OpenMP:     dot_product_OpenMP.c

· Hello World’ in MPI:    hello_MPI.c

· Send-Received:     send-rec.c         send-rec_non-blocking.c          send-rec_nb.f90

· Collective Communication:         collective_comm.c   

· Derived data type (struct):            derived_data_type_struct.c

· Cartesian Topology:     cartesian_topology.c       

· Dot Product:        parallel_dot_product.c    

· Parallel Monte Carlo:         calc_pi.c

· Gauss Elimination (by E. van den Berg):     Gauss.c

 

Χρήσιμες Εντολές OpenMP

· Χρήση n threads — Εντολή σε bash shell:   export OMP_NUM_THREADS=n

· Compile: gcc -fopenmp name.c

 

Χρήσιμες Εντολές MPI

· Compile: mpicc –o name.exe name.c

· Run: mpirun –n I  name.exe       (I: integer, number of processes to be used)

 

Διάφορα

· Code that gathers info about the Cluster and the Ranks (by Α. Χαζηράκης)

· Problem with sending, using MPI, a whole column of a dynamically allocated array (in C language) (by Α. Πάουερ)

 

Δημοσιεύσεις — Άρθρα

· Parallel SOR Iterative Methods (D. Evans, Parallel computing, 1, 3 (1984)

· Shannon Number

 

 

Σύνδεσμοι στο Διαδίκτυο

· TOP500 Supercomputing Sites

 

· MPI 2.2 Official Document as PDF

 

· OpenMP 3.0 Official Document

 

· Summary of OpenMP C/C++ Syntax