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

Σχετικά έγγραφα
Παράλληλη Επεξεργασία Κεφάλαιο 9 ο Επιµερισµός εδοµένων

Παράλληλη Επεξεργασία Κεφάλαιο 5 Μοίρασμα Δεδομένων

Παράλληλη Επεξεργασία Κεφάλαιο 10 ο Αντίγραφα Εργαζομένων

Παράλληλη Επεξεργασία Κεφάλαιο 8 ο Προγράμματα Περάσματος Μηνυμάτων

Παράλληλη Επεξεργασία Κεφάλαιο 2 Παραλληλισμός Δεδομένων

Παράλληλη Επεξεργασία Κεφάλαιο 4 Επικοινωνία Διεργασιών

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

ιαφάνειες παρουσίασης #6

Μεταγλωττιστές Βελτιστοποίηση

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

ΑΠΑΝΤΗΣΕΙΣ. α- Σωστό β- Σωστό γ- Λάθος δ- Λάθος ε- Σωστό στ- Σωστό

Σκοπός. Εργαστήριο 6 Εντολές Επανάληψης

ιαφάνειες παρουσίασης #5

ΑΠΑΝΤΗΣΕΙΣ ΘΕΜΑ Α A1. 2-Λάθος 3-Λάθος 4-Σωστό 5-Λάθος A2. integer. real. Boolean. char. string A3.

ιαφάνειες παρουσίασης #7

Μαζέρας Αχιλλέας. Οι εντολές επανάληψης στην Pascal (While) Φυσικός Αυτοματιστής M.Sc. Νοέµβριος 2009

ΜΑΗΣ ΕΞΕΤΑΣΤΙΚΟ ΔΟΚΙΜΙΟ

ΑΠΑΝΤΗΣΕΙΣ. H διαδικασία ανεύρεσης λογικών λαθών περιλαμβάνει : β- Σωστό. Διαπίστωση του είδους του λάθους γ- Σωστό δ- Λάθος

Μεταγλωττιστές Βελτιστοποίηση

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

ΜΑΘΗΜΑ / ΤΑΞΗ : ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ / Γ ΕΠΑΛ ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 27/01/2013

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ ΝΕΟ ΚΑΙ ΠΑΛΑΙΟ ΣΥΣΤΗΜΑ

Γραπτές εξετάσεις στο μάθημα: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (Θ) Εισηγητής: Γεωργίου Χρήστος ΘΕΜΑΤΑ & ΑΠΑΝΤΗΣΕΙΣ. Β. Χαρακτήρας(Αλφαριθμητικά)

Η ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ Εντολές Επανάληψης REPEAT UNTIL, FOR, WHILE

- Αναπαράσταση ακέραιας τιµής : - Εύρος ακεραίων : - Ακέραιοι τύποι: - Πράξεις µε ακεραίους (DIV - MOD)

ΛΥΣΕΙΣ ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2007

Εντολή Δεδομένα Περιεχόμενα μετά την εκτέλεση 1 read(x) 122 x= 2 read(a,b,c) a= b= c= 3 read(d,e)

Απαντήσεις στο μάθημα Δομημένος Προγραμματισμός ΕΠΑΛ

Αποτελέσματα προόδου

Προγραμματισμός PASCAL

ιαφάνειες παρουσίασης #4

ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ-ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΚΑΔΗΜΑΪΚΟ ΕΠΑΛ- ΚΑΝΙΓΓΟΣ 13- ΤΗΛ

ιαφάνειες παρουσίασης #7

ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2014

ΜΑΘΗΜΑ / ΤΑΞΗ : ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ / ΕΠΑΛ ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ:

Pascal, απλοί τύποι, τελεστές και εκφράσεις

2. β. Συνθήκη ή επιλογή. 4. δ. Υποπρόγραμμα. 5. ε. ιαδικασία εισόδου ή εξόδου

Σχολικό Βιβλίο - Κεφάλαιο 7 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ PASCAL ΠΑΡΟΥΣΙΑΣΗ 13

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2006

Λύσεις Σειράς Ασκήσεων 5

ΕΚΦΩΝΗΣΕΙΣ ΘΕΜΑ Α. β. Οι πληροφορίες είναι δεδομένα τα οποία δεν έχουν υποστεί επεξεργασία.

ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ PASCAL

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) (PASCAL ) Εντολές Ελέγχου & Επανάληψης

ιαφάνειες παρουσίασης #4

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

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

ΥΠΟΥΡΓΕΙΟ ΠΑΙ ΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙ ΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2013

2. β. Συνθήκη ή επιλογή. 4. δ. Υποπρόγραμμα. 5. ε. ιαδικασία εισόδου ή εξόδου

Εισαγωγή στο Προγραμματισμό για Μηχανολόγους Οδηγός Προετοιμασίας για τη Τελική Εξέταση

Προγραμματισμός PASCAL

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

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2016

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2009

Α3. Να γράψετε τους αριθμούς 1, 2, 3, 4, 5 από τη Στήλη Α και δίπλα το γράμμα α, β, γ, δ, ε, στ από τη Στήλη Β που δίνει τη σωστή αντιστοιχία.

Ορθότητα Χωρική αποδοτικότητα. Βελτιστότητα. Θεωρητική ανάλυση Εμπειρική ανάλυση. Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1

ΜΕΡΟΣ Α - Αποτελείται από δέκα (10) ερωτήσεις. Κάθε ερώτηση βαθμολογείται με έξι μονάδες.

Δομές ελέγχου. ομαδοποίηση εντολών εκτέλεση εντολών υπό συνθήκη επανάληψη εντολών

ΥΠΟΥΡΓΕΙΟ ΠΑΙ ΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙ ΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2006 ΛΥΣΕΙΣ

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

Προτεινόμενες λύσεις

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

ιαφάνειες παρουσίασης #3

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

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2015

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

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

Ενότητα 1: «Εισαγωγή στην Αλγοριθμική και τον Προγραμματισμό. Απλές ασκήσεις με γλώσσα Pascal»

Βασικές Έννοιες Αλγορίθμων Τι είναι αλγόριθμος

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ ΠΑΝΕΛΛΑ ΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΗΜΕΡΗΣΙΩΝ ΕΠΑΓΓΕΛΜΑΤΙΚΩΝ ΛΥΚΕΙΩΝ (ΟΜΑ Α Β ) ΚΑΙ ΜΑΘΗΜΑΤΩΝ ΕΙ ΙΚΟΤΗΤΑΣ

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2008

ΜΑΘΗΜΑ / ΤΑΞΗ : ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ / Γ'ΕΠΑΛ ΗΜΕΡΟΜΗΝΙΑ: ΕΠΙΜΕΛΕΙΑ ΔΙΑΓΩΝΙΣΜΑΤΟΣ: Ι.ΜΙΧΑΛΕΑΚΟΣ-Α.ΚΑΤΡΑΚΗ-Χ.ΠΑΠΠΑ ΑΠΑΝΤΗΣΕΙΣ ΘΕΜΑ Α

α. Λογικό διάγραμμα είναι η μέθοδος που χρησιμοποιεί απλά σχήματα που υποστηρίζονται με απλές λέξεις για την αναπαράσταση συγκεκριμένων λειτουργιών.

Δημιουργία Δυαδικών Δέντρων Αναζήτησης

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Σκοπός. Εργαστήριο 5 Εντολές Επιλογής

ΜΑΗΣ ΕΝΔΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ ΔΟΚΙΜΙΟΥ. Ενότητα Α - ΛΥΣΕΙΣ

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

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

Προτεινόμενες λύσεις

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

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

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

ΟΜΟΣΠΟΝ ΙΑ ΕΚΠΑΙ ΕΥΤΙΚΩΝ ΦΡΟΝΤΙΣΤΩΝ ΕΛΛΑ ΟΣ (Ο.Ε.Φ.Ε.) ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2013

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Oι εντολές COMMON και PARAMETER

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

Ενότητα 3: «Εισαγωγή στην Αλγοριθμική και στον Προγραμματισμό: loops, subroutines, tables»

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ

Γ ΤΑΞΗ ΗΜΕΡΗΣΙΟΥ ΕΠΑ.Λ ΜΑΘΗΜΑ ΕΙ ΙΚΟΤΗΤΑΣ ΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΕΚΦΩΝΗΣΕΙΣ

Μονάδες 4. β. x=20 και y=10

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL)

Δομή Επανάληψης. Κεφάλαιο 7 Mike Trimos

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

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

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

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

Διεργασίες (Processes)

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ ΝΕΟ ΚΑΙ ΠΑΛΑΙΟ ΣΥΣΤΗΜΑ

Pascal. 15 Νοεμβρίου 2011

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

Transcript:

Παράλληλη Επεξεργασία Κεφάλαιο 6 ο Σύγχρονος Παραλληλισμός Κωνσταντίνος Μαργαρίτης Καθηγητής Τμήμα Εφαρμοσμένης Πληροφορικής Πανεπιστήμιο Μακεδονίας kmarg@uom.gr http://eos.uom.gr/~kmarg Αρετή Καπτάν Υποψήφια Διδάκτορας Τμήμα Εφαρμοσμένης Πληροφορικής Πανεπιστήμιο Μακεδονίας areti@uom.gr http://eos.uom.gr/~areti 1

Εισαγωγή Επαναληπτικοί αριθμητικοί αλγόριθμοι και σύγχρονος παραλληλισμός Οι διεργασίες συγχρονίζονται στο τέλος κάθε επανάληψης Τεχνικές παραλληλισμού επαναληπτικών αλγορίθμων: με τερματισμό διεργασιών (γραμμική καθυστέρηση) με δημιουργία δυαδικού δέντρου τεχνική Τουρνουά (λογαριθμική καθυστέρηση) με τοπικό συγχρονισμό (σταθερή καθυστέρηση ανεξάρτητη από τον αριθμό των διεργασιών) τεχνική συλλογής και διάδοσης CAB με έλεγχο σύγκλισης 2

Δίκτυο σημείων για την εξίσωση του Laplace 2 2 ν ν + = 0 x 2 y 2 3

Υπολογισμός της τάσης κάθε στοιχείου με την μέθοδο Jacobi Relaxation 4

Ακολουθιακό Πρόγραμμα αλγορίθμου Jacobi Relaxation PROGRAM Jacobi; CONST n = 32; (*Μέγεθος του πίνακα *) numiter =...; (*Πλήθος των επαναλήψεων*) VAR A, B: ARRAY [0..n+1,0..n+1] of Real; i, j, k: Integer; For i:= 0 to n+1 do (*Αρχικοποίηση των τιμών του πίνακα*) For j:= 0 to n+1 do Read(A[i, j]); Readln; B:= A; For k:= 1 to numiter do For i:= 1 to n do For j:= 1 to n do (*Υπολογισμός του μέσου όρου των τεσσάρων γειτονικών σημείων*) B[i,j]=(A[i-1,j]+A[i+1,j]+A[i,j-1]+A[i,j+1]) / 4; A:= B; END. 5

Jacobi Relaxation Τεχνική Τερματισμού Διεργασιών PROGRAM ParallelJacobi; CONST n = 32; numiter =...; VAR A, B: ARRAY [0..n+1,0..n+1] of Real; i, j, k: Integer;... (*Τοποθέτηση αρχικών τιμών στον πίνακα Α*) B:= A; For k:= 1 to numiter do (*Φάση Ι - Υπολογισμός των νέων τιμών*) FORALL i:=1 to n do (*Δημιουργία διεργασίας για κάθε γραμμή*) VAR j: Integer; For j:= 1 to n do B[i,j]=(A[i-1,j]+A[i+1,j]+A[i,j-1]+A[i,j+1]) / 4; (*Φάση ΙΙ - Αντιγραφή των νέων τιμών στον Α*) FORALL i:=1 to n do (*Αντιγραφή των νέων τιμών από τον Β στον Α*) A[i]:= B[i]; END. 6

Εκτίμηση του αλγόριθμου με τερματισμό διεργασιών 2 φάσεις ανά επανάληψη Συγχρονισμός ανά φάση Συγχρονισμός με την μέθοδο δημιουργία και καταστροφής διεργασιών Επιπλέον κόστος εκτέλεσης: Χρόνος δημιουργίας των διεργασιών Χρόνος καταστροφής των διεργασιών Αριθμός διεργασιών 7

Συγχρονισμός Φράγματος Διεργασιών 8

Jacobi Relaxation Συγχρονισμός με Καθολικό Φράγμα PROGRAM JacobiBarrier; CONST n = 32; numiter =...; VAR a, b : Array [0..n+1,0..n+1] of Real; i, j : Integer; B := A; FORALL i := 1 to n do (*Δημιουργία μιας διεργασίας για κάθε γραμμή*) VAR j, k : Integer; For k := 1 to numiter do For j := 1 to n do (*Υπολογισμός του μέσου όρου για τις τέσσερις γειτονικές διεργασίες *) B[i,j] := (A[i-1,j]+A[i+1,j]+A[i,j-1]+A[i,j+1]) / 4; Barrier; A[i] := B[i]; Barrier; END. 9

Χαρακτηριστικά Φράγματος Ορισμός φράγματος Οι διεργασίες συγχρονίζονται 2 φορέςσεκάθεεπανάληψη 2 φάσεις: Υπολογισμός νέων τιμών Αντικατάσταση παλαιών τιμών Οι διεργασίες δημιουργούνται μία φορά Ελαχιστοποίηση χρόνου για δημιουργία διεργασιών Επιπλέον κόστος λόγω φράγματος Υλοποίηση φράγματος με: Κλείδωμα Κανάλια Σηματοφορείς 10

Γραμμικό Φράγμα Χρήση μεταβλητής αθροιστή Χρήση μεταβλητών κλειδώματος Spinlock 2 φάσεις συγχρονισμού: Άφιξη Αναχώρηση Κόστος ανάλογο του πλήθους των παράλληλων διεργασιών 11

Υλοποίηση Γραμμικού Φράγματος με Κλείδωμα PROGRAM JacobiBarrier; CONST n = 32; VAR... count : Integer; Arrival, Departure : Spinlock; PROCEDURE Barrier; (*Φάση Άφιξης - Άθροιση των διεργασιών καθώς εισέρχονται*) Lock(Arrival); count := count + 1; If count < n then Unlock(Arrival) (*Συνέχιση της Φάσης Άφιξης*) else Unlock(Departure); (*Τέλος της Φάσης Άφιξης*) (*Φάση Αναχώρησης - Άθροιση των διεργασιών καθώς εξέρχονται*) Lock(Departure); count := count - 1; If count > 0 then Unlock(Departure) (*Συνέχιση της Φάσης Αναχώρησης*) else Unlock(Arrival); (*Τέλος της Φάσης Αναχώρησης*) (*Κυρίως Πρόγραμμα*) count := o; (*Αρχικοποίηση της μεταβλητής count και των κλειδωμάτων*) Unlock(Arrival); Unlock(Departure);... END. 12

Φράγμα Δυαδικού Δέντρου Αποκέντρωση της τεχνικής συγχρονισμού Χαρακτηριστικό δυαδικού δέντρου: Συγκεντρωτικό στη ρίζα Αποκεντρωτικό στα φύλλα Τεχνική Τουρνουά Καθυστέρηση ανάλογη του λογαρίθμου του πλήθους των διεργασιών 13

Συγχρονισμός Δυαδικού Δέντρου 14

Αλγόριθμος Δημιουργίας Δέντρου Συγκέντρωση και καθυστέρηση των διεργασιών position := 1; While (Bit(mynumber, position) = 0) AND (position < n) Do Receive message from lossing partner ; position := position * 2; If mynumber <> 0 then WinningPartner := ClearBit(mynumber, position); Send message for WinningPartner; Wait for reply message; 15

Συναρτήσεις για τη δημιουργία του δυαδικού δέντρου Bit(i,p): i DIV p MOD 2 ClearBit(i,p): i - p SetBit(i,p): i + p 16

Απελευθέρωση διεργασιών σε αναμονή από το φράγμα 17

Αλγόριθμος Δημιουργίας Δέντρου Απελευθέρωση εγκλωβισμένων διεργασιών (*Η μεταβλητή position λαμβάνει μια μέγιστη τιμή από τον αλγόριθμο που τη δημιουργεί*) While position > 1 do position := position DIV 2; LosingPartner := SetBit(mynumber, position); Send message to LosingPartner; 18

PROGRAM JacobiBarrier; CONST n = 32; VAR... synchan: Array [0..n-1] of Channel of Integer; Procedure Barrier(me: Integer); VAR position, dummy: Integer; position := 1; While (me DIV position MOD 2 = 0) AND (position < n) Do dummy:=synchan[me]; (*Λήψη μηνύματος από τον αντίπαλο που έχει χάσει*) position := position * 2; If me <> 0 then synchan[me-position] := 1; (*Διάδοση μηνύματος στη διεργασία νικητή*) dummy := synchan[me]; (*Αναμονή για απάντηση*) While position > 1 do position := position DIV 2; synchan[me+position] := 1; (*Αποστολή μηνύματος στη διεργασία που είχε χάσει προηγουμένως*) Υλοποίηση φράγματος με δυαδικό δέντρο (*Κυρίως Πρόγραμμα*)... FORALL I := 1 to n do (*Δημιουργία μιας διεργασίας για κάθε σειρά του πίνακα*)... Barrier(i-1);... END. Barrier(i-1);... 19

Αλγόριθμος με Τοπικό Συγχρονισμό Εξαρτάται από το μέγεθος της τοπικής γειτονιάς Ανάθεση ξεχωριστού καναλιού για την επικοινωνία με κάθε διεργασία-γείτονα Αρχικά αποστολή μηνυμάτων στους γείτονες κι εν συνεχεία λήψη μηνυμάτων, διαφορετικά αδιέξοδο Jacobi Relaxation: Συνολικά καθολική ροή δεδομένων Σε κάθε επανάληψη τοπική ροή δεδομένων 20

PROGRAM JacobiBarrier; CONST n = 32; numiter =...; VAR a, b : Array [0..n+1,0..n+1] of Real; i, j : Integer; higher, lower : Array [1..n] of Channel of Integer; Procedure LocalBarrier (I: Integer); VAR dummy : Integer; If i > 1 then higher[i-1] := 1; (*Αποστολή στη διεργασία I-1*) If i < n then lower[i+1] := 1; (*Αποστολή στη διεργασία I+1*) dummy := higher[i]; (*Λήψη από τη διεργασία I-1*) If i > 1 then dummy := lower[i]; (*Λήψη από τη διεργασία I-1*) Αλγόριθμος Jacobi με Τοπικό Συγχρονισμό (*Κυρίως πρόγραμμα*)... B := A; FORALL i := 1 to n do (*Δημιουργία μιας διεργασία για κάθε γραμμή*) VAR j, k : Integer; For k := 1 to numiter do For j := 1 to n do (*Υπολογισμός του μέσου όρου για τους τέσσερις γείτονες*) B[i,j] := (A[i-1,j]+A[i+1,j]+A[i,j-1]+A[i,j+1])/4; LocalBarrier(i); A[i] := B[i]; LocalBarrier(i); END. 21

Σχετική Απόδοση των Εφαρμογών Φράγματος 22

PROGRAM Jacobi; CONST n = 32; tolerance =.01; VAR A, B : Array [0..n+1,0..n+1] of Real; i,j : Integer; change, maxchange : Real;... (*Ανάγνωση αρχικών τιμώω για τον πίνακα A*) Ακολουθιακός αλγόριθμος Jacobi με Έλεγχο Σύγκλισης B := A; REPEAT (*Υπολογισμός των νέων τιμών μέχρι να προσεγγιστεί η επιθυμητή ανοχή*) maxchange := 0; For i := 1 to n do For j := 1 to n do Begin (*Υπολογισμός των νέων τιμών και της αλλαγής τους από τις παλιές*) B[i,j] := (A[i-1,j]+A[i+1,j]+A[i,j-1]+A[i,j+1]) / 4; change := ABS(B[i,j] - A[i,j]); If change > maxchange then maxchange := change; A := B; Until maxchange < tolerance; END. 23

PROGRAM JacobiConv; VAR... count : Integer; Arrival, Departure : Spinlock; globaldone : Boolean; Function Aggregate (mydone : Boolean) : Boolean; (*Φάση Άφιξης - Άθροιση των διεργασιών καθώς εισέρχονται στο φράγμα*) Lock(Arrival); count := count+1; globaldone := globaldone AND mydone; (*Βήμα σύγκλισης*) If count < n then Unlock(Arrival) (*Συνέχιση της Φάσης Άφιξης*) else Unlock(eparture); (*Τερματισμός της Φάσης Άφιξης*) Φράγμα Συλλογής και Διάδοσης με Κλείδωμα (*Φάση Αναχώρησης - Άθροιση των διεργασιών καθώς εξέρχονται από το φράγμα*) Lock(Departure); count := count - 1; Aggregate:=globaldone;(*Επιστροφή της σημαίας flag στη διεργασία*) If count > 0 then Unlock(Departure) (*Συνέχιση της Φάσης Αναχώρησης*) else globaldone := TRUE; (*Αλλαγή της τιμής της μεταβλητής για την επόμενη επανάληψη*) Unlock(Arrival); (*Τερματισμός της Φάσης Αναχώρησης*) (*Κυρίως Πρόγραμμα*) count := 0; (*Αρχικοποίηση της μεταβλητής count και τβν κλειδωμάτων*) Unlock(Arrival); Lock(Departure); globaldone := TRUE; (*Αρχικοποίηση της τοπικής σημαίας*)... 24

PROGRAM JacobiConv; CONST tolernce =.01; n = 32; VAR A, B : Array {0..n+1,o..n+1] of Real; i,j : integer; Procedure Barrier (me : Integer);... (*Ίδια με πριν*) Function Aggregate (mydone : Boolean) : Boolean;... (*Δες το σχήμα 6.14*) (*Κυρίως πρόγραμμα*)... Παράλληλο Πρόγραμμα Jacobi με Ελεγχο B := A; FORALL i := 1 to n do (*Δημιουργία των διεργασιών*) VAR j: Integer; change, maxchange : Real; done : Boolean; Repeat maxchange := 0; For j := 1 to n do (*Υπολογισμός νέων τιμών για κάθε στοιχείο της γραμμής*) B[i,j] := (A[i-1,j]+A[i+1,j]+A[i,j-1]+A[i,j+1])/4; change := ABS(B[i,j]-A[i,j]); If change > maxchange then maxchange ;= change; Barrier; A[i] := B[i]; done := Aggregate(maxchange<tolerance); Until done; (*Επανάληψη μέχρι τον καθορισμό του τοπικού τερματισμού*) END. Σύγκλισης 25