Συστήµατα Παράλληλης Επεξεργασίας. Παράλληλοςπρογραµµατισµός: Υλοποίηση παράλληλων προγραµµάτων

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

Παράλληλος προγραμματισμός: Σχεδίαση και υλοποίηση παράλληλων προγραμμάτων

Παράλληλος προγραμματισμός: Σχεδίαση και υλοποίηση παράλληλων προγραμμάτων

Παράλληλος προγραμματισμός: Σχεδίαση και υλοποίηση παράλληλων προγραμμάτων

Παράλληλος προγραμματισμός: Σχεδίαση και υλοποίηση παράλληλων προγραμμάτων

Παράλληλος προγραμματισμός: Σχεδίαση και υλοποίηση παράλληλων προγραμμάτων

Σύνοψη παρουσίασης. Παράλληλες υπολογιστικές πλατφόρμες. Ανάλυση παράλληλων προγραμμάτων. Σχεδίαση παράλληλων προγραμμάτων

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

Παράλληλος προγραμματισμός: Σχεδίαση παράλληλων προγραμμάτων

Παράλληλος προγραμματισμός: Σχεδίαση και υλοποίηση παράλληλων προγραμμάτων

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

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

Συστήµατα Παράλληλης Επεξεργασίας. Παράλληλος προγραµµατισµός: Σχεδιασµός παράλληλων προγραµµάτων

Παράλληλος προγραμματισμός: Σχεδίαση και υλοποίηση παράλληλων προγραμμάτων

Παρουσίαση 2 ης Άσκησης:

Παράλληλος προγραμματισμός: Σχεδίαση και υλοποίηση παράλληλων προγραμμάτων

Παρουσίαση 1 ης Άσκησης:

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

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

Παράλληλος προγραμματισμός: Σχεδίαση και υλοποίηση παράλληλων προγραμμάτων

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

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

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

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ. Μελέτη Αλγορίθμων Εκτέλεσης και Χρονοδρομολόγησης Παράλληλων Εργασιών ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ

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

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

2. Στοιχεία Αρχιτεκτονικής Παράλληλων Υπολογιστών... 45

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

Παράλληλος προγραμματισμός: Σχεδίαση και υλοποίηση παράλληλων προγραμμάτων

Cilk: Φιλοσοφία και Χρήση

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

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

Θέματα Μεταγλωττιστών

Εισαγωγικά & Βασικές Έννοιες

ΕΝΟΤΗΤΑ 2 η ΙΑΧΕΙΡΙΣΗ ΡΟΗΣ ΕΡΓΑΣΙΑΣ (WORKFLOW MANAGEMENT) 2.1 Εισαγωγή

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

Παράλληλα Συστήματα. Γιώργος Δημητρίου. Ενότητα 4 η : Παράλληλος Προγραμματισμός. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

Περίληψη. Υπερυπολογιστές. Υπολογιστικά προβλήµατα. TOP 500 (Ιούνιος 2007) TOP 500 (Ιούνιος 2009) Ε-85: Ειδικά Θέµατα Λογισµικού

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

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

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

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

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

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

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

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

QuakeTM: Parallelizing a Complex Sequential Application Using Transactional Memory (Gajinov et al., 2009)

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

Εισαγωγικά & Βασικές Έννοιες

Παράλληλος προγραμματισμός: παράλληλες λ υπολογιστικές πλατφόρμες και ανάλυση προγραμμάτων

Λειτουργικά Συστήματα Πραγματικού Χρόνου

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

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

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

ΕΙΣΑΓΩΓΗ. Παρέχει µια διεπαφή (interface) ανάµεσα στο υλισµικό και στα προγράµµατα εφαρµογών/χρηστών.

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

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

Διαφορές single-processor αρχιτεκτονικών και SoCs

Για τις λύσεις των προβλημάτων υπάρχει τρόπος εκτίμησης της επίδοσης (performance) και της αποδοτικότητας (efficiency). Ερωτήματα για την επίδοση

ΣΥΣΤΗΜΑΤΑ ΠΑΡΑΛΛΗΛΗΣ ΕΠΕΞΕΡΓΑΣΙΑΣ 9o εξάμηνο ΗΜΜΥ, ακαδημαϊκό έτος

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

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

Γλώσσες υψηλού επιπέδου Περιέχουν περισσότερες εντολές για την εκτέλεση πολύπλοκων εργασιών Τα προγράµµατα µεταφράζονται σε γλώσσα µηχανής είτε από το

Παρουςίαςθ 2 θσ Άςκθςθσ:

Οργάνωση επεξεργαστή (2 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

Cilk: Φιλοσοφία και Χρήση

Λογισµικό (Software SW) Γλώσσες

ιεργασίες και Επεξεργαστές στα Κατανεµηµένων Συστηµάτων

Διεργασίες και Νήματα (2/2)

Παρουσίαση 5 ης Άσκησης:

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

Πολυπύρηνοι επεξεργαστές Multicore processors

Network Algorithms and Complexity Παραλληλοποίηση του αλγορίθμου του Prim. Αικατερίνη Κούκιου

Παράλληλος προγραμματισμός: Σχεδίαση παράλληλων προγραμμάτων

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

Αρχιτεκτονική Επεξεργαστών Ψ.Ε.Σ

Παράλληλος προγραμματισμός: Σχεδίαση παράλληλων προγραμμάτων

Παράλληλα Συστήματα. Γιώργος Δημητρίου. Ενότητα 3 η : Παράλληλη Επεξεργασία. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

Παράλληλος προγραμματισμός σε επεξεργαστές γραφικών

Παρουσίαση 5 ης Άσκησης:

Τεχνολογικά Επιτεύγµατα. Πλεονεκτήµατα. Ορισµός Κατανεµηµένου Συστήµατος. Μειονεκτήµατα. E-03: Λειτουργικά Συστήµατα ΙΙ 6. Εαρινό Εξάµηνο

Εισαγωγή στους υπολογιστές υψηλών επιδόσεων και το σύστημα ARIS του ΕΔΕΤ

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

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

ύο μηχανισμοί απαιτούνται: 1. Μία μέθοδος για τη δημιουργία διεργασιών

Λειτουργικά Συστήματα Η/Υ

Παράλληλη Επεξεργασία Εργαστηριακή Ασκηση Εαρινού Εξαµήνου 2008

Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής T.E.I. ΘΕΣΣΑΛΟΝΙΚΗΣ

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

ΥΠΟΛΟΓΙΣΤΙΚΗ ΧΗΜΕΙΑ ΜΕ ΕΦΑΡΜΟΓΕΣ ΣΕ ΜΟΡΙΑ, ΥΛΙΚΑ, ΠΕΡΙΒΑΛΛΟΝ

Καρακασίδης Αλέξανδρος Καστίδου Γεωργία Παπαφώτη Μαρία Πέτσιος Κων/νος Στέφανος Σαλτέας Καλογεράς Παναγιώτης. Threads in Java ΝΗΜΑΤΑ ΣΤΗ JAVA

ΠΛΕ- 074 Αρχιτεκτονική Υπολογιστών 2

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

Ζητήµατα Απόδοσης. Ιεραρχία Μνήµης. Αναγκαιότητα για Ιεραρχία Μνήµης. Processor-DRAM Gap (latency) Ε-85: Ειδικά Θέµατα Λογισµικού

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

Παραλληλισµός Εντολών (Pipelining)

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού

Επιτεύγµατα των Λ.Σ.

Minimum Spanning Tree: Prim's Algorithm

Ελληνικό Ανοικτό Πανεπιστήµιο. Η Ανάλυση και ο Σχεδιασµός στην Ενοποιηµένη ιαδικασία. ρ. Πάνος Φιτσιλής

Transcript:

Παράλληλοςπρογραµµατισµός: Υλοποίηση παράλληλων προγραµµάτων

Σύνοψη παρουσίασης «Μιλώντας»παράλληλα SPMD Master / Worker parallel for Fork / Join Υποστηρικτικές δοµές δεδοµένων Μοιραζόµενα δεδοµένα Μοιραζόµενες ουρές Κατανεµηµένα δεδοµένα Γλώσσες και εργαλεία POSIX threads MPI OpenMP Cilk Cuda Γλώσσες PGAS 2

«Μιλώντας»παράλληλα Πρώτοβήµα:σχεδιασµόςπαράλληλωνπρογραµµάτων (βλ. προηγούµενοµάθηµα) = σκέψη εύτερο βήµα: υλοποίηση παράλληλων προγραµµάτων = οµιλία Όπωςκαιστιςφυσικέςγλώσσες, ησκέψηκαιηοµιλίαείναιδύο στενά συνδεδεµένες λειτουργίες Ερώτηµα 1: Τι προγραµµατιστικές δοµές χρειάζοµαι για να µιλήσω παράλληλα; Ερώτηµα 2: Τι υποστήριξη χρειάζεται (από την αρχιτεκτονική, το λειτουργικό, τη γλώσσα προγραµµατισµού, τη βιβλιοθήκη χρόνου εκτέλεσης της γλώσσας) για να υλοποιηθούν οι παραπάνω δοµές µε αποδοτικό τρόπο; 2 κρίσιµα ζητήµατα απόδοσης Υψηλή επίδοση του παραγόµενου κώδικα (performance) Γρήγορη και εύκολη υλοποίηση (productivity)

Με αύξουσα ανάγκη σε υποστήριξη Single program multiple data (SPMD) Master / worker Parallel for Fork / Join Παράλληλες προγραµµατιστικές δοµές

SPMD = Single program multiple data Όλες οι διεργασίες εκτελούν το ίδιο τµήµα κώδικα Κάθε διεργασία έχει το δικό της σύνολο δεδοµένων SPMD Το αναγνωριστικό της διεργασίας χρησιµοποιείται για να διαφοροποιήσει την εκτέλεσή της Αποτελεί ευρύτατα διαδεδοµένη προγραµµατιστική τεχνική για παράλληλα προγράµµατα Έχειυιοθετηθείαπότο MPI

SPMD Ταιριάζει σε εφαρµογές όπου εκτελούνται όµοιες λειτουργίες σε διαφορετικά δεδοµένα (data parallelism) Απαιτεί σχήµατα συγχρονισµού και ανταλλαγής δεδοµένων µεταξύ των διεργασιών Σε πρωτόγονο επίπεδο τα παραπάνω παρέχονται από το λογισµικό συστήµατος Το µοντέλο SPMD µπορεί να υλοποιηθεί χωρίς επιπρόσθετη υποστήριξη Παρόλα αυτά το MPI διευκολύνει τον προγραµµατισµό παρέχοντας µη πρωτόγονες ρουτίνες και ανεξαρτησία από την πλατφόρµα εκτέλεσης Θεωρείται κοπιαστική προσέγγιση (non-productive) καθώς τα αφήνει (σχεδόν) όλα στον προγραµµατιστή Μπορεί να οδηγήσει σε υψηλή επίδοση καθώς ο προγραµµατιστής έχει τον (σχεδόν) πλήρη έλεγχο της υλοποίησης

Αρχικοποίηση Λήψη αναγνωριστικού Βήµατα υλοποίησης στο σχήµα SPMD Εκτέλεσητουίδιουκώδικασεόλουςτουςκόµβουςκαι διαφοροποίηση ανάλογα µε το αναγνωριστικό Εναλλακτικές ροές ελέγχου Ανάληψη διαφορετικών επαναλήψεων σε βρόχο Κατανοµή δεδοµένων Τερµατισµός

Παράδειγµα: εξίσωσηθερµότητας for (steps=0; steps < T; steps++) for (i=1; i<x-1; i++) for (j=1; j<y-1, j++) A[step+1][i][j] = 1/5 (A[step][i][j] + A[step][i-1][j] + A[step][i+1][j] + A[step][i][j-1] + A[step][i][j+1]) myid = get_my_id_from_system(); chunk = X / NUM_PRCS; // υποθέτει X % NUM_PRCS == 0 mystart = myid*chunk + 1; myend = myend = mystart + chunk; for (steps=0; steps < T; steps++){ for (i=mystart; i<myend; i++) for (j=1; j<y-1, j++) A[step+1][i][j] = 1/5 (A[step][i][j] + A[step][i-1][j] + A[step][i+1][j] + A[step][i][j-1] + A[step][i][j+1]) } synchronize_or_communicate( );

Master / Worker Υποθέτει την ταυτόχρονη λειτουργία ενός master και πολλών workers Οι workers επικοινωνούν µε τον master και λαµβάνουν εργασία προς εκτέλεση Μπορείναυλοποιηθείµετηβοήθειαµηνυµάτωνήµετηβοήθειαµιας µοιραζόµενης ουράς εργασιών Ο master εισάγει εργασίες Οι workers εξάγουν εργασίες Ταιριάζει σε εφαρµογές µε: δυναµική δηµιουργία εργασιών ανοµοιόµορφη κατανοµή φορτίου (load imbalance) που δεν µπορεί να προβλεφθεί στατικά

Master / Worker Επιτυγχάνει ισοκατανοµή του φορτίου Παρουσιάζει προβλήµατα κλιµάκωσης και δεν είναι ανεκτική σε σφάλµατα Η λογική του master είναι πολύ κεντρικοποιηµένη (bottlenecks) Ιεραρχίες από masters Ανοmaster «πέσει»; Βήµατα υλοποίησης ανάλογα µε του SPMD Ανάλογα µε το SPMD απαιτεί πολύ µικρή υποστήριξη

Παράδειγµα (shared work queue) master initialize work queue while!finished if new work has arrived insert in work queue worker while!finished remove work from work queue work(); Σηµείωση: ειδική µέριµνα χρειάζεται για τον τερµατισµό της εκτέλεσης και την πρόσβαση στην κοινή ουρά εργασιών

Παράδειγµα (message passing) master initialize local work queue while!finished service worker requests if new works have arrived insert in work queue worker while!finished send request to master receive work from master work(); Σηµείωση:ειδικήµέριµναχρειάζεταιγιατηδιαχείρισητων events (αιτήµατα workers, εισαγωγή νέων εργασιών) στον master

parallel for Η παραλληλοποίηση των for-loops αποτελεί σηµαντικότατη προσέγγιση στο σχεδιασµό ενός παράλληλου προγράµµατος Όπως είδαµε, µπορεί να επιτευχθεί στο µοντέλο SPMD αλλά για προγραµµατιστική ευκολία έχει ενσωµατωθεί σε γλώσσες και εργαλεία: OpenMP Cilk PGAS Χρειάζεται υποστήριξη από το σύστηµα Αυτόµατη µετάφραση του parallel for σε κώδικα ιαχείριση των δεδοµένων ροµολόγηση των νηµάτων Είναι ευθύνη του προγραµµατιστή να αποφασίσει αν ένα loop είναι παράλληλο

automatic parallelization Η εύρεση των παράλληλων for αποτελεί τον κυριότερο στόχο της αυτόµατης παραλληλοποίησης Ειδικά περάσµατα optimizing compilers αναζητούν: Αν ένα loop είναι παράλληλο Αν αξίζει να παραλληλοποιηθεί Η απόδειξη της παραλληλίας ενός loop είναι πολύ δύσκολη και βασίζεται στα λεγόµενα dependence tests

dependence analysis Πότε ένα loop είναι παράλληλο; Όταν δεν υπάρχουν εξαρτήσεις ανάµεσα στις επαναλήψεις του Τέλεια φωλιασµένοι βρόχοι: for i 1 = 1 to U 1 for i 2 = 1 to U 2 for i n = 1 to U n ιανύσµατα εξαρτήσεων d εκφράζουν τις εξαρτήσεις σε κάθε επίπεδο του φωλιάσµατος Πίνακας εξαρτήσεων D, περιέχει κατά στήλες τα διανύσµατα εξάρτησης ιανύσµατααπόστασης (distance vectors) Στοιχείατουπίνακα D d ij είναισταθεροίακέραιοιαριθµοί ιανύσµατα κατεύθυνσης (direction vectors): < (υπάρχει εξάρτηση από προσβάσεις στη µνήµη προηγούµενων επαναλήψεων) > (υπάρχει εξάρτηση από προσβάσεις στη µνήµη επόµενων επαναλήψεων) * (υπάρχει εξάρτηση από προσβάσεις στη µνήµη προηγούµενων ή επόµενων επαναλήψεων)

Παράδειγµα: εξίσωσηθερµότητας for (steps=0; steps < T; steps++) for (i=1; i<x-1; i++) for (j=1; j<y-1, j++) A[step+1][i][j] = 1/5 (A[step][i][j] + A[step][i-1][j] + A[step][i+1][j] + A[step][i][j-1] + A[step][i][j+1]) D= 1 0 0 1 1 0 1 1 0 1 0 1 1 0 1

for (k=0; k<n; k++) for (i=0; i<n; i++) for (j=0; j<n, j++) A[i][j] = min(a[i][j], A[i][k]+A[k][j]) Παράδειγµα: Floyd-Warshall D= 1 0 0 1 0 * 1 * 0

Κανόνες παραλληλίας loop Ένας βρόχος στο επίπεδο i ενός φωλιασµένου βρόχου είναι παράλληλος όταν: το i-οστό στοιχείο ΟΛΩΝ των διανυσµάτων εξάρτησης είναι 0 ΉότανΟΛΑταυποδιανύσµατααπό 0 εως i-1 είναι λεξικογραφικά ΘΕΤΙΚΑ (= το πρώτο µη µηδενικό στοιχείο είναι θετικό) Άσκηση: Ποια loops παραλληλοποιούνται στην εξίσωση θερµότητας και στον αλγόριθµο FW?

Fork / Join Αφορά εφαρµογές µε δυναµική ανάγκη για δηµιουργία / τερµατισµό tasks Τα tasks δηµιουργούνται (fork) και τερµατίζονται (join) δυναµικά Π.χ. αλγόριθµοςσχεδιασµένοςµετην Divide and Conquer στρατηγική OpenMP tasks #pragma omp task #pragma omp taskwait Cilk spawn sync

Languages and tools SPMD Master / Worker parallel for Fork / join MPI OpenMP Cilk CUDA

Κοινού χώρου διευθύνσεων Γενικό προγραµµατιστικό µοντέλο Παραδοσιακά προγραµµατιστικά µοντέλα Υποθέτει τη δυνατότητα πρόσβασης σε µοιραζόµενα δεδοµένα µέσω εντολών ανάγνωσης / εγγραφής Παρέχει ευκολία στον προγραµµατισµό Υλοποιείται δύσκολα και µη αποδοτικά σε αρχιτεκτονικές που δεν υποστηρίζουν κοινή µνήµη στο υλικό Σχετικές γλώσσες / εργαλεία: OpenMP Cilk Ανταλλαγής µηνυµάτων εν υπάρχουν µοιραζόµενα δεδοµένα Ταπαράλληλα tasks επικοινωνούνµέσωανταλλαγήςµηνυµάτων (2-sided ή 1-sided communication) Χρησιµοποιείται σε κλιµακώσιµα συστήµατα των χιλιάδων επεξεργαστών Είναιδύσκολοπρογραµµατιστικάκαθώςοδηγείσε «τεµαχισµένα» (fragmented) προγράµµατα Σχετικές γλώσσες / εργαλεία: MPI

Shared data structures Η παραλληλοποίηση ενός αλγορίθµου οδηγεί συχνά στην ανάγκη για διαµοιρασµό δεδοµένων ανάµεσα σε παράλληλα tasks Αν έστω και ένα task πραγµατοποιεί εγγραφή στις µοιραζόµενες δοµές δεδοµένων απαιτείται προσοχή: Ορθότητα προγράµµατος Κόστος συγχρονισµού προσβάσεων Περιορισµός παραλληλίας Readability, maintainability, composability Προσεγγίσεις: Είναιαπαραίτητοταδεδοµέναναείναικοινά; Εναλλακτικά: privatization + reduction Critical sections: Fine-grained locking Coarse-grained locking Readers - writers Transactional memory Non-blocking data structures

Shared queues Οι µοιραζόµενες ουρές είναι κρίσιµη δοµή δεδοµένων Work queues στοσχήµα Master / worker Task queues στο runtime του OpenMP και της Cilk Σε πολλούς αλγόριθµους της επιστήµης των υπολογιστών Γενικά παρέχονται από τις βιβλιοθήκες των γλωσσών (C++, Java) Η αποδοτική υλοποίησή τους εξαρχής αποτελεί ιδιαίτερη πρόκληση Περισσότερα: The Art of Multiprocessor Programming, by M. Herlihy and N. Shavit

Distributed arrays Στο µοντέλο της ανταλλαγής µηνυµάτων χρειάζεται να κατανεµηθούν οι πίνακες Τυπικές κατανοµές 1 διάσταση: Κατά γραµµές (ή κατά στήλες) Μπλοκ Κυκλικά Μπλοκ κυκλικά 2 διαστάσεις: Μπλοκ Μπλοκ-Κυκλικά Η κατανοµή που επιλέγεται επηρεάζει: Τον αριθµό των µηνυµάτων Τονόγκοτωνδεδοµένων Την κατανοµή του φορτίου

POSIX threads Αποτελούν πρωτόγονο τρόπο πολυνηµατικού προγραµµατισµού για systems programming Συνδυαζόµενα µε TCP/IP sockets αποτελούν την πιο βασική πλατφόρµα εργαλείων για παράλληλο προγραµµατισµό SPMD ή Master / Slave + : ο χρήστης έχει απόλυτο έλεγχο της εκτέλεσης - : ιδιαίτερα κοπιαστικός και επιρρεπής σε σφάλµατα τρόπος προγραµµατισµού

MPI Μοντέλο ανταλλαγής µηνυµάτων για συστήµατα κατανεµηµένης µνήµης Αποτελεί τον de facto τρόπο προγραµµατισµού σε υπερυπολογιστικά συστήµατα SPMD (και Master / Slave) Απλοποιεί την υλοποίηση της επικοινωνίας σε σχέση µε τη βιβλιοθήκη των sockets καθώς υποστηρίζει µεγάλο αριθµό από χρήσιµες ρουτίνες Βελτιστοποιεί την επικοινωνία (κυρίως σε collective επικοινωνία) Ο χρήστης αναλαµβάνει το διαµοιρασµό των δεδοµένων και την επικοινωνία µέσω µηνυµάτων fragmented τρόπος προγραµµατισµού

OpenMP Προγραµµατιστικόεργαλείοπουβασίζεταισεοδηγίες (directives) προς το µεταγλωττιστή Αφορά κατά κύριο λόγο αρχιτεκτονικές κοινής µνήµης Μπορεί να αξιοποιηθεί για την εύκολη παραλληλοποίηση ήδη υπάρχοντος σειριακού κώδικα Παρέχει ευελιξία στο προγραµµατιστικό στυλ: SPMD Master / Workers parallel for Fork / Join (ενσωµάτωσητων tasks, 2008)

Πολυνηµατικός προγραµµατισµός για αρχιτεκτονικές κοινής µνήµης Επεκτείνει τη C µε λίγες επιπλέον λέξεις κλειδιά Κάθε πρόγραµµα γραµµένο σε Cilk έχει ορθή σειριακή σηµασιολογία (µπορεί να εκτελεστεί σωστά σειριακά) Σχεδιασµός προγραµµάτων µε χρήση αναδροµής Σχήµα Fork / Join Υποστήριξη parallel for Βασικέςλέξειςκλειδιά: cilk, spawn, sync C void vadd (real *A, *A, real *B, *B, int int n){ n){ int int i; i; for for (i=0; i<n; i++) A[i]+=B[i]; } Cilk Cilk void cilk vadd (real *A, real *B, int n){ if if (n<=base) { int int i; i; for for (i=0; i<n; i++) A[i]+=B[i]; } else { spawn vadd (A, B, n/2; vadd spawn(a+n/2, B+n/2, n-n/2; } sync; }

CUDA Compute Unified Device Architecture Παράλληλη αρχιτεκτονική που προτάθηκεαπότην NVIDIA Βασίζεταισε GPUs (GP-GPUs = General Purpose-Graphical processing Units) Προγραµµατισµός: C extensions για αρχιτεκτονικές CUDA Ανάθεση υπολογιστικά απαιτητικών τµηµάτων του κώδικα στην κάρτα γραφικών GPU = accelerator massively data parallel Manycore system

SIMT = Single Instruction Multiple Threads Προγραµµατισµός σε περιβάλλον CUDA Τα threads δροµολογούνται σε οµάδες που λέγονται warps Το κόστος δροµολόγησης των threads είναι µηδενικό Σεκάθεκύκλοόλατα threads εκτελούντηνίδιαεντολή Εκτελούνται όλα τα control paths Τα µη έγκυρα control paths µαταιώνονται (aborted) στο τέλος Οι αλγόριθµοι πρέπει να σχεδιάζονται µε data parallel λογική Τα branches και ο συγχρονισµός κοστίζουν Η χωρική τοπικότητα αξιοποιείται κατά µήκος των threads και όχι εντός µιας CPU όπως γίνεται στους συµβατικούς επεξεργαστές Αρκετά «σκιώδη» ζητήµατα επηρεάζουν την επίδοση και χρήζουν ιδιαίτερης προσοχής Παραλληλισµός Πρόσβαση στα δεδοµένα Συγχρονισµός

Γλώσσες PGAS Partitioned Global Address Space Προσπαθείναέχειταθετικάκαιαπότουςδύοκόσµους: Προγραµµατιστική ευκολία όπως το µοντέλο του κοινού χώρου διευθύνσεων Επίδοση και κλιµακωσιµότητα όπως το µοντέλο της ανταλλαγής µηνυµάτων Υποθέτει καθολικό χώρο διευθύνσεων (global address space) που κατανέµεται (partitioned) στις τοπικές µνήµες των επεξεργαστών ενός συστήµατος κατανεµηµένης µνήµης Απαιτεί πολύ ισχυρό run-time σύστηµα Για προσβάσεις σε δεδοµένα που βρίσκονται σε αποµακρυσµένη µνήµη χρησιµοποιεί 1-sided communication Υλοποιήσεις: UPC Fortress Co-array Fortrean X10 Chapel