Σύγχρονοι υπολογισμοί

Σχετικά έγγραφα
Παράλληλη Επεξεργασία Κεφάλαιο 6 ο Σύγχρονος Παραλληλισμός

Σωληνωτή επεξεργασία

Παραλληλισμός δεδομένων ή Φυσικός παραλληλισμός

Εμπειρική αποτίμηση παράλληλων προγραμμάτων

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

Επιμερισμός δεδομένων

Παρουσίαση 3ης Άσκησης

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

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

Προγραμματισμός Η/Υ. Ενότητα 5: Εντολές Επανάληψης

Συνήθεις διαφορικές εξισώσεις προβλήματα οριακών τιμών

Διάλεξη 04: Παραδείγματα Ανάλυσης

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

Βασίλειος Μαχαιράς Πολιτικός Μηχανικός Ph.D.

Διαδικασιακός Προγραμματισμός

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

Διάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων

Κατανεμημένα Συστήματα με Java. Ενότητα # 4: Αμοιβαίος αποκλεισμός Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Παράλληλη Επεξεργασία Κεφάλαιο 7 ο Αρχιτεκτονική Συστημάτων Κατανεμημένης Μνήμης

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 4. Παραδείγματα Ανάλυσης Πολυπλοκότητας Ανάλυση Αναδρομικών Αλγόριθμων

Αριθμητικές Μέθοδοι σε Προγραμματιστικό Περιβάλλον

Διάλεξη 16: Πρόβλημα Συμφωνίας. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

Μέθοδοι μονοδιάστατης ελαχιστοποίησης

Συνεπείς καθολικές καταστάσεις & επιβεβαίωση ιδιοτήτων. Κατανεμημένα Συστήματα 1

Μέθοδοι μονοδιάστατης ελαχιστοποίησης

Επαναληπτικές Διαδικασίες

Τυχαιοκρατικοί Αλγόριθμοι

Αµοιβαίοςαποκλεισµός. Κατανεµηµένα Συστήµατα 03-1

6. Στατιστικές μέθοδοι εκπαίδευσης

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

Εργασία για το μεταπτυχιακό μάθημα Παράλληλοι υπολογισμοί από τον φοιτητή Μουζακίδη Αλέξανδρο AM M 853

Διάλεξη 10: Αλγόριθμοι Αμοιβαίου Αποκλεισμού σε περιβάλλον ανταλλαγής μηνυμάτων. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

Αριθμητική εύρεση ριζών μη γραμμικών εξισώσεων

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος

Το μοντέλο Perceptron

Διάλεξη 17: Συμφωνία με Βυζαντινά Σφάλματα. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

Κεφ. 6Β: Συνήθεις διαφορικές εξισώσεις (ΣΔΕ) - προβλήματα αρχικών τιμών

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

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

1 ο ΦΥΛΛΑΔΙΟ ΑΣΚΗΣΕΩΝ - ΑΛΓΟΡΙΘΜΟΙ

Κεφ. 7: Συνήθεις διαφορικές εξισώσεις (ΣΔΕ) - προβλήματα αρχικών τιμών

Ενδεικτικές Ερωτήσεις Θεωρίας

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

Όρια Αλγόριθμων Ταξινόμησης. Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη

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

Χρήστος Ι. Σχοινάς Αν. Καθηγητής ΔΠΘ. Συμπληρωματικές σημειώσεις για το μάθημα: «Επιχειρησιακή Έρευνα ΙΙ»

Διδάσκων: Παναγιώτης Ανδρέου

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

Συνεπής παρατήρηση εκτέλεσης & συνεπείς καθολικές καταστάσεις. Κατανεμημένα Συστήματα 1

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

TO ΥΠΟΠΡΟΓΡΑΜΜΑ ΣΥΝΑΡΤΗΣΗ

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2

Αναγνώριση Προτύπων Ι

Αριθμητική Ανάλυση και Εφαρμογές

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

Matrix Algorithms. Παρουσίαση στα πλαίσια του μαθήματος «Παράλληλοι. Αλγόριθμοι» Γ. Καούρη Β. Μήτσου

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

Μάθημα 4: Πρότυπα, Πρωτόκολλα & Υπηρεσίες

ΦΑΙΝΟΜΕΝΑ ΜΕΤΑΦΟΡΑΣ ΙΙ ΜΕΤΑΦΟΡΑ ΘΕΡΜΟΤΗΤΑΣ ΚΑΙ ΜΑΖΑΣ

MATLAB. Εισαγωγή στο SIMULINK. Μονάδα Αυτόματης Ρύθμισης και Πληροφορικής

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΠΟΛΙΤΙΚΩΝ ΜΗΧΑΝΙΚΩΝ ΤΟΜΕΑΣ ΥΔΡΑΥΛΙΚΗΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΙΚΗΣ ΤΕΧΝΙΚΗΣ. Διάλεξη 3: Περιγραφή αριθμητικών μεθόδων (συνέχεια)

Κεφάλαιο 4: Επιλογή σημείου παραγωγής

Επαναληπτικές μέθοδοι

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

Ιδιοκτησία Αντικειµένου

3 ΑΝΑ ΡΟΜΗ ΑΝΑΖΗΤΗΣΗ - ΤΑΞΙΝΟΜΗΣΗ. n! = 1*2*3*..(n-1)*n. n! = 1 αν n = 0, = n*(n-1)! αν n > ΑΝΑ ΡΟΜΗ Εισαγωγή

ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ: ΕΞΙ (6)

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

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

Ενδεικτικές Λύσεις 1ου Σετ Ασκήσεων

Μέθοδοι πολυδιάστατης ελαχιστοποίησης

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Βασικές αρχές εκπαίδευσης ΤΝΔ: το perceptron. "Τεχνητά Νευρωνικά Δίκτυα" (Διαφάνειες), Α. Λύκας, Παν. Ιωαννίνων

Δείκτες & Πίνακες Δείκτες, Πίνακες

Κατανεμημένα Συστήματα: Θεωρία και Προγραμματισμός. Ενότητα # 1: Εισαγωγή Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Εντολές ελέγχου ροής if, for, while, do-while

ΠΑΝΕΛΛΑΔΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΗΜΕΡΗΣΙΩΝ ΕΠΑΛ (ΟΜΑΔΑ Α ) ΚΑΙ ΜΑΘΗΜΑΤΩΝ ΕΙΔΙΚΟΤΗΤΑΣ ΗΜΕΡΗΣΙΩΝ ΕΠΑΛ (ΟΜΑΔΑ Α ΚΑΙ Β ) ΤΕΤΑΡΤΗ 20 ΙΟΥΝΙΟΥ 2018

Υπολογισμός - Εντολές Επανάληψης

1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες εντολές (μορφές) της;

Αναγνώριση Προτύπων Ι

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 8 Ο. Ταξινόμηση και Αναζήτηση Συναρτήσεις χειρισμού οθόνης ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Διδάσκων: Παναγιώτης Ανδρέου

Αριθμητική Ανάλυση και Εφαρμογές

Ορισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα

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

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

ΣΥΣΤΗΜΑΤΑ ΑΝΑΜΟΝΗΣ Queuing Systems Διαδικασίες Birth-Death, Ουρές Markov:

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

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

Λυσεις προβλημάτων τελικής φάσης Παγκύπριου Μαθητικού Διαγωνισμού Πληροφορικής 2007

ΣΤΗΛΗ Β ΑΠΟΤΕΛΕΣΜΑ 1. float(10) α pow(2,3) β abs(-10) γ int(5.6) δ. 10 ε. 5.6 Μονάδες 8 ΣΤΗΛΗ Α ΣΥΝΑΡΤΗΣΗ

10 η Διάλεξη C++ - Πίνακες. Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ

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

Προγραμματιστικές Τεχνικές

ΑΛΓΟΡΙΘΜΟΙ Ενότητα 10

Κεφάλαιο 4: Επιλογή σημείου παραγωγής

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

Μαθησιακές δυσκολίες ΙΙ. Παλαιγεωργίου Γιώργος Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών Τηλεπικοινωνιών και Δικτύων, Πανεπιστήμιο Θεσσαλίας

Transcript:

Σύγχρονοι υπολογισμοί Κ.Γ. Μαργαρίτης προσαρμογή από το μάθημα του Barry Wilkinson ITCS 4145/5145 2006 Cluster Computing Univ. of North Carolina at Charlotte 6.1

Σύγχρονοι υπολογισμοί Σε ένα (πλήρως) σύγρχονο υπολογισμό, όλες οι διεργασίες συγχρονίζονται σε τακτά χρονικά σημεία. Φράγμα (Barrier) Βασικός μηχανισμός συγχρονισμού διεργασιών. Το φράγμα τοποθετείται στο σημείο του κώδικα όπου οι διεργασίες πρέπει να περιμένουν για συγχρονισμό. Οι διεργασίες μπορούν να συνεχίσουν από το φράγμα μόνο αν όλες οι διεργασίες φθάσουν εκεί (ή σε μερικές εφαρμογές, όταν ένας αριθμός διεργασιών φθάσει στο φράγμα). 6.2

Διεργασίες φθάνουν σε φράγμα σε διαφορετικές χρονικές στιγμές 6.3

Το φράγμα υλοποιείται με κλήση ειδικής συνάρτησης βιβλιοθήκης: 6.4

MPI MPI_Barrier() Φράγμα με μοναδική παράμετρο το περιβάλλον επικοινωνίας. Καλείται από κάθε διεργασία που ανήκει στο περιβάλλον επικοινωνίας. Η κλήση επιστρέφει μόνο όταν όλες οι διεργασίες της ομάδας φθάσουν στη συνάρτηση. 6.5

Υλοποίηση φράγματος 1 Συγκεντρωτικός μετρητής (γραμμικό φράγμα): 6.6

Υλοποίηση φράγματος 2 Τα φράγματα που βασίζονται σε μετρητές έχουν δύο φάσεις: Μια διεργασία εισέρχεται στη φάση άφιξης και δεν φεύγει από εκεί μέχρις ότου φθάσουν όλες οι διεργασίες. Τότε οι διεργασίες συνεχίζουν στη φάση αναχώρησης όπου εξέρχονται με τη σειρά εισόδου. 6.7

Παράδειγμα απλού κώδικα φράγματος με μεταβίβαση μυνημάτων 1 Συντονιστής: for (i = 0; i < n; i++) /*count slaves as they reach barrier*/ recv(pany); for (i = 0; i < n; i++) /* release slaves */ send(pi); Εργαζόμενοι: send(pmaster); recv(pmaster); 6.8

Παράδειγμα απλού κώδικα φράγματος με μεταβίβαση μυνημάτων 2 6.9

Φράγμα δυαδικού δένδρου Αποτελεσματικότερο. Απαιτεί O(log p) βήματα, αντί για O(p). Έστω 8 διεργασίες, P0, P1, P2, P3, P4, P5, P6, P7: 1η φάση: το P1 στέλνει στο P0; (όταν το P1 φθάσει στο φράγμα του) το P3 στέλνει στο P2; (όταν το P3 φθάσει στο φράγμα του) το P5 στέλνει στο P4; (όταν το P5 φθάσει στο φράγμα του) το P7 στέλνει στο P6; (όταν το P7 φθάσει στο φράγμα του) 2η φάση: το P2 στέλνει στο P0; (τα P2 & P3 φθάσαν στο φράγμα τους) το P6 στέλνει στο P4; (τα P6 & P5 φθάσαν στο φράγμα τους) 3η φάση: το P4 στέλνει στο P0; (τα P4, P5, P6, & P7 φθάσαν στο φράγμα) το P0 τερματίζει τη φάση άφιξης (όταν το P0 φθάσει στο φράγμα και το P4 στέλει) Η αναχώρηση υλοποιείται με αντίστροφο δένδρο. 6.10

Φράγμα δυαδικού δένδρου 6.11

Φράγμα πεταλούδας 6.12

Τοπικός συγχρονισμός Suppose a process Pi needs to be synchronized and to exchange data with process Pi-1 and process Pi+1 before continuing: Not a perfect three-process barrier because process Pi-1 will only synchronize with Pi and continue as soon as Pi allows. Similarly, process Pi+1 only synchronizes with Pi. 6.13

Αδιέξοδο Όταν ένα ζεύγος διεργασιών ανταλλάσσουν μεταξύ τους μηνύματα (send και recv), υπάρχει πιθανότητα αδιεξόδου. Το αδιέξοδο μπορεί να συμβεί όταν και οι δυο διεργασίες ξεκινούν την αποστολή (send), με χρήση σύγχρονης αποστολής (synchronous send) ή ανασταλτικής αποστολής (blocking send) με ανεπαρκή απομόνωση. Και οι δύο αποστολές θα αποτύχουν να επιστρέψουν. Θα περιμένουν την αντίστοιχη παραλαβή (recv) που όμως ποτέ δεν θα εκτελεστεί. 6.14

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

Συνδυασμένες ανασταλτικές διεργασίες χωρίς αδιέξοδα sendrecv() Το MPI παρέχει συνδυασμένες διεργασίες MPI_Sendrecv() και MPI_Sendrecv_replace(). Το MPI sendrev()s έχει 12 παραμέτρους! 6.16

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

Παραδείγματα καθολικά σύγχρονου υπολογισμού Σύγχρονος παραλληλισμός δεδομένων Η ίδιος υπολογισμός εφαρμόζεται ταυτόχρονα σε διαφορετικά δεδομένα. Ιδιαίτερα βολικός γιατί: Είναι εύκολος στον προγραμματισμό. Είναι εύκολος στην κλιμάκωση. Πολλοί αριθμητικοί και ημι-αριθμητικοί αλγόριθμοι είναι προφανείς υποψήφιοι. 6.18

Πρόσθεση μιας σταθεράς σε κάθε στοιχείο ενός πίνακα: for (i = 0; i < n; i++) a[i] = a[i] + k; Η δήλωση: a[i] = a[i] + k; Παράδειγμα μπορεί να εκτελεστεί παράλληλα σε πολλούς επεξεργαστές με διαφορετικό i (0 < i <= n). 6.19

Παράδειγμα (συν.) 6.20

Δομή forall Ειδική δομή σε γλώσσες παράλληλου προγραμματισμού για τον ορισμό παραλληλισμού δεδομένων forall (i = 0; i < n; i++) { body } Για παράδειγμα η δήλωση λέει οτι n στιγμιότυπα των δηλώσεων στο body εκτελούνται παράλληλα σε διαφορετικούς επεξεργαστές. Κάθε στιγμιότυπο χρησιμοποιεί διαφορετική τιμή της μεταβλητής i, για rank = 0 θα έχουμε i = 0, στο rank= 1, i = 1, κλπ. 6.21

Χρήση barrier Η δομή forall μπορεί να υλοποιηθεί και με φράγμα (barrier). Το προηγούμενο παράδειγμα i = myrank; a[i] = a[i] + k; /* body */ barrier(mygroup); όπου το myrank είναι μεταξύ 0 και n - 1. 6.22

Παράδειγμα παραλληλισμού δεδομένων Prefix Sum Με δεδομένη μια σειρά αριθμών, x 0,, x n-1, υπολογίζουμε όλα τα μερικά αθροίσματα, δηλαδή: x 0 + x 1 ; x 0 + x 1 + x 2 ; x 0 + x 1 + x 2 + x 3 ;. Ο υπολογισμός μπορεί να οριστεί και για άλλες πράξεις με ιδιότητες όπως της πρόσθεσης. Πολλές εφαρμογές σε θέματα όπως ανάθεση διεργασιών σε επεξεργαστές, συμπίεση δεδομένων, ταξινόμηση, πράξεις πολυωνύμων. 6.23

Χωροχρονικό διάγραμμα prefix sum 6.24

Ακολουθιακός κώδικας for (j = 0; j < log(n), j++) /* at each step add */ for (i = 2^j; i < n ; i++) /* to accumulating sum */ x[i] = x[i] + x[i - 2^j]; Παράλληλος κώδικας for (j = 0; j < log(n), j++) */ /* at each step add forall (i = 0; i < n ; i++) */ /* to sum if (j >= 2^j) x[i] = x[i] + x[i - 2^j]; 6.25

Καθολικά σύγχρονος υπολογισμός Κάθε επανάληψη αποτελείται από N διεργασίες που ξεκινούν 'μαζί' στην αρχή της επανάληψης. Η επόμενη επανάληψη δεν μπορεί να ξεκινήσει αν δεν έχουν τελειώσει όλες οι διεργασίες της προηγούμενης επανάληψης. Με χρήση δομής forall: for (j = 0; j < n; j++) /* for each iteration */ forall (i = 0; i < N; i++) /* N procs each using */ body(i); /* specific value of i*/ Με χρήση φράγματος (barrier): for (j = 0; j < n; j++) { /* for each iteration */ i = myrank; /* specific value of i */ body(i); barrier(mygroup); } 6.26

Επαναληπτική επίλυση γραμμικού συστήματος Έστω σύστημα n εξισώσεων με n αγνώστους. όπου οι άγνωστοι είναι οι x 0, x 1, x 2, x n-1 (0 <= i < n). Σε μορφή ανυσμάτων A x = b. 6.27

Με αναδιάταξη της i εξίσωσης: Αυτή η εξίσωση δίνει το x i ως συνάρτηση των άλλων αγνώστων. Με τυχαίες αρχικές τιμές και διαδοχικές επαναλήψεις επιτυγχάνουμε καλύτερες προσεγγίσεις (επανάληψη Jacobi). 6.32

Επανάληψη Jacobi Όλες οι τιμές του ανύσματος x ενημερώνονται μαζί. Μπορεί να αποδειχτεί οτι η μέθοδος Jacobi θα συγκλίνει αν οι τιμές των διαγωνίων στοιχείων του πίνακα A έχουν απόλυτη τιμή μεγαλύτερη από το άθροισμα των απόλυτων τιμών των υπόλοιπων στοιχείων της ίδιας γραμμής του πίνακα Α, δηλαδή: Η συνθήκη αυτή είναι ικανή αλλά όχι και αναγκαία. 6.29

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

Ρυθμός σύγκλισης 6.31

Παράλληλος κώδικας Η διεργασία P i μπορεί να είναι x[i] = b[i]; /*initialize unknown*/ for (iteration = 0; iteration < limit; iteration++) { sum = -a[i][i] * x[i]; for (j = 0; j < n; j++) /* compute summation */ sum = sum + a[i][j] * x[j]; /* compute unknown */ new_x[i] = (b[i] - sum) / a[i][i]; } allgather(&new_x[i]); /*bcast/rec values */ global_barrier(); /* wait for all procs */ To allgather() στέλνει τις νέες τιμές του x[i] από τη διεργασία P i προς όλες τις άλλες διεργασίες και συλλέγει αντίστοιχα δεδομένα από τις άλλες διεργασίες. 6.32

Εισαγωγή μιας νέας λειτουργίας - Allgather. Allgather Διανομή και συλλογή τιμών ενός πίνακα σε μια λειτουργία. 6.33

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

Τύποι κατανομής Τομεακή (block) κατανομή κατανομή ομάδων διαδοχικών αγνώστων σε διαδοχικούς επεξεργαστές, π.χ. ο P 0 λαμβάνει τους x 0, x 1, x 2,, x (n/p)-1, ο P 1 λαμβάνει τους x (n/p), x (n/p)+1, x (n/p)+2,, x 2(n/p)-1, κλπ. Κυκλική (cyclic) κατανομή κατανομή ενός αγνώστου σε κάθε επεξεργαστή, και στη συνέχεια πάλι από την αρχή, π.χ ο P 0 λαμβάνει τους x 0, x p, x 2p,, x ((n/p)-1)p, ο P 1 λαμβάνει τους x 1, x p+1, x 2p+1,, x ((n/p)-1)p+1, κλπ. Η κυκλική κατανομή εδώ δεν έχει κάποιο πλεονέκτημα, ίσως έχει και μειονέκτημα λόγω περίπλοκου υπολογισμού δεικτών (Στατική δυναμική κατανομή) 6.35

Επίδραση υπολογισμού και επικοινωνίας στην επανάληψη Jacobi 6.36

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

Η επιφάνεια χωρίζεται σε πλέγμα σημείων, h i,j, με 0 < i < n, 0 < j < n. Η θερμοκρασία ενός εσωτερικού σημείου υπολογίζεται ως ο μέσος όρος των τεσσάρων γειτονικών σημείων. Υπολογισμός: Ο υπολογισμός επαναλαμβάνεται για όλη την επιφάνεια και για κάθε σημείο μέχρι την τελική σύγκλιση (διαφορά μικρότερη από ανοχή) ή για συγκεκριμένο αριθμό επαναλήψεων. 6.38

Μοντέλο θερμικής διάχυσης 6.39

Φυσική διάταξη 1 6.40

Φυσική διάταξη 2 Τα σημεία αριθμούνται ξεκινώντας από το 1, περιλαμβάνοντας και τα περιμετρικά σημεία. Κάθε σημείο χρησιμοποιεί την εξίσωση Οι εξισώσεις μπορούν να γραφούν ως σύστημα γραμμικών εξισώσεων με αγνώστους τα x i-m, x i-1, x i+1, and x i+m : Επίλυση ζωνικού (εδώ πεντα-διαγώνιου) γραμμικού συστήματος (εξίσωση Laplace). 6.41

Ακολουθιακός κώδικας Με συγκεκριμένο αριθμό επαναλήψεων for (iteration = 0; iteration < limit; iteration++) { for (i = 1; i < n; i++) for (j = 1; j < n; j++) g[i][j] = 0.25*(h[i-1][j]+h[i+1][j]+h[i][j-1]+h[i][j+1]); for (i = 1; i < n; i++) /* update points */ for (j = 1; j < n; j++) h[i][j] = g[i][j]; } και με χρήση δι-διάστατου πίνακα (n x n) και με εξαίρεση των περιμετρικών σημείων (0 και n). 6.42

Τερματισμός με κριτήριο σύγκλισης do { for (i = 1; i < n; i++) for (j = 1; j < n; j++) g[i][j] = 0.25*(h[i-1][j]+h[i+1][j]+h[i][j-1]+h[i][j+1]); for (i = 1; i < n; i++) /* update points */ for (j = 1; j < n; j++) h[i][j] = g[i][j]; continue = FALSE; /* indicates whether to continue */ for (i = 1; i < n; i++)/* check each pt for convergence */ for (j = 1; j < n; j++) if (!converged(i,j) {/* point found not converged */ continue = TRUE; break; } } while (continue == TRUE); 6.43

Παράλληλος κώδικας Με συγκεκριμένο αριθμό επαναλήψεων: για τη διεργασία P i,j (εκτός από τα περιμετρικά σημεία): Σημαντικό να χρησιμοποιήσουμε send() που δεν θα αναστέλλεται αναμένοντας για αντίστοιχο recv(). Αλλιώς θα έχουμε αδιέξοδο εξ' αιτίας των αναμονών. Από την άλλη πλευρά τα recv() πρέπει να συγχρονίζονται με τα αντίστοιχα send(). 6.44

Μεταβιβάσεις μηνυμάτων σε γειτονικές διεργασίες 6.45

Τερματισμός με κριτήριο σύγκλισης: 6.46

Χειρισμός περιμετρικών διεργασιών: 6.47

Επιμερισμός (Partitioning) Συνήθως σε κάθε επεξεργαστή ανατίθενται περισσότερα από ένα σημεία, αφού υπάρχουν πολύ περισσότερα σημεία από επεξεργαστές. Τα σημεία επιμερίζονται σε τομείς (blocks) ή σε ζώνες (strips). 6.48

Επιμερισμός σε τομείς Block partitioning Ανταλλαγή πληροφοριών σε τέσσερις πλευρές. Ο χρόνος επικοινωνίας δίνεται από 6.49

Επιμερισμός σε ζώνες Strip partitioning Ανταλλαγή πληροφοριών σε δύο πλευρές. Ο χρόνος επικοινωνίας δίνεται από 6.50

Βέλτιστος επιμερισμός Γενικά, αν ο χρόνος εκκίνησης (επικοινωνία) είναι σχετικά μεγάλος, τότε ο επιμερισμός σε ζώνες είναι προτιμότερος. Αλλιώς προτιμότερος είναι ο επιμερισμός σε τομείς. Με βάση τις προηγούμενες εξισώσεις ο χρόνος εκκίνησης και ο χρόνος μετάδοσης συνδέονται ως εξής 6.51

Χρόνοι εκκίνησης για επιμερισμό τομέα και ζώνης (block and strip partitions) 6.52

6.53 Πλασματικά σημεία Σε κάθε πλευρά επικοινωνίας δημιουργούμε μια σειρά πλασματικών σημείων τα οποία διευκολύνουν την επικοινωνία, κρατώντας τις τιμές που ανταλλάσσονται.

Προστασία από αδιέξοδα 1 Όταν όλες οι διεργασίες πρώτα στέλνουν τα μηνύματά τους και μετά περιμένουν για τη παραλαβή τότε υπάρχει κίνδυνος αδιεξόδου γιατί η μεταβίβαση εξαρτάται από το μέγεθος του απομονωτή του send(). Το μέγεθος αυτό δεν καθορίζεται από το MPI. Αν το μέγεθος του απομονωτή δεν είναι επαρκές η αποστολή θα περιμένει μέχρι να υπάρξει αρκετός χώρος αποθήκευσης ή να πραγματοποιηθεί η αποστολή. Έτσι, ένα ανασταλτικό send() cμπορεί να συμπεριφερθεί ως σύγχρονο send(), αφού στην ουσία δεν μπορεί να επανέλθει παρά μόνο με την εκπλήρωση των παραπάνω συνθηκών. Αφού όμως τα αντίστοιχα recv() δεν μπορούν να ξεκινήσουν, καθώς έπονται των σύγχρονων send(), θα έχουμε αδιέξοδο. 6.54

Προστασία από αδιέξοδα 2 Εναλλαγή της σειράς των send() και recv() σε γειτονικές διεργασίες έτσι ώστε μόνο μια από δύο διεργασίες να εκτελεί πρώτη τα send(). Σε αυτή τη περίπτωση ακόμη και τα σύγχρονα send() δεν θα προκαλέσουν αδιέξοδο. Ένας καλός τρόπος να ελέγχουμε για προστασία από αδιέξοδα είναι να αντικαθιστούμε τις συναρτήσεις send() και recv() με σύγχρονες. CSP Occam: μόνο σύγχρονη επικοινωνία (αρχικά..) 6.55

Ασφαλείς συναρτήσεις του MPI Το MPI παρέχει συναρτήσεις ασφαλείς σε αδιέξοδα: 6.50

Άλλοι πλήρως σύγχρονοι υπολογισμοί Κυτταρικά αυτόματα (Cellular automata) Ο χώρος διαιρείται σε 'κύτταρα' με κάποια αρχιτεκτονική (ορισμός 'γειτονιάς'). Κάθε κύτταρο έχει πεπερασμένο αριθμό καταστάσεων (δηλαδή λειτουργεί ως πεπερασμένο αυτόματο). Κάθε κύτταρο μεταβάλει τη κατάστασή του με βάση τη τρέχουσα κατάσταση και την επικοινωνία του με τα γειτονικά κύτταρα (ορισμός αρχικής κατάστασης). Οι μεταβολές γίνονται 'ταυτόχρονα', ορίζοντας μια 'γενιά'. Οι καταστάσεις των κυττάρων εξελίσσονται σε διαδοχικές 'γενιές'. Game of Life του John Horton Conway. 6.57

Game of Life Αρχιτεκτονική τόρου: δι-διάστατο πλέγμα με ενωμένα άκρα. Κάθε κύτταρο (κόμβος πλέγματος) έχει οκτώ γείτονες: (Α, ΒΑ, Β, ΒΔ, Δ, ΝΔ, Ν, ΝΑ). Αρχικά μερικά κύτταρα τίθενται στο 1 (ζεί) και άλλα στο 0 (δεν ζεί). Κανόνες: 1. Κάθε ζωντανό κύτταρο με 2 ή 3 ζωντανούς γείτονες ζεί και στην επόμενη γενιά. 2. Κάθε ζωντανό κύτταρο με >=4 ζωντανούς γείτονες πεθαίνει από υπερπληθυσμό. 3. Κάθε ζωντανό κύτταρο με <=1 ζωντανούς γείτονες πεθαίνει από απομόνωση. 4. Κάθε νεκρό κύτταρο με ακριβώς 3 ζωντανούς γείτονες ζωντανεύει στην επόμενη γενιά. Αυτοί οι κανόνες είναι εμπειρικοί. Μπορεί να τροποποιηθούν. 6.58

Άλλα παραδείγματα Υδροδυναμική Αεροδυναμική Tυρβώδης ροή υγρών και αερίων Διάχυση υγρών ή αερίων Οικολογικά βιολογικά μοντέλα Μοντέλα κυνηγού θηράματος Κοινωνικά μοντέλα (πχ διάχυση ειδήσεων) Ιατρικά μοντέλα (πχ διάδοση ασθενειών) Γεωλογικά μοντέλα (πχ διάβρωση) 6.59

Μερικώς σύγχρονοι υπολογισμοί Σύγχρονοι υπολογισμοί όπου οι επιμέρους διεργασίες συγχρονίζονται είτε τοπικά (σε μια γειτονιά) ή/και σε μεγαλύτερα χρονικά διαστήματα (πχ μετά από κ επαναλήψεις). Σημαντική βελτίωση επειδή ο συγχρονισμός μπορεί να είναι ιδιαίτερα 'ακριβή' διαδικασία, που προκαλεί σημαντικές καθυστερήσεις και καταναλώνει σημαντικούς πόρους, επικοινωνίας κυρίως (συλλογή, έλεγχος, ενημέρωση). 6.60

Μοντέλο θερμικής διάχυσης (ξανά) 1 Χρησιμοποιούμε την ίδια αρχική διάταξη πλέγματος. Αντί για τη προσφυγή στην επαναληπτική επίλυση γραμμικού συστήματος διατηρούμε τη δι-διάστατη διάταξη. Η τιμή κάθε σημείου στο πλέγμα υπολογίζεται ως η μέση τιμή των τεσσάρων γειτονικών του σημείων. Ο υπολογισμός επαναλαμβάνεται για όλα τα σημεία παράλληλα, μέχρις ότου οι μεταβολές σε κάθε σημείο να μην είναι σημαντικές. 6.61

Μοντέλο θερμικής διάχυσης (ξανά) 2 6.62

Μοντέλο θερμικής διάχυσης (ξανά) 3 Το πρώτο τμήμα του κώδικα είναι ουσιαστικά η επανάληψη Jacobi. Έστω, όμως ότι μπορεί να εκτελεστεί το δεύτερο τμήμα πριν τελειώσει το πρώτο. Τότε οι υπολογισμοί του δεύτερου τμήματος μπορεί να χρησιμοποιήσουν τιμές παλαιότερων επαναλήψεων. Συνήθως τίθεται ένα όριο παλαιότητας μεταξύ των τοπικά χρησιμοποιούμενων τιμών. Η μέθοδος αυτή λέγεται ασύγχρονη επαναληπτική μέθοδος. Ενδιάμεσες εκδοχές: Επαναλήψεις δύο, τεσσάρων ή περισσοτέρων βημάτων (πολυχρωματικές). Σε κάθε βήμα ενημερώνεται μέρος των σημείων (ζώνες ή τομείς του πλέγματος). Το όριο παλαιότητας τίθεται συνολικά. 6.63