EM 361: Παράλληλοι Υπολογισμοί

Σχετικά έγγραφα
Επιστημονικοί Υπολογισμοί - Μέρος ΙΙΙ: Παράλληλοι Υπολογισμοί

Παράλληλη Επεξεργασία

EM 361: Παράλληλοι Υπολογισμοί

EM 361: Παξάιιεινη Υπνινγηζκνί

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

EM 361: Παράλληλοι Υπολογισμοί

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

Παράλληλη Επεξεργασία

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΑΡΑΛΛΗΛΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΜΕ OpenMP

OpenMP. Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων

OpenMP. Συστήµατα Παράλληλης Επεξεργασίας Εργαστήριο Υπολογιστικών Συστηµάτων. Αθήνα, Νοέµβριος /11/2004 Εισαγωγή στο OpenMP 1

OpenMP. Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων

Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών. OpenMP. Συστήματα Παράλληλης Επεξεργασίας 9 ο Εξάμηνο

OpenMP. Προγραµµατισµός Αρχιτεκτονικών Μοιραζόµενης Μνήµης. Συστήµατα Παράλληλης Επεξεργασίας Εργαστήριο Υπολογιστικών Συστηµάτων ΕΜΠ. OpenMP p.

Συστήµατα Παράλληλης Επεξεργασίας. OpenMP

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΑΡΑΛΛΗΛΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΜΕ OpenMP (2 ο Μέρος)

Κατανεμημένα και Παράλληλα Συστήματα (εργαστήριο) Παραδείγματα με openmp

Προγραμματισμός με το OpenMP Β. Δημακόπουλος

τατιςτική ςτην Εκπαίδευςη II

Δομημένος Προγραμματισμός

Γνωστική Ψυχολογία 3

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ

Η ΔΙΔΑΣΚΑΛΙΑ ΤΗΣ ΙΣΤΟΡΙΑΣ ΣΤΗΝ ΕΛΛΗΝΙΚΗ ΔΙΑΣΠΟΡΑ (A06 11)

Επιστημονικοί Υπολογισμοί - Μέρος ΙΙΙ: Παράλληλοι Υπολογισμοί

Διπλωματική Εργασία του φοιτητή του Τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών της Πολυτεχνικής Σχολής του Πανεπιστημίου Πατρών

Γνωστική Ψυχολογία 3

Επιστημονικοί Υπολογισμοί - Μέρος ΙΙΙ: Παράλληλοι Υπολογισμοί

τατιςτική ςτην Εκπαίδευςη II

ΜΕΤΑΒΑΣΗ ΑΠΟ ΤΟ ΝΗΠΙΑΓΩΓΕΙΟ ΣΤΟ ΔΗΜΟΤΙΚΟ ΣΧΟΛΕΙΟ: ΕΚΠΑΙΔΕΥΤΙΚΟΙ ΣΧΕΔΙΑΣΜΟΙ ΚΑΙ ΔΙΔΑΚΤΙΚΕΣ ΠΡΑΚΤΙΚΕΣ

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

ΜΕΤΑΒΑΣΗ ΑΠΟ ΤΟ ΝΗΠΙΑΓΩΓΕΙΟ ΣΤΟ ΔΗΜΟΤΙΚΟ ΣΧΟΛΕΙΟ: ΕΚΠΑΙΔΕΥΤΙΚΟΙ ΣΧΕΔΙΑΣΜΟΙ ΚΑΙ ΔΙΔΑΚΤΙΚΕΣ ΠΡΑΚΤΙΚΕΣ

Δομημένος Προγραμματισμός

ΠΕΡΙΓΡΑΦΙΚΗ και ΕΠΑΓΩΓΙΚΗ ΣΤΑΤΙΣΤΙΚΗ

ΠΕΡΙΓΡΑΦΙΚΗ και ΕΠΑΓΩΓΙΚΗ ΣΤΑΤΙΣΤΙΚΗ

ΨΥΧΟΠΑΙΔΑΓΩΓΙΚΗ ΤΗΣ ΠΡΟΣΧΟΛΙΚΗΣ ΗΛΙΚΙΑΣ

Οδηγός OpenMp. Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής Υπολογιστών

Δομημένος Προγραμματισμός

Μέρος IΙ: OpenMP Κεφάλαιο 4 (νέο βιβλίο)

Κατανεμημένος και Παράλληλος Προγραμματισμός

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

Οργάνωση Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Ασκήσεις 7: Πρόγραμμα Συνδεδεμένης Λίστας και Διαδικασιών. Μανόλης Γ.Η.

ΔΙΟΙΚΗΤΙΚΗ ΕΠΙΣΤΗΜΗ. Ενότητα #10: ΔΙΟΙΚΗΣΗ ΟΛΙΚΗΣ ΠΟΙΟΤΗΤΑΣ ΚΑΙ ΑΝΑΣΧΕΔΙΑΣΜΟΣ ΔΙΑΔΙΚΑΣΙΑΣ

ΠΕΡΙΓΡΑΦΙΚΗ και ΕΠΑΓΩΓΙΚΗ ΣΤΑΤΙΣΤΙΚΗ

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ

Λογική. Δημήτρης Πλεξουσάκης. Ασκήσεις 2ου Φροντιστηρίου: Προτασιακός Λογισμός: Κανονικές Μορφές, Απλός Αλγόριθμος Μετατροπής σε CNF/DNF, Άρνηση

Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας

ΠΕΡΙΓΡΑΦΙΚΗ και ΕΠΑΓΩΓΙΚΗ ΣΤΑΤΙΣΤΙΚΗ

Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας

Δομημένος Προγραμματισμός

Εισαγωγή στις Βάσεις Δεδομζνων II

ΔΗΜΟΣΙΑ ΟΙΚΟΝΟΜΙΚΗ Ι

Λογική Δημήτρης Πλεξουσάκης Φροντιστήριο 5: Προτασιακός Λογισμός: Κατασκευή Μοντέλων Τμήμα Επιστήμης Υπολογιστών

Ηλεκτρονικοί Υπολογιστές

13.2 Παράλληλος Προγραµµατισµός Γλωσσάρι, Σελ. 1

2/4/2012 Προγραμματισμός συστημάτων κοινόχρηστης μνήμης (ΙΙ) OpenMP Β. Δημακόπουλος

Υπολογιστικά Συστήματα

Αντικειμενοστραφής Προγραμματισμός

ΜΕΤΑΒΑΣΗ ΑΠΟ ΤΟ ΝΗΠΙΑΓΩΓΕΙΟ ΣΤΟ ΔΗΜΟΤΙΚΟ ΣΧΟΛΕΙΟ: ΕΚΠΑΙΔΕΥΤΙΚΟΙ ΣΧΕΔΙΑΣΜΟΙ ΚΑΙ ΔΙΔΑΚΤΙΚΕΣ ΠΡΑΚΤΙΚΕΣ

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΠΕΡΙΓΡΑΦΙΚΗ και ΕΠΑΓΩΓΙΚΗ ΣΤΑΤΙΣΤΙΚΗ

Θερμοδυναμική - Εργαστήριο

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Ιστορίας της παιδείας από τα κάτω Α03 06

Προγραμματισμός H/Y Ενότητα 2: Εντολές ελέγχου ροής. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Γνωστική Ψυχολογία 3

Αντικειμενοστραφής Προγραμματισμός

Κατανεμημένος και Παράλληλος Προγραμματισμός

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού

Προγραμματισμός Η/Υ. Ενότητα 3: Top Down Σχεδιασμός

Κατανεμημένος και. Ηλίας Κ. Σάββας Αναπληρωτής Καθηγητής Τμήμα Μηχανικών Πληροφορικής ΤΕ, ΤΕΙ Θεσσαλίας

Αρχιτεκτονική Υπολογιστών

Μακροοικονομική Θεωρία Ι

Εισαγωγή στην Πληροφορική

Κατανεμημένος και Παράλληλος Προγραμματισμός

Τεχνικές Προγραμματισμού και Χρήση Λογισμικού Η/Υ στις Κατασκευές

Ε-85: Ειδικά Θέµατα Λογισµικού

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

Η ΔΙΔΑΣΚΑΛΙΑ ΤΗΣ ΙΣΤΟΡΙΑΣ ΣΤΗΝ ΕΛΛΗΝΙΚΗ ΔΙΑΣΠΟΡΑ (A06 11)

Δομημένος Προγραμματισμός

ΑΞΙΟΛΟΓΗΣΗ ΕΚΠΑΙΔΕΥΤΙΚΟΥ ΕΡΓΟΥ ΚΑΙ ΑΠΟΤΕΛΕΣΜΑΤΙΚΟΤΗΤΑ ΣΧΟΛΕΙΟΥ ΚΕΦΑΛΑΙΟ 6: Αυτοαξιολόγηση των σχολικών μονάδων

Γνωστική Ψυχολογία 3

Γνωστική Ψυχολογία 3

ΜΕΤΑΒΑΣΗ ΑΠΟ ΤΟ ΝΗΠΙΑΓΩΓΕΙΟ ΣΤΟ ΔΗΜΟΤΙΚΟ ΣΧΟΛΕΙΟ: ΕΚΠΑΙΔΕΥΤΙΚΟΙ ΣΧΕΔΙΑΣΜΟΙ ΚΑΙ ΔΙΔΑΚΤΙΚΕΣ ΠΡΑΚΤΙΚΕΣ

Οργάνωση Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Εργαστήριο 9: Εισαγωγή στην Ομοχειρία (Pipelining - Διοχέτευση) Μανόλης Γ.Η.

Μακροοικονομική Θεωρία Ι

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Εισαγωγή στον Προγραμματισμό Η/Υ (Fortran 90/95/2003)

Ε-85: Ειδικά Θέµατα Λογισµικού

Μακροοικονομική Θεωρία Ι

Προγραμματισμός H/Y Ενότητα 1: Εισαγωγή. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Προγραμματισμός Η/Υ. Βασικές Προγραμματιστικές Δομές. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Ιστορίας της παιδείας από τα κάτω Α03 06

Εισαγωγή στον Προγραμματισμό Η/Υ για Χημικούς Μηχανικούς

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Θεωρία Υπολογισμού. Ενότητα 8 : Αυτόματα NFA - DFA. Αλέξανδρος Τζάλλας

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Συστήματα Αυτομάτου Ελέγχου. Ενότητα Α: Γραμμικά Συστήματα

Παράλληλη Επεξεργασία Κεφάλαιο 1 Γιατί Παράλληλος Προγραμματισμός;

Λογική Δημήτρης Πλεξουσάκης Φροντιστήριο 6: Προτασιακός Λογισμός: Μέθοδος Επίλυσης Τμήμα Επιστήμης Υπολογιστών

Ιστορίας της παιδείας από τα κάτω Α03 06

Transcript:

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ EM 361: Παράλληλοι Υπολογισμοί Ενότητα #5Α: Λογισμικό, Βασικές Εφαρμογές OpenMP Διδάσκων: Χαρμανδάρης Ευάγγελος ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΩΝ ΜΑΘΗΜΑΤΙΚΩΝ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΠΙΣΤΗΜΩΝ

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται στην άδεια χρήσης Creative Commons και ειδικότερα Αναφορά Μη εμπορική Χρήση Όχι Παράγωγο Έργο 3.0 Ελλάδα (Attribution Non Commercial Non-derivatives 3.0 Greece) CC BY-NC-ND 3.0 GR [ή επιλογή ενός άλλου από τους έξι συνδυασμούς] [και αντικατάσταση λογότυπου άδειας όπου αυτό έχει μπει (σελ. 1, σελ. 2 και τελευταία)] Εξαιρείται από την ως άνω άδεια υλικό που περιλαμβάνεται στις διαφάνειες του μαθήματος, και υπόκειται σε άλλου τύπου άδεια χρήσης. Η άδεια χρήσης στην οποία υπόκειται το υλικό αυτό αναφέρεται ρητώς. 2

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο Κρήτης» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3

EM 361: Παράλληλοι Υπολογισμοί Χαρμανδάρης Βαγγέλης, Τμήμα Εφαρμοσμένων Μαθηματικών Πανεπιστήμιο Κρήτης, Χειμερινό Εξάμηνο 2010/11 Κεφάλαιο 5: (A) Λογισμικό, Βασικές Εφαρμογές OpenMP Παράλληλες Γλώσσες Δεδομένων (Fortran 90, C, C++). Βιβλιοθήκες Ανταλλαγής Μηνυμάτων (Message Passing Interface, MPI), OpenMP, POSIX Threads. Παράλληλοι Αλγόριθμοι με Χρήση OpenMP.

Λογισμικό Λογισμικό για ανάπτυξη παράλληλων προγραμμάτων: Διαθέσιμα πακέτα: γενικής χρήσεως ή εξειδικευμένοι αλγόριθμοι. -- Υπέρ: Εύκολη λύση. -- Κατά: Μη-κατανόηση του αλγόριθμου και του προγράμματος. Ανάπτυξη κώδικα από την αρχή -- Υπέρ: Ευελιξία, Προσαρμοστικότητα, Κατανόηση. -- Κατά: Μπορεί να είναι πολύ χρονοβόρα λύση. Δυνατότητα χρήσης προγραμμάτων από παράλληλες βιβλιοθήκες: π.χ. χρήση των βιβλιοθηκών BLAS, ScaLAPack κ.α. -- Υπέρ: Οι βιβλιοθήκες περιέχουν πολύ γρήγορους και δοκιμασμένους αλγόριθμους. -- Κατά: Δύσκολη κατανόηση του αλγόριθμου και του προγράμματος. ΕΜ 361: Παράλληλοι Υπολογισμοί 2010/11, Κεφάλαιο 5 5

Λογισμικό Παράλληλου Προγραμματισμού Διεπιφάνεια Προγραμματισμού και Εφαρμογών (Application Programming Interface) Παράλληλες Γλώσσες Δεδομένων (Parallel Data Languages): Πράξεις μεταξύ διανυσμάτων, πινάκων (π.χ. Fortran 90, high Performance Fortran) Μοντέλο Δεσμών (Threads model): Πολλαπλές διεργασίες που επικοινωνούν μέσω του κυρίως προγράμματος. Μοντέλο Μεταφοράς Μηνύματος (Message Passing model): οι διεργασίες επικοινωνούν με ανταλλαγές μηνυμάτων. Αυτόματος Παραλληλισμός Αυτόματη μετατροπή του κώδικα. Συνήθως μετατροπή απλών επαναληπτικών διαδικασιών (loops). Εύκολοι στη χρήση αλλά με περιορισμένες δυνατότητες. ΕΜ 361: Παράλληλοι Υπολογισμοί 2010/11, Κεφάλαιο 5 6

Παράλληλες Γλώσσες Δεδομένων Συνήθως εμπεριέχουν σύνολο εντολών προέκτασης της κανονικής (σειριακή) γλώσσας. Fortran 90 και 95 (F90, F95): Πράξεις μεταξύ διανυσμάτων, πινάκων Fortran Real x(100), y(100).. Do i = 1, 100 y(i) = y(i)*x(i) End do F90 Real :: x(100), y(100). y = y*x*z High Performance Fortran (HPF): Περιέχει ειδικές εντολές (compiler directives) που λένε στον compiler πώς να κατανέμει δεδομένα μεταξύ των επεξεργαστών. ΕΜ 361: Παράλληλοι Υπολογισμοί 2010/11, Κεφάλαιο 5 7

Παράλληλες Γλώσσες Δεδομένων Πολλές παραλλαγές/επεκτάσεις της C. Οι περισσότερες από αυτές έχουν αναπτυχθεί για συγκεκριμένες αρχιτεκτονικές υπολογιστικών συστημάτων. C*: developed in ~ 1990 by Thinking Machines Corporation, for the connection machine (SIMD algorithms). Sequent C: parallel programming under DYNIX (a version of UNIX). ncube C + : επέκταση της C κατά την οποία ένα πρόγραμμα τρέχει ολόκληρο σε κάθε επεξεργαστή. Μοντέλο SPMD (Single Pogram Multiple Data). OCCAM: developd in ~ 1978 by Immos Limited for the Transputer series of processor. C-LINDA: consists of several operations that work on tople space, a speical form of shared memory. ΕΜ 361: Παράλληλοι Υπολογισμοί 2010/11, Κεφάλαιο 5 8

Μοντέλο Δεσμών (Threads model) Στο μοντέλο δεσμών παράλληλου προγραμματισμού μια διεργασία μπορεί να έχει πολλαπλούς, ταυτόχρονους δρόμους εκτέλεσης (execution paths). Παράδειγμα: κύριο πρόγραμμα main.exe που περιλαμβάνει σειρά από υπορουτίνες. Μετά από εκτέλεση ενός σειριακού μέρους το main.exe δημιουργεί μια σειρά από εργασίες (δέσμες) οι οποίες μπορούν να εκτελεστούν ταυτόχρονα. Κάθε εργασία έχει τοπικά δεδομένα (local data) και μοιράζεται τα δεδομένα του main.exe. Κατόπιν ανατίθεται σε διαφορετικό επεξεργαστή. Οι δέσμες επικοινωνούν μεταξύ τους μέσα από την γενική (global) κοινή μνήμη. Το main.exe είναι υπεύθυνο για την δημιουργία των δεσμών και την παροχή των κοινών δεδομένων που χρειάζεται κάθε δέσμη. ΕΜ 361: Παράλληλοι Υπολογισμοί 2010/11, Κεφάλαιο 5 9

Μοντέλο Δεσμών (Threads model) Από πλευράς προγραμματισμού το μοντέλο δεσμών συνήθως περιλαμβάνει Βιβλιοθήκη από υπορουτίνες που καλούνται από το κυρίως πρόγραμμα. Σετ από οδηγίες για τον compiler που εμπεριέχονται στον παράλληλο κώδικα (compiler directives). Κατάλληλο για συστήματα μοιραζόμενης κοινής μνήμης. ΕΜ 361: Παράλληλοι Υπολογισμοί 2010/11, Κεφάλαιο 5 10

Μοντέλο Δεσμών (Threads model) Διαφορετικές εφαρμογές του μοντέλου δεσμών: POSIX Δέσμες: Βασίζεται σε συναρτήσεις βιβλιοθήκης. Διαθέσιμο μόνο για την C. Συχνά αναφέρεται και ως Pthreads. Προσφέρει πολύ εξειδικευμένο παραλληλισμό. Αρκετά πολύπλοκο στην χρήση. OpenMP: Βασίζεται σε compiler directives. Διαθέσιμο τόσο για C/C++ και Fortran. Μπορεί να είναι πολύ εύκολο στην χρήση, ειδικά για παραλληλισμό επαναληπτικών διαδικασιών (loops). Προσοχή: το μοντέλο δεσμών είναι αρκετά ισχυρό για shared memory machines αλλά όχι για άλλες αρχιτεκτονικές. Δύσκολη η μεταφορά του παράλληλου κώδικα σε διαφορετικά συστήματα. ΕΜ 361: Παράλληλοι Υπολογισμοί 2010/11, Κεφάλαιο 5 11

Μοντέλο Μεταφοράς Μηνύματος (Message Passing) Το μοντέλο μεταφοράς μηνύματος έχει τα ακόλουθα χαρακτηριστικά: Υπάρχει σύνολο από διεργασίες οι οποίες χρησιμοποιούν την δικιά τους μνήμη κατά τη διάρκεια των υπολογισμών. Οι διεργασίες ανταλλάσουν δεδομένα στέλνοντας και λαμβάνοντας μηνύματα. Οι διαδικασία ανταλλαγής συνήθως χρειάζεται συνεργασία μεταξύ των διεργασιών. Παράδειγμα η αποστολή μηνύματος πρέπει συνδυάζεται με την λήψη του από άλλη διεργασία. Η επικοινωνία γίνεται μέσα από βιβλιοθήκες ανταλλαγής μηνυμάτων (π.χ. MPI, PVM) τύπου SEND και RECEIVE. Η βιβλιοθήκη MPI (Message Passing Interface) είναι το διεθνές στάνταρτ. ΕΜ 361: Παράλληλοι Υπολογισμοί 2010/11, Κεφάλαιο 5 12

Μοντέλο Μεταφοράς Μηνύματος (Message Passing) Από πλευράς προγραμματισμού ο χρήστης είναι απολύτως υπεύθυνος για τον προσδιορισμό της παράλληλης διαδικασίας. Κατάλληλο τόσο για συστήματα κοινής αλλά και κατανεμημένης μνήμης. Οι κώδικες επεκτείνονται και μεταφέρονται σε συστήματα διαφορετικής αρχιτεκτονικής σχετικά εύκολα. ΕΜ 361: Παράλληλοι Υπολογισμοί 2010/11, Κεφάλαιο 5 13

Αυτόματος Παραλληλισμός Παραλληλισμός σειριακού κώδικα μέσω αυτόματων παράλληλων μεταγλωττιστών (parallel compilers). Εύκολοι στη χρήση: απαιτείται λίγη έως καθόλου δουλεία από τον χρήστη. Αυτόματος παραλληλισμός επαναληπτικών διαδικασιών (loops): ανάθεση κομματιών της επαναληπτικής διαδικασίας σε διαφορετικούς επεξεργαστές. Μειονεκτήματα: Παραλληλισμός διεργασιών δεν είναι εφικτός. Δεν είναι ευέλικτος. Μπορεί να παράγει λάθος αποτελέσματα. Γενικά τα αποτελέσματα είναι πολύ φτωχά: η πολυπλοκότητα των επαναληπτικών διαδικασιών δεν επιτρέπει την αυτόματη παραληλλοποίηση τους. ΕΜ 361: Παράλληλοι Υπολογισμοί 2010/11, Κεφάλαιο 5 14

Κεφάλαιο 5: Open Multi-Processing (OpenMP) Βασική ιδέα: Χρησιμοποιώντας ένα σύνολο ειδικών εντολών παραλληλίζουμε μέρη του υπάρχοντα σειριακού κώδικα. Θα δούμε πιο αναλυτικά: Τι είναι το OpenMP; Εισαγωγικά. Ένα απλό πρόγραμμα σε OpenMP. Παραλληλισμός επαναληπτικών διαδικασιών (loops) χρησιμοποιώντας OpenMP. ΕΜ 361: Παράλληλοι Υπολογισμοί 2010/11, Κεφάλαιο 5 15

Τι Είναι το OpenMP; To OpenMP είναι μια Διεπιφάνεια Προγραμματισμού και Εφαρμογών (Application Programming Interface) παραλληλισμού για συστήματα κοινής μνήμης (shared memory systems). Αποτελείται από: Compiler Directives Runtime Library Routines Environmental Variables Χαρακτηριστικά του OpenMP: Standard για τα περισσότερα συστήματα κοινής μνήμης, Εύκολο στη χρήση, Αποτελεσματικότητα, Φορητότιτα. Σχεδιασμένο το για C/C++ όσο και Fortran/ Fortran 90. Ιστορία και Εξέλιξη: ΕΜ 361: Παράλληλοι Υπολογισμοί 2010/11, Κεφάλαιο 5 16

Τι Είναι το OpenMP; To OpenMP βασίζεται στην ύπαρξη πολλαπλών δεσμών (multi-threaded) σε διεργασίες κοινής μνήμης. Το πρόγραμμα χωρίζεται σε παράλληλα και σειριακά μέρη. Κάθε OpenMP πρόγραμμα ξεκινά με μια αρχική διεργασία (master thread) η οποία εκτελείται σειριακά έως ότου φτάσουμε στην πρώτη παράλληλη περιοχή. Compiler Directive based: ο παραλληλισμός επιτυγχάνεται με την χρήση κατάλληλων οδηγιών που εμπεριέχονται στον κώδικα (C/C++ ή Fortran). ΕΜ 361: Παράλληλοι Υπολογισμοί 2010/11, Κεφάλαιο 5 17

Program Hallo Παράδειγμα: Hello world πρόγραμμα Απλό πρόγραμμα σε Fortran Integer :: NTHREADS, TID, OMP_GET_NUM_THREADS, OMP_GET_THREAD_NUM!Fork a team of threads with each thread having a private TID variable!$omp PARALLEL PRIVATE(TID)! Obtain and print thread id TID = OMP_GET_THREAD_NUM() PRINT *, 'Hello World from thread = ', TID! Only master thread does this IF (TID == 0) THEN NTHREADS = OMP_GET_NUM_THREADS() PRINT *, 'Number of threads = ', NTHREADS END IF! All threads join master thread and disband!$omp END PARALLEL Stop End ΕΜ 361: Παράλληλοι Υπολογισμοί 2010/11, Κεφάλαιο 5 18

#include <omp.h> main () { int nthreads, tid; Παράδειγμα: Hello world πρόγραμμα Απλό πρόγραμμα σε C /* Fork a team of threads with each thread having a private tid variable */ #pragma omp parallel private(tid) { /* Obtain and print thread id */ tid = omp_get_thread_num(); printf("hello World from thread = %d\n", tid); } /* Only master thread does this */ if (tid == 0) { nthreads = omp_get_num_threads(); printf("number of threads = %d\n", nthreads); } } /* All threads join master thread and terminate */ ΕΜ 361: Παράλληλοι Υπολογισμοί 2010/11, Κεφάλαιο 5 19

Περιγραφή Απλού Προγράμματος Η διάταξη των εντολών/οδηγιών OpenMP (compiler directives) είναι: Fortran:!$OMP directive.name [clause] Παράδειγμα:!$OMP PARALLEL DEFAULT(SHARED) PRIVATE(BETA,PI) Το end directive είναι προαιρετικό αλλά βοηθά στον έλεγχο του κώδικα. Case Insensitive. Παράδειγμα:!$OMP directive [ structured block of code ]!$OMP end directive C/C++: #pragma omp directive.name [clause] Παράδειγμα: #pragma omp parallel default(shared) private(beta,pi) Case Sensitive. Γενικά: Οι compilers εμπεριέχουν μια μεταβλητή η οποία κατά τη μετάφραση ενεργοποιεί όλες τις OpenMP εντολές (OpenMP directives). ΕΜ 361: Παράλληλοι Υπολογισμοί 2010/11, Κεφάλαιο 5 20

Δημιουργία Παράλληλης Περιοχής Η παράλληλη περιοχή (parallel region) είναι ένα κομμάτι του κώδικα που μπορεί να εκτελεστεί από πολλαπλές δέσμες (threads). Είναι η σημαντικότερη εντολή του OpenMP. Μόλις το πρόγραμμα συναντά μια εντολή parallel δημιουργεί πολλαπλές threads οι οποίες εκτελούν τον ίδιο κώδικα. Format: Fortran:!$OMP PARALLEL [clause...] IF (scalar_logical_expression) PRIVATE (list) SHARED (list) DEFAULT (PRIVATE FIRSTPRIVATE SHARED NONE) FIRSTPRIVATE (list) REDUCTION (operator: list) COPYIN (list) NUM_THREADS (scalar-integer-expression) block!$omp END PARALLEL ΕΜ 361: Παράλληλοι Υπολογισμοί 2010/11, Κεφάλαιο 5 21

Παράλληλη Περιοχή Format: C: #pragma omp parallel [clause...] newline if (scalar_expression) private (list) shared (list) default (shared none) firstprivate (list) reduction (operator: list) copyin (list) num_threads (integer-expression) structured_block Η μεταβλητή περιβάλλοντος (environmental variable) OMP_NUM_THREADS καθορίζει πόσες threads θα χρησιμοποιηθούν. Συνήθως ο αριθμός των threads είναι ο αριθμός των επεξεργαστών ου συστήματος. Οι threads αριθμούνται από 0 ως P-1. omp_get_thread_num(): επιστρέφει τον αριθμό της συγκεκριμένης thread. omp_get_num_threads(): επιστρέφει τον συνολικό αριθμό των threads. ΕΜ 361: Παράλληλοι Υπολογισμοί 2010/11, Κεφάλαιο 5 22

Παραλληλισμός Επαναληπτικών Διαδικασιών Παραλληλισμός επαναληπτικών διαδικασιών (loops) με την εντολή!omp do. Format: C: #pragma omp for [clause...] newline schedule (type [,chunk]) for_loop Fortran:!$omp do [clause...] SCHEDULE (type [,chunk]) do_loop!$omp end do schedule: περιγράφει πως κατανέμονται οι επαναλήψεις του loop. Ο τύπος (type) μπορεί να είναι στατικός (static) ή δυναμικός (dynamic). Κάθε κομμάτι έχει μέγεθος chunk. Αν το μέγεθος δεν ορίζεται οι επαναλήψεις ισοκατανέμονται (αν αυτό είναι δυνατόν) σε κάθε επεξεργαστή. ΕΜ 361: Παράλληλοι Υπολογισμοί 2010/11, Κεφάλαιο 5 23

Παράδειγμα: Παραλληλισμός Loop με OpenMP #include <omp.h> #define CHUNKSIZE 100 #define N 1000 main () { int i, chunk; float a[n], b[n], c[n]; /* Some initializations */ for (i=0; i < N; i++) a[i] = b[i] = i * 1.0; chunk = CHUNKSIZE; #pragma omp parallel shared(a,b,c,chunk) private(i) { #pragma omp for schedule(dynamic,chunk) nowait for (i=0; i < N; i++) c[i] = a[i] + b[i]; } /* end of parallel section */ } ΕΜ 361: Παράλληλοι Υπολογισμοί 2010/11, Κεφάλαιο 5 24

Περισσότερες Εντολές OpenMP OMP Section: Χρησιμοποιείται για παραλληλισμό μη επαναληπτικής διαδικασίας (όχι loop). Δηλώνει ότι η ακόλουθη περιοχή θα κατανεμηθεί σε διαφορετικές threads. Κάθε section εκτελείται από άλλη thread. Format: C: #pragma omp sections [clause...] newline { #pragma omp section newline block of code #pragma omp section newline block of code } Fortran:!$OMP SECTIONS [clause...]!$omp SECTION block of code!$omp SECTION block of code!$omp END SECTIONS ΕΜ 361: Παράλληλοι Υπολογισμοί 2010/11, Κεφάλαιο 5 25

Περισσότερες Εντολές OpenMP OMP Master: Δηλώνει ότι η ακόλουθη περιοχή θα εκτελεστεί μόνο από την κεντρική thread (κεντρικό επεξεργαστή). C: #pragma omp master Fortran:!$OMP MASTER OMP Single: Δηλώνει ότι η ακόλουθη περιοχή θα εκτελεστεί μόνο από μία (οποιαδήποτε) thread. C: #pragma omp single Fortran:!$OMP SINGLE OMP PARALLEL DO/ parallel for: Συνδυασμός 2 εντολών OpenMP. Ισοδύναμο με χρήση 2 διαδοχικών εντολών, δηλαδή #pragma omp parallel for είναι ισοδύναμο με ένα #pragma omp parallel που ακολουθείται από ένα #pragma omp for. Πολλές Ακόμη (Δείτε το Manual του OpenMP). ΕΜ 361: Παράλληλοι Υπολογισμοί 2010/11, Κεφάλαιο 5 26

Βιβλιογραφία Parallel Programming, B. Wilkinson, M. Allen, Prentice Hall, 2nd Ed. 2005. Introduction to Parallel Computing, A. Grama, G. Karypis, V. Kumar, A. Gupta, Addison- Wesley, 2003. Parallel Computing: Theory and Practice, M. J. Quinn, McGraw-Hill, 1994. POSIX Threads: http://www.yolinux.com/tutorials/linuxtutorialposixthreads.html OpenMP: http://openmp.org/wp/ ΕΜ 361: Παράλληλοι Υπολογισμοί 2010/11, Κεφάλαιο 5 27

Τέλος Ενότητας