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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Άσκηση 1. Α. Υπολογίστε χωρίς να εκτελέσετε κώδικα FORTRAN τα παρακάτω: Ποιά είναι η τελική τιμή του Z στα παρακάτω κομμάτια κώδικα FORTRAN:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΥΠΟΛΟΓΙΣΤΕΣ Ι. Τι είναι μια υπορουτίνα; με υπορουτίνα ΥΠΟΡΟΥΤΙΝΕΣ. Παράδειγμα #1: η πράξη SQ. Ποια η διαφορά συναρτήσεων και υπορουτίνων;

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

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

Εντολές Επανάληψης. int sum = 0, i=1; sum += i++ ; sum += i++ ; Η πράξη αυτή θα πρέπει να επαναληφθεί Ν φορές!

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

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

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

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

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

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

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Κανονική εξέταση, Φεβρουάριος 2005

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

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

Υπολογιστές Ι. Άδειες Χρήσης. Πολυδιάστατοι πίνακες. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

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

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

Πίνακες. (i) FORTRAN και Αντικειµενοστραφής Προγραµµατισµός

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

Υπολογιστές Ι. Άδειες Χρήσης. Υποπρογράμματα. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

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

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

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

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

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

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

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

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

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

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

πινάκων Σύγχρονα Προγραματιστικά Περιβάλλοντα ΠΕΡΙΕΧΟΜΕΝΑ

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

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

9.1. Προσδοκώμενα αποτελέσματα

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

Επανάληψη για τις Τελικές εξετάσεις. (Διάλεξη 24) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

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

Διδακτική της Πληροφορικής

Δομές Δεδομένων & Αλγόριθμοι

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

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

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

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

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

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

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

Εργαστήριο 10 Πίνακες. Πίνακες. Η έννοια της δόμησης δεδομένων στη PASCAL. Σκοπός

Ενότητα 1 Διάλεξη 3. Προγραμματισμός με Εφαρμογές στην Επιστήμη του Μηχανικού. Σιέττος Κωνσταντίνος

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

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

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

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

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

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

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

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

1. Κατασκευάστε ένα διάνυσμα με στοιχεία τους ζυγούς αριθμούς μεταξύ του 31 και 75

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

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

Εργαστήριο 4_1 Λεκτική Ανάλυση - Flex Διδάσκοντες: Δρ. Γεώργιος Δημητρίου Δρ. Άχμεντ Μάχντι

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

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

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

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

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

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

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

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

Transcript:

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

Παραλληλισμός Δεδομένων Ο παραλληλισμός των δεδομένων Σειρές φωλιασμένων βρόχων Θέματα απόδοσης: Δημιουργία διεργασιών Ανταγωνισμός για πρόσβαση στην μνήμη Καθυστέρηση για συγχρονισμό διεργασιών 2

Δημιουργία Διεργασιών Η έννοια της διεργασίας (σειριακό πρόγραμμα) Εντολές δημιουργίας παράλληλων διεργασιών Διεργασία-γονέας, διεργασία-παιδί 3

Υπολογισμός των τετραγωνικών ριζών των στοιχείων ενός πίνακα PROGRAM Squareroot; VAR A: ARRAY [1..100] OF REAL; i: INTEGER; BEGIN.. FOR i := 1 TO 100 DO A[i]:= SQRT(A[i]);.. END. PROGRAM ParallelSquareroot; VAR A: ARRAY [1..100] OF REAL; i: INTEGER; BEGIN.. FORALL i:= 1 TO 100 DO A[i]:= SQRT(A[i]);.. END. 4

Δημιουργία διεργασιών με την εντολή Forall 5

MPWin C02pg027.mpf Process Tree 6

Χαρακτηριστικά Διεργασίας Μέγεθος διεργασίας (Process Granularity) Χρόνος δημιουργίας της διεργασίας Χρόνος ανάθεσης της διεργασίας σε επεξεργαστή 7

MPWin C02pg027a.mpf Process Assignment chart Process Tree 8

Εντολή Forall Ομαδοποίηση διεργασιών Άριστο μέγεθος ομάδας Σύνταξη της εντολής Forall: FORALL <μεταβλητή_μετρητής> := <αρχική_τιμή> ΤΟ <τελική_τιμή> {GROUPING <μέγεθος_ομάδας>} DO <Σώμα_Εντολής>; 9

Εντολή Grouping PROGRAM ParallelSquareroot; VAR A: ARRAY [1..100] OF REAL; i: INTEGER; BEGIN.. FORALL i:= 1 TO 100 GROUPING N DO A[i]:= SQRT(A[i]);.. END. 10

MPWin C02pg029.mpf Process Tree Process Activity chart 11

Αλγόριθμος Ταξινόμησης Σειράς RANK_SORT; FOR i := 1 TO n DO ΒEGIN e := values[i]; rank := 0; FOR κάθε στοιχείο t του πίνακα IF e >= t THEN rank := rank+1; τοποθέτησε το e στη θέση rank του ταξινομημένου πίνακα END; PARALLEL_RANK_SORT; FORALL i := 1 TO n DO BEGIN e := values[i]; rank := 0; FOR κάθε στοιχείο t της λίστας IF e >= t THEN rank := rank+1; τοποθέτησε το e στη θέση rank του ταξινομημένου πίνακα END; 12

1 PROGRAM RankSort; 2 CONST 3 n = 100; 4 VAR 5 values,final : ARRAY [1..n] OF INTEGER; 6 i: INTEGER; 7 PROCEDURE PutinPlace(src : INTEGER); 8 VAR 9 testval,j,rank : INTEGER; 10 BEGIN 11 testval := values[src]; 12 j := src; (* το j θα κινηθεί σειριακά σε όλο τον πίνακα *) 13 rank := 0; 14 REPEAT 15 j := j MOD n+1; 16 IF testval >= values[j] THEN rank := rank+1; 17 UNTIL j=src; 18 final[rank]:=testval; (*βάλε την τιμή στην ταξινομημένη της θέση *) 19 END; 20 BEGIN (* Κυρίως πρόγραμμα *) 21 FOR i := 1 TO n DO 22 READLN(values[i]); (*αρχικοποίηση των τιμών προς ταξινόμηση *) 23 FORALL i := 1 TO n DO 24 PutinPlace(i); (*Εύρεση της σειράς των values[i] και τοποθέτηση τους*) 25 END. ΣΧHMA 2.3 Παράλληλη Ταξινόμηση Σειράς 13

Εκτέλεση παράλληλου αλγορίθμου ταξινόμησης σειράς 14

Πολλαπλασιασμός Μητρών Πολλαπλασιασμός Μητρών C = A * B: FOR i := 1 TO n DO FOR j := 1 TO n DO υπολόγισε το C[i,j] σαν το εσωτερικό γινόμενο της γραμμής i της Α με την στήλη j της Β; 15

Σειριακός Αλγόριθμος Πολλαπλασιασμού Μητρών PROGRAM MatrixMultiply; CONST n=10; VAR A, B, C: ARRAY [1..n, 1..n] OF REAL; i, j, k: INTEGER; sum: REAL; BEGIN FOR i := 1 TO n DO FOR j := 1 TO n DO BEGIN sum := 0; FOR k := 1 TO n DO sum := sum + A[i,k] * B[k,j]; C[i,j] := sum; END; END. 16

Μετατροπή Σειριακού Πολλαπλασιασμού Μητρών σε Παράλληλο (Σφάλμα) PROGRAM ErroneousMatrixMultiply; CONST n=100; VAR A, B, C : ARRAY [1..n,1..n] OF REAL; i, j, k : INTEGER; sum : REAL; BEGIN.. FORALL i := 1 TO n DO FORALL j := 1 TO n DO BEGIN sum := 0; FOR k := 1 TO n DO sum := sum + A[i, k]*b[k, j]; C[i, j] := sum; END;.. END. 17

Παράλληλος Πολλαπλασιασμός Μητρών PROGRAM ParallelMatrixMultiply; CONST n=10; VAR A, B, C: ARRAY [1..n, 1..n] OF REAL; i,j:integer; PROCEDURE VectorProduct(i, j: INTEGER); VAR sum: REAL; k: INTEGER; BEGIN sum := 0; FOR k := 1 TO n DO sum := sum + A[i,k] * B[k,j]; C[i,j] := sum; END; BEGIN (* Σώμα κυρίως προγράμματος*) FORALL i := 1 TO n DO FORALL j := 1 TO n DO VectorProduct(i,j); (*υπολογίζει την γραμμή i της Α επό τη στήλη j της Β*) END. 18

Ομάδες Εντολών με Δηλώσεις Μεταβλητών VAR <declaration 1>; <declaration 2>; <declaration m>; BEGIN <statement 1>; <statement 2>; <statement n>; END; 19

Ομάδες Εντολών με Δηλώσεις Μεταβλητών PROGRAM Sample; VAR A: ARRAY [1..10,1..10] OF REAL; x,p:real; BEGIN(*Σώμα κυρίως προγράμματος*) x := A[1,4]*3; p := Sqrt(x); VAR (* Aρχή της ομάδας εντολών*) x,y: INTEGER; value:real; BEGIN value := 1; FOR x := 1 TO 10 DO FOR y := 1 TO 10 DO BEGIN A[x,y] := value; value := value * 2; END; END; (*Τέλος της ομάδας εντολών*) Writeln(x);(* Αναφέρεται στο x που δηλώνεται στην αρχή του K.Π.*) Writeln(A[1,1]); END. 20

Ομάδες Εντολών με Δηλώσεις Μεταβλητών - Παράλληλος Πολλαπλασιασμός Μητρών 1 PROGRAM ParallelMatrixultiply_2; 2 CONST 3 n = 10; 4 VAR 5 A, B, C: ARRAY [1..n, 1..n] OF REAL; 6 i, j: INTEGER; 7 BEGIN 8 9 FORALL i := 1 TO n DO 10 FORALL j := 1 TO n DO 11 VAR 12 sum: REAL; 13 k: INTEGER; 14 BEGIN 15 sum := 0; 16 FOR k := 1 TO n DO 17 sum := sum+ A[i,k] * B[k, j]; 18 C[i, j] := sum; 19 END; 21

Εμβέλεια των μετρητών της Forall PROGRAM Sample; VAR i: INTEGER; PROCEDURE Tree; BEGIN END; BEGIN FORALL i := 1 TO 20 DO BEGIN Tree; END; END. 22

Σύνταξη της εντολής Fork FORK <γραμμή εντολής>; Παραδείγματα: x := y * 3; FORK FOR i := 1 TO 10 DO A[i] := i; z := SQRT(x); FORK Normalize(A); FORK Normalize(B); FORK Normalize(C); 23

Σύγκριση εντολών Forall και Fork ΗδομήFORALL έχει σαν αποτέλεσμα την παρακάτω ακολουθία ενεργειών: Δημιούργησε n διεργασίες παιδιά από την <γραμμή εντολής> Περίμενε έως ότου τερματίσουν και οι n διεργασίες παιδιά Συνέχισε την εκτέλεση του προγράμματος μετά την FORALL ΗδομήFORΚ έχει σαν αποτέλεσμα την παρακάτω ακολουθία ενεργειών: Δημιούργησε 1 διεργασία παιδί από την <γραμμή εντολής> Συνέχισε παράλληλα την εκτέλεση του προγράμματος μετά την FORΚ 24

Forall vs Fork 25

Εντολή Join FOR i := 1 TO 10 DO FORK Compute(A[i]); FOR i := 1 TO 10 DO JOIN; 26

Εντολή Fork και Παραλληλισμός Λειτουργιών PROGRAM ParallelListApply; TYPE pnttype = ^elementtype; elementtype = RECORD data:real; next: pnttype; END; VAR pnt, listhead: pnttype; PROCEDURE Compute(value: REAL); BEGIN END; BEGIN (*Κυρίως πρόγραμμα*) pnt := listhead; WHILE pnt <> nil DO BEGIN FORK Compute(pnt^.data); (* Δημιουργεί την διεργασία παιδί*) END; END. pnt := pnt^.next; (*Μετακινείται στο επόμενο στοιχείο της λίστας*) 27

Ο νόμος του Amdahl Μέγιστη Επιτάχυνση= f 1 f + 1 p 28