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



Σχετικά έγγραφα
Παράλληλη Επεξεργασία

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Αποδοτική εκτέλεση προγραμμάτων OpenMP σε συστάδες Η/Υ

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

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

Η γλώσσα προγραμματισμού C

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

Δημιουργία & Τερματισμός Διεργασιών. Προγραμματισμός II 1

Προγραμματισμός Ι (ΗΥ120)

Η πολυνηματική γλώσσα προγραμματισμού Cilk

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Πίνακες: μια σύντομη εισαγωγή. Πίνακες χαρακτήρων: τα "Αλφαριθμητικά"

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

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος

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

Εργαστήριο ΔΙΕΡΓΑΣΙΕΣ - ΔΙΑΧΕΙΡΙΣΗ

Δημιουργία & Τερματισμός Διεργασιών. Προγραμματισμός II 1

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

Διάλεξη 2η: Αλγόριθμοι και Προγράμματα

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

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

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

Ανάπτυξη και Σχεδίαση Λογισμικού

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

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Εισαγωγή στην FORTRAN. Δρ. Ιωάννης Λυχναρόπουλος

Προγραμματισμός Ι (HY120)

Εισαγωγή στον Προγραμματισμό

Υλοποίηση cancellation στον παραλληλοποιητικό μεταφραστή OMPi. Εμμανουήλ Φελουτζή. με Α.Μ: 1579 ΔΙΠΛΩΜΑΤΟΣ

Κατανεμημένα Συστήματα

Εισαγωγή στους Η/Υ. Γιώργος Δημητρίου. Μάθημα 3-4: Προγραμματισμός MIPS. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

Προγραμματισμός Η/Υ (ΤΛ2007 )

HY-486 Αρχές Κατανεμημένου Υπολογισμού

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

Κατανεμημένος και Παράλληλος Προγραμματισμός. Εισαγωγή στο MPI. Εγκατάσταση MPICH σε ένα ΗΥ 10/3/2017

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2017

Μεταγλώττιση και σύνδεση πολλαπλών αρχείων κώδικα. Προγραμματισμός II 1

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

Βιβλιοθήκες Αφηρημένοι τύποι δεδομένων. Προγραμματισμός II 1

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

Προγραμματισμός Η/Υ (ΤΛ2007 )

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1

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

Η γλώσσα προγραμματισμού C

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

Προγραμματισμός Ι (ΗΥ120)

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

Μεθόδων Επίλυσης Προβλημάτων

Πληροφορική 2. Γλώσσες Προγραμματισμού

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

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2017

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Προγραμματισμός Η/Υ (ΤΛ2007 )

Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι (HY120)

ΥΛΟΠΟΙΗΣΗ ΣΥΝΤΑΚΤΙΚΟΥ ΑΝΑΛΥΤΗ ΓΙΑ ΤΟΝ ΠΑΡΑΛΛΗΛΟΠΟΙΗΤΙΚΟ ΜΕΤΑΦΡΑΣΤΗ OMPI Η ΜΕΤΑΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΕΞΕΙ ΙΚΕΥΣΗΣ. Υποβάλλεται στην

ΓΛΩΣΣΙΚΗ ΤΕΧΝΟΛΟΓΙΑ. Python & NLTK: Εισαγωγή

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

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

Κλήση Συναρτήσεων ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ. Γεώργιος Παπαϊωάννου ( )

Ανάπτυξη και Σχεδίαση Λογισμικού

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Διεργασίες και Νήματα Εργαστηριακές Ασκήσεις

Προγραμματισμός Ι (ΗΥ120)

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

Μεθόδων Επίλυσης Προβλημάτων

Ενδεικτικές λύσεις και στατιστικά

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

Προγραμματισμός Ι. Προχωρημένα Θέματα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμό για ΗΜΥ

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL

Στόχοι και αντικείμενο ενότητας. Προτάσεις επανάληψης. Έλεγχος ροής προγράμματος. #5.. Εντολές Επανάληψης

Εισαγωγή στη γλώσσα προγραμματισμού JAVA. Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Δομή Επανάληψης. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD

Δομημένος Προγραμματισμός (ΤΛ1006)

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

Εισαγωγή στον Προγραμματισμό

Προγραμματισμός Υπολογιστών με C++

Ατομική Διπλωματική Εργασία. Dataflow Υλοποίηση της εφαρμογής OCEAN με την χρήση πλατφόρμας TFlux. Έλση Πραιτωρίτη ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ

Transcript:

Παράλληλη Επεξεργασία Φροντιστήριο: Εισαγωγή στο OpenMP Εργαστήριο Πληροφοριακών Συστημάτων Υψηλής Επίδοσης Parallel and Distributed Systems Group

Τι είναι το OpenMP Πρότυπο Επέκταση στη C/C++ και τη Fortran Έκφραση παραλληλισμού για Η/Υ κοινής μνήμης Μεταφέρσιμο, εφαρμόσιμο σε πολλές πλατφόρμες συμπεριλαμβανομένου του Unix και των Windows Διαθέσιμες υλοποιήσεις για C/C++ και Fortran Έχει δημιουργηθεί και υποστηρίζεται από πλήθος σημαντικών κατασκευαστών υλικού και λογισμικού Υποστηρίζει λεπτό και αδρό καταμερισμό του παραλληλισμού (fine/coarse - grained parallelism) Το πρότυπο OpenMP ορίζει τρία βασικά στοιχεία Οδηγίεςπροςτομεταγλωττιστή(compiler directives) Σύνολο συναρτήσεων χρόνου εκτέλεσης (run-time library functions) Μεταβλητές περιβάλλοντος (environment variables)

Στόχοι του OpenMP Ύπαρξη ενός κοινού προτύπου για πλειάδα αρχιτεκτονικών κοινής μνήμης Καθορισμός ενός απλού και περιορισμένου συνόλου οδηγιών για των προγραμματισμό παραλλήλων μηχανών κοινής μνήμης Γενικά μπορούμε να πετύχουμε την παραλληλοποίηση χρησιμοποιώντας ένα σύνολο 3-4 κοινών οδηγιών Δυνατότητα «σταδιακής» παραλληλοποίησης, αντίθετα με τις βιβλιοθήκες περάσματος μηνυμάτων όπου ακολουθείται προσέγγιση καθολικού ή καθόλου παραλληλισμού Δυνατότητα υποστήριξης ταυτόχρονα λεπτά και αδρά καταμερισμένου παραλληλισμού Υποστήριξη Fortran (77, 90 και 95), C και C++

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

Προγραμματιστικό Μοντέλο Fork Join μοντέλο :Τα OpenMP προγράμματα ξεκινούν σαν 1 διεργασία, το master thread. To master thread εκτελεί ακολουθιακά μέχρι να συναντήσει το 1 ο παράλληλο τμήμα Fork : Το master thread δημιουργεί μια ομάδα νημάτων Οι εντολές που εμπεριέχονται στο παράλληλο τμήμα εκτελούνται παράλληλα από τα πολλαπλά νήματα Join : Όταν τα νήματα της ομάδας ολοκληρώσουν τις εντολές του παράλληλου τμήματος συγχρονίζονται και τερματίζουν(*). Απομένει και πάλι μόνο το master thread Master Thread Παράλληλες Περιοχές (*) Στην πραγματικότητα περιμένουν να επαναχρησιμοποιηθούν σε επόμενη παράλληλη περιοχή

Προγραμματιστικό Μοντέλο Βασισμένο σε οδηγίες στο μεταγλωττιστή: Σχεδόν όλη η παραλληλοποίηση γίνεται με οδηγίες προς τον μεταγλωττιστή οι οποίες ενσωματώνονται στο πρόγραμμα Fortran ή C Υποστήριξη πολυεπίπεδου παραλληλισμού: Το πρότυπο υποστηρίζει την τοποθέτηση παράλληλων τμημάτων μέσα σε άλλα παράλληλα τμήματα. Ωστόσο οι υλοποιήσεις δεν προσφέρουν πάντα αυτή τη λειτουργικότητα Δυναμικά μεταβαλλόμενο πλήθος νημάτων: Το πρότυπο υποστηρίζει τη δυναμική αλλαγή του πλήθους των νημάτων που εκτελούν τα παράλληλα τμήματα. Και αυτή η λειτουργικότητα παρέχεται προαιρετικά από τις υλοποιήσεις

Σύνταξη Οι περισσότερες οδηγίες στο OpenMP είναι οδηγίες προς τον compiler και η σύνταξη τους έχει την ακόλουθη μορφή: C/C++ #pragma omp directive-name [clauses...] Fortran C$OMP directive-name [clauses ]!$OMP directive-name [clauses ] *$OMP directive-name [clauses ] Επομένως είναι δυνατή η αγνόηση τους από τον compiler

Δομημένα Τμήματα Κώδικα Οι περισσότερες οδηγίες στο OpenMP εφαρμόζονται σε δομημένα τμήματα κώδικα (structured blocks) Αυτό σημαίνει πως τα τμήματα που περικλείονται σε μία οδηγία πρέπει να έχουν ένα μοναδικό σημείο εισόδου στην αρχή τους και ένα μοναδικό σημείο εξόδου στο τέλος τους.

Κατηγορίες Οδηγιών Κάθε οδηγία στο OpenMP ανήκει σε μια από τις ακόλουθες 5 κατηγορίες Παράλληλες Περιοχές (Parallel Regions) Διαχείριση Εμβέλειας Δεδομένων Διαμοίραση Έργου (Work-sharing) Συγχρονισμός Συναρτήσεις χρόνου εκτέλεσης/ μεταβλητές περιβάλλοντος

Παράλληλες Περιοχές Καθορίζονται από την οδηγία parallel Είναι η πιο βασική οδηγία στο OpenMP Όταν ένα νήμα (master thread) συναντήσει την οδηγία parallel δημιουργεί επιπλέον νήματα που θα εκτελεστούν παράλληλα. Κάθε νήμα συμπεριλαμβανομένου και του master εκτελεί για λογαριασμό του τον κώδικα που περιλαμβάνει η οδηγία parallel Στο τέλος της οδηγίας υπονοείται από την υλοποίηση ένα barrier πέραν του οποίου συνεχίζει την εκτέλεση του μόνο το master thread

#include <stdio.h> #include <omp.h> Hello World! int main(int argc, char **argv) { int id; #pragma omp parallel private(id) { id = omp_get_thread_num(); printf("hello World from %d\n", id); } } fprintf(stderr, "Program terminated\n"); return 0;

Εμβέλεια Δεδομένων Εξ ορισμού οι περισσότερες μεταβλητές είναι κοινές σε μια παράλληλη περιοχή (shared memory model) Εξαιρέσεις: Μεταβλητές που αποθηκεύονται στη stack κάθε νήματος (ορίσματα ή τοπικές μεταβλητές σε υπο-ρουτίνες που καλούνται μέσα από το παράλληλο τμήμα) Αυτόματες μεταβλητές μέσα στο παράλληλο τμήμα Index μεταβλητές στα παράλληλα loops

Kαθορισμός Εμβέλειας Αλλαγή της εμβέλειας μιας μεταβλητής μπορεί να γίνει μέσω των προτάσεων: SHARED (υποδεικνύεται η διαμοίραση της μεταβλητής) PRIVATE (υποδεικνύεται η δημιουργία ιδιωτικού αντιγράφου) FIRSTPRIVATE(επιπλέον αρχικοποίηση με την τιμή πριν την parallel) LASTPRIVATE (επιπλέον ανάθεση της τελικής τιμήςόπωςαυτήπροβλέπεταιαπότην ακολουθιακή εκτέλελεση)

Παραδείγματα Εμβέλειας program wrong INTEGER X X = 0 C$OMP PARALLEL DO PRIVATE(X) DO J=1,1000 X= X + 1 ENDDO C$OMP END PARALLEL DO PRINT *, X program almost_right X = 0 C$OMP PARALLEL DO FIRSTPRIVATE(X) DO J=1,1000 X = X + 1 ENDDO C$OMP END PARALLEL DO PRINT *, X program closer X = 0 C$OMP PARALLEL DO FIRSTPRIVATE(X) C$OMP+ LASTPRIVATE(X) DO J=1,1000 X = X + 1 ENDDO C$OMP END PARALLEL DO PRINT *, X

Διαθέσιμο Υλικό Current state of the art Έκδοση πρωτοκόλλου 3.0 (ενοποιημένη για C/C++ και Fortran) Πληροφορίες και διαθέσιμο υλικό http://openmp.org/ Κατεβάστε την περιγραφή (specification) για το API. Βρείτε λύσεις μέσω του forum Τσεκάρετε tutorials και παραδείγματα Βιβλίο: Using OpenMP, by Chapman, Jost, and Van Der Pas

Απορίες και συζήτηση μέσω του forum του μαθήματος στο My.CEID e-mail επικοινωνίας kik@hpclab.ceid.upatras.gr Ανακοίνωση ασκήσεων και υλικό στην ιστοσελίδα του μαθήματος http://parallel.hpclab.ceid.upatras.gr/