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

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

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

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

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

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

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

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

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

Κεφάλαιο 7: Υποπρογράμματα. Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

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

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

Κεφάλαιο 7: Υπορουτίνες

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

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Εργαστήριο Οργάνωσης Η/Υ. Δαδαλιάρης Αντώνιος

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ Κεφάλαιο 10 : Εντολές επιλογής και αποφάσεων

Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού

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

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

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

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

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

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

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

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

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

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

Στόχοι και αντικείμενο ενότητας. Πέρασμα Πίνακα σε Συνάρτηση (συν.) Πέρασμα Πίνακα σε Συνάρτηση. #8.. Ειδικά Θέματα Αλγορίθμων

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

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

Μονοδιάστατοι Πίνακες

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

Κυκλωμάτων» Χειμερινό εξάμηνο

ΚΕΦΑΛΑΙΟ 10 ΕΝΤΟΛΕΣ ΕΠΙΛΟΓΗΣ (ή εντολές Ελέγχου και Επιλογής ή εντολές Επιλογής και Απόφασης)

ÏÌÉÊÑÏÍ ÖÑÏÍÔÉÓÔÇÑÉÏ ÊÏÑÄÅËÉÏ

ΕΞΕΤΑΣΤΕΑ ΥΛΗ (SYLLABUS) ADVANCED αντικειμενοστραφής προγραμματισμός ΕΚΔΟΣΗ 1.0. Σόλωνος 108,Τηλ Φαξ

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

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

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

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

Μονάδες 12 ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ

Κατανεμημένα Συστήματα. Javascript LCR example

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

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

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

VHDL Εισαγωγικές έννοιες

Μεταγλωττιστές. Σημασιολογική Ανάλυση. Εργαστήριο 9. Διδάσκοντες: Δρ. Γεώργιος Δημητρίου Δρ. Άχμεντ Μάχντι

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

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

Συγγραφή κώδικα, δοκιμασία, επαλήθευση. Γιάννης Σμαραγδάκης

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

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

ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ

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

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

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

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

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

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

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

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

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

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

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

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

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

«Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων» Χειμερινό εξάμηνο Ακολουθιακός Κώδικας

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

Computing. Νοέμβριος Έκδοση 1.0

Εργαστήριο Αρχιτεκτονικής Υπολογιστών Ι. Εισαγωγή στη VHDL

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

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

#2 Αλγόριθµοι, οµές εδοµένων και Πολυπλοκότητα

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

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

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

Μεταγλωττιστές 2019 Θέμα εργασίας

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

Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 7: ΑΝΑΔΡΟΜΗ

ΜΕΡΙΚΑ ΣΤΟΙΧΕΙΑ ΓΙΑ ΤΙΣ ΓΛΩΣΣEΣ ΠPOΓPAMMATIΣMOY

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

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

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

Transcript:

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

Χαρακτηριστικά της Multi-Pascal για Συστήματα Κατανεμημένης Μνήμης (Μέρ.Ι) Κάθε διεργασία έχει τοπικές μόνο μεταβλητές (τοπική μνήμη) Πέρασμα μηνυμάτων μεταξύ διεργασιών μέσω των θυρών επικοινωνίας (μεταβλητές κανάλια) Μόνο μια διεργασία μπορεί να λαμβάνει δεδομένα από μια θύρα επικοινωνίας 2

Χαρακτηριστικά της Multi-Pascal για Συστήματα Κατανεμημένης Μνήμης (Μέρ.ΙΙ) Οι μεταβλητές του κυρίως προγράμματος είναι τοπικές (δε διαμοιράζονται) Μηνύματα που στέλνονται από μία αφετηρία προς το ίδιο προορισμό θα φτάσουν με την ίδια σειρά που στέλνονται (δεν ισχύει για διαφορετικές αφετηρίες) 3

Δυνατότητες της MPWin Καθορισμός κατανεμημένης τοπολογίας Ορισμός του πλήθους των επεξεργαστών Παραμετροποίηση της βασικής καθυστέρησης επικοινωνίας (communication link delay) Ενεργοποίηση παραμέτρου συμφόρησης του δικτύου επικοινωνίας (congestion) Ανάθεση των διεργασιών σε επεξεργαστές (@) 4

Θύρες Επικοινωνίας ΥΛΙΚΟ Επεξεργαστής Φυσικός σύνδεσμος επικοινωνίας ΛΟΓΙΣΜΙΚΟ Διεργασία Κανάλι 5

Κανάλια Επικοινωνίας Το άκρο του καναλιόυ συνδέεται με μια συγκεκριμένη διεργασία Η δρομολόγηση/προώθηση των μηνυμάτων κρύβονται από τον προγραμματιστή Η καθυστέρηση επικοινωνίας εξαρτάται από: την τοπολογία και τα χαρακτηριστικά της απόδοσης του συστήματος Τα μηνύματα που στέλνονται από την ίδια αφετηρία προς τον ίδιο προορισμό θα φτάσουν με την σειρά που στάλθηκαν. Δεν ισχύει για διαφορετικές αφετηρίες 6

Κανάλια επικοινωνίας στη Multi- Pascal 7

Δήλωση Θύρας Επικοινωνίας Σε Πρόγραμμα (*Κανάλια επικοινωνίας*) VAR Com: ARRAY [1..30] OF CHANNEL OF INTEGER;... PROCEDURE Process(i: INTEGER); VAR invalue, outvalue, k: INTEGER;...... invalue:= Com[i]; (*Διαβάζει από τη δική μου θύρα επικοινωνίας*)... Com[k]:= outvalue; (*Στέλνει την outvalue στη διεργασία k*).. END;... FORALL i:= 1 to 30 DO (PORT Com[i]) Process(i);... END. 8

Διαφορές Μεταξύ Καναλιού (ΠΣΔΜ) Και Θύρας Επικοινωνίας (ΠΣΚΜ) Χαρακτηριστικά της θύρας επικοινωνίας: μπορεί να έχει πολλούς συγγραφείς, αλλά μόνο ένα αναγνώστη αν η διεργασία i εκτελείται στον επεξεργαστή i, τότε το κανάλι Com[i] είναι αποθηκευμένο στην τοπική μνήμη του επεξεργαστή i η λειτουργία εγγραφής δεν αναστέλλει τη διεργασία-συγγραφέα η μετάδοση έχει πραγματική καθυστέρηση βάσει της τοπολογίας και της σχετικής θέσης του καναλιού προορισμού 9

Τεχνικές Επικοινωνίας ΠΣΚΜ Σύγχρονη επικοινωνία: ανασταλτική για τη διεργασία συγγραφέας μη απομονωμένη (non-buffered) ανασταλτική για τη διεργασία αναγνώστης Ασύγχρονη επικοινωνία: μη ανασταλτική για τη διεργασία συγγραφέας απομονωμένη (buffered) ανασταλτική για τη διεργασία αναγνώστης Η Multi-Pascal υποστηρίζει ασύγχρονη επικοινωνία διεργασιών 10

Ασύγχρονη Επικοινωνία Σε Παράλληλες Γλώσσες Και Σε Multi- Pascal Writer Process executes: Send(processor_number, process_number, message_pointer); Reader Process executes: Receive(message_pointer); Multi Pascal Writer Process: Com[i]:= message; Reader Process: message:= Com[i]; (*Αποστολή στη διεργασία i*) (*Λήψη μηνύματος*) 11

Σύγχρονη Επικοινωνία Σε Παράλληλες Γλώσσες Writer Process executes: Send(link_number, message_pointer); Reader Process executes: Receive(link_number, message_pointer); 12

Γλωσσική Υποστήριξη Προγραμματισμού Περάσματος Μηνυμάτων Η δήλωση Port Παράμετροι Διαδικασίας (παράμετρος τιμής/διεύθυνσης) Ο τελεστής @ για την ανάθεση διεργασίας σε επεξεργαστή 13

H δήλωση Port Σύνταξη της εντολής Port: (PORT <channel-list>)<statement>; Παραδείγματα: VAR C: CHANNEL OF CHAR; archan: ARRAY [1..10] OF CHANNEL OF INTEGER; ( PORT C ) ( PORT archan[2] ) ( PORT archan ) VAR A: ARRAY [1..10, 1..20] OF CHANNEL OF REAL; ( PORT A[3,4] ) ( PORT A[1,1]; A[2,3] ) ( PORT A ) ( PORT A[2] ) 14

Επικοινωνία Με Το Κυρίως Πρόγραμμα Κατανομή αρχικών δεδομένων στις διεργασίεςπαιδιά παράμετροι τιμής σε διαδικασία (Value Parameters) Συλλογή τελικών αποτελεσμάτων από τις διεργασίες-παιδιά παράμετροι απομακρυσμένης διεύθυνσης σε διαδικασία (Remote Var Parameters) 15

Κατανομή Αρχικών Δεδομένων στις Διεργασίες PROGRAM Message-Passing; CONST n=...; (*Αριθμός των διεργασιών*) TYPE datatype= ARRAY [1..m] OF REAL; VAR inchan: ARRAY [1..n] OF CHANNEL OF INTEGER; i: INTEGER; inputdata: ARRAY [1..n] OF datatype; (*Πρωταρχικός πίνακας δεδομένων*). PROCEDURE Process(i: INTEGER; mydata: datatype); VAR x: REAL;... (*Άλλες τοπικές μεταβλητές για τη διεργασία*)... END; (*Κυρίως πρόγραμμα*)... (*Ανάγνωση των αρχικών τιμών για τον πίνακα inputdata*) FORALL i:= 1 TO n DO (*Δημιουργία των διεργασιών*) (PORT inchan[i]) Process(i, inputdata[i]);... END. 16

Επικοινωνία Διεργασιών Με Το Κυρίως Πρόγραμμα PROGRAM Message-Passing; CONST n=...; (*Αριθμός των διεργασιών*) TYPE datatype= ARRAY [1..m] OF REAL; VAR inchan: ARRAY [1..n] OF CHANNEL OF INTEGER; i: INTEGER; inputdata: ARRAY [1..n] OF datatype; (*Πρωταρχικός πίνακας δεδομένων*) outputdata: ARRAY [1..n] OF REAL; (*Τελικά υπολογισμένα αποτελέσματα*)... PROCEDURE Process(i: INTEGER; in: datatype; VAR out: REAL); VAR x: REAL;... (*Άλλες τοπικές μεταβλητές για τη διεργασία*)... (*Υπολογισμός του τελευταίου αποτελέσματος x *) out:= x; (*Αντιγραφή των τελικών αποτελεσμάτων πίσω στο κυρίως πρόγραμμα*) END; (*Κυρίως πρόγραμμα*)... (*Ανάγνωση των αρχικών τιμών για τον πίνακα inputdata*) FORALL i:= 1 TO n DO (*Δημιουργία των διεργασιών*) (PORT inchan[i]) Process(i, inputdata[i], outputdata[i]);... END. 17

Οτελεστής @ για την ανάθεση διεργασίας σε επεξεργαστή Σύνταξη του τελεστή @: (@ <expression>)<statement>; (@ <expression> PORT <channel_list>) <statement>; Παραδείγματα: FORK ( @3 ) Expand; FORK ( @i ) Filter(outchan); FORK ( @i*10+j ) Compute(i); FORALL i:= 1 TO 50 DO ( @ i-1 ) Compute(i); FORALL j:= 1 TO 10 DO ( @ j ) Process(j, A[j]); FORK (@ %Self+1 ) Filter(outchan); FORK ( @ %Self+10 ) Point(i, j); 18

Διασωλήνωση Διεργασιών 19

Παράλληλο Πρόγραμμα Ταξινόμησης με Εισαγωγή (Ι) PROGRAM InsertionSort; ARCHITECTURE FULLCONNECT(101); (*Πλήρως Συνδεδεμένη τοπολογία*) CONST n=100; VAR list, sorted: ARRAY [1..n] OF INTEGER; pipechan: ARRAY [1..n] OF CHANNEL OF INTEGER; j, k: INTEGER; PROCEDURE Pipeprocess(me: INTEGER; VAR sorteditem: INTEGER); VAR internal, newitem, I: INTEGER; internal := pipechan[me]; FOR i:= 1 to n-me DO newitem:= pipechan[me]; IF newitem < internal THEN pipechan[me+1]:= internal; internal:= newitem; END ELSE pipechan[me+1]:= newitem; END; sorteditem:= internal; END;... (* initilization of List *) FOR j:= 1 TO n DO FORK ( PORT pipechan[j] ) Pipeprocess(j, sorted[j]); FOR k:= 1 TO n DO pipechan[1]:= list[k];... END. 20

Παράλληλο Πρόγραμμα Ταξινόμησης με Εισαγωγή (ΙΙ) PROGRAM InsertionSort; ARCHITECTURE LINE(101); (*Tοπολογία Γραμμής*) CONST n=100; VAR list, sorted: ARRAY [1..n] OF INTEGER; pipechan: ARRAY [1..n] OF CHANNEL OF INTEGER; j, k: INTEGER; PROCEDURE Pipeprocess(me: INTEGER; VAR sorteditem: INTEGER); VAR internal, newitem, I: INTEGER; internal := pipechan[me]; FOR i:= 1 to n-me DO newitem:= pipechan[me]; IF newitem < internal THEN pipechan[me+1]:= internal; internal:= newitem; END ELSE pipechan[me+1]:= newitem; END; sorteditem:= internal; END;... (* initilization of List *) FOR j:= 1 TO n DO FORK ( @j PORT pipechan[j] ) Pipeprocess(j, sorted[j]); FOR k:= 1 TO n DO pipechan[1]:= list[k];... END. 21

Συμβάντα που προκαλούν την Αποστολή Μηνύματος Εγγραφή σε ένα κανάλι επικοινωνίας Δημιουργία μίας νέας διεργασίας Εγγραφή σε μια παράμετρο απομακρυσμένης διεύθυνσης Τερματισμός διεργασίας 22

Παράγοντες δημιουργίας της Καθυστέρησης Επικοινωνίας Τοπολογία συστήματος κατανεμημένης μνήμης φυσικά χαρακτηριστικά δικτύου επικοινωνίας τρέχουσα κυκλοφορία μηνυμάτων στο δίκτυο 23

Υπολογισμός της Καθυστέρησης Επικοινωνίας Ραμελητέο: (m + k - 1) T Ρ υπολογίσιμο: m (T + P) + (k - 1) max(t, P) k 1 m + D 2 24

Αποστολή μηνύματος με πολλά πακέτα 25

Επιβάρυνση Λογισμικού στον επεξεργαστή αφετηρίας στον επεξεργαστή προορισμού στο δίκτυο επικοινωνίας 26

Απόδοση της Ταξινόμησης με Εισαγωγή 27

Τεχνική του Τουρνουά 28

Αλγόριθμος Πολλαπλής Συλλογής FOR i:=1 to d DO Compute partner by reversing ith bit of my number; Send myboolean to partner; Receive hisboolean from partner; myboolean:= myboolean AND hisboolean; END; final result is in myboolean ; 29

Πολλαπλή Συλλογή σε Υπερκύβο 30

Δυαδικό Δέντρο σε Πρότυπο Πεταλούδας 31

Πρόγραμμα Πολλαπλής Συλλογής PROGRAM MultipleAggregate; ARCHITECTURE HYPERCUBE(6); (*Τοπολογία Υπερκύβου διάστασης 6*) CONST d=6; (*Διάσταση του Υπερκύβου*) n=63; VAR inchan: ARRAY [0..n, 1..d] OF CHANNEL OF BOOLEAN; (*Θύρες επικοινωνίας*) i: INTEGER; FUNCTION Aggregate(mydone: BOOLEAN): BOOLEAN; VAR mynum, partner, bitvalue, stage: INTEGER; hisdone: BOOLEAN; mynum:=%self; (*Λήψη του αριθμού επεξεργαστή*) bitvalue:= 1; FOR stage:= 1 TO d DO IF mynum DIV bitvalue MOD 2 = 0 (*Υπολογισμός του ζεύγους*) THEN partner:= mynum+bitvalue ELSE partner:= mynum-bitvalue; inchan[partner, stage]:= mydone; (*Αποστολή του mydone στο ταίρι*) hisdone:= inchan[mynum, stage]; (*Λήψη του hisdone από το ταίρι*) mydone:= mydone AND hisdone; bitvalue:= 2*bitvalue (*Μετατόπιση προς την επόμενη θέση bit*) END; Aggregate:= mydone; END; PROCEDURE Process(i: INTEGER); VAR mydone, done: BOOLEAN; REPEAT... (*Πραγματοποίηση επανάληψης και υπολογισμός της mydone*) done:= Aggregate(mydone); UNTIL done; END; (*Κυρίως πρόγραμμα*)... FORALL i:= 0 TO n DO (@i PORT inchan[i]) Process(i); (*Δημιουργία των διεργασιών*) END. 32

Πρόγραμμα Πολλαπλής Διάδοσης PROGRAM MultipleBroadcast; ARCHITECTURE HYPERCUBE(6); (*Τοπολογία Υπερκύβου με διάσταση 6*) CONST d= 6; n= 63; TYPE listtype= ARRAY [0..n] OF INTEGER; VAR inchan: ARRAY [0..n, 1..d] OF CHANNEL OF INTEGER; (*Θύρες επικοινωνίας*) i: INTEGER; PROCEDURE Broadcast(myvalue: INTEGER; VAR mylist: listtype); VAR mynum, bitvalue, stage, j: INTEGER; hisdone: BOOLEAN; mynum:= %SELF; mylist[0]:= myvalue; bitvalue:= 1; FOR stage:= 1 TO d DO IF mynum DIV bitvalue MOD 2 = 0 (*Υπολογισμός του ταιριού*) THEN partner:= mynum+bitvalue ELSE partner:= mynum-bitvalue; FOR j:= 0 TO bitvalue-1 DO (*Αποστολή του mylist στο ταίρι*) inchan[partner, stage]:= mylist[j]; FOR j:= bitvalue TO 2*bitvalue-1 DO mylist[j]:=inchan[mynum,stage](*λήψη της λίστας από το ταίρι*) bitvalue:= 2*bitvalue; (*Μετατόπιση στην επόμενη θέση bit*) END; END; PROCEDURE Process(i: INTEGER); VAR values: listtype; myvalue: INTEGER;... Broadcast(myvalue, values); (*Αποστολή της myvalue σε όλες τις διεργασίες*) (*Λήψη στον πίνακα values*) END; (*Κυρίως πρόγραμμα*)... FORALL i:= 0 TO n DO (@i PORT inchan[i]) Process(i); (*Δημιουργία των διεργασιών*) END. 33

Άμεση μέθοδος Πολλαπλής Διάδοσης PROGRAM DirectBroadcast; ARCHITECTURE HYPERCUBE(6); CONST d= 6; n= 63; TYPE listtype= ARRAY [0..n] OF INTEGER; VAR inchan: ARRAY [0..n, 1..d] OF CHANNEL OF INTEGER;... PROCEDURE Broadcast(myvalue: INTEGER; VAR values:listtype); VAR mynum, bitvalue, stage, i: INTEGER; hisdone: BOOLEAN; mynum:= %SELF; FOR i:= 0 TO n DO (*Αποστολή ενός αντιγραφου της myvalue σε όλες τις διεργασίες*) inchan[i]:= myvalue; FOR i:= 0 TO n DO (*Λήψη των τιμών που έχουν στείλει οι άλλες διεργασίες*) values[i]:= inchan[mynum]; END;... 34

Σύγκριση Μεθόδων Πολλαπλών Μεταδόσεων 35