You are on page 1of 94

ΓΗΜΟΚΡΙΣΔΙΟ ΠΑΝΔΠΙ΢ΣΗΜΙΟ ΘΡΑΚΗ΢

Σκήκα Ηιεθηροιόγφλ Μεταληθώλ


& Μεταληθώλ Τποιογηζηώλ
Δργαζηήρηο Αρτηηεθηοληθής Τποιογηζηώλ
& ΢σζηεκάηφλ Τυειώλ Δπηδόζεφλ

Διπλωματικι Εργαςία

Συγκριτικι μελζτθ των νόμων Amdahl/Gustafson και εφαρμογι ςε


ςφςτθμα χαμθλισ κατανάλωςθσ ιςχφοσ / ενζργειασ

Ηλιοφδθσ Αναςτάςιοσ
Α.Μ.:56714

Επιβλζπων ΕΔΙΡ Σπθλιώτθσ Ηρακλισ

Ξάνκθ, 2022
Σηην οικογένειά μος
Εσταριστίες
Σε αςηό ηο ζημείο θα ήθελα να εςσαπιζηήζυ θεπμά ηον Δπ. Ηπακλή Σπηλιώηη για ηην
καθοδήγηζη πος μος πποζέθεπε καηά ηη διάπκεια εκπόνηζηρ ηηρ παπούζαρ
διπλυμαηικήρ επγαζίαρ.

Τέλορ, θα ήθελα να εςσαπιζηήζυ ηην οικογένειά μος για ηη ζηήπιξη πος μος παπείσε ζε
όλη ηη διάπκεια ηυν θοιηηηικών μος σπόνυν.
Περίληψη
Η ύπαξμε πιήζνπο κνλάδσλ επεμεξγαζίαο ζην ίδην ππνινγηζηηθό ζύζηεκα θαη ε
παξάιιειε πινπνίεζε εξγαζηώλ θαληάδνπλ δεδνκέλεο ζηε ζύγρξνλε επνρή. Όκσο νη έλλνηεο
απηέο γηα λα θηάζνπλ ζηελ ηειηθή ηνπο επηθξάηεζε ήξζαλ ζε αληηπαξάζεζε κε ηελ
πξνϋπάξρνπζα ζεηξηαθή ινγηθή. Σηελ παξνύζα δηπισκαηηθή εξγαζία κειεηνύκε ηα
ζεσξήκαηα κε ηα νπνία νη ππνζηεξηθηέο ηεο ζεηξηαθήο θαη παξάιιειεο αξρηηεθηνληθήο
ππνινγηζηώλ αηηηνιόγεζαλ ηε ζηάζε ηνπο θαη ηα επεθηείλνπκε ζηνλ ηνκέα ελεξγεηαθήο
απνδνηηθόηεηαο. Αξρηθά ζπγθξίλνπκε ηα δύν ζεσξήκαηα πνπ πξναλαθέξζεθαλ θαη
απνηεινύλ ηνπο λόκνπο Amdahl θαη Gustafson ώζηε λα πξνθύςεη έλα ηειηθό ζπκπέξαζκα γηα
ηε ζρέζε ηνπο. Έπεηηα, γηα ηνπο αιγνξίζκνπο πνιιαπιαζηαζκνύ πηλάθσλ θαη ηαμηλόκεζεο
merge sort ρξεζηκνπνηήζεθε ην ζεώξεκα πνπ παξάγεη ηελ επηηάρπλζε γηα εθηέιεζε ζε
παξάιιειν ζύζηεκα. Οη παξαπάλσ αιγόξηζκνη επηιέρζεθαλ ιόγσ ηεο δηαθνξεηηθήο
θιηκάθσζεο ηνπ παξαιιεινπνηήζηκνπ ηκήκαηνο πνπ δηαζέηνπλ.

Η παγθόζκηα ζηξνθή ζηνλ πεξηνξηζκό ηεο ελεξγεηαθήο θαηαλάισζεο έρεη αξρίζεη


ηειεπηαία λα επεξεάδεη θαη ηνλ ρώξν ησλ ππνινγηζηώλ. Σε ζπλδπαζκό κε ηε ζπλερώο
απμαλόκελε αλάπηπμε ηνπ ηνκέα θνξεηώλ ζπζθεπώλ, έρνπλ νδεγήζεη ζηελ ηζνδύλακε
αληηκεηώπηζε ηεο ππνινγηζηηθήο ηζρύνο θαη ηεο ελεξγεηαθήο απνδνηηθόηεηαο από ηνπο
ζρεδηαζηέο ππνινγηζηηθώλ ζπζηεκάησλ. Με απηή ηελ αθνξκή ζηε ζπγθεθξηκέλε
δηπισκαηηθή εξγαζία ζπγθξίλνπκε ηελ επηηάρπλζε κε κεγέζε πνπ ραξαθηεξίδνπλ ηελ
ελεξγεηαθή απόδνζε. Σπγθεθξηκέλα κειεηώληαη ε κέζε ηζρύ ιεηηνπξγίαο θαη ηελ ελέξγεηα
πνπ θαηαλαιώλεη ην δηαζέζηκν θαηαλεκεκέλν ζύζηεκα θαηά ηελ εθηέιεζε αιγνξίζκσλ
πνιιαπιαζηαζκνύ πηλάθσλ θαη ηαμηλόκεζεο merge sort. Τα ηειηθά ζπκπεξάζκαηα
πξνέθπςαλ από ηε ζύγθξηζε ησλ παξαπάλσ κεγεζώλ κε ηελ αληίζηνηρε επηηάρπλζε πνπ
απνδίδεη ην θαηαλεκεκέλν ζύζηεκα.
Abstract
In the modern era we are surrounded by multicore systems that execute computations
in a parallel manner. In order to reach that stage, parallel computing had to prevail over the
pre-established serial design. In this diploma thesis we study the theorems in which the
supporters of serial and parallel computer architecture based their views (about the future of
computing) on and we extend them in the field of energy efficiency. We start by comparing
the two aforementioned theorems which are Amdahl‟s and Gustafson‟s law in order to reach a
final conclusion about their relation. Then we calculate the speedup achieved by the parallel
execution of matrix multiplication and merge sort algorithms on a distributed computer.
These two algorithms were selected for the distinct difference in the scaling of their parallel
portion.

The global effort to minimize energy consumption can also be observed in the field of
computer design. This phenomenon, in combination with the ever expanding demand for
portable devices has lead energy efficiency to be considered as important as performance by
computer architects. With all that in mind, in this diploma thesis we compare the achievable
speedup on a parallel system with metrics that describe its energy consumption. Specifically
we study the average power consumption and the total energy that our distributed system
requires during the execution of the parallel matrix multiplication and merge sort algorithm.
The final conclusions were drawn by comparing the above metrics with the corresponding
speedup that our distributed system produced for each scenario.
Περιεχόμενα
Ειςαγωγι ................................................................................................................................... 9

1) Ραράλλθλθ Επεξεργαςία .................................................................................................... 11

1.1) Ειςαγωγι ...................................................................................................................... 11

1.2) Ταξινόμθςθ αρχιτεκτονικών υπολογιςτών .................................................................. 11

1.2.1) Μοναδικό ρεφμα εντολών – Μοναδικό ρεφμα δεδομζνων (SISD)....................... 12

1.2.2) Μοναδικό ρεφμα εντολών – Ρολλαπλά ρεφματα δεδομζνων (SIMD) ................. 13

1.2.3) Ρολλαπλά ρεφματα εντολών – Μοναδικό ρεφμα δεδομζνων (MISD) ................. 14

1.2.4) Ρολλαπλά ρεφματα εντολών – Ρολλαπλά ρεφματα δεδομζνων (MIMD) ........... 15

2) Συςτιματα κοινισ μνιμθσ .................................................................................................. 17

2.1) Ειςαγωγι ...................................................................................................................... 17

2.2) Δίκτυα διαςφνδεςθσ ΣΚΜ ............................................................................................ 17

2.2.1) Δίκτυα διαφλου ..................................................................................................... 18

2.2.2) Δίκτυα διακοπτών ................................................................................................. 18

2.3) Συνοχι κρυφισ μνιμθσ ................................................................................................ 21

3) Συςτιματα κατανεμθμζνθσ μνιμθσ ................................................................................... 24

3.1) Ειςαγωγι ...................................................................................................................... 24

3.2) Ραράγοντεσ απόδοςθσ................................................................................................. 24

3.3) Υπολογιςτζσ Συςτάδασ ................................................................................................. 25

3.4) Δίκτυα διαςφνδεςθσ ςυςτθμάτων κατανεμθμζνθσ μνιμθσ........................................ 27

3.4.1) Άμεςα δίκτυα (direct networks) ........................................................................... 27

3.4.2) Ζμμεςα δίκτυα (indirect networks)....................................................................... 30

4) Μεταβίβαςθ μθνυμάτων (Message passing)...................................................................... 33

4.1) Ειςαγωγι ...................................................................................................................... 33

4.2) Βαςικζσ ζννοιεσ του MPI .............................................................................................. 34

4.2.1) Διεργαςίεσ ............................................................................................................. 34

4.2.2) Μζκοδοι επικοινωνίασ .......................................................................................... 35

4.2.3) Δομζσ επικοινωνίασ .............................................................................................. 38


4.2.4) Τοπολογίεσ MPI ..................................................................................................... 39

4.2.5) Τφποι δεδομζνων .................................................................................................. 40

4.3) Οι βαςικζσ διαδικαςίεσ του MPI .................................................................................. 41

4.3.1) Τοπικζσ (Local)....................................................................................................... 41

4.3.2) Διαδικαςίεσ επικοινωνίασ ςθμείου προσ ςθμείο ................................................. 42

4.3.2) Συλλογικζσ διαδικαςίεσ......................................................................................... 43

5) Απόδοςθ παράλλθλων αλγορίκμων ................................................................................... 47

5.1) Δομι παράλλθλων αλγορίκμων .................................................................................. 47

5.1.1) Διάκριςθ ςε τμιματα ............................................................................................ 47

5.1.2) Βακμόσ ανάλυςθσ (granularity) ............................................................................ 48

5.2) Η επιτάχυνςθ ςτουσ παράλλθλουσ αλγόρικμουσ ........................................................ 49

5.2.1) Νόμοσ Amdahl ....................................................................................................... 50

5.2.3) Νόμοσ Gustafson ................................................................................................... 51

5.2.3) Σφγκριςθ νόμων Amdahl - Gustafson................................................................... 52

5.3) Αποδοτικότθτα και isoefficiency .................................................................................. 56

5.4) Σχζςθ επιτάχυνςθσ – ενζργειασ ................................................................................... 57

6) Ρεριγραφι αλγορίκμων που χρθςιμοποιικθκαν .............................................................. 59

6.1) Ρολλαπλαςιαςμόσ πινάκων ......................................................................................... 59

6.1.2) Ραράλλθλοσ αλγόρικμοσ πολλαπλαςιαςμοφ πινάκων ........................................ 60

6.2) Ταξινόμθςθ merge sort ................................................................................................ 62

6.2.3) Ραράλλθλοσ αλγόρικμοσ ταξινόμθςθσ merge sort .............................................. 64

7) Μεκοδολογία μετριςεων ................................................................................................... 66

7.1) Κατανεμθμζνο ςφςτθμα εργαςτθρίου ........................................................................ 66

7.2) Μζκοδοσ υπολογιςμοφ μετρικών-μεγεκών ................................................................ 66

7.4) Ανάλυςθ υλοποίθςθσ ςε χρονικά διαςτιματα ............................................................ 68

7.4.1) Σειριακό τμιμα...................................................................................................... 69

7.4.2) Τμιμα επικοινωνίασ .............................................................................................. 70

7.4.3) Ραράλλθλο τμιμα ................................................................................................. 75


7.4.4) Συνολικοί χρόνοι αδράνειασ και πλιρουσ φορτίου.............................................. 76

8) Ρειραματικά αποτελζςματα ............................................................................................... 78

8.1) Αλγόρικμοσ πολλαπλαςιαςμοφ πινάκων .................................................................... 78

8.2) Αλγόρικμοσ ταξινόμθςθσ merge sort........................................................................... 84

9) Συμπεράςματα .................................................................................................................... 90

Βιβλιογραφία .......................................................................................................................... 91
Ειςαγωγή
Από ηελ εκθάληζε ησλ πξώησλ ειεθηξνληθώλ ππνινγηζηώλ ζηα κέζα ηνπ εηθνζηνύ
αηώλα μεθίλεζε ν ζπλερήο αγώλαο γηα ηελ βειηίσζε ηεο απόδνζήο ηνπ. Όηαλ ε αύμεζε ησλ
transistor θαη ηεο ζπρλόηεηαο ξνινγηνύ ησλ επεμεξγαζηώλ απνδεηθλύνληαλ όιν θαη
δπζθνιόηεξε γηα ηα θαηαζθεπαζηηθά κέζα ηεο επνρήο πξνηάζεθε κία ελαιιαθηηθή ιύζε.
Απηή ζπληζηνύζε ηε ρξήζε πνιιώλ δηαθνξεηηθώλ επεμεξγαζηώλ πνπ εθηεινύλ ηαπηόρξνλα
εξγαζίεο γηα ηε ιύζε ηνπ ίδηνπ πξνβιήκαηνο. Η λέα αξρηηεθηνληθή δίραζε ηελ θνηλόηεηα ησλ
ζρεδηαζηώλ ππνινγηζηώλ κε απνηέιεζκα ε παξάιιειε επεμεξγαζία λα ζπλαληήζεη κεγάια
εκπόδηα κέρξη ηελ εδξαίσζή ηεο. Σηε ζύγρξνλε επνρή, ε αλαδήηεζε νινέλα θαη πςειόηεξεο
ππνινγηζηηθήο ηζρύνο παξακέλεη αθαηάπαπζηε αιιά ζπλνδεύεηαη από ηε ζηξνθή ζηελ
ελεξγεηαθή απνδνηηθόηεηα. Ο παξαπάλσ ζπζρεηηζκόο κεγεζώλ είλαη ηδηαίηεξα ζεκαληηθόο
ζηελ θαηεγνξία παξάιιεισλ ζπζηεκάησλ πνπ νλνκάδνληαη ππεξππνινγηζηέο ιόγσ ηεο
πςειήο ηζρύνο πνπ απαηηνύλ. Σηελ παξνύζα εξγαζία κειεηνύκε ηελ επηηάρπλζε πνπ
πξνθύπηεη από ηελ παξάιιειε εθηέιεζε αιγνξίζκσλ ζε ζύζηεκα θαηαλεκεκέλεο κλήκεο θαη
ηνλ ηξόπν πνπ απηή ζρεηίδεηαη κε ηελ θαηαλάισζε ελέξγεηαο θαη ηελ ηζρύ ιεηηνπξγίαο ηνπ
ζπζηήκαηνο απηνύ.

Σηα πξώηα ηξία θεθάιαηα πξνζεγγίδεηαη ε έλλνηα ηεο παξάιιειεο επεμεξγαζίαο από
πιεπξάο πιηθνύ παξνπζηάδνληαο ηνπο παξάγνληεο πνπ δηαθξίλνπλ ην ζύλνιν ησλ
παξάιιεισλ επεμεξγαζηώλ ζε επηκέξνπο θαηεγνξίεο. Αλαιύνληαη νη αξρηηεθηνληθέο
παξάιιεισλ ζπζηεκάησλ θνηλήο κλήκεο θαη θαηαλεκεκέλεο κλήκεο σο πξνο ηνλ ηξόπν
ιεηηνπξγίαο θαη ηα δνκηθά ραξαθηεξηζηηθά ηνπο.

Σην ηέηαξην θεθάιαην γίλεηαη εηζαγσγή ζηε ινγηθή επηθνηλσλίαο ησλ ζπζηεκάησλ
θαηαλεκεκέλεο κλήκεο κέζσ κεηαβίβαζεο κελπκάησλ. Αλαιύνληαη νη θύξηεο έλλνηεο θαη ν
ηξόπνο ιεηηνπξγίαο ηνπ πξσηνθόιινπ κεηαβίβαζεο κελπκάησλ MPI θαη αλαιύνληαη νη
βαζηθέο ζπλαξηήζεηο πνπ πεξηιακβάλεη.

Σην πέκπην θεθάιαην αλαιύεηαη ε δνκή ελόο παξάιιεινπ αιγνξίζκνπ θαη ηα κεγέζε
πνπ καο βνεζνύλ λα απνθηήζνπκε κηα γεληθή εηθόλα γηα ηελ απόδνζε ηεο παξάιιειεο
πινπνίεζήο ηνπ. Σηε ζπλέρεηα ζπγθξίλνληαη ηα δύν επηθξαηέζηεξα ζεσξήκαηα γηα ηνλ
ππνινγηζκό ηεο επηηάρπλζεο θαηά ηελ παξάιιειε επεμεξγαζία, ηνπο λόκνπο Amdahl θαη
Gustafson. Παξνπζηάδνληαη ηα κεγέζε επηηάρπλζε αλά ελέξγεηα θαη επηηάρπλζε αλά κέζε
ηζρύο ιεηηνπξγίαο θαηά ηελ πινπνίεζε παξάιιεισλ αιγνξίζκσλ πνπ ζπλδένπλ ηελ
επεμεξγαζηηθή ηζρύ κε ηελ ελεξγεηαθή απνδνηηθόηεηα.

9
Σην έθην θεθάιαην παξνπζηάδνληαη νη αιγόξηζκνη πνιιαπιαζηαζκνύ πηλάθσλ θαη
ηαμηλόκεζεο merge sort πνπ ρξεζηκνπνηήζεθαλ γηα ηε δηεμαγσγή ησλ πεηξακαηηθώλ
κεηξήζεσλ. Η επηινγή ησλ παξαπάλσ αιγνξίζκσλ βαζίζηεθε ζηηο κεγάιεο δηαθνξέο πνπ
παξνπζηάδνπλ ζηελ θιηκάθσζε ηνπ παξάιιεινπ πνζνζηνύ ηνπο θαζώο απμάλνπκε ην πιήζνο
ησλ δεδνκέλσλ εηζόδνπ. Τόζν ε ζεηξηαθή όζν θαη ζηελ παξάιιειε εθδνρή ηνπο
αλαπηύρζεθε ζε γιώζζα C++.

Οη κεηξήζεηο ησλ ρξόλσλ εθηέιεζεο πξαγκαηνπνηήζεθαλ ζε κία ππννκάδα ηνπ


θαηαλεκεκέλνπ ζπζηήκαηνο πνπ δηαζέηεη ην εξγαζηήξην Αξρηηεθηνληθήο Υπνινγηζηώλ θαη
Σπζηεκάησλ Υςειώλ Δπηδόζεσλ. Τα κεραλήκαηα πνπ ρξεζηκνπνηήζεθαλ δηαζέηνπλ
επεμεξγαζηέο Intel Pentium 4 κε ζπρλόηεηα κεηαμύ 2,8 θαη 3 GHz θαη νη ρξνληθέο κεηξήζεηο
θαηά ηελ παξάιιειε εθηέιεζε ιήθζεθαλ γηα όια ηα δηαθνξεηηθά κεγέζε ηνπ επηιεγκέλνπ
θαηαλεκεκέλνπ ζπζηήκαηνο, δειαδή γηα πιήζνο κεραλεκάησλ από 2 κέρξη θαη 10. Γηα ηελ
ιήςε ηεο ηζρύνο ιεηηνπξγίαο ηνπ θαηαλεκεκέλνπ ζπζηήκαηνο κεηξήζεθε κε ζπζθεπή
κέηξεζεο ηζρύνο, ζε θάζε κεράλεκα ε ηζρύο όηαλ εθηεινύληαη απαηηεηηθέο εξγαζίεο θαη όηαλ
ην κεράλεκα βξίζθεηαη ζε αλακνλή γηα ιήςε δεδνκέλσλ. Η ζπλνιηθή ελέξγεηα πνπ
θαηαλαιώζεθε από ην θαηαλεκεκέλν ζύζηεκα πξνέθπςε από ηηο δύν ζηάζκεο ηζρύνο θαη ηελ
αλάιπζε ησλ ρξόλσλ εθηέιεζεο ησλ αιγνξίζκσλ. Σην ηέινο ζπγθξίζεθαλ ηόζν ε ελέξγεηα
πνπ θαηαλαιώζεθε όζν θαη ε κέζε ηζρύο πνπ απαηηείηαη γηα ηε ιεηηνπξγία ηνπ
θαηαλεκεκέλνπ ζπζηήκαηνο ζε ζρέζε κε ηελ επηηάρπλζε πνπ πξνζθέξεη.

10
1) Παράλληλη Επεξεργαςία

1.1) Ειςαγωγή
Σηα πξώηα ρξόληα εκθάληζεο ησλ ειεθηξνληθώλ ππνινγηζηώλ ν κόλνο
ηξόπνο γηα ηελ εθηέιεζε θάπνηνπ πξνγξάκκαηνο ήηαλ κία εληνιή ηε θνξά θ αη ζε
απόιπηε ρξνλνινγηθή ζεηξά. Δπνκέλσο ήηαλ απνθιεηζηηθά θαζνξηζκέλε από ηε
δηαδνρή ησλ εληνιώλ ζηνλ αιγόξηζκν. Απηή ε ζεηξηαθή κέζνδνο απνηεινύζε
κνλόδξνκν κέρξη λα ηεζεί ππό εμέηαζε ε έλλνηα ηεο παξάιιειεο εθηέιεζεο
αξηζκεηηθώλ ππνινγηζκώλ από ηνπο John Cocke θαη Daniel Slotnick. Αθνξκή γηα ην
παξαπάλσ ππήξμε έξεπλα πνπ πξαγκαηνπνηνύζαλ γηα ηελ IBM ην 1958. Από εθεί
θαη έπεηηα ην ζέκα άξρηζε λα απνηειεί αληηθείκελν νινέλα θαη πεξηζζόηεξσλ
εξεπλώλ. Τειηθά δελ άξγεζαλ λα εκθαληζηνύλ ππνινγηζηέο πνπ ρξεζηκνπνηνύζαλ
θάπνηαο κνξθήο παξάιιειε επεμεξγαζία όπσο νη ILLAC II θαη IBM 7030 [1].
Σηε ζύγρξνλε επνρή κε ηελ πξόνδν ησλ κεζόδσλ θαηαζθεπήο θαη γεληθόηεξα
ηεο ηερλνινγίαο ππνινγηζηώλ ν παξαιιειηζκόο έρεη επηθξαηήζεη ζξηακβεπηηθά ησλ
ζεηξηαθώλ αξρηηεθηνληθώλ. Οη ζρεδηαζηέο ππνινγηζηηθώλ ζπζηεκάησλ ζηξέθνληαη
ζηελ πεξαηηέξσ παξαιιεινπνίεζε εηζάγνληαο νινέλα θαη πεξηζζόηεξνπο ππξήλεο
ζηηο κνλάδεο επεμεξγαζίαο θαη νινέλα θαη πεξηζζόηεξεο κνλάδεο επεμεξγαζίαο
ζηνπο ππεξππνινγηζηέο.

1.2) Ταξινόμηςη αρχιτεκτονικϊν υπολογιςτϊν


Με ηελ εηζαγσγή ησλ παξάιιεισλ ππνινγηζηώλ ζην πξνζθήλην πξνέθπςε ην
πξόβιεκα ηεο δηάθξηζήο ηνπο ζε θαηεγνξίεο ην νπνίν έιπζε ν Michael J. Flynn ην
1966. Οη ζεσξεηηθέο αξρέο κε βάζε ηηο νπνίεο ηαμηλόκεζε ηη ο παξάιιειεο
αξρηηεθηνληθέο βαζίδνληαη ηόζν ζην πιηθό ησλ ππνινγηζηηθώλ ζπζηεκάησλ όζν θαη
ζηε ζρέζε κεηαμύ ησλ εληνιώλ πνπ εθδίδνληαη θαη ησλ δεδνκέλσλ πξνο
επεμεξγαζία. Με βάζε ηα παξαπάλσ πηνζεηήζεθαλ δύν θαηλνύξηνη όξνη [2] :

 Ρεύκα εληοιώλ (Instruction Stream): Η αθνινπζία ησλ εληνιώλ θαζώο


απηέο εθηεινύληαη από ην ππνινγηζηηθό ζύζηεκα.
 Ρεύκα δεδοκέλφλ (Data Stream): Η αθνινπζία ησλ δεδνκέλσλ θαζώο
θαινύληαη γηα επεμεξγαζία από ην ξεύκα εληνιώλ.

Γύν αθόκα όξνη πνπ ζα ρξεζηκνπνηεζνύλ παξαθάησ θαη δηεπθνιύλνπλ ηελ


επεμήγεζε ησλ ραξαθηεξηζηηθώλ πνπ δηαθξίλνπλ ηηο θαηεγνξίεο παξάιιεισλ
αξρηηεθηνληθώλ είλαη ην Δύρος δώλες (Bandwidth). Απηό εθθξάδεη ην ρξνληθό

11
δηάζηεκα κεηαμύ δύν ζπκβάλησλ θάπνηαο πεξηνδηθήο αθνινπζίαο ή αιιηώο ηε
ζπρλόηεηα κε ηελ νπνία έλα ζπκβάλ επαλαιακβάλεηαη. Σπγθεθξηκέλα, γηα λα ην
ζπζρεηίζνπκε θαη κε ηνπο δύν πξνεγνύκελνπο όξνπο, εύξνο δώλεο επεμεξγαζίαο
(Computational Bandwidth) είλαη ην πιήζνο ησλ εληνιώλ πνπ επεμεξγαδόκαζηε
θάζε δεπηεξόιεπην θαη εύξνο δώλεο απνζήθεπζεο ( Storage Bandwidth) είλαη ν
ξπζκόο κε ηνλ νπνίν ν ηειεζηήο θαη νη ηειεζηένη ιακβάλνληαη από ηε κλήκε. Δπίζεο
ε Καζσζηέρεζε (Latency) πνπ εθθξάδεη ηνλ ρξόλν πνπ απαηηείηαη γηα ηε ζπλνιηθή
επεμεξγαζία (από ηελ θιήζε κέρξη ην ηειηθό απνηέιεζκα) κίαο κνλάδαο δεδνκέλσλ.
Σύκθσλα κε ηνπο όξνπο απηνύο νη θαηεγνξίεο ησλ παξάιιεισλ ππνινγηζηηθώλ
ζπζηεκάησλ είλαη ηέζζεξηο θαη παξνπζηάδνληαη παξαθάησ.

1.2.1) Μοναδικό ρεφμα εντολϊν – Μοναδικό ρεφμα δεδομζνων (SISD)


Η νξγάλσζε ππνινγηζηηθώλ ζπζηεκάησλ SISD ραξαθηεξίδεηαη από κνλαδηθό
δίαπιν κεηαμύ κνλάδαο επεμεξγαζίαο θαη κλήκεο. Δμππεξεηεί ηε ξνή εληνιώλ από
ηνλ ρώξν απνζήθεπζήο ηνπο πξνο ηε κνλάδα επεμεξγαζίαο θαη ηε κεηαθνξά ησλ
ηειεζηέσλ (δεδνκέλσλ) θαζώο θαινύληαη από ηελ θάζε εληνιή.

Σχ. 1.1. Λειτουργία ςυςτιματοσ με μοναδικό ρεφμα εντολϊν και ρεφμα δεδομζνων.

Τν κεγαιύηεξν κεηνλέθηεκα απηήο ηεο αξρηηεθηνληθήο είλαη ε αδπλακία ηνπ


ζπζηήκαηνο λα εθθηλήζεη ηελ θιήζε θάπνηαο εληνιήο θαη παξάιιεια λα κεηαθέξεη
δεδνκέλα από ή πξνο ηε κλήκε. Τν ζπγθεθξηκέλν πξόβιεκα απόδνζεο κεηξηάζηεθε
από ηελ αξρηηεθηνληθή SISD ζπξξνήο (confluent) ε νπνία ρξεζηκνπνηεί
θαηαρσξεηέο κεηαμύ ηεο κνλάδαο επεμεξγαζίαο θαη ηεο κλήκεο . Με ηε ρξήζε
ελδηάκεζσλ θαηαρσξεηώλ ε αλακνλή πνπ πξνθαινύζαλ νη ρξνλνβόξεο
πξνζπειάζεηο ηεο θύξηαο κλήκεο κεηώζεθε ζεκαληηθά.
Παξαδείγκαηα ηεο SISD αξρηηεθηνληθήο απνηεινύλ ν IBM 7030 πνπ ήηαλ ν
πξώηνο ππνινγηζηήο ηεο εηαηξίαο ν νπνίνο δηέζεηε ηξαλδίζηνξ αληί γηα ιπρλίεο
θελνύ [1] θαη ν CDC 7600 πνπ ρξεζηκνπνηνύζε εθηελή ζσιήλσζε (pipelining) [3].

12
Παξ‟ όιεο όκσο ηηο ηερληθέο γηα βειηίσζε ηεο απόδνζεο, ην θύξην πξόβιεκα ηεο
ζπγθεθξηκέλεο αξρηηεθηνληθήο παξακέλεη ην γεγνλόο όηη κπνξνύκε λα έρνπκε κόλν
κία εληνιή ζην ζηάδην ηεο απνθσδηθνπνίεζεο θάζε ρξνληθή ζηηγκή. Πην
ζπγθεθξηκέλα ν παξαιιειηζκόο θαηά ηελ απνθσδηθνπνίεζε έρεη σο παξελέξγεηεο
ηελ εθηελή πεξηπινθή ηνπ κεραληζκνύ πνπ είλαη ππεύζπλνο γηα απηό ην ζηάδην
επεμεξγαζίαο ησλ εληνιώλ.

1.2.2) Μοναδικό ρεφμα εντολϊν – Πολλαπλά ρεφματα δεδομζνων (SIMD)


Τα ππνινγηζηηθά ζπζηήκαηα πνπ αλήθνπλ ζηελ θαηεγνξία SIMD
πεξηιακβάλνπλ έλα πιήζνο κνλάδσλ επεμεξγαζίαο γεληθνύ ζθνπνύ κε θαζεκία λα
δηαζέηεη μερσξηζηό δίαπιν γηα ηελ εμππεξέηεζε ηνπ ξεύκαηνο δεδνκέλσλ. Παξά ηελ
δπλαηόηεηα πξόζβαζεο ζε μερσξηζηνύο ηειεζηένπο ην ζύλνιό ησλ κνλάδσλ
επεμεξγαζίαο πινπνηεί ην ίδην ξεύκα εληνιώλ.

Σχ. 1.2. Λειτουργία ςυςτιματοσ με μοναδικό ρεφμα εντολϊν και ρεφματα δεδομζνων όςα οι μονάδεσ
επεξεργαςίασ.

Η απόδνζε ηεο ζπγθεθξηκέλεο νξγάλσζεο ππνινγηζηώλ εληνπίδεηαη ζηε


δπλαηόηεηά ηεο λα πινπνηεί ηνλ ίδην ρεηξηζκό ηαπηόρξνλα ζε πιήζνο ξεπκάησλ
δεδνκέλσλ πνπ ηζνύηαη κε ηνλ αξηζκό ησλ κνλάδσλ επεμεξγαζίαο πνπ δηαζέηνπκε .
Σε αληίζεζε κε ηελ SISD νξγάλσζε δελ γίλεηαη ρξήζε παξαιιειηζκνύ θαηά ηνλ
θύθιν εθηέιεζεο ησλ εληνιώλ. Μία άιιε αδπλακία εληνπίδεηαη ζην γεγνλόο όηη νη
κνλάδεο επεμεξγαζίαο είλαη γεληθνύ ζθνπνύ θαη ζε αξθεηέο πεξηπηώζεηο δελ
πξνζεγγίδνπλ ηελ επεμεξγαζηηθή ηζρύ ζπζηήκαηνο πνπ δηαζέηεη πιηθό (hardware)
εμεηδηθεπκέλν ζηνπο δηαθνξεηηθνύο ρεηξηζκνύο δεδνκέλσλ.
Ο πξώηνο ππνινγηζηήο πνπ έθαλε ρξήζε ηεο ζπγθεθξηκέλεο νξγάλσζεο ήηαλ
ν ILLIAC IV. Ο ζπγθεθξηκέλνο δηέζεηε 64 θπθιώκαηα γηα πινπνίεζε πξάμεσλ
θηλεηήο ππνδηαζηνιήο θαη κία κνλάδα επεμεξγαζίαο [3]. Σήκεξα, ε αξρηηεθηνληθή

13
SIMD ρξεζηκνπνηείηαη επξέσο γηα ηελ επεμεξγαζία ηξηζδηάζηαησ λ γξαθηθώλ αιιά
ζπλαληάηαη όιν θαη ιηγόηεξν ζε επεμεξγαζηέο γεληθνύ ζθνπνύ.

1.2.3) Πολλαπλά ρεφματα εντολϊν – Μοναδικό ρεφμα δεδομζνων (MISD)


Η θαηεγνξία νξγάλσζεο ππνινγηζηηθώλ ζπζηεκάησλ MISD δηαθξίλεηαη από
ηελ ύπαξμε μερσξηζηώλ κνλάδσλ απνζήθεπζεο ησλ εληνιώλ γηα θάζε κνλάδα
επεμεξγαζίαο κε αληηζηνηρία έλα πξνο έλα. Έηζη έρνπκε ηελ ηθαλόηεηα λα
πινπνηνύκε ηαπηόρξνλα ηόζα ξεύκαηα εληνιώλ όζν ην πιήζνο κνλάδσλ
επεμεξγαζίαο πνπ δηαζέηνπκε. Όπσο είλαη πξνθαλέο από ηελ νλνκαζία, ην ζύζηεκα
δηαζέηεη κνλαδηθό ρώξν απνζήθεπζεο δεδνκέλσλ θαη ε δηαδηθα ζία πξόζβαζεο ησλ
κνλάδσλ επεμεξγαζίαο ζε απηόλ δηαθξίλεη ηε ζπγθεθξηκέλε θαηεγνξία νξγάλσζεο
ζε δύν ππνθαηεγνξίεο.
Σηελ πξώηε θαηεγνξία αλήθνπλ ηα ππνινγηζηηθά ζπζηήκαηα ησλ νπνίσλ νη
κεραληζκνί πξνζθόκηζεο θαη απνθσδηθνπνίεζεο εληνιώλ ρεηξίδνληαη ηαπηόρξνλα
ηόζα ξεύκαηα εληνιώλ όζν ην πιήζνο ησλ ηδίσλ. Απηό πξνϋπνζέηεη νη εληνιέο πνπ
βξίζθνληαη θάζε ρξνληθή ζηηγκή ζε παξαιιειία λα είλαη πιήξσο αλεμάξηεηεο
κεηαμύ ηνπο. Κάζε ηέηνηνο κεραληζκόο απνθηά πξόζβαζε ζηε κνλάδα επεμεξγαζίαο
κία θνξά ζε θάζε θύθιν δηαδνρηθά γηα λα εθηειέζεη ηηο εξγαζίεο ηνπ ζηα θαηάιιεια
δεδνκέλα ηα νπνία έπεηηα κεηαθέξνληαη παξάιιεια ζηνλ ρώξν απνζήθεπζεο.

Σχ. 1.3. Λειτουργία ςυςτιματοσ με ρεφματα εντολϊν ιςάρικμα με τισ μονάδεσ επεξεργαςίασ και μοναδικό
ρεφμα δεδομζνων. Τα δεδομζνα μεταφζρονται ταυτόχρονα ςτουσ επεξεργαςτζσ.

Σηε δεύηεξε θαηεγνξία ε δηαθνξά έγθεηηαη ζηε ξνή ησλ δεδνκέλσλ ε νπνία
αληί λα πξαγκαηνπνηείηαη από θαη πξνο ην ρώξν απνζήθεπζεο πεξλάεη δηαδνρηθά
από θάζε κνλάδα επεμεξγαζίαο ρσξίο λα ππάξρεη ελδηάκεζε επηθνηλσλία κε απηόλ.
Γειαδή ηα δεδνκέλα πξνο επεμεξγαζία κεηαθέξνληαη αξρηθά από ηε κλήκε ζηελ
πξώηε κνλάδα επεμεξγαζίαο ε έμνδνο ηεο νπνίαο απνηειεί ηελ είζνδν ηεο επόκελεο.
Η αθνινπζία απηή επαλαιακβάλεηαη κέρξη ηα δεδνκέλα λα θηάζνπλ ζηελ ηειεπηαία

14
κνλάδα επεμεξγαζίαο ε νπνία είλαη ε κόλε πνπ έρεη ηε δπλαηόηεηα λα εθρσξεί ζηε
κλήκε.

Σχ. 1.4. Λειτουργία ςυςτιματοσ με ρεφματα εντολϊν ιςάρικμα με τισ μονάδεσ επεξεργαςίασ και μοναδικό
ρεφμα δεδομζνων. Μόλισ ο πρϊτοσ επεξεργαςτισ ολοκλθρϊςει τισ εργαςίεσ του τα αποτελζςματα που
παράγονται μεταφζρονται ςτον επόμενο για επεξεργαςία.

Οη δύν παξαπάλσ θαηεγνξίεο έρνπλ ηε δπλαηόηεηα αμηνπνίεζεο ηερληθώλ ηεο


νξγάλσζεο SISD ζπξξνήο όπσο ν θαηαθεξκαηηζκόο ησλ εληνιώλ ζηα ζηάδηα
επεμεξγαζίαο ηνπο (πξνζθόκηζε – απνθσδηθνπνίεζε - εθηέιεζε) ώζηε λα
πινπνηνύληαη παξάιιεια. Δλώ νη πξαθηηθέο εθαξκνγέο ζπζηεκάησλ MISD δελ είλαη
ηόζν δηαδεδνκέλεο όζν ησλ ππνινίπσλ νξγαλώζεσλ, ρξεζηκνπνηήζεθαλ γηα ηα
ππνινγηζηηθά ζπζηήκαηα ειέγρνπ πηήζεο ηνπ πξνγξάκκαηνο Space Shuttle ηεο
NASA [38].

1.2.4) Πολλαπλά ρεφματα εντολϊν – Πολλαπλά ρεφματα δεδομζνων (MIMD)


Τα ππνινγηζηηθά ζπζηήκαηα πνπ αλήθνπλ ζηελ θαηεγνξία νξγάλσζεο
MIMD απνηεινύληαη από έλα ζύλνιν κνλάδσλ επεμεξγαζίαο νη νπνίεο ζπλδένληαη
κεηαμύ ηνπ ζε δηάηαμε πιέγκαηνο. Καζεκία από απηέο δηαζέηεη μερσξηζηό ρώξν
απνζήθεπζεο ηόζν γηα ην ξεύκα εληνιώλ όζν θαη γηα ηα δεδνκέλα εθηειώληαο
αζύγρξνλα αλεμάξηεηα ηκήκαηα θάπνηνπ θνηλνύ πξνβιήκαηνο.

15
Σχ. 1.5. Λειτουργία ςυςτιματοσ με ρεφματα εντολϊν και ρεφματα δεδομζνων ιςάρικμα με το πλικοσ
μονάδων επεξεργαςίασ.

Η αξρηηεθηνληθή απηή πεηπραίλεη βέιηηζηε αμηνπνίεζε ηεο απόδνζεο ηόζν


ησλ επηκέξνπο κνλάδσλ επεμεξγαζίαο όζν θαη ησλ δηαηάμεσλ κλήκεο. Τ ν βαζηθό
κεηνλέθηεκα έγθεηηαη ζηε κεδακηλή επηθνηλσλία κεηαμύ ησλ κνλάδσλ επεμεξγαζίαο,
νύηε ε έκκεζε επηθνηλσλία κέζσ ηεο κλήκεο είλαη εθηθηή όπσο ζηελ MISD. Απηό
έρεη σο απνηέιεζκα νη θαηεγνξίεο εξγαζηώλ πνπ κπνξνύλ λα πινπνηεζνύλ από έλαλ
ηέηνην ππνινγηζηή λα είλαη πεξηνξηζκέλεο θαη λα απαληώληαη θπξίσο ζηνλ ηνκέα ηνπ
ζρεδίνπ κε ρξήζε ππνινγηζηώλ (CAD).
Υπάξρνπλ δύν θαηεγνξίεο απηήο ηεο νξγάλσζεο πνπ δηαθξίλνληαη ζύκθσλα
κε ηε δνκή ηνπ πιηθνύ (hardware) ρώξνπ απνζήθεπζεο πνπ ρξεζηκνπνηείηαη.
Η πξώηε πεξηιακβάλεη ηα ζπζηήκαηα θνηλήο κλήκεο ( shared memory) ζηα
νπνία όιεο νη κνλάδεο επεμεξγαζίαο είλαη ζπλδεδεκέλεο ζηελ ίδηα κνλάδα
απνζήθεπζεο. Τελ ηκεκαηνπνίεζε θαη αλάζεζε αληίζηνηρσλ θνκκαηηώλ κλήκεο
ζηελ θάζε κνλάδα επεμεξγαζίαο αλαιακβάλεη ην ιεηηνπξγηθό ζύζηεκα.
Η δεύηεξε θαηεγνξία πεξηιακβάλεη ζπζηήκαηα θαηαλεκεκέλεο κλήκεο
(distributed memory) ζηα νπνία ε θάζε κνλάδα επεμεξγαζίαο δηαζέηεη μερσξηζηή
δηάηαμε κλήκεο. Έηζη ηα δνκηθά ζηνηρεία ηνπ ζπζηήκαηνο είλαη αλεμάξηεηα
επνκέλσο ε επηθνηλσλία κεηαμύ ηνπο επηηπγράλεηαη κέζσ ελόο δηθηύνπ δηαζύλδεζεο
(interconnection network). Απηό κπνξεί λα εθηείλεηαη ζε εμαηξεηηθά κεγάιεο
απνζηάζεηο επεξεάδνληαο αλάινγα ηελ ηειηθή απόδνζε ηνπ ζπζηήκαηνο.

16
2) Συςτήματα κοινήσ μνήμησ

2.1) Ειςαγωγή
Τελ δεθαεηία ηνπ 1980 νη θαηαζθεπαζηέο ππνιν γηζηώλ γηα λα
αληαπεμέιζνπλ ζηηο όιν θαη κεγαιύηεξεο απαηηήζεηο γηα πςειόηεξεο επηδόζεηο
ζηξάθεθαλ ζε κία δηαθνξεηηθή αξρηηεθηνληθή πιηθνύ. Αληί λα βαζίδνληαη
απνθιεηζηηθά ζηνλ παξαιιειηζκό ησλ εληνιώλ γηα παξάδεηγκα ρξήζε pipeline,
ζρεδίαζαλ ππνινγηζηέο πνπ δηέζεηαλ πεξηζζόηεξνπο από έλαλ επεμεξγαζηέο
ζπλδεδεκέλνπο ζηελ ίδηα θύξηα κλήκε. Τα ζπζηήκαηα πνπ βαζίδνληαη ζηελ
αξρηηεθηνληθή απηή νλνκάδνληαη ζπζηήκαηα θνηλήο κλήκεο (ΣΚΜ) (shared memory
systems).
Τα ΣΚΜ απνδείρζεθαλ εμαηξεηηθά απνηειεζκαηηθά πξάγκα πνπ θαίλεηαη από
ην γεγνλόο όηη είλαη ε πην δεκνθηιήο αξρηηεθηνληθή ζρεδίαζεο παξάιιεισ λ
ζπζηεκάησλ κέρξη θαη ζήκεξα. Τα θέξδε όκσο δελ εληνπίδνληαη κόλν ζηελ
επεμεξγαζηηθή ηζρύ, ηέηνηα ζπζηήκαηα καο πξνζθέξνπλ επειημία ζε πνιινύο ηνκείο.
Έλαο από απηνύο είλαη ε θαηαλάισζε ηζρύνο κε βαζηθό παξάδεηγκα ηελ
αξρηηεθηνληθή big.LITTLE ηεο ARM πνπ ρξεζηκνπνηείηαη ζε κηα πιεζώξα θνξεηώλ
ζπζθεπώλ. Σε απηή έρνπκε δηαθνξεηηθέο κνλάδεο επεμεξγαζίαο, θάπνηεο κε πςειή
απόδνζε θαη θαηαλάισζε θαη άιιεο κε ρακειή. Έηζη δηακνηξάδνληαο θαηάιιεια ηηο
εξγαζίεο κεηώλεηαη ε θαηαλάισζε ελέξγεηαο ζε ζρέζε κε αληίζηνηρν ζύζηεκα
όκνησλ κνλάδσλ επεμεξγαζίαο [4].
Η θύξηα κλήκε ζηα ΣΚΜ ζπλήζσο είλαη ρσξηζκέλε ζε ηκήκαηα έηζη ώζηε λα
κπνξεί λα πξνζπειαύλεηαη από πεξηζζόηεξνπο ηνπ ελόο επεμεξγαζηέο. Η
επηθνηλσλία κεηαμύ κλήκεο θαη κνλάδσλ επεμεξγαζίαο επηηπγράλεηαη κέζσ ελόο
ζπζηήκαηνο κεηαθνξάο δεδνκέλσλ πνπ νλνκάδεηαη δίθηπν δηαζύλδεζεο. Έηζη ε
εθηέιεζε βαζηθώλ εξγαζηώλ όπσο ε κεηαθνξά θαη απνζήθεπζε δεδνκέλσλ παύεη λα
απνηειεί κηα ηεηξηκκέλε δηαδηθαζία δηόηη πξέπεη λα ζπκθσλεί κε ηε δνκή ηνπ
εθάζηνηε δηθηύνπ. Η πνιππινθόηεηα όκσο πνπ εηζάγεηαη από ηε ρξήζε ελόο ηέηνηνπ
δηθηύνπ ππεξληθείηαη θαηά πνιύ από ηα νθέιε ηεο παξάιιειεο επεμεξγαζίαο.

2.2) Δίκτυα διαςφνδεςησ ΣΚΜ


Ο ηξόπνο ζύλδεζεο ησλ επεμεξγαζηώλ ελόο ζπζηήκαηνο θνηλήο κλήκεο απνηειεί έλα
από ηα ζεκαληηθόηεξα ζηνηρεία ηνπ. Η θαηάιιειε επηινγή ηνπ είδνπο δηθηύνπ επεξεάδεη
ζεκαληηθά ηελ ηειηθή ππνινγηζηηθή ηζρύ ηνπ θαζώο έλα ζεκαληηθό πνζνζηό ηνπ ρξόλνπ
εθηέιεζεο ελόο πξνγξάκκαηνο δαπαλάηαη ζηε κεηαθνξά δεδνκέλσλ. Τα ΣΚΜ ρξεζηκνπνηνύλ
δπλακηθά δίθηπα δηαζύλδεζεο δηόηη νη δίαπινη δεκηνπξγνύληαη όηαλ ρξεηαζηνύλ θαη δελ

17
παξακέλνπλ ελεξγνί κεηά ηε ρξήζε ηνπο [5]. Τα είδε ησλ δπλακηθώλ δηθηύσλ δηαζύλδεζεο
είλαη ηα δίθηπα δηαύινπ θαη ηα δίθηπα δηαθνπηώλ.

2.2.1) Δίκτυα διαφλου


Γίθησα ελός δηαύιοσ : Δίλαη ε απινύζηεξε κνξθή ζύλδεζεο ελόο πιήζνπο κνλάδσλ
επεμεξγαζίαο κε ηελ θύξηα κλήκε. Όπσο γίλεηαη θαλεξό θαη από ηελ νλνκαζία δηαζέηνπκε
έλαλ δίαπιν επηθνηλσλίαο άξα θάζε ρξνληθή ζηηγκή κπνξνύκε λα εμππεξεηνύκε κία
δηαδηθαζία κεηαθνξάο δεδνκέλσλ. Σπληζηάηαη θπξίσο γηα ζπζηήκαηα θνηλήο κλήκεο κηθξνύ
κεγέζνπο θαζώο νη θαζπζηεξήζεηο απμάλνληαη ζύκθσλα κε ην πιήζνο ησλ κνλάδσλ
επεμεξγαζίαο. Τν πην ζεκαληηθό ραξαθηεξηζηηθό ζε έλα ηέηνην δίθηπν είλαη ην εύξνο δώλεο
δηαύινπ (bus bandwidth) δειαδή ε ηαρύηεηα κε ηελ νπνία κεηαθέξεη ηα δεδνκέλα. Σύκθσλα
κε απηό θαζνξίδεηαη θαη ην κέγηζην κέγεζνο ηνπ ζπζηήκαηόο καο. Τα δίθηπα ελόο δηαύινπ
είλαη νηθνλνκηθά κε επθνιία ζηνλ ζρεδηαζκό ηνπο επνκέλσο ζπλαληώληαη ζπρλά παξά ηνπο
πεξηνξηζκνύο πνπ επηβάιινπλ [6].
Γίθησα ποιιώλ δηαύιφλ : Γηα λα πεηύρνπκε θαιύηεξε απόδνζε ζε έλα εθηελέζηεξν
ζύζηεκα κπνξνύκε λα ρξεζηκνπνηήζνπκε ζύλνιν παξάιιεισλ δηαύισλ. Υπάξρνπλ δηάθνξεο
θαηεγνξίεο ηέηνησλ δηθηύσλ δηαζύλδεζεο αλάινγα κε ηηο ζπλδέζεηο κεηαμύ δηαύισλ θαη ησλ
ηκεκάησλ θύξηαο κλήκεο. Γηα παξάδεηγκα κπνξεί θάζε έλαο από ηνπο παξάιιεινπο δηαύινπο
λα έρεη πξόζβαζε ζε όια ηα ηκήκαηα ηεο θύξηαο κλήκεο. Γηαθνξεηηθά κπνξεί λα έρνπκε
θάζε δίαπιν ζπλδεδεκέλν κε έλα δηαθνξεηηθό ηκήκα ηεο κλήκεο ζε αληηζηνηρία έλα πξνο έλα.
Δπίζεο κπνξνύκε λα έρνπκε θαη νπνηαδήπνηε ελδηάκεζε ινγηθή ζύλδεζεο, γηα παξάδεηγκα
θάζε δίαπινο λα έρεη πξόζβαζε ζε δύν ή ηξία ηκήκαηα ηεο θύξηαο κλήκεο. Όπσο είλαη
θαλεξό έλα ηέηνην δίθηπν πξνζθέξεη κεγάιε επειημία θαζώο κπνξεί λα ππνζηεξίμεη
ζπζηήκαηα θνηλήο κλήκεο δηαθόξσλ κεγεζώλ ρσξίο ηδηαίηεξεο δπζθνιίεο ζηνλ ζρεδηαζκό
ηνπ.

Σχ. 2.1. Δομι δικτφου πολλϊν διαφλων.

2.2.2) Δίκτυα διακοπτϊν


Γηαζηασρφηηθό δίθησο (crossbar network) : Τα δίθηπα απηά βξίζθνληαη ζην
αληίζεην άθξν ησλ δηθηύσλ ελόο δηαύινπ από ηελ άπνςε όηη κπνξνύλ λα ζπλδένπλ θάζε
δηαθνξεηηθό ηκήκα θύξηαο κλήκεο κε κία από ηηο κνλάδεο επεμεξγαζίαο ηαπηόρξνλα. Έζησ

18
όηη δηαζέηνπκε N κνλάδεο επεμεξγαζίαο θαη M ηκήκαηα κλήκεο, ην δηαζηαπξσηηθό δίθηπν
πνπ ζα εμππεξεηνύζε ην ζύζηεκα απηό ζα είρε νξγάλσζε δηζδηάζηαηνπ πίλαθα N γξακκώλ
θαη M ζηειώλ. Τν παξαπάλσ δίθηπν απνηειείηαη από M*N ζηνηρεία δηαθνπηώλ θαζέλα από
ηα νπνία κπνξεί λα βξεζεί ζε θαηάζηαζε θάζεηεο ή δηαγώληαο ζύλδεζεο. Έηζη δεκηνπξγείηαη
θάζε θνξά ην θαηάιιειν κνλνπάηη γηα ηε κεηαθνξά δεδνκέλσλ από θαη πξνο ηε κλήκε.

Ο ρξόλνο θαζπζηέξεζεο γηα ηε κεηαθνξά θάπνηνπ κελύκαηνο είλαη ζηαζεξόο


αλεμάξηεηα από ην κέγεζνο ηνπ δηθηύνπ. Τν ζεκαληηθόηεξν κεηνλέθηεκα εληνπίδεηαη ζην
πιήζνο ησλ δηαθνπηώλ πνπ απαηηνύληαη θαζώο ζε έλα δηαζηαπξσηηθό δίθηπν ίζσλ
δηαζηάζεσλ M*M ρξεηαδόκαζηε ηέηνηα ζηνηρεία. Όκσο ζηηο πεξηζζόηεξεο πεξηπηώζεηο ν
ζηαζεξόο ρξόλνο θαζπζηέξεζεο εμηζνξξνπεί ηελ πνιππινθόηεηα ζρεδηαζκνύ πνπ πξνθύπηεη
από ην πιήζνο δηαθνπηώλ [7]. Δπνκέλσο ην δηαζηαπξσηηθό δίθηπν απνηειεί κηα από ηηο πην
ζεκαληηθέο δηαζπλδέζεηο κε πιεζώξα εθαξκνγώλ.

Σχ. 2.2. Παράδειγμα διαςταυρωτικοφ δικτφου 8 μνθμϊν και 8 μονάδων επεξεργαςίασ (a) διακόπτθσ ςε
κάκετθ ςφνδεςθ (b) διακόπτθσ ςε διαγϊνια ςφνδεςθ.

Γίθησο ελός επηπέδοσ (single-stage network) : Όπσο πξνδίδεη θαη ε νλνκαζία


πξόθεηηαη γηα έλα δίθηπν δηαζύλδεζεο πνπ παξεκβάιιεη έλα δηαθνπηηθό ζηνηρείν κεηαμύ θάζε
δεύγνο εηζόδνπ-εμόδνπ. Τν απινύζηεξν δηαθνπηηθό ζηνηρείν έρεη δύν εηζόδνπο θαη δύν
εμόδνπο θαη κπνξεί λα βξίζθεηαη ζε κία από ηηο αθόινπζεο ηέζζεξηο θαηαζηάζεηο νη νπνίεο
θαίλνληαη θαη ζην ζρήκα 2.2 . Σηελ θαηάζηαζε straight ε θάζε είζνδνο κεηαθέξεηαη ζηελ
αληίζηνηρή ηεο έμνδν δειαδή ε είζνδνο1 ζηελ έμνδν1, ε είζνδνο2 ζηελ έμνδν2. Σηελ

19
θαηάζηαζε exchange νη είζνδνη αληαιιάζζνπλ εμόδνπο επνκέλσο ε είζνδνο1 ζπλδέεηαη κε
ηελ έμνδν2 θαη ε είζνδνο2 κε ηελ έμνδν1. Σηελ θαηάζηαζε upper broadcast ε είζνδνο1
ζπλδέεηαη θαη κε ηηο δύν εμόδνπο. Τέινο, ζηελ θαηάζηαζε lower broadcast ε είζνδνο2
ζπλδέεηαη κε ηηο δύν δηαζέζηκεο εμόδνπο.

Σχ. 2.3. Σφνολο καταςτάςεων ςφνδεςθσ διακοπτικοφ ςτοιχείου 2x2

Πξνθεηκέλνπ λα κεηαθεξζνύλ δεδνκέλα από κηα είζνδν ζηελ επηζπκεηή έμνδν


κπνξεί λα ρξεηαζηεί λα δηαζρίζνπλ ην δίθηπν πεξηζζόηεξεο από κία θνξέο. Μία δεκνθηιήο
ζηξαηεγηθή γηα ηε κεηαθνξά δεδνκέλσλ ζε δίθηπα ελόο επηπέδνπ είλαη ε Shuffle-Exchange
ζύκθσλα κε ηελ νπνία νξίδνληαη νη πξάμεηο ηνπ αλαθαηέκαηνο (Shuffle) θαη ηεο αληαιιαγήο
(Exchange). Οη πξάμεηο απηέο γηα δπαδηθέο δηεπζύλζεηο εηζόδσλ κήθνπο n bit νξίδνληαη σο:

Shuffle : Sbn1bn2bn3 .....b1b0   bn2bn3 .....b1b0bn1 2.1


Exchange : Ebn1bn2bn3 .....b1b0   bn1bn2bn3 .....b1 b0 2.2

Αλ ζε έλα ζύζηεκα θνηλήο κλήκεο έρνπκε N κνλάδεο επεμεξγαζίαο θαη N ηκήκαηα


κλήκεο ην πιήζνο ησλ δηαθνπηώλ πνπ ζα ρξεηαζηνύκε είλαη N/2 . Ο κεγαιύηεξνο αξηζκόο
δηαθνπηώλ πνπ ζα ρξεηαζηεί λα δηαλύζνπλ ηα δεδνκέλα γηα λα κεηαθεξζνύλ από ηελ είζνδν
ζηελ έμνδν γηα ηελ παξαπάλσ πεξίπησζε ηζνύηαη κε .

Γηα παξάδεηγκα, ζε δίθηπν ελόο επηπέδνπ 16 εηζόδσλ θαη 16 εμόδσλ πνπ ζέινπκε λα
κεηαθέξνπκε δεδνκέλα από ηελ πέκπηε (0100) είζνδν ζηελ δέθαηε ηξίηε έμνδν (1100)
εθαξκόδνληαο Shuffle-Exchange ζα εθηειέζνπκε ηηο ελέξγεηεο:

Exchange: 0100  0101


Shuffle : 0101  1010
Exchange: 1010  1011
Shuffle : 1011  0111
Exchange: 0111  0110
Shuffle : 0110  1100

Γίθησα ποιιώλ επηπέδφλ (multistage network) : Πξόθεηηαη γηα επέθηαζε ησλ


δηθηύσλ ελόο επηπέδνπ θαη πξνθύπηνπλ από ηελ παξεκβνιή πνιιώλ επηπέδσλ ζηνηρείσλ
δηαθνπηώλ κεηαμύ εηζόδσλ θαη εμόδσλ. Ο ηξόπνο ζύλδεζεο ηνπ θάζε ηέηνηνπ επηπέδνπ κε ην
επόκελν θαζνξίδεη ηε ζηξαηεγηθή κεηαθνξάο δεδνκέλσλ πνπ ζα ρξεζηκνπνηήζνπκε π.ρ.

20
Shuffle-Exchange. Έρνληαο πνιιά επίπεδα δηαθνπηώλ ζηελ δηάζεζή καο μεπεξλάκε ηνπο
πεξηνξηζκνύο πνπ εηζάγεη ε ύπαξμε κνλαδηθνύ κνλνπαηηνύ κεηαμύ θάζε δεύγνπο εηζόδνπ-
εμόδνπ. Έηζη κπνξνύκε λα εμππεξεηνύκε πεξηζζόηεξεο κεηαθνξέο δεδνκέλσλ ηαπηόρξνλα
πεηπραίλνληαο θαιύηεξε ζπλνιηθή απόδνζε ηνπ ζπζηήκαηνο θαηαλεκεκέλεο κλήκεο.

Γηα λα γίλεη πην θαηαλνεηή ε ιεηηνπξγία ηνπ παξαπάλσ δηθηύνπ παξαζέηνπκε έλα
παξάδεηγκα ηεο ζηξαηεγηθήο Shuffle-Exchange γηα ζύζηεκα 8 εηζόδσλ θαη 8 εμόδσλ ηνπ
ζρήκαηνο 2.3.

Σχ. 2.4. Δίκτυο πολλϊν επιπζδων Shuffle-Exchange.

Δδώ ν δπαδηθόο αξηζκόο ηεο εμόδνπ θαζνξίδεη ηελ θαηάζηαζε ηνπ θάζε δηαθνπηηθνύ
ζηνηρείνπ ηεο δηαδξνκήο πνπ ζα αθνινπζνύζνπλ ηα δεδνκέλα. Σπγθεθξηκέλα θάζε δπαδηθό
ζηνηρείν ηεο εμόδνπ αληηζηνηρεί ζε έλα επίπεδν δηαθνπηώλ από ηα αξηζηεξά πξνο ηα δεμηά. Αλ
ε ηηκή ηνπ δπαδηθνύ είλαη 0 ην δηαθνπηηθό ζηνηρείν πξνσζεί ηα δεδνκέλα ηεο εηζόδνπ ζηελ
έμνδν1 θαη αλ ε ηηκή είλαη 1 ηα δεδνκέλα πξνσζνύληαη ζηελ έμνδν2. Άξα ην πιήζνο ησλ
επηπέδσλ ηζνύηαη κε ην πιήζνο ησλ δπαδηθώλ ζηνηρείσλ πνπ ρξεηαδόκαζηε γηα λα
αλαπαξαζηήζνπκε ηηο N κνλάδεο επεμεξγαζίαο θαη ηα N ηκήκαηα κλήκεο, δειαδή .
Πνιύ ζεκαληηθό πιενλέθηεκα ηεο Shuffle-Exchange απνηειεί ε απιόηεηα ζηελ επηινγή ηνπ
θαηάιιεινπ κνλνπαηηνύ ε νπνία είλαη κέγηζηεο ζεκαζίαο ζηα δίθηπα δηαθνπηώλ [6]. Άιιεο
δεκνθηιείο ζηξαηεγηθέο απνηεινύλ ηα δίθηπα Banyan θαη Omega.

2.3) Συνοχή κρυφήσ μνήμησ


Αθόκα θαη ζηα ΣΚΜ δελ είλαη όια ηα είδε κλήκεο θνηλά, εμαίξεζε απνηειεί ε cache.
Η κλήκε απηή δεκηνπξγήζεθε κε ζθνπό λα κεηαθέξεη ζηε κνλάδα επεμεξγαζίαο εληνιέο θαη
δεδνκέλα κε πνιύ κεγάιε ηαρύηεηα θάηη αδύλαην γηα ηελ θύξηα κλήκε ιόγσ ηνπ κεγέζνπο

21
θαη ηεο νξγάλσζήο ηεο. Δπνκέλσο γηα ηελ απνηειεζκαηηθόηεξε ιεηηνπξγία ηνπ επεμεξγαζηή
θάζε κνλάδα επεμεξγαζίαο δηαζέηεη μερσξηζηή κλήκε cache ζηελ νπνία έρεη απνθιεηζηηθή
πξόζβαζε. Τα παξαπάλσ δελ απνθιείνπλ λα ππάξρεη θαη επηπιένλ κλήκε cache ζηελ νπνία
λα έρνπλ πξόζβαζε όιεο νη κνλάδεο επεμεξγαζίαο.

Σχ. 2.5. Δομι ςυςτιματοσ κοινισ μνιμθσ. Όπωσ φαίνεται, κάκε μονάδα επεξεργαςίασ διακζτει ξεχωριςτό
χϊρο διευκφνςεων cache.

Η ρξήζε ηεο κλήκεο cache εθηόο από ηα νθέιε πνπ πξνζθέξεη δεκηνπξγεί θαη έλα
ζεκαληηθό πξόβιεκα πνπ ρξεηάδεηαη λα αληηκεησπίζνπκε. Πξόθεηηαη γηα ηελ αλάγθε
ηήξεζεο ηεο ζσλοτής ηφλ δεδοκέλφλ πνπ βξίζθνληαη ζηηο κλήκεο cache (cache coherence)
ηεο θάζε κνλάδαο επεμεξγαζίαο [8]. Γηα ηελ θαηαλόεζε ηνπ πξνβιήκαηνο απηνύ ζα
κειεηήζνπκε πην αλαιπηηθά ηε ιεηηνπξγία ηεο κλήκεο cache.
Η cache δηαζέηεη πνιύ κηθξόηεξν απνζεθεπηηθό ρώξν από ηελ θύξηα κλήκε,
επνκέλσο δελ έρνπκε ηε δπλαηόηεηα απνζήθεπζεο ζε απηή όισλ ησλ δεδνκέλσλ πνπ ζα
ρξεηαζηνύκε θαηά ηελ εθηέιεζε ελόο πξνγξάκκαηνο. Έηζη αληηγξάθνπκε ζηελ cache ηα
θνκκάηηα ηεο θύξηαο κλήκεο πνπ είλαη πηζαλόηεξν λα ρξεηαζηνύκε ζην θνληηλό κέιινλ γηα
ηνπο ππνινγηζκνύο καο. Η κνλάδα επεμεξγαζίαο αλαδεηά πξώηα ηα δεδνκέλα ζηελ cache θαη
αλ δελ είλαη δηαζέζηκα εθεί ηόηε κόλν αλαηξέρεη ζηελ θύξηα κλήκε. Αθόκα, κεηά ηνπο
ππνινγηζκνύο πνπ εθηεινύληαη ηα λέα δεδνκέλα απνζεθεύνληαη πξώηα ζηελ cache θαη έπεηηα
κεηαθέξνληαη ζηελ θύξηα κλήκε κε απνηέιεζκα απηή λα πεξηέρεη ηηο πξνεγνύκελεο ηηκέο γηα
θάπνην ρξνληθό δηάζηεκα [7].
Σε έλαλ ππνινγηζηή κε κία κνλάδα επεμεξγαζίαο ην παξαπάλσ δελ πξνθαιεί θάπνην
πξόβιεκα. Όηαλ όκσο έρνπκε πεξηζζόηεξεο κνλάδεο επεμεξγαζίαο νη νπνίεο εθηεινύλ
ηκήκαηα ηνπ ίδηνπ πξνγξάκκαηνο ζα ρξεηαζηεί κία από απηέο λα ρξεζηκνπνηήζεη σο είζνδν

22
δεδνκέλα πνπ πξνθύπηνπλ από ππνινγηζκνύο θάπνηαο άιιεο. Αλ ηα δεδνκέλα απηά δελ έρνπλ
κεηαθεξζεί έγθαηξα από ηελ cache ζηελ θύξηα κλήκε, ε κνλάδα επεμεξγαζίαο ζα ιάβεη σο
είζνδν ηηο παιηέο ηηκέο πνπ βξίζθνληαη ζηελ αληίζηνηρε ζέζε ηεο θύξηαο κλήκεο κε
απνηέιεζκα λα ππάξμνπλ ζθάικαηα ζηνπο ππνινγηζκνύο.
Τν παξαπάλσ πξόβιεκα έρεη επηθξαηήζεη λα αληηκεησπίδεηαη ζε επίπεδν πιηθνύ
θαζώο νη ιύζεηο πνπ βαζίδνληαη ζε ινγηζκηθό απαηηνύλ εμεηδηθεπκέλν κεηαθξαζηή
(compiler) θαη πεξηνξίδνπλ ηηο επηδόζεηο ηνπ ζπζηήκαηνο [9]. Οη ιύζεηο γηα ηελ ηήξεζε ηεο
ζπλνρήο ζηηο κλήκεο cache (cache coherence) ρσξίδνληαη ζε δύν θαηεγνξίεο, ηα πξσηόθνιια
παξαθνινύζεζεο (snooping protocols) θαη ηα πξσηόθνιια θαηαιόγσλ (directory-based
protocols). Καζεκία από απηέο εμππεξεηεί ζπζηήκαηα κε δηαθνξεηηθή νξγάλσζε κλήκεο,
δίθηπν δηαζύλδεζεο θαη εύξνο δώλεο δηαύινπ.

23
3) Συςτήματα κατανεμημζνησ μνήμησ

3.1) Ειςαγωγή
Τν βαζηθό ζηνηρείν ην νπνίν δηαθνξνπνηεί ηα ζπζηήκαηα θαηαλεκεκέλεο
κλήκεο(distributed memory systems) από ηηο ππόινηπεο αξρηηεθηνληθέο
ππνινγηζηηθώλ ζπζηεκάησλ είλαη όηη απνηεινύληαη από έλα ζύλνιν μερσξηζηώλ
ππνινγηζηώλ πνπ νλνκάδνληαη θόκβοη(nodes). Κάζε ηέηνηνο έρεη ηε δπλαηόηεηα λα
ιεηηνπξγεί αλεμάξηεηα θαζώο δηαζέηεη πιήξεο πιηθό θαη ινγηζκηθό. Οη θπζηθέο
απνζηάζεηο κεηαμύ ηνπο κπνξνύλ λα θπκαίλνληαη από κεξηθά εθαηνζηά σο θαη
πνιιά ρηιηόκεηξα. Έρνπλ ηε δπλαηόηεηα λα ζπλδένληαη κεηαμύ ηνπο είηε κε ηνπηθά
δίθηπα (Local Area Network) γηα κηθξέο ελδηάκεζεο απνζηάζεηο θόκβνπ κε θόκβν
ελώ γηα κεγάιεο ρξεζηκνπνηνύληαη δίθηπα επξείαο πεξηνρήο (Wide Area Network).
Σθνπόο ζύλδεζεο ησλ θόκβσλ είλαη λα ιεηηνπξγνύλ σο κία εληαία ππνινγηζηηθή
κνλάδα θαηά ηελ εθηέιεζε παξάιιεισλ εξγαζηώλ. Η αλεμαξηεζία ησλ θόκβσλ
όκσο δελ αθνξά κόλν ηε γεσγξαθηθή ηνπο ηνπνζεζία αθόκα θαη ην ινγηζκηθό -
πιηθό πνπ ρξεζηκνπνηείηαη από ηνλ θαζέλα κπνξεί λα δηαθέξεη. Αθόκα θαη ηα
πξσηόθνιια γηα ηε κεηαμύ ηνπο επηθνηλσλία κπνξεί λα δηαθέξνπλ από θόκβν ζε
θόκβν [10] θαζηζηώληαο ηέηνηνπ είδνπο ζπζηήκαηα εμαηξεηηθά επέιηθηα.

3.2) Παράγοντεσ απόδοςησ


Τα θαηαλεκεκέλα ζπζηήκαηα είλαη εξγαιεία κε δπλαηόηεηα λα πξνζθέξνπλ
πνιύ κεγάιεο επηδόζεηο ζηελ επεμεξγαζία δεδνκέλσλ επηηξέπνληαο έηζη ηελ επίιπζε
απαηηεηηθώλ πξνβιεκάησλ. Η αμηνπνίεζε όκσο ησλ δπλαηνηήησλ ελόο ηέηνηνπ
ζπζηήκαηνο δελ είλαη ζε θάζε πεξίπησζε δεδνκέλε. Πξνθεηκέλνπ λα θαξπσζνύκε ηα
κέγηζηα νθέιε πνπ ην ζύζηεκά καο πξνζθέξεη είλαη αλαγθαίεο ελέξγεηεο πνπ
απνζθνπνύλ ζηελ θαηάιιειε ξύζκηζε ηξηώλ θύξησλ ραξαθηεξηζηηθώλ ηεο
παξάιιειεο επεμεξγαζίαο.

Εξιςορρόπθςθ φόρτου εργαςίασ (load balancing) : Γηα λα πεηύρνπκε ηε κέγηζηε


δπλαηή απόδνζε ρξεηάδεηαη λα κνηξάζνπκε ηζάμηα ην ζύλνιν ησλ δηαθόξσλ
δηεξγαζηώλ ζηνπο πόξνπο ηνπ θαηαλεκεκέλνπ ζπζηήκαηνο πνπ δηαζέηνπκε. Η ιύζε
δελ είλαη πάληα ν θαηαθεξκαηηζκόο ηεο εξγαζίαο πξνο εθηέιεζε ζε ίζα ηκήκαηα
αλάινγα κε ην πιήζνο ησλ κνλάδσλ επεμεξγαζίαο. Όπσο αλαθέξζεθε
πξνεγνπκέλσο, ην ζύζηεκα δελ είλαη αλαγθαία ζπκκεηξηθό σο πξνο ην πιηθό θαη
επνκέλσο ηηο επηδόζεηο θάζε θόκβνπ. Αιιά αθόκα θαη ζε θαηαλεκεκέλα ζπζηήκαηα
πνπ απνηεινύληαη από παλνκνηόηππνπο θόκβνπο, ην κέγεζνο ησλ επηκέξνπο

24
δηεξγαζηώλ δελ είλαη πάληνηε γλσζηό θαηά ηελ εθθίλεζε. Έηζη απαηηείηαη ν
δπλακηθόο θαηαθεξκαηηζκόο θαη αλάζεζε ηνπο θαηά ηελ εθηέιεζε.

Ταυτοχρονιςμόσ (Concurrency) : Κόκβνη νη νπνίνη αλαιακβάλνπλ ηκήκαηα ελόο


ζπγθεθξηκέλνπ ππνινγηζκνύ πξέπεη λα ηα εθηεινύλ ηαπηόρξνλα θαη ην παξαπάλσ
πξέπεη λα ηζρύεη θαζ‟ όιε ηελ δηάξθεηα πινπνίεζεο ηνπ ζπλόινπ εξγαζηώλ. Απηό
είλαη ζεκαληηθό γηα πεξηπηώζεηο πνπ έλαο κεηαγελέζηεξνο ππνινγηζκόο
ρξεζηκνπνηεί σο είζνδν ηα απνηειέζκαηα θάπνηνπ πξνεγνύκελνπ . Αλ ην παξαπάλσ
δελ ηεξεζεί ην θαηαλεκεκέλν ζύζηεκα ζα ηεζεί ζε αλακνλή θαζώο ζα πεξηκέλεη θαη
ηνλ ηειεπηαίν θόκβν λα νινθιεξώζεη ηηο εξγαζίεο ηνπ πξηλ ζπλερίζ εη ηελ εθηέιεζε
ηνπ πξνγξάκκαηνο.

Παράλλθλο φορτίο (Parallel Overhead) : Οη ππνινγηζηηθνί πόξνη πνπ δηαηίζεληαη


ζε ξνπηίλεο νη νπνίεο δελ ζπκβάιινπλ άκεζα ζηελ εμαγσγή ηνπ ηειηθνύ
απνηειέζκαηνο πξέπεη λα ειαρηζηνπνηνύληαη. Η επεμεξγαζία ζεηξηαθνύ θώδηθα κε
ζθνπό λα είλαη θαηάιιεινο γηα παξάιιειε εθηέιεζε πεξηιακβάλεη πάληα ηελ
πξνζζήθε επηπιένλ εξγαζηώλ πνπ νλνκάδνληαη παξάιιειν θνξηίν( parallel
overhead) [11]. Οη εξγαζίεο απηέο είλαη αλαγθαίεο δηόηη εμαζθαιίδνπλ ηνλ
θαηαθεξκαηηζκό ησλ ππνινγηζκώλ θαη ηελ επηθνηλσλία κεηαμύ θόκβσλ. Γηα ηνλ
ιόγν απηό απαηηείηαη ηδηαίηεξε πξνζνρή ώζηε νη πξνζζήθεο απηέο λα πεξηνξί δνληαη
ζηηο απνιύησο αλαγθαίεο.

3.3) Υπολογιςτζσ Συςτάδασ


Η θαηεγνξία θαηαλεκεκέλσλ ζπζηεκάησλ κε ηελ νπνία ζα αζρνιεζνύκε
ζηελ παξνύζα εξγαζία είλαη απηή ηεο ζσζηάδας(cluster). Αλαθέξεηαη ζε
ππνινγηζηηθά ζπζηήκαηα ηα νπνία απνηεινύληαη από έλα ζύλνιν αλεμάξηεησλ
ππνινγηζηώλ νη νπνίνη είλαη ζπλδεδεκέλνη κέζσ δηθηύνπ πςειήο ηαρύηεηαο θαη
κνηξάδνληαη όινη ηνλ ίδην θαηάινγν (directory) [12].

25
Σχ. 3.1. Απλοποιθμζνθ δομι υπολογιςτϊν ςυςτάδασ.

Τα θύξηα πιενλεθηήκαηα πνπ παξέρνπλ ζε ζρέζε κε ηηο ππόινηπεο


αξρηηεθηνληθέο παξάιιειεο επεμεξγαζίαο αλαιύνληαη παξαθάησ.

Κλιμάκωςθ απόδοςθσ (Performance Scaling) : Αλαθέξεηαη ζηελ κείσζε ηνπ


ρξόλνπ πνπ απαηηείηαη γηα ηελ εθηέιεζε ζπγθεθξηκέλνπ ζπλόινπ ελεξγεηώλ .
Δπηηπγράλεηαη από ηελ αλάζεζή ηκεκάησλ ηνπο ζε όιν θαη πεξηζζόηεξεο
ππνινγηζηηθέο κνλάδεο. Υπνινγηζηέο ζπζηάδαο πνπ θαηαζθεπάδνληαη κε ζηόρν ηελ
θιηκάθσζε απόδνζεο ιεηηνπξγνύλ θαηαθεξκαηίδνληαο ηελ εξγαζία πνπ ηνπο
αλαηίζεηαη θαη δηακνηξάδνληαο ηελ ζε θάζε θόκβν κε ζηόρν ηελ παξάιιειε
εθηέιεζε [13]. Δπνκέλσο ελδείθλπληαη γηα ρξήζε ζηελ επίιπζε πξνβιεκάησλ
κεγάιεο ππνινγηζηηθήο πνιππινθόηεηαο θαη ηελ πινπνί εζε πξνζνκνηώζεσλ όπσο
γηα παξάδεηγκα ε ξνή ηνπ αέξα γύξσ από ηα πηεξύγηα αεξνπιάλσλ.

Υψθλι διακεςιμότθτα (High Availability) : Βαζίδεηαη ζηελ αλεμαξηεζία θάζε


θόκβνπ από ην ζύλνιν ησλ ππνινίπσλ. Τν ραξαθηεξηζηηθό απηό είλαη εμαηξεηηθά
ρξήζηκν γηα ππνινγηζηηθά ζπζηήκαηα πνπ ζρεδηάδνληαη κε ζηόρν ηε ζπλερή
ιεηηνπξγία ρσξίο εθηεηακέλα δηαζηήκαηα δηαθνπώλ. Η ζπλερήο δηαζεζηκόηεηα ηνπ
ππνινγηζηηθνύ ζπζηήκαηνο επηηπγράλεηαη κε ηελ πξνώζεζε εηδηθώλ παθέη σλ κεηαμύ
ησλ θόκβσλ αλά ηαθηά ρξνληθά δηαζηήκαηα [12]. Απηά πεξηγξάθνπλ αλ ν θαζέλαο
ηνπο βξίζθεηαη ζε ιεηηνπξγία ή αλ έρεη ηεζεί εθηόο ιόγσ βιάβεο. Σηελ πεξίπησζε
απώιεηαο ελόο θόκβνπ θάπνηνο δηαθνξεηηθόο αλαιακβάλεη λα εθηειέζεη ηελ εξγαζία
πνπ είρε αλαηεζεί ζηνλ πξώην. Αλ καο ελδηαθέξεη ην ππνινγηζηηθό ζύζηεκα λα

26
ιεηηνπξγεί ζπλερώο κε ηελ ίδηα απόδνζε ηνπνζεηνύκε πιεόλαζκα θόκβσλ νη νπνίνη
ελεξγνπνηνύληαη κόλν όηαλ ππάξμεη βιάβε.

3.4) Δίκτυα διαςφνδεςησ ςυςτημάτων κατανεμημζνησ μνήμησ


Σηα θαηαλεκεκέλα ζπζηήκαηα, όπσο αλαθέξζεθε θαη πξνεγνπκέλσο, νη
θόκβνη δελ κνηξάδνληαη θάπνην θνκκάηη ηνπ πιηθνύ( hardware) όπσο ηα ΣΚΜ έηζη
ρξεηάδεηαη λα ππάξρεη κηα εμσηεξηθή δνκή γηα ηελ εμππεξέηεζε ηεο επηθνηλσλίαο .
Τα δίθησα δηαζύλδεζες αλαιακβάλνπλ ην ξόιν απηό θξνληίδνληαο γηα ηελ
απνηειεζκαηηθή κεηαθνξά δεδνκέλσλ κεηαμύ ησλ θόκβσλ ηνπ ζπζηήκαηνο.
Απνηεινύλ έλα από ηα ζεκαληηθόηεξα δνκηθά ζηνηρεία δηόηη ε ηαρύηεηα κε ηελ
νπνία κεηαθέξνληαη ηα κελύκαηα από θόκβν ζε θόκβν ζέηεη ην άλσ όξην ηεο
ζπλνιηθήο ππνινγηζηηθήο ηζρύνο. Τα δίθηπα δηαζύλδεζεο πνπ ρξεζηκνπνηνύλ θπξίσο
ηα θαηαλεκεκέλα ζπζηήκαηα ζπλδένπλ ηνπο θόκβνπο κε δεζκνύο ζεκείν πξνο
ζεκείν (point to point) θαη ρσξίδνληαη ζηηο δύν παξαθάησ θαηεγνξίεο.

3.4.1) Άμεςα δίκτυα (direct networks)


Δίλαη ηα δίθηπα δηαζύλδεζεο ζηα νπνία θάζε κεηαγσγέαο ( switch) είλαη
κέξνο ηνπ πιηθνύ (hardware) πνπ απαξηίδεη έλα θόκβν. Δπεηδή ην δίθηπν
πξαγκαηνπνηεί κόλν ηηο ζπλδέζεηο, νη απνθάζεηο γηα ην πνπ ζα θαηεπζπλζεί ην θάζε
κήλπκα ιακβάλνληαη από ηνλ θάζε θόκβν. Λόγσ ησλ θπζηθώλ πεξηνξηζκώλ δελ
είλαη δπλαηό όινη νη θόκβνη λα ζπλδένληαη άκεζα κεηαμύ ηνπο. Έηζη ζε πνιιέο
πεξηπηώζεηο έλα κήλπκα πξνθεηκέλνπ λα θηάζεη ζηνλ πξννξηζκό ηνπ ρξεηάδεηαη λα
πεξάζεη από έλα ππνζύλνιν ελδηάκεζσλ θόκβσλ [14]. Τα κεγέζε πνπ
ραξαθηεξίδνπλ θάζε άκεζν δίθηπν είλαη:

 Γηάκεηρος πνπ νξίδεηαη σο ε κέγηζηε απόζηαζε πνπ πξέπεη λα δηαλύζεη


έλα κήλπκα γηα λα θηάζεη από ηε κία άθξε ηνπ δηθηύνπ ζηελ άιιε .
Υπνινγίδεηαη σο ην κέγηζην πιήζνο ησλ κεηαπεδήζεσλ από θόκβν ζε
θόκβν πνπ ην κήλπκα απηό ζα πξαγκαηνπνηήζεη κέρξη λα θηάζεη ζηνλ
πξννξηζκό ηνπ.
 Βαζκός θόκβοσ πνπ νξίδεηαη σο ην πιήζνο δηαζπλδέζεσλ πνπ θάπνηνο
θόκβνο ηνπ δηθηύνπ δηαζέηεη.

Υπάξρνπλ πνιιέο δηαθνξεηηθέο ηνπνινγίεο άκεζσλ δηθηύσλ δηαζύλδεζεο θαη


ζε απηό ην θνκκάηη ζα αλαθεξζνύλ νη πην βαζηθέο.

27
Γίθησο δαθησιίοσ: Κάζε θόκβνο ζπλδέεηαη κόλν κε ηνλ πξνεγνύκελν θαη
ηνλ επόκελν θόκβν, επνκέλσο έρεη βαζκό ίζν κε 2 θαη ε δηάκεηξνο ηνπ δηθηύνπ
ηζνύηαη κε ην κηζό ηνπ πιήζνπο ησλ δηαζπλδεδεκέλσλ θόκβσλ.

Σχ. 3.2. Δίκτυο δακτυλίου 8 κόμβων.

Γηζδηάζηαηο πιέγκα: Απνηειείηαη από έλα ζύλνιν θόκβσλ ζπλδεδεκέλσλ


κεηαμύ ηνπο νη νπνίνη βξίζθνληαη ζην ίδην επίπεδν.

Σχ. 3.3. Δίκτυο διςδιάςτατου πλζγματοσ 16 κόμβων.

Έζησ όηη δηαζέηνπκε X θόκβνπο θαηά πιάηνο θαη Y θαηά ύςνο, ηόηε ην
ζπλνιηθό πιήζνο θόκβσλ ζα ηζνύηαη κε N  X  Y . Κάζε εζσηεξηθόο θόκβνο
ζπλδέεηαη κε ηνπο ηέζζεξηο θνληηλόηεξνπο θόκβνπο ζε ζρήκα ζηα πξνύ επνκέλσο
είλαη βαζκνύ 4 ελώ νη εμσηεξηθνί θόκβνη πνπ ζρεκαηίδνπλ ην πεξίγξακκα ηεο
δηάηαμεο είλαη βαζκνύ 3 ή 2 γηα ηνπο ηέζζεξηο πνπ βξίζθνληαη ζηηο γσλίεο. Η
δηάκεηξνο ηεο ηνπνινγίαο δηζδηάζηαηνπ πιέγκαηνο δίλεηαη από ηε ζρέζε

28
   X  1  Y  1 θαη απνηειεί ην βαζηθό ηνπο κεηνλέθηεκα ην νπνίν γίλεηαη
ηδηαίηεξα αηζζεηό ζε κεγαιύηεξα δίθηπα. Μία ιύζε είλαη λα ζπλδέζνπκε ζε δεύγε
ηνπο αθξηαλνύο θόκβνπο θαηά ζηήιε θαη θαηά ζεηξά κεηαηξέπνληαο έηζη θαη ηνπ ο
αθξηαλνύο θόκβνπο ζε βαζκνύ 4.

Σχ. 3.4. Δίκτυο διςδιάςτατου πλζγματοσ με 16 κόμβουσ βακμοφ 4.

Έηζη, κέζσ ησλ επηπιένλ ζπλδέζεσλ κεηώλεηαη ε δηάκεηξνο πνπ ηώξα δίλεηαη

X  Y 
από ηε ζρέζε        . Γηα δίθηπα πνπ ζπλδένπλ κεγάιν αξηζκό θόκβσ λ
2  2
είλαη αθόκα πην απνδνηηθό αλ απηνί ζρεκαηίζνπλ έλα ηξηζδηάζηαην πιέγκα ην νπνίν
απμάλεη ηνλ βαζκό ησλ εζσηεξηθώλ θόκβσλ θαη επνκέλσο κεηώλεη ηε δηάκεηξν.

Γίθησο σπερθύβοσ (hypercube network): Η ηνπνινγία απηή ραξαθηεξίδεηαη


από δηάκεηξν   log 2 N όπνπ N ην ζπλνιηθό πιήζνο ησλ θόκβσλ.

29
Σχ. 3.5. Δίκτυο υπερκφβου 16 κόμβων, όπωσ φαίνεται οι αποςτάςεισ Hamming των κόμβων που ςυνδζονται
ιςοφνται με 1.

Λόγσ ηεο εμαηξεηηθά κηθξήο δηακέηξνπ είλαη ηδαληθή γηα ηελ εμππεξέηεζε
θαηαλεκεκέλσλ ζπζηεκάησλ κεγάινπ κεγέζνπο. Τν κεηνλέθηεκα πνπ παξαηεξείηαη
εδώ είλαη ην γεγνλόο όηη ην πιήζνο ησλ θόκβσλ πνπ δηαζπλδένληαη είλαη
θβαληηζκέλν [14]. Έηζη θάζε δίθηπν κεγαιύηεξνπ κεγέζνπο πνπ πινπνηνύκε απαηηεί
ηνλ δηπιάζην αξηζκό θόκβσλ από ην πξνεγνύκελν. Αλ απηό είλαη αλεπηζύκεην
κπνξνύκε ελαιιαθηηθά λα ρξεζηκνπνηήζνπκε εκηηειή σπερθύβο (incomplete
hypercube).

3.4.2) Ζμμεςα δίκτυα (indirect networks)


Δίλαη ηα δίθηπα δηαζύλδεζεο ζηα νπνία νη κεηαγσγείο είλαη αλεμάξηεηνη από
ηνπο θόκβνπο θαη ζπλδένληαη κεηαμύ ηνπο ζε πιεζώξα ζρεκαηηζκώλ ώζηε λα
εμππεξεηήζνπλ ηελ επηθνηλσλία ηνπ θαηαλεκεκέλνπ ζπζηήκαηνο. Η θύξηα δηαθνξά
ζε ζρέζε κε ηα άκεζα δίθηπα έγθεηηαη ζηελ ύπαξμε δηαθνξεηηθνύ πιήζνπο
κεηαγσγώλ από όηη θόκβνη θαη ζην γεγνλόο όηη κεηαμύ δύν θόκβσλ κεζνιαβεί
ηνπιάρηζηνλ έλαο αλεμάξηεηνο κεηαγσγέαο.

Γσαδηθά δέλδρα: Σηελ ηνπνινγία απηή έρνπκε έλα κεηαγσγέα πνπ απνηειεί
ηε ξίδα θαη ζπλδέεηαη κε ηνπο δύν επόκελνπο, ν θαζέλαο εθ ησλ νπνίσλ ζπλδέεηαη
κε δύν αθόκα επαλαιακβάλνληαο ην κνηίβν. Έηζη δεκηνπξγνύληαη νξηδόληηα επίπεδα
πνπ ην θαζέλα πεξηέρεη δηπιάζηα ζηνηρεία από ην πξνεγνύκελν κέρξη λα θηάζνπκε
ζε απηό πνπ δηαζέηεη πιήζνο κεηαγσγέσλ ίζν κε ηνπο θόκβνπο ηνπ θαηαλεκεκέλνπ
ζπζηήκαηνο.

30
Σχ. 3.6. Δίκτυο δυαδικοφ δζντρου για 8 κόμβουσ.

Δπνκέλσο γηα λα ζπλδέζνπκε N  2d θόκβνπο, όπνπ d ην πιήζνο ησλ


νξηδόληησλ επηπέδσλ ηνπ δέλδξνπ, ρξεηαδόκαζηε n  2N 1 κεηαγσγείο.
Πιενλέθηεκα απηήο ηεο ηνπνινγίαο απνηειεί ε κηθξή δηάκεηξνο πνπ ηα
ραξαθηεξίδεη θαη ηζνύηαη κε   2log 2 N .

Γεληθεσκέλος θύβος (generalized cube): Απνηειείηαη από έλα ζύλνιν


κεηαγσγέσλ κε ίζν αξηζκό εηζόδσλ/εμόδσλ ν νπνίνο πνηθίιεη α λάινγα κε ηε κνξθή
ηνπ δηθηύνπ θαη κεηαθέξεη κελύκαηα κεηαμύ ησλ θόκβσλ πνπ βξίζθνληαη ζηα δύν
άθξα. Η δηάηαμε απηήο ηεο ηνπνινγίαο είλαη ζε θαηαθόξπθεο ζηήιεο θαη θάζε ζη ήιε
κεηαγσγώλ κεηαμύ ησλ δπν εμσηεξηθώλ ζηειώλ θόκβσλ νλνκάδεηαη ζηάδην( stage).

Σχ. 3.7. Δίκτυο γενικευμζνου κφβου για 16 κόμβουσ με χριςθ μεταγωγϊν 2x2. Απαιτοφνται 3 ςτάδια
μεταγωγϊν για τθν εξυπθρζτθςθ όλων των κόμβων.

Τν πιήζνο ησλ ζηαδίσλ πνπ ζα ρξεηαζηνύκε εμαξηάηαη ηόζν από ηνλ αξηζκό
ησλ θόκβσλ ζηελ θάζε πιεπξά ηνπ δηθηύνπ όζν θαη από ην πιήζνο εηζόδσλ/εμόδσλ
πνπ δηαζέηεη ν θάζε κεηαγσγέαο. Σπγθεθξηκέλα, έζησ όηη έρνπκε N ζπλνιηθνύο

31
θόκβνπο ζην δίθηπν θαη κεηαγσγείο K εηζόδσλ/εμόδσλ, ηόηε ηα ζηάδηα πνπ ζα
N
ρξεηαζηνύκε δίλνληαη από ηε ζρέζε S  log K .
2

32
4) Μεταβίβαςη μηνυμάτων (Message passing)

4.1) Ειςαγωγή
Η κεηαβίβαζε κελπκάησλ (message passing) είλαη ζπλπθαζκέλε κε ηελ
έλλνηα ησλ παξάιιεισλ ππνινγηζηώλ θαηαλεκεκέλεο κλήκεο. Η αλάγθε γηα
αληαιιαγή δεδνκέλσλ κεηαμύ ησλ επηκέξνπο κνλάδσλ επεμεξγαζίαο (θ όκβσλ) θαηά
ηελ εθηέιεζε εξγαζηώλ είλαη πξνθαλήο. Δθηόο όκσο από ηηο θπζηθέο ζπλδέζεηο ησλ
θόκβσλ πνπ απνηεινύλ ην physical network, αλαγθαίνο είλαη θαη ν νξηζκόο ηεο
απαξαίηεηεο ινγηθήο πνπ ζα επηηξέπεη ηελ επηζπκεηή επηθνηλσλία.

Οη δηαζέζηκεο δηαδηθαζίεο γηα ηελ αληαιιαγή δεδνκέλσλ κεηαμύ θόκβσλ


ήηαλ αξρηθά πνιύ πεξηνξηζκέλεο. Απνηεινύληαλ από δύν ζ πλαξηήζεηο, κία γηα ηελ
απνζηνιή θαη ε άιιε γηα ηε ιήςε δεδνκέλσλ κεηαμύ δεύγνπο δύν θόκβσλ. Αθόκα, ν
πνκπόο έπξεπε λα ζηακαηήζεη ηε ξνή εθηέιεζεο ηνπ πξνγξάκκαηνο ζε πεξίπησζε
πνπ εθθηλνύζε ηελ απνζηνιή πξηλ ν δέθηεο θαιέζεη ηε ζπλάξηεζε ιήςεο.
Αληίζηνηρε παύζε ζηελ εθηέιεζε ζα έπξεπε λα πξαγκαηνπνηήζεη θαη ν δέθηεο αλ
θαινύζε ηε ζπλάξηεζε ιήςεο πξηλ ν πνκπόο αξρίζεη ηελ απνζηνιή [15].

Ο ηνκέαο ηεο παξάιιειεο επεμεξγαζίαο γλώξηζε πνιύ κεγάιε αλάπηπμε από


ηα κέζα ηνπ 1980 θαη έπεηηα. Έηζη ήηαλ αλαγθαία ε δε κηνπξγία ελόο ζπλόινπ
δηαδηθαζηώλ επηθνηλσλίαο γηα ηελ θαιύηεξε εμππεξέηεζε ησλ όιν θαη
απνδνηηθόηεξσλ παξάιιεισλ ζπζηεκάησλ. Έηζη θάζε θαηαζθεπαζηήο αλέπηπμε έλα
μερσξηζηό ζύλνιν δηαδηθαζηώλ επηθνηλσλίαο βαζηζκέλσλ ζηελ ππάξρνπζα ζεκείν
πξνο ζεκείν απνζηνιή θαη ιήςε [16]. Απηή ε πιεζώξα πινπνηήζεσλ ησλ
δηαδηθαζηώλ κεηαθνξάο δεδνκέλσλ ζηάζεθε εκπόδην ζηελ θνξεηόηεηα ησλ
παξάιιεισλ αιγνξίζκσλ.

Μία νκάδα εξεπλεηώλ απνθάζηζε λα δώζεη ιύζε ζην πξόβιεκα ηεο


θνξεηόηεηαο κε κηα ελνπνηεκέλε βηβιηνζήθε δηαδηθαζηώλ επηθνηλσλίαο ε νπνία ζα
κπνξνύζε λα ρξεζηκνπνηεζεί θαζνιηθά. Τν απνηέιεζκα ήηαλ ην πξόηππν MPI1 πνπ
παξνπζηάζηεθε από ηνπο J. J. Dongarra, R. Hempel, A. J. G. Hey θαη D. W. Walker
ην 1993 [16]. Σηε δεκηνπξγία ηνπ πξνηύπνπ απηνύ ζπλέβαιιαλ πεξίπνπ 60
επηζηήκνλεο από ηελ Δπξώπε θαη ηελ Ακεξηθή. Τν MPI1 δεκηνπξγήζεθε σο
απνηέιεζκα ηεο ζπιινγήο ησλ θαιύηεξσλ ραξαθηεξηζηηθώλ από πιήζνο
ππαξρόλησλ πινπνηήζεσλ δηαδηθαζηώλ κεηαβίβαζεο κελπκάησλ. Έθηνη ε έρεη ιάβεη
αξθεηέο αλαζεσξήζεηο θαη επεθηάζεηο ζηηο δηαδηθαζίεο πνπ πεξηιακβάλεη, έηζη
πξνέθπςαλ ηα MPI2.0 ην 1997, MPI3.0 ην 2012 θαη ην MPI4.0 2021 πνπ απνηειεί
ηελ πην πξόζθαηε έθδνζε.

33
4.2) Βαςικζσ ζννοιεσ του MPI

4.2.1) Διεργαςίεσ
Η εθηέιεζε αιγνξίζκσλ παξάιιεια κε ρξήζε ηνπ πξνηύπνπ MPI απαηηεί
αξρηθά ηε δεκηνπξγία ελόο ζπλόινπ νληνηήησλ ώζηε θαζεκία λα αλαιάβεη λα ιύζεη
δηαθνξεηηθό ηκήκα ηνπ πξνβιήκαηνο. Απηέο νλνκάδνληαη δηεργαζίες (processes)
θαη δηαθξίλνληαη κεηαμύ ηνπο από κηα μερσξηζηή ηαπηόηεηα πνπ ιακβάλνπλ θαηά
ηελ εθθίλεζε ηνπ παξάιιεινπ πξνγξάκκαηνο, ηνλ βαζκό (rank) [17]. Ο θάζε
βαζκόο είλαη έλαο αθέξαηνο αξηζκόο ζε αύμνπζα ζεηξά μεθηλώληαο από ην κεδέλ,
δειαδή αλ επηζπκνύκε λα ηξέμνπκε ην πξόγξακκά καο παξάιιεια ζε 5 δηεξγαζίεο
νη βαζκνί πνπ ζα ρξεζηκνπνηνύληαλ είλαη από 0 κέρξη 4. Η ραξαθηεξηζηηθή απηή
ηηκή πνπ δηαζέηεη θάζε δηεξγαζία είλαη πνιύ ζεκαληηθή θαζώο καο επηηξέπεη λα
πξνζδηνξίζνπκε επαθξηβώο ηε ξνή ησλ κελπκάησλ θαηά ηε ζ πγγξαθή ηνπ
πξνγξάκκαηνο.

Τν θαηαλεκεκέλν ζύζηεκα πνπ ζα αλαιάβεη ηελ παξάιιειε πινπνίεζε ηνπ


αιγνξίζκνπ απνηειείηαη από έλα ζύλνιν κεραλεκάησλ πνπ νλνκάδνληαη θόκβοη
(nodes) νη νπνίνη ζπλδένληαη κεηαμύ ηνπο κε ζθνπό ηελ αληαιιαγή δεδνκέλσλ.
Κάζε ηέηνηνο θόκβνο κπνξεί λα δηαζέηεη από πιεπξάο πιηθνύ κνλνπύξελε ή
πνιππύξελε κνλάδα επεμεξγαζίαο. Απηό όκσο δελ πεξηνξίδεη ηνλ αξηζκό
δηεξγαζηώλ ζηηο νπνίεο κπνξνύκε λα αλαζέζνπκε ηελ παξάιιειε εθηέιεζε ηνπ
αιγνξίζκνπ θαζώο έλαο ππξήλαο θάπνηαο κνλάδαο επεμεξγαζίαο είλαη ζε ζέζε λα
ρεηξηζηεί πεξηζζόηεξεο από κία δηεξγαζίεο. Η ρξήζε πεξηζζόηεξσλ δηεξγαζηώλ από
ηνπο δηαζέζηκνπο ππξήλεο νλνκάδεηαη oversubscribing θαη επηθέξεη απώιεηεο ζηελ
απόδνζε [18].

Σηα θαηαλεκεκέλα ζπζηήκαηα είλαη αλαγθαίν ν θάζε θόκβνο λα δηαζέηεη έλα


αληίγξαθν ηνπ θώδηθα πνπ επηζπκνύκε λα εθηειέζνπκε παξάιιεια θαζώο δελ
ππάξρεη θάπνηα δνκή απνζήθεπζεο δεδνκέλσλ. Τν ζύλνιν ησλ δηεξγαζηώλ
δεκηνπξγείηαη θαηά ηελ εθθίλεζε ηνπ πεξηβάιινληνο MPI κε ρξήζε ηεο εληνιήο
MPI_Init() πνπ ζα αλαιπζεί παξαθάησ. Με ην όξν „δεκηνπξγία‟ θάπνηαο δηεξγαζίαο
αλαθεξόκαζηε ζηε δέζκεπζε ζπγθεθξηκέλεο πεξηνρήο ηνπ ρώξνπ δηεπζύλζεσλ ηνπ
θόκβνπ θαη νξηζκό ππξήλα επεμεξγαζίαο πνπ ζα ηελ αλαιάβεη [19]. Όπσο
πξναλαθέξζεθε έλαο ππξήλαο επεμεξγαζίαο κπνξεί λα αλαιάβεη άλσ ηεο κίαο
δηεξγαζίεο κε ρξήζε θαηάιιεινπ ζπζηήκαηνο δηαηηεζίαο, αιιά ζε θακία πεξίπησζε
δελ επηηξέπεηαη ε θνηλή ρξήζε ζπγθεθξηκέλνπ ρώξνπ δηεπζύλζεσλ.

34
4.2.2) Μζθοδοι επικοινωνίασ
Τν θύξην κέιεκα ηνπ πξνηύπνπ MPI απνηειεί ε επηθνηλσλία ησλ δηεξγαζηώλ
κέζσ ηεο αληαιιαγήο δεδνκέλσλ κεηαμύ απηώλ. Ο ζθνπόο γηα ηνλ νπνίν
δεκηνπξγήζεθε ήηαλ ε εμαζθάιηζε ηεο θνξεηόηεηαο ησλ παξάιιεισλ
πξνγξακκάησλ πνπ αμηνπνηνύζαλ κεηαβίβαζε κελπκάησλ [20]. Γηα ηνλ ιόγν απηό
ην MPI ρξεζηκνπνηεί ζαλ δνκηθή ύιε ηελ κεηαβίβαζε ελόο κελύκαηνο κεηαμύ ελόο
δεύγνπο δηεξγαζηώλ. Η απιή δηαδηθαζία MPI_Send() ρξεζηκνπνηείηαη έπεηηα γηα ηε
δεκηνπξγία κίαο πιεζώξαο πνιύπινθσλ δηαδηθαζηώλ νη νπνίεο αληαπνθξίλνληαη ζε
θάζε αλάγθε ηνπ παξάιιεινπ πξνγξάκκαηνο. Έηζη εθόζνλ ην ζύζηεκα πνπ
δηαζέηνπκε είλαη ζε ζέζε λα πεξαηώζεη κία απιή δηαδηθαζία απνζηνιήο είλαη θαη
ηθαλό λα πινπνηήζεη όιεο ηηο πην ζύλζεηεο ξνπηίλεο επηθνηλσλίαο θαη ζπγρξνληζκνύ.
Έλα δεύηεξν πιενλέθηεκα ηεο MPI είλαη όηη έρεη δεκηνπξγεζεί σο κηα
βηβιηνζήθε πςεινύ επηπέδνπ. Φάξε ζε απηό ν ρξήζηεο δελ είλαη αλαγθαζκέλνο λα
δηαζέηεη εμεηδηθεπκέλεο γλώζεηο γηα ην δίθηπν δηαζύλδεζεο πνπ ρξεζηκνπνηείηαη θαη
ηελ ηνπνινγία ηνπ θαηαλεκεκέλνπ ζπζηήκαηνο. Τν MPI δηαζέηεη ηα
απηνκαηνπνηεκέλα εξγαιεία πνπ ζα αλαιάβνπλ ηελ απνδνηηθή πινπνίεζε ησλ
πςεινύ επηπέδνπ δηαδηθαζηώλ επηθνηλσλίαο ζε ρακειό επίπεδν [21].
Οη ζπλαξηήζεηο επηθνηλσλίαο ηνπ MPI πξνθεηκέλνπ λα κειεηεζνύλ
απνηειεζκαηηθόηεξα κπνξνύλ λα νκαδνπνηεζνύλ κε βάζε ηα παξαθάησ
ραξαθηεξηζηηθά ηνπο.

 Αλαζηαιηηθές (Blocking): Δίλαη κηα δηαδηθαζία πνπ ζέηεη ζε αλαζηνιή ηελ


εθηέιεζε ηνπ πξνγξάκκαηνο όηαλ θιεζεί. Τν πξόγξακκα ζα ζπλερίζεη ηελ
εθηέιεζή ηνπ όηαλ ηα δεδνκέλα έρνπλ ζηαιεί ζηνλ παξαιήπηε θαη ε
δηαδηθαζία ιάβεη ηε ζρεηηθή εηδνπνίεζε. Οη δηαδηθαζίεο απηέο απνηέιεζαλ
ηελ αξρή ηνπ MPI θαη εμαζθαιίδνπλ ηελ αθεξαηόηεηα ησλ δεδνκέλσλ πνπ
ιακβάλεη ν παξαιήπηεο. Τν κεηνλέθηεκα είλαη όηη ιόγσ ηεο αλαζηνιήο
ζηελ εθηέιεζε ησλ εξγαζηώλ ππάξρεη πηζαλόηεηα λα κελ αμηνπνηνύκε
απνηειεζκαηηθά ηνπο πόξνπο ηνπ ζπζηήκαηνο ζηε δηάζεζή καο.

35
Σχ. 4.1. Blocking επικοινωνία μεταξφ δφο διεργαςιϊν. (a)Η διεργαςία Proc0 καλεί τθ ςυνάρτθςθ αποςτολισ
πριν καλζςει τθ ςυνάρτθςθ λιψθσ θ Proc1. (b)Η διεργαςία Proc1 καλεί τθ ςυνάρτθςθ λιψθσ πριν καλζςει τθ
ςυνάρτθςθ αποςτολισ θ Proc0.

 Με αλαζηαιηηθές (Non-blocking): Σε απηή ηελ θαηεγνξία αλήθνπλ


δηαδηθαζίεο νη νπνίεο δελ αλαζηέιινπλ ηελ εθηέιεζε ηνπ πξνγξάκκαηνο
θαηά ηελ θιήζε ηνπο πξνζθέξνληαο πεξηζώξην γηα θαιύηεξε απόδνζε. Η
ρξήζε ηνπο απαηηεί θαιή γλώζε ησλ ρξνληθώλ πεξηζσξίσλ κεηαμύ
δηαδνρηθώλ εγγξαθώλ ή αλαγλώζεσλ ηνπ θαηαρσξεηή. Πξνβιήκαηα
πξνθαινύληαη αλ ν απνζηνιέαο πξνρσξήζεη ζηελ επόκελε απνζηνιή πξηλ ν
παξαιήπηεο ιάβεη ηα αξρηθά δεδνκέλα ιακβάλνληαο έηζη δηαθνξεηηθέο ηηκέο
από απηέο πνπ πεξίκελε. Αληίζηνηρα αλ ν παξαιήπηεο θάλεη δηαδνρηθέο
αλαγλώζεηο ηνπ θαηαρσξεηή ηνπ πξηλ ν απνζηνιέαο κεηαβηβάζεη ηα επόκελα
δεδνκέλα ζα έρνπκε ηελ επαλεηιεκκέλε ρξήζε ίδησλ ηηκώλ ζηνπο
ππνινγηζκνύο. Η MPI έρεη πξνβιέςεη απηά ηα ζέκαηα παξέρνληαο
ζπλαξηήζεηο πνπ καο πιεξνθνξνύλ γηα ηελ θαηάζηαζε ηεο απνζηνιήο-
ιήςεο κελπκάησλ.

36
Σχ. 4.2. Non-blocking επικοινωνία μεταξφ δφο διεργαςιϊν. (a)Η διεργαςία Proc0 καλεί τθ ςυνάρτθςθ
αποςτολισ πριν καλζςει τθ ςυνάρτθςθ λιψθσ θ Proc1. (b)Η διεργαςία Proc1 καλεί τθ ςυνάρτθςθ λιψθσ πριν
καλζςει τθ ςυνάρτθςθ αποςτολισ θ Proc0.

 Σοπηθές (Local): Φαξαθηεξίδνληαη νη δηαδηθαζίεο πνπ όιεο νη ελέξγεηέο


ηνπο πξαγκαηνπνηνύληαη απνθιεηζηηθά από ηελ ίδηα δηεξγαζία πνπ ηηο
θάιεζε. Απηέο ζπλήζσο καο παξέρνπλ πιεξνθνξίεο γηα δηάθνξα
ραξαθηεξηζηηθά ηεο όπσο ε MPI_comm_rank πνπ καο δίλεη ηελ ηάμε ηεο
δηεξγαζίαο.

 Με ηοπηθές (Non-local): Δίλαη νη δηαδηθαζίεο ησλ νπνίσλ ε πεξάησζε


απαηηεί ηελ εθηέιεζε ελόο ηκήκαηνο από θάπνηα άιιε δηεξγαζία θαη ζηηο
πεξηζζόηεξεο πεξηπηώζεηο απαηηείηαη θάπνηαο κνξθήο επηθνηλσλία κεηαμύ
ηνπο.

 ΢σιιογηθές (Collective): Δίλαη νη δηαδηθαζίεο ησλ νπνίσλ ε εθηέιεζε γηα λα


νινθιεξσζεί πξέπεη θάζε δηεξγαζία πνπ ζπκκεηέρεη ζηελ παξάιιειε
εθηέιεζε ηνπ αιγνξίζκνπ λα ηηο θαιέζεη [22]. Απηέο νη δηαδηθαζίεο
ρξεζηκνπνηνύληαη γηα λα κεηαθέξνπλ θάπνηα δεδνκέλα πνπ είλαη αλ αγθαίν
λα ππάξρνπλ ζην ρώξν δηεπζύλζεσλ θάζε δηεξγαζίαο. Μία αθόκε ζεκαληηθή
ρξήζε είλαη ν ζπγρξνληζκόο όισλ ησλ δηεξγαζηώλ ζην ίδην ζηάδην
εθηέιεζεο ηνπ θώδηθα. Παξαδείγκαηα απνηεινύλ ε MPI_Bcast() θαη ε
MPI_BARRIER() αληίζηνηρα.

37
4.2.3) Δομζσ επικοινωνίασ
Η θαηάιιειε νξγάλσζε ηνπ πιήζνπο δηεξγαζηώλ απνηειεί παξάγνληα
κεγάιεο ζεκαζίαο ζηελ απνηειεζκαηηθόηεηα ηεο εθηέιεζεο ησλ εξγαζηώλ πνπ
επηζπκνύκε. Γηα παξάδεηγκα αληί λα αλαζέζνπκε ζε όιεο ηηο δηαζέζηκεο δηεξγαζίεο
λα εθηειέζνπλ ηκήκα ελόο ππνινγηζκνύ, ζα κπνξνύζακε λα ηνλ αλαζέζνπκε ζε έλα
ππνζύλνιν απηώλ θαη νη ππόινηπεο λα αμηνπνηεζνύλ γηα ιήςε δεδνκέλσλ πνπ ζα
ρξεζηκνπνηήζνπκε αξγόηεξα. Τν πξόηππν MPI καο παξέρεη απηή ηελ επειημία κε ηνλ
νξηζκό οκάδφλ (groups) δηεξγαζηώλ. Κάζε νκάδα ραξαθηεξίδεηαη από κνλαδηθή
ηαπηόηεηα όπσο θαη θάζε δηεξγαζία δηαζέηεη κνλαδηθή ηάμε ζηελ νκάδα πνπ αλήθεη.
Τν κέγεζνο θάζε νκάδαο είλαη ην πιήζνο δηεξγαζηώλ πνπ πεξηέρεη θαη κπνξνύκε λα
ην ιάβνπκε από ηελ ζπλάξηεζε MPI_Group_size() θαζώο θαη ε ηαπηόηεηά ηεο
ιακβάλεηαη από ηελ MPI_Group_Rank().

Οη νκάδεο ζπκβάιινπλ ζηελ επίηεπμε κέγηζηεο δπλαηήο απόδνζεο κέζσ ηεο


νξγάλσζεο αιιά δελ ζα ππήξρε επηθνηλσλία ρσξίο ηηο θαηάιιειεο δνκέο πάλσ ζηηο
νπνίεο ζα ζηεξηρηεί. Απηέο νλνκάδνληαη communicators θαη είλαη αληηθείκελα πνπ
αλαιακβάλνπλ ηε δηαθίλεζε δεδνκέλσλ κεηαμύ ησλ δηεξγαζηώλ. Έλαο
communicator γηα λα δεκηνπξγεζεί απαηηεί ηελ ύπαξμε ελόο άιινπ communicator ν
νπνίνο εμππεξεηεί ππεξζύλνιν ησλ δηεξγαζηώλ πνπ θαιείηαη λα αλαιάβεη. Δπνκέλσο
θαηά ηελ εθθίλεζε ηνπ πεξηβάιινληνο MPI καδί κε ηηο δηεξγαζίεο δεκηνπξγείηαη θαη
έλα αληηθείκελν communicator πνπ δύλαηαη λα εμππεξεηήζεη ην ζύλνιν ησλ
δηεξγαζηώλ θαη επνκέλσο νλνκάδεηαη MPI_COMM_WORLD. Όπσο θαη ηα
πξνεγνύκελα ζηνηρεία ηεο MPI έηζη θαη ν θάζε communicator δηαζέηεη έλαλ
κνλαδηθό ηξόπν δηαρσξηζκνύ ηνπ από ηνπο ππόινηπνπο, ηελ εηηθέηα context. Οη
communicators ρσξίδνληαη ζε intracommunicators θαη intercommunicators κε
βάζε ηελ νκάδα πνπ αλήθνπλ νη δηεξγαζίεο ηηο νπνίεο εμππεξεηνύλ [23].

Οη intracommunicators όπσο γίλεηαη θαλεξό θαη από ηελ νλνκαζία ηνπο


εμππεξεηνύλ κεηαβηβάζεηο κελπκάησλ κεηαμύ δηεξγαζηώλ πνπ αλήθνπλ ζηελ ίδηα
νκάδα. Δίλαη ζε ζέζε λα πξαγκαηνπνηήζνπλ θάζε είδνπο δηαδηθαζία επηθνηλσλίαο,
ηόζν ζεκείνπ πξνο ζεκείν όζν θαη ζπιινγηθέο. Γηα λα πεξηγξάςνπκε έλαλ
intracommunicator ζα πξέπεη λα γλσξίδνπκε ηόζν ηελ νκάδα δηεξγαζηώλ ζηελ νπνία
ρξεζηκνπνηείηαη όζν θαη ηνλ ηξόπν κε ηνλ νπνίν νη δηεξγαζίεο απηέο ζπλδένληαη
κεηαμύ ηνπο.

Τα αληηθείκελα πνπ ρξεζηκνπνηνύκε γηα ηελ επηθνηλσλία κεηαμύ δηεξγαζηώλ


δηαθνξεηηθώλ νκάδσλ είλαη νη intercommunicators. Γηα ηελ πεξηγξαθή ηνπο
απαηηείηαη λα γλσξίδνπκε κόλν ηηο δηαθνξεηηθέο νκάδεο ζηηο νπνίεο αλήθνπλ νη

38
δηεξγαζίεο πνπ ηνπο ρξεζηκνπνηνύλ. Σε αληίζεζε κε ηνπο intercommunicators
κπνξνύλ λα εμππεξεηήζνπλ απνθιεηζηηθά δηαδηθαζίεο επηθνηλσλίαο ζεκείνπ πξνο
ζεκείν, δειαδή κόλν κεηαμύ ελόο δεύγνπο δηεξγαζηώλ δηαθνξεηηθώλ νκάδσλ ηε
θνξά.

Σχ. 4.3. Κατθγοριοποίθςθ των communicators με βάςθ τισ ομάδεσ που εξυπθρετοφν.

4.2.4) Τοπολογίεσ MPI


Όπσο αλαθέξζεθε θαη πξνεγνπκέλσο ην πξόηππν MPI επηηπγράλεη
ζεκαληηθή θνξεηόηεηα ησλ εθαξκνγώλ ηνπ κέζσ ησλ πςεινύ επηπέδνπ δηαδηθαζηώλ
πνπ παξέρεη. Κάπνηνο πξνγξακκαηηζηήο αξθεί λα πεξηγξάςεη ην ζύλνιν ησλ
εξγαζηώλ πνπ επηζπκεί ζε αξθεηά αθεξεκέλν επίπεδν , ρσξίο λα νξίζεη ιεπηνκεξώο
πσο απηέο ζα πινπνηεζνύλ. Τν MPI δηαζέηεη ηνπο κεραληζκνύο πνπ ζα επηιέμνπλ
ηελ θαηάιιειε πινπνίεζε ζε ρακειό επίπεδν ησλ επηζπκεηώλ εξγαζηώλ αθνύ έρνπλ
ιάβεη ππόςε ηνπο ηελ ηνπνινγία ηνπ ζπζηήκαηνο πνπ ζα ρξεζηκνπνηεζεί.

Η θηινζνθία απηή ηνπ πξνηύπνπ δελ απαγνξεύεη όκσο ζηνλ πξνγξακκαηηζηή


λα πεξηγξάςεη επαθξηβώο ηελ θαηάιιειε ηνπνινγία πνπ επηζπκεί λα εθαξκνζηεί . Οη
εηθοληθές ηοποιογίες επηθοηλφλίας (virtual communication topologies) παξέρνπλ
ηελ παξαπάλσ δπλαηόηεηα. Η εθαξκνγή απηώλ γίλεηαη κέζσ ηνλ communicators
θαζώο απηνί είλαη ηα αληηθείκελα πνπ εμππεξεηνύλ θαη επνκέλσο πεξηγξάθνπλ ην
ζπλνιηθό δίθηπν επηθνηλσλίαο. Η ύπαξμε λέαο ηνπνινγίαο νξηζκέλεο από ηνλ
πξνγξακκαηηζηή επηθέξεη ηελ πξνζάξηεζε κίαο επηπιένλ ηαπηόηεηαο ζε θάζε

39
δηεξγαζία πνπ ζρεηίδεηαη κε απηή. Τν γεγνλόο απηό απαηηεί πξνζεθηηθό ρεηξηζκό θαη
ζε πνιιέο πεξηπηώζεηο πξόζζεηεο ελέξγεηεο όπσο εθ λένπ δηακνίξαζε δεδνκέλσλ γηα
ηε ζσζηή νινθιήξσζε ησλ επηζπκεηώλ εξγαζηώλ.

Σχ. 4.4. Παράδειγμα οργάνωςθσ των διεργαςιϊν του communicator world ςε επιμζρουσ εικονικζσ τοπολογίεσ.

4.2.5) Τφποι δεδομζνων


Οη ζπλαξηήζεηο ηνπ πξνηύπνπ MPI είλαη βαζηζκέλεο ζηηο γιώζζεο
πξνγξακκαηηζκνύ C θαη Fortran αιιά νη ηύπνη δεδνκέλσλ πνπ ρξεζηκνπνηνύληαη
είλαη νξηζκέλνη απνθιεηζηηθά γηα ην πξόηππν απηό. Η γλώζε ηνπο είλαη αλαγθαία
θαζώο ζηελ θιήζε δηαδηθαζηώλ επηθνηλσλίαο πξέπεη λα πεξαζηεί σο παξάκεηξνο ν
ηύπνο ησλ δεδνκέλσλ πνπ επηζπκνύκε λα κεηαθέξνπκε ηόζν από ηνλ απνζηνιέα όζν
θαη από ηνλ παξαιήπηε. Σηνλ παξαθάησ πίλαθα παξνπζηάδνληαη νη αληηζηνηρίεο
ηύπσλ δεδνκέλσλ κεηαμύ MPI θαη C.

Πιν. 4.1. Αντιςτοιχία τφπων δεδομζνων του προτφπου MPI με τουσ όμοιουσ ςε γλϊςςα C.

MPI datatype C datatype


MPI_CHAR char
MPI_WCHAR wchar_t
MPI_SHORT signed short
MPI_INT signed int
MPI_LONG signed long
MPI_SIGNED_CHAR signed char
MPI_UNSIGNED_CHAR unsigned char
MPI_UNSIGNED_SHORT unsigned short
MPI_UNSIGNED unsigned int
MPI_UNSIGNED_LONG unsigned long
MPI_FLOAT float
MPI_DOUBLE double
MPI_LONG_DOUBLE long double

40
Δθηόο ησλ παξαπάλσ νξίδνληαη θαη δύν αθόκα ζεκαληηθνί ηύπνη, ν πξώηνο
νλνκάδεηαη MPI_BYTE θαη πεξηέρεη ηε δπαδηθή αλαπαξάζηαζε θάπνηνπ αξηζκνύ ζε
8 bit. Έηζη καο εμαζθαιίδεη όηη ν ζπγθεθξηκέλνο αξηζκόο ζα απνζεθεπηεί ζε
αθξηβώο 8 bit αλεμάξηεηα από ηελ αξρηηεθηνληθή ηνπ ρώξνπ δηεπζύλζεσλ πνπ ζα
ηνλ θηινμελήζεη. Ο δεύηεξνο είλαη MPI_PACKED θαη αλαθέξεηαη ζε
θαηαθεξκαηηζκέλα δεδνκέλα πνπ έρνπκε νκαδνπνηήζεη κε ηελ εληνιή MPI_PACK
γηα ηελ θαιύηεξε απνζηνιή ηνπο.

Τν πξόηππν MPI δίλεη ζηνλ ρξήζηε ηε δπλαηόηεηα λα δεκηνπξγήζεη δηθνύο


ηνπ ηύπνπο δεδνκέλσλ πέξα από ηνπο βαζηθνύο πνπ έρνπκε παξαπάλσ. Απηνί δελ
έρνπλ ηελ έλλνηα πνπ ζπλαληάκε ζηηο πεξηζζόηεξεο γιώζζεο πξνγξακκαηηζκνύ.
Απνηεινύλ κεζόδνπο γηα ηελ νξγάλσζε δεδνκέλσλ πνπ βξ ίζθνληαη ζε κε ζπλερείο
πεξηνρέο ηνπ ρώξνπ δηεπζύλζεσλ. Οη πξνζαξκνζκέλνη απηνί ηύπνη δεδνκέλσλ έρνπλ
ηε κνξθή δύν ιηζηώλ ίζσλ ζηνηρείσλ. Η κία πεξηέρεη ηηο κεηαηνπίζεηο από θάπνηα
νξηζκέλε αξρηθή δηεύζπλζε ζηηο νπνίεο βξίζθνληαη ηα επηζπκεηά δεδνκέλα θαη ε
δεύηεξε ηνλ ηύπν δεδνκέλσλ πνπ αληηζηνηρεί ζη θάζε ζηνηρείν ηεο πξώηεο. Τν
παξαπάλσ κπνξεί λα εθθξαζηεί καζεκαηηθά σο

Ld  { type1 , dist1  , type2 , dist2  , type3 , dist3  ,..., typen , distn } όπου typei ο τφποσ

δεδομζνων του ςτοιχείου ςτθ μετατόπιςθ disti από τθ διεφκυνςθ που ζχουμε ορίςει. Ζτςι

μασ επιτρζπεται να ςτζλνουμε ομάδεσ αςυνεχών δεδομζνων διαφορετικών τφπων με τθ


χριςθ μοναδικισ διαδικαςίασ επικοινωνίασ.

4.3) Οι βαςικζσ διαδικαςίεσ του MPI


Τν πξόηππν MPI νξίδεη πεξηζζόηεξεο από δηαθόζηεο ζπλαξηήζεηο γηα ηε
δεκηνπξγία παξάιιεινπ θώδηθα νη νπνίεο θαιύπηνπλ θάζε πξνγξακκαηηζηηθό
ζελάξην. Οη ζπλερείο αλαβαζκίζεηο ηεο έθδνζήο ηνπ έρνπλ δηαηεξήζεη ηελ επξεία
ρξήζε ηνπ κέρξη θαη ζήκεξα [24]. Πξνθεηκέλνπ όκσο θάπνηνο λα γξάςεη έλα
παξάιιειν πξόγξακκα κε βάζε ην πξόηππν MPI δελ είλαη αλαγθαίν λα γλσξίδεη ην
ζύλνιν ησλ ζπλαξηήζεσλ πνπ πξνζθέξνληαη. Φξεηάδεηαη όκσο ε θαηαλόεζε ηεο
ιεηηνπξγίαο ελόο ζπλόινπ βαζηθώλ ζπλαξηήζεσλ πνπ θαιύπηνπλ ηελ πιεηνςεθία
ησλ ζελαξίσλ επηθνηλσλίαο.

4.3.1) Τοπικζσ (Local)


 int MPI_Init( int *argc, char ***argv )
Δθθηλεί ην πεξηβάιινλ εθηέιεζεο MPI επνκέλσο πξέπεη λα είλαη ε πξώηε
ζπλάξηεζε MPI πνπ θαιείηαη ζε θάζε πξόγξακκα. Γελ επηζεκαίλεηαη πνηεο εξγα ζίεο
κπνξνύλ λα εθηειεζηνύλ από έλα πξόγξακκα πξηλ ηελ θιήζε ηεο MPI_Init.

41
 int MPI_Finalize( void )
Τεξκαηίδεη ην πεξηβάιινλ εθηέιεζεο MPI επνκέλσο είλαη ε ηειεπηαία ζπλάξηεζε
MPI πνπ πξέπεη λα θαιείηαη. Δίλαη απαξαίηεην λα είκαζηε ζίγνπξνη όηη θάζε άιιε
εξγαζία έρεη νινθιεξσζεί πξηλ ηελ θιήζε ηεο MPI_Finalize, ηδηαίηεξε πξνζνρή
απαηηνύλ νη Non-blocking ζπλαξηήζεηο.

 int MPI_Comm_size( MPI_Comm comm, int *size )


Δπηζηξέθεη ην πιήζνο δηεξγαζηώλ πνπ εμππεξεηεί ν communicator comm ζηε
κεηαβιεηή size. Αλ ζέινπκε ην ζπλνιηθό αξηζκό ησλ δηεξγαζηώλ αλεμάξηεηα ηνλ
communicator ζηνλ νπνίν αλήθνπλ δίλνπκε ηελ ηηκή MPI_COMM_WORLD σο
παξάκεηξν ζηε ζέζε ηεο κεηαβιεηήο comm.

 int MPI_Comm_rank( MPI_Comm comm, int *rank )


Δπηζηξέθεη ηελ ηάμε(rank) ηεο δηεξγαζίαο ζηνλ communicator comm ζηε κεηαβιεηή
rank. ε ηάμε είλαη έλαο αθέξαηνο αξηζκόο ζην δηάζηεκα [0, n-1] όπνπ „n‟ ην πιήζνο
ησλ δηεξγαζηώλ ζηνλ παξαπάλσ communicator. Σηηο πεξηζζόηεξεο εθαξκνγέο
ζπκβάιιεη ζηελ ηαπηνπνίεζε θαη αλάζεζε ζπγθεθξηκέλνπ έξγνπ ζε ζπγθεθξηκέλεο
δηεξγαζίεο. Μία δηεξγαζία ραξαθηεξίδεηαη από ηόζεο δηαθνξεηηθέο ηάμεηο όζνη θαη
νη communicators ζηνπο νπνίνπο ζπκκεηέρεη.

4.3.2) Διαδικαςίεσ επικοινωνίασ ςημείου προσ ςημείο


 int MPI_Send(const void *buf, int count, MPI_Datatype datatype, int dest,
int tag, MPI_Comm comm)
Σηέιλεη έλα κήλπκα πνπ απνηειείηαη από count αθέξαην αξηζκό ζπλερόκελσλ
ζηνηρείσλ πνπ βξίζθνληαη απνζεθεπκέλα ζηε κλήκε από ηε δηεύζπλζε ηνπ pointer
buf θαη έπεηηα. Τα ζηνηρεία απηά είλαη ηύπνπ datatype θαη ζα παξαδνζνύλ ζηελ
δηεξγαζία κε ηάμε(rank) dest ζηνλ communicator comm. Τν πεδίν tag επηηξέπεη
ζηνλ απνζηνιέα λα θαηεγνξηνπνηεί ηα κελύκαηα πξνθεηκέλνπ ν παξαιήπηεο λα
κπνξεί λα ηα ιακβάλεη κε όπνηα ζεηξά θξίλεη θαηάιιειε. Η ζπλάξηεζε απηή
αλαζηέιιεη ηελ εθηέιεζε ηνπ πξνγξάκκαηνο κέρξη λα νινθιεξσζεί ε απνζηνιή ησλ
ζηνηρείσλ ηνπ buf επνκέλσο αλήθεη ζηελ θαηεγνξία blocking ζπλαξηήζεσλ κε Non-
blocking εθδνρή ηελ MPI_Isend().

 int MPI_Recv(void *buf, int count, MPI_Datatype datatype, int source, int
tag, MPI_Comm comm, MPI_Status *status)
Λακβάλεη έλα κήλπκα πνπ απνηειείηαη από count αθέξαην αξηζκό ζηνηρείσλ θαη ηα
απνζεθεύεη ζηε κλήκε ζε ζπλερόκελεο δηεπζύλζεηο από απηή πνπ νξίδεη ν pointer
buf θαη έπεηηα. Τα ζηνηρεία απηά είλαη ηύπνπ datatype θαη ιακβάλνληαη από ηε
δηεξγαζία κε ηάμε(rank) source ζηνλ communicator comm. Ο ρεηξεζηήο(handle)

42
status ρξεζηκνπνηείηαη γηα ηελ δηεπζέηεζε ζθαικάησλ πνπ κπνξεί λα πξνέθπςαλ
θαηά ηε ιήςε ελόο ζπγθεθξηκέλνπ κελύκαηνο. Η ζπλάξηεζε απηή αλαζηέιιεη ηελ
εθηέιεζε ηνπ πξνγξάκκαηνο κέρξη ηα ζηνηρεία λα είλαη δηαζέζηκα γηα ρξήζε ζηνλ
θαηαρσξεηή buf. Γηα ηνλ ιόγν απηό αλήθεη ζηελ θαηεγνξία blocking ζπλαξηήζεσλ
κε ηελ MPI_Irecv() λα απνηειεί ηελ Non-blocking εθδνρή.

 int MPI_Sendrecv(const void *sendbuf, int sendcount, MPI_Datatype


sendtype, int dest, int sendtag, void *recvbuf, int recvcount, MPI_Datatype
recvtype, int source, int recvtag, MPI_Comm comm, MPI_Status status )
Απνηειεί ζπλδπαζκό ησλ MPI_Send θαη MPI_Recv δειαδή πξαγκαηνπνηεί
ακθίδξνκή απνζηνιή θαη ιήςε κεηαμύ ελόο δεύγνπο δηεξγαζηώλ κε ηάμεηο dest θαη
source. Καζεκία δηεξγαζία νξίδεη δύν δηαθνξεηηθέο πεξηνρέο κε ηνπο δείθηεο
sendbuf θαη recvbuf γηα ηα δεδνκέλα πξνο απνζηνιή θαη εθείλα πξνο ιήςε
αληίζηνηρα. Απηή ε δηαδηθαζία καο δίλεη έλα παξάδεηγκα γηα ην πώο ην MPI
νξγαλώλεη ηηο απιέο κεζόδνπο επηθνηλσλίαο ζεκείνπ πξνο ζεκείν δεκηνπξγώληαο
κηα γθάκα πην εμεηδηθεπκέλσλ.

Οη παξαπάλσ ζπλαξηήζεηο απνηεινύλ ηνλ ππξήλα ηνπ πξνηύπνπ MPI,


δειαδή θάζε παξάιιειν πξόγξακκα ζα κπνξνύζε λα γξαθεί ρξεζηκνπνηώληαο κόλν
απηέο. Όκσο ην MPI παξέρεη θαη δηαδηθαζίεο πνπ επηηξέπνπλ ηελ επηθνηλσλία κίαο
δηεξγαζίαο κε πεξηζζόηεξεο. Απηέο δηεπθνιύλνπλ ηνλ ρξήζηε ζηελ αληηκεηώπηζε
επηθνηλσληαθά απαηηεηηθώλ πξνβιεκάησλ θαη ζπκβάιινπλ ζηελ θαιύηεξε απόδνζε
ησλ παξάιιεισλ αιγνξίζκσλ. Οη βαζηθόηεξεο από απηέο ηηο δηαδηθαζίεο ζα
παξνπζηαζηνύλ ζηε ζπλέρεηα.

4.3.2) Συλλογικζσ διαδικαςίεσ


 int MPI_Barrier( MPI_Comm comm )
Φξεζηκνπνηείηαη γηα ηνλ ζπγρξνληζκό ηνπ ζπλόινπ ησλ δηεξγαζηώλ πνπ αλήθνπλ
ζηνλ communicator comm. Μόιηο κηα δηεξγαζία θαιέζεη απηή ηε ζπλάξηεζε
ειέγρεη αλ όιεο νη ππόινηπεο έρνπλ πξαγκαηνπνηήζεη ηελ θιήζε ηεο, αλ λαη
ζπλερίδεη ηελ εθηέιεζε ηνπ πξνγξάκκαηνο θαη αλ όρη ηίζεληαη ζε θαηάζηαζε
αλακνλήο κέρξη λα θηάζνπλ θαη νη ππόινηπεο ζηελ MPI_Barrier().

43
Σχ. 4.5. Σχθματικι περιγραφι τθσ MPI_Barrier. Τθ χρονικι ςτιγμι Τ1 μόνο θ διεργαςία με τάξθ μθδζν ζχει
πραγματοποιιςει τθν κλιςθ τθσ MPI_Barrier. Μετά τθ χρονικι ςτιγμι Τ3 ςτθν οποία όλεσ οι διεργαςίεσ
κάλεςαν τθ ςυνάρτθςθ είναι ελεφκερεσ να ςυνεχίςουν τθν εκτζλεςθ του προγράμματοσ.

 int MPI_Bcast( void *buffer, int count, MPI_Datatype datatype, int root,
MPI_Comm comm)
Σηέιλεη έλα κήλπκα πνπ απνηειείηαη από count αθέξαην αξηζκό ζπλερόκελσλ
ζηνηρείσλ πνπ βξίζθνληαη απνζεθεπκέλα ζηε κλήκε από ηε δηεύζπλζε ηνπ pointer
buffer θαη έπεηηα. . Τα ζηνηρεία απηά είλαη ηύπνπ datatype θαη ζα παξαδνζνύλ από
ηε δηεξγαζία κε ηάμε(rank) root ζε όιεο ηηο δηεξγαζίεο πνπ ζρεηίδνληαη κε ηνλ
communicator comm. Οη δηεξγαζίεο πνπ ιακβάλνπλ ην κήλπκα θαινύλ θη απηέο ηε
ζπλάξηεζε MPI_Bcast κε ην πεδίν buffer λα απνηειεί ηνλ δείθηε ηεο πξώηεο ζέζεο
ηνπ ηνπηθνύ ρώξνπ δηεπζύλζεσλ από ηε νπνία ζα μεθηλήζεη ε εγγξαθή.
Η πινπνίεζε ηεο MPI_Bcast κπνξεί λα θαίλεηαη κε κία πξώηε ζθέςε ζαλ
ηελ επαλαιεπηηθή απνζηνιή κελπκάησλ από ηε δηεξγαζία root κέζσ ηεο MPI_Send
αιιά θάηη ηέηνην ζα ππνβάζκηδε ηελ απόδνζε ηνπ πξνγξάκκαηνο. Δπνκέλσο ε
ζπλάξηεζε απηή ρξεζηκνπνηεί πιεζώξα αιγνξίζκσλ κε βάζε ηελ θ αηαιιειόηεηά
ηνπο γηα δηαθνξεηηθά κεγέζε θαηαλεκεκέλσλ ζπζηεκάησλ θαη κελπκάησλ.

44
Σχ. 4.6. Αναπαράςταςθ τθσ λειτουργίασ τθσ MPI_Bcast ςε communicator με 8 διεργαςίεσ. Κάκε διεργαςία
λαμβάνει ακριβϊσ τα ίδια δεδομζνα.

 int MPI_Scatter( const void *sendbuf, int sendcount, MPI_Datatype


sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype,
int root, MPI_Comm comm )
Η ζπλάξηεζε απηή θαηαθεξκαηίδεη ηε δνκή δεδνκέλσλ sendbuf ζε ηζνκεξή ηκήκαηα
πιήζνπο ζηνηρείσλ sendcount έθαζην θαη ηα απνζηέιιεη κέζσ κελπκάησλ έλα ζε
θάζε δηεξγαζία πνπ αλήθεη ζηνλ communicator comm. Μεηά ην ηέινο απηήο ηεο
δηαδηθαζίαο θάζε δηεξγαζία ζα έρεη ιάβεη ην θνκκάηη δεδνκέλσλ πνπ ηεο
αληηζηνηρεί. Έηζη ε δηεξγαζία κε ηάμε root ζα έρεη ην πξώην θνκκάηη δεδνκέλσλ, ε
root+1 ην δεύηεξν θαη απηό επαλαιακβάλεηαη κέρξη ην ηειεπηαίν θνκκάηη. Οη
δηεξγαζίεο πνπ ιακβάλνπλ ηα ηκήκαηα θαινύλ θη απηέο ηε ζπλάξηεζε MPI_Scatter
κε ην πεδίν recvbuf λα απνηειεί ηνλ δείθηε ηεο πξώηεο ζέζεο ηνπ ηνπηθνύ ρώξνπ
δηεπζύλζεσλ από ηε νπνία ζα αξρίζεη ε ηνπνζέηεζε ησλ recvcount ζηνηρείσλ. Γηα
ηηο δηεξγαζίεο πέξαλ ηεο root νη ηηκέο ησλ πεδίσλ sendbuf, sendcount θαη sendtype
δελ ιακβάλνληαη ππόςε.

Σχ. 4.7. Αναπαράςταςθ τθσ λειτουργίασ τθσ MPI_Scatter ςε communicator με 4 διεργαςίεσ. Τα αρχικά
δεδομζνα τθσ διεργαςίασ root που εδϊ ζχει τάξθ 0 ιςομοιράηονται ςε όλεσ τισ διεργαςίεσ του communicator
με αφξουςα ςειρά τάξθσ.

 int MPI_Gather( const void *sendbuf, int sendcount, MPI_Datatype


sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype,
int root, MPI_Comm comm )

45
Η δηεξγαζία κε ηάμε(rank) root ιακβάλεη από θάζε άιιε δηεξγαζία ηνπ
communicator comm κελύκαηα πνπ πεξηέρνπλ recvcount πιήζνο ζηνηρείσλ κε
ζεηξά αύμνπζαο ηάμεο. Γηα ηηο ππόινηπεο δηεξγαζίεο εθηόο ηεο root κε ηελ θιήζε
ηεο MPI_Gather εθηειείηαη απνζηνιή ησλ δεδνκέλσλ πνπ μεθηλνύλ από ηε
δηεύζπλζε sendbuf κε πιήζνο ζηνηρείσλ sendcount.

 int MPI_Reduce( const void *sendbuf, void *recvbuf, int count,


MPI_Datatype datatype, MPI_Op op, int root, MPI_Comm comm )
Δθηειεί θάπνηνλ ρεηξηζκό καζεκαηηθό ή ινγηθό ζε έλα ζύλνιν ζηνηρείσλ ηεο δνκήο
δεδνκέλσλ sendbuf από θάζε δηεξγαζία ηνπ communicator comm εθηόο ηεο root κε
ζθνπό λα πξνθύςεη σο απνηέιεζκα έλα ζύλνιν ηηκώλ. Tν πιήζνο count απηώλ ησλ
ηηκώλ πνπ ζα πξνθύςνπλ απνζεθεύεηαη ζηνλ recvbuf ηεο δηεξγαζίαο root ηνπ
communicator. Τν πεδίν op πεξηέρεη ηνλ ρεηξηζκό πνπ ζα πξαγκαηνπνηήζνπκε θαη
κεξηθά παξαδείγκαηα είλαη ε εύξεζε ηνπ αζξνίζκαηνο ελόο ζπλόιν π ζηνηρείσλ op =
MPI_SUM, ε εύξεζε ηνπ ειάρηζηνπ/κέγηζηνπ ζηνηρείνπ κε ηηκέο πεδίνπ op
MPI_MIN/MPI_MAX αληίζηνηρα θιπ.

 int my_bcast( void *buffer, int count, MPI_Datatype datatype, int root,
MPI_Comm comm)

Παξέρεη ην ίδην απνηέιεζκα κε ηελ MPI_Bcast() όζνλ αθνξά ηε ζπιινγηθή


απνζηνιή ηνπ ίδηνπ κελύκαηνο ζε όιεο ηηο δηεξγαζίεο ηνπ communicator. Η δηαθνξά
έγθεηηαη ζην όηη γηα ηελ πινπνίεζε ηεο Broadcast ζην MPI ρξεζηκνπνηνύληαη ηξείο
αιγόξηζκνη. Ο δεύηεξνο θαη ηξίηνο αιγόξηζκνο πνπ ρξεζηκνπνηνύληαη γηα ζπζηήκαηα
κεγέζνπο 8 θαη άλσ εκθαλίδνπλ ζεκαληηθέο απνθιίζεηο ζηε ρξνληθή δηάξθεηα πνπ απαηηνύλ
κεηαμύ δηαθνξεηηθώλ εθηειέζεσλ. Γηα παξάδεηγκα όηαλ έρνπκε πίλαθεο κεγέζνπο 1000*1000
θαη 16 δηεξγαζίεο ε δηάξθεηα ηεο MPI_Bcast() γηα ηα ζηνηρεία ηνπ πίλαθα Β ιακβάλεη ηηκέο
κεηαμύ 0,343 θαη 0,505. Γηα ηνλ ιόγν απηό ε πινπνίεζε ηεο my_bcast() βαζίδεηαη
απνθιεηζηηθά ζην binomial tree.

46
5) Απόδοςη παράλληλων αλγορίθμων

5.1) Δομή παράλληλων αλγορίθμων


Μέρξη απηό ην ζεκείν αλαθεξζήθακε θπξίσο ζηηο δηαθνξεηηθέο
αξρηηεθηνληθέο ππνινγηζηώλ θαη ζηνπο ηξόπνπο πνπ ε θάζε κία έρεη ηε δπλαηόηεηα
λα επηηαρύλεη ηελ επίιπζε ελόο πξνβιήκαηνο. Η δνκή όκσο ελόο παξάιιεινπ
αιγνξίζκνπ απνηειεί εμίζνπ ζεκαληηθό ραξαθηεξηζηηθό κε ηε δνκή ηνπ παξάιιεινπ
ζπζηήκαηνο πνπ ζα ηνλ πινπνηήζεη. Απηό πνπ κέλεη επνκέλσο λα αλαπηπρζεί είλαη ε
επηξξνή ηνπ ίδηνπ ηνπ πξνβιήκαηνο ζηνλ ρξόλν επίιπζεο ηνπ ρξεζηκνπνηώληαο
ηερληθέο παξάιιεινπ ππνινγηζκνύ.

5.1.1) Διάκριςη ςε τμήματα


Τα πξνγξάκκαηα πνπ πξννξίδνληαη γηα παξάιιειε πινπνίεζε απνηεινύληαη
από ηξία βαζηθά ηκήκαηα. Τα δηαθξίλνπκε κε βάζε ηε δπλαηόηεηά ηνπο λα
εθηειεζηνύλ παξάιιεια θαη επνκέλσο απνηεινύλ ην ζεηρηαθό ηκήκα θαη ην
παράιιειο ηκήκα. Απηά κπνξνύλ λα δηαθξηζνύλ κε κειέηε ηόζν ηεο ζεηξηαθήο όζν
θαη ηεο παξάιιειεο κνξθήο ηνπ αιγνξίζκνπ. Τν ηξίην ηκήκα δηαθέξεη θαζώο
γίλεηαη εκθαλέο κόλν ζηελ παξάιιειε κνξθή θαη νλνκάδεηαη παράιιειο θορηίο
(parallel overhead).

Τα πεξηζζόηεξα πξνγξάκκαηα ζηε δηάξθεηα ηεο εθηέιεζήο ηνπο απαηηνύλ


θάπνηαο κνξθήο επηθνηλσλία κε ηνλ δηαζέζηκν ρώξν απνζήθεπζεο . Έηζη
πξαγκαηνπνηνύληαη ελέξγεηεο όπσο ε αλάθηεζε αξρηθώλ ηηκώλ κεηαβιεηώλ θαη ε
απνζήθεπζε απνηειεζκάησλ ππνινγηζκώλ γηα κεηαγελέζηεξε επεμεξγαζία. Αθό κα
κπνξεί λα έρνπκε θάπνηαο κνξθήο επηθνηλσλία κε κηα εμσηεξηθή ζπζθεπή εηζόδνπ ή
εμόδνπ. Τα παξαπάλσ απνηεινύλ παξαδείγκαηα εξγαζηώλ πνπ είλαη αδύλαην ή κε
απνδνηηθό λα εθηειεζηνύλ παξάιιεια θαη γηα απηόλ ην ιόγν αλήθνπλ ζην ζεηρηαθό
ηκήκα ηνπ πξνγξάκκαηνο. Όπσο δειώλεη θαη ε νλνκαζία νη εξγαζίεο πνπ αλήθνπλ
ζην ηκήκα απηό εθηεινύληαη πάληα από κία θαη κόλν εθ ησλ δηεξγαζηώλ πνπ
ρξεζηκνπνηνύκε. Δπνκέλσο ν ρξόλνο εθηέιεζήο ηνπ παξακέλεη ζηαζεξόο
αλεμάξηεηα από ην κέγεζνο ηνπ παξάιιεινπ ζπζηήκαηνο πνπ δηαζέη νπκε. Δίλαη
πξνθαλέο όηη αιγόξηζκνη κε εθηελέο ζε δηάξθεηα ζεηξηαθό ηκήκα δελ εκθαλίδνπλ
θαιέο επηδόζεηο όηαλ εθηεινύληαη παξάιιεια.

Τν επόκελν θνκκάηη ηνπ πξνγξάκκαηνο επηηξέπεη ηνλ θαηαθεξκαηηζκό ηνπ


ζε έλα ππνζύλνιν ηκεκάησλ ηθαλώλ λα πινπνηεζνύλ από δη αθνξεηηθέο δηεξγαζίεο.
Απηό απνηειεί ην παράιιειο ηκήκα θαη πεξηιακβάλεη εξγαζίεο όπσο γηα
παξάδεηγκα καζεκαηηθνί ρεηξηζκνί θάπνηνπ ζπλόινπ δεδνκέλσλ. Κύξην κέιεκα ζηε

47
ζπγγξαθή παξάιιεισλ πξνγξακκάησλ είλαη ε εύξεζε ηνπ απνηειεζκαηηθόηεξνπ
ηξόπνπ δηαρσξηζκνύ ηνπ παξάιιεινπ ηκήκαηνο ζε επηκέξνπο εξγαζίεο. Σηε
ζπλέρεηα θάζε επηκέξνπο εξγαζία είλαη ζε ζέζε λα πινπνηεζεί από κία δηαζέζηκε
δηεξγαζία ηαπηόρξνλα. Τν ραξαθηεξηζηηθό απηό νθείιεηαη γηα ηε βειηίσζε
απόδνζεο ελόο παξάιιεινπ πξνγξάκκαηνο ζε ζρέζε κε ηελ ζεηξηαθή εθδνρή ηνπ.
Δπνκέλσο έλαο αιγόξηζκνο κε κεγάιε ρξνληθή δηάξθεηα εθηέιεζεο ηνπ παξάιιεινπ
ηκήκαηνο είλαη πνιύ πηζαλό λα απνδώζεη ζεκαληηθά ζηελ παξάιιειε εθηέιεζε.

Η κεηαηξνπή ελόο πξνγξάκκαηνο από ηε ζεηξηαθή εθδνρή ηνπ ζηελ


παξάιιειε απαηηεί ζπρλά ηελ εηζαγσγή πξόζζεησλ εξγαζηώλ. Μία από απηέο ζα
κπνξνύζε λα είλαη ν δηαρσξηζκόο ησλ δεδνκέλσλ ζε ηκήκαηα ώζηε θάζε δηεξγαζία
λα ιάβεη ην θαηάιιειν. Οη πην πξνθαλείο είλαη βέβαηα νη δηαδηθαζίεο επηθνηλσλίαο,
εδώ κεηαβίβαζεο κελπκάησλ. Δπνκέλσο ην ζύλνιν εξγαζηώλ πνπ δελ ππήξραλ ζηνλ
ζεηξηαθό αιγόξηζκν αιιά είλαη απαξαίηεηεο ζηνλ παξάιιειν νλνκάδεηαη
παράιιειο θορηίο (parallel overhead). Η δηάξθεηα πινπνίεζεο ηνπ παξάιιεινπ
θνξηίνπ εμαξηάηαη ζε κεγάιν βαζκό από ηα ραξαθηεξηζηηθά ηνπ δηθηύνπ
δηαζύλδεζεο δηόηη κέζσ απηνύ επηηπγράλεηαη ε επηθνηλσλία.

5.1.2) Βαθμόσ ανάλυςησ (granularity)


Σηε γεληθή ηνπ κνξθή έλα πξόγξακκα κπνξεί λα ζεσξεζεί σο έλα ζύλνιν
ξνπηηλώλ πνπ ε θαζεκία εμππεξεηεί δηαθνξεηηθό ζθνπό. Απηέο απνηεινύληαη
ζπλήζσο από επαλαιεπηηθέο δνκέο πνπ πεξηέρνπλ έλα ζύλνιν εληνιώλ. Κάζε εληνιή
κε ηε ζεηξά ηεο αληηζηνηρεί ζε θάπνην ζύλνιν ζηνηρεησδώλ ινγηθώλ ή αξηζκεηηθώλ
πξάμεσλ. Έηζη νξίδνληαη νη ηέζζεξηο βαζκοί αλάισζες ησλ εξγαζηώλ ελόο
πξνγξάκκαηνο [25].

Η έλλνηα ησλ βαζκώλ αλάιπζεο απνθηά ηδηαίηεξε ζεκαζία ζηνπο


παξάιιεινπο αιγνξίζκνπο. Σε απηό ην πεδίν θαηέρεη ηελ έλλνηα ηνπ θαηά πόζν
κπνξεί ην παξάιιειν ηκήκα λα δηαηξεζεί ζε αλεμάξηεηεο νκάδεο πξάμεσλ. Κάζε
ηέηνηα νκάδα απνηειεί ην κηθξόηεξν αλεμάξηεην θνκκάηη ηνπ αιγνξίζκνπ, επνκέλσο
ζεσξείηαη ε βαζηθή κνλάδα πνπ ηνλ απνηειεί, δειαδή ν θόθθνο ηνπ. Με βάζε ην
κέγεζνο ησλ παξαπάλσ ειάρηζησλ αλεμάξηεησλ θνκκαηηώλ ή θόθθσλ πεξηγξάθεηαη
ε θνθθίσζε (granularity). Η αλεμαξηεζία ηέηνησλ νκάδσλ πξάμεσλ καο επηηξέπεη
ηελ αλάζεζή ηνπο ζε μερσξηζηέο δηεξγαζίεο ώζηε λα εθηειεζηνύλ ηαπηόρξνλα. Μεηά
ηελ νινθιήξσζε ησλ αλεμάξηεησλ εξγαζηώλ νη δηεξγαζίεο ζα πξέπεη λα
επηθνηλσλήζνπλ ώζηε λα αληαιιάμνπλ ηα απνηειέζκαηα πνπ πξνέθπςαλ, πξνηνύ
πξνρσξήζνπλ ζην επόκελν ηκήκα. Άξα ν νξηζκόο πνπ δίλεηαη ζηνλ βαζκό αλάιπζεο

48
ελόο παξάιιεινπ πξνγξάκκαηνο είλαη ν ιόγνο ηεο δηάξθεηαο ησλ ππνινγηζκώλ πξνο
ηε δηάξθεηα ηεο επηθνηλσλίαο [26].

Ο βαζκόο αλάιπζεο ζπκβνιίδεη ην άλσ όξην θαηαθεξκαηηζκνύ ηνπ


παξάιιεινπ ηκήκαηνο ηνπ αιγνξίζκνπ ρσξίο όκσο λα ην επηβάιιεη ζηνλ
πξνγξακκαηηζηή [27]. Τα αλεμάξηεηα ηκήκαηα πνπ πξννξίδνληαη γηα παξάιιειε
εθηέιεζε δελ ζπλίζηαηαη λα είλαη πεξηζζόηεξα από ην πιήζνο δηαζέζηκσλ
δηεξγαζηώλ. Δπίζεο γηα έλα ζύζηεκα κε πςειό θόζηνο επηθνηλσλίαο, ζα είλαη
απνδνηηθόηεξν ν πξνγξακκαηηζηήο λα νξγαλώζεη ηα δεδνκέλα πνπ ζα ζηείιεη ζε
θάζε δηεξγαζία κε ηξόπν ώζηε λα επηηξέπεη ηε ζπλερόκελε εθηέιεζε πεξηζζνηέξσλ
ηεο κίαο αλεμαξηήησλ εξγαζηώλ.

5.2) Η επιτάχυνςη ςτουσ παράλληλουσ αλγόριθμουσ


Η εθηέιεζε αιγνξίζκσλ ζε παξάιιεια ζπζηήκαηα έρεη σο ζθνπό ηελ
επηηάτσλζε (speedup) ησλ εξγαζηώλ πνπ πεξηιακβάλνπλ. Απηή ε επηηάρπλζε θαηά
ηε κεηάβαζε από ηε ζεηξηαθή εθηέιεζε ηνπ αιγνξίζκνπ ζηελ παξάιιειε νξίδεηαη
σο:

διάρκεια ζειριακής εκηέλεζης


επιηάτσνζη =  5.1
διάρκεια παράλληλης εκηέλεζης

Γηα επθνιία ζηηο αθόινπζεο καζεκαηηθέο ζρέζεηο ζα ζπκβνιίδνπκε ηελ επηηάρπλζε

πξνβιήκαηνο κεγέζνπο n όηαλ εθηειείηαη από p κνλάδεο επεμεξγαζίαο σο   n, p  ,

ην ζεηξηαθό ηκήκα   n  , ην παξάιιειν ηκήκα   n  θαη ην παξάιιειν θνξηίν

  n, p  επνκέλσο ε παξαπάλσ ζρέζε εθθξάδεηαη σο:

διάρκεια ζειριακής εκηέλεζης   n    n 


  n, p   5.2
διάρκεια παράλληλης εκηέλεζης n
  n       n, p 
p

Γηα ηνλ νξηζκό απηό ζεσξήζακε όηη ην παξάιιειν ηκήκα ηνπ αιγνξίζκνπ
κπνξεί λα κνηξαζηεί ηζόπνζα ζηηο κνλάδεο επεμεξγαζίαο πξάγκα πνπ θαίλεηαη από
ηε ρξήζε ηνπ ιόγνπ ησλ δύν κεγεζώλ. Σε πνιιέο πεξηπηώζεηο όκσο θάηη ηέηνην είλαη
αδύλαην. Όπσο γηα παξάδεηγκα όηαλ έρνπκε λα θαηαλείκνπκε έλαλ πίλαθα ζε
ζύζηεκα κνλάδσλ επεμεξγαζίαο πνπ ην πιήζνο ηνπο δελ δηαηξεί αθέξαηα ηε
δηάζηαζή ηνπ. Δπνκέλσο εδώ ππνινγίδεηαη ε κέγηζηε δπλαηή επηηάρπλζε γηα ην
ζύζηεκά καο.

49
Καηά ηε δεκηνπξγία παξάιιεισλ αιγόξηζκσλ κε ζθνπό ηελ επίιπζε θάπνηνπ
πξνβιήκαηνο είλαη πνιύ ζεκαληηθό λα γλσξίδνπκε ην πόζν απνδνηη θνί είλαη.
Γειαδή ηελ ηαρύηεηα εθηέιεζήο ηνπο από ην ππνινγηζηηθό ζύζηεκα γηα ην νπνίν
πξννξίδνληαη, ώζηε λα απνθαζίζνπκε αλ ρξεηάδεηαη θάπνηα κεηαβνιή ζηνλ θώδηθα.
Υπάξρνπλ δηάθνξεο κέζνδνη γηα ηνλ πξνζδηνξηζκό ηεο κέγηζηεο επηηάρπλζεο πνπ
έλα ππνινγηζηηθό ζύζηεκα κπνξεί λα πεηύρεη κε ηε ρξήζε p αξηζκνύ κνλάδσλ
επεμεξγαζίαο θαηά ηελ εθηέιεζε ελόο αιγνξίζκνπ. Σηε ζπλέρεηα ζα αλαιπζνύλ δύν
από ηηο ζεκαληηθόηεξεο.

5.2.1) Νόμοσ Amdahl


Έρεη πάξεη ην όλνκά ηνπ από ηνλ επηζηήκνλα ππνινγηζηώλ Gene Amdahl θαη
πξνήιζε από ηελ δεκνζίεπζή ηνπ κε ηίηιν “ Validity of the single processor approach to
achieving large scale computing capabilities ”. Απνηειεί κέρξη θαη ζήκεξα ην πην
γλσζηό εξγαιείν γηα ηελ πξόβιεςε ηεο απόδνζεο παξάιιεισλ αιγνξίζκσλ. Ο
λόκνο ηνπ Amdahl καο δίλεη ηε κέγηζηε επηηάρπλζε πνπ κπνξεί λα πεηύρεη έλα
παξάιιειν ππνινγηζηηθό ζύζηεκα p κνλάδσλ επεμεξγαζίαο γηα ηελ εθηέιεζε ελόο
αιγνξίζκνπ ζηαζεξνύ κεγέζνπο. Σύκθσλα κε απηόλ νξίδνπκε f ην πνζνζηό ηνπ
ζπλνιηθνύ ρξόλνπ εθηέιεζεο πνπ αθηεξώλεηαη ζην ζ εηξηαθό ηκήκα ηνπ αιγνξίζκνπ
θαηά ηε ζεηξηαθή εθηέιεζε. Δπνκέλσο ην κέγεζνο απηό παίξλεη ηηκέο ζην δηάζηεκα
από 0 κέρξη 1. Έηζη ην πνζνζηό ηνπ ζπλνιηθνύ ρξόλνπ εθηέιεζεο πνπ αθηεξώλεηαη
ζην παξάιιειν ηκήκα θαηά ηε ζεηξηαθή εθηέιεζε είλαη ίζν κε (1-f) θαη νη
θαζπζηεξήζεηο ιόγσ επηθνηλσλίαο δελ ιακβάλνληαη ππόςε. Η ζρέζε πνπ καο δίλεη
ηελ κέγηζηε επηηάρπλζε  absolute κε βάζε ηα παξαπάλσ πξνθύπηεη σο [28]:

1
 absolute   5.3
f
1  f 
p

50
4 επεξεργαςτζσ 8 επεξεργαςτζσ 16 επεξεργαςτζσ
32 επεξεργαςτζσ 64 επεξεργαςτζσ
68
64
60
56
Επιτάχυνςθ ψ absolute

52
48
44
40
36
32
28
24
20
16
12
8
4
0

19%

24%
0%
1%
2%
3%
4%
5%
6%
7%
8%
9%
10%
11%
12%
13%
14%
15%
16%
17%
18%

20%
21%
22%
23%

25%
26%
27%
28%
29%
30%
Ροςοςτό ςειριακοφ τμιματοσ f

Σχ. 5.1. Γραφικι αναπαράςταςθ των μζγιςτων εφικτϊν επιταχφνςεων κατά Amdahl για διαφορετικά μεγζκθ
παράλλθλων ςυςτθμάτων ςε ςχζςθ με το ςειριακό ποςοςτό.

Οη παξαπάλσ γξαθηθέο παξαζηάζεηο καο δεκηνπξγνύλ ακθηβνιίεο γηα ηηο


δπλαηόηεηεο ηεο παξάιιειεο επεμεξγαζίαο. Παξαηεξνύκε όηη ε επηηάρπλζε ζε παξάιιεια
ππνινγηζηηθά ζπζηήκαηα κε κεγάιν αξηζκό επεμεξγαζηώλ (32, 64 θιπ) είλαη κηθξή. Απηό ην
θαηλόκελν παξαηεξείηαη αθόκα θαη γηα αιγόξηζκνπο πνπ δηαζέηνπλ ρακειό πνζνζηό
ζεηξηαθνύ ηκήκαηνο. Έηζη γηα έλαλ αιγόξηζκν κε ζεηξηαθό πνζνζηό κόιηο 1% πνπ ηξέρεη ζε
ππνινγηζηηθό ζύζηεκα κε 64 επεμεξγαζηέο πξνβιέπνπκε κέγηζηε επηηάρπλζε ίζε κε 39 αληί
λα αγγίδεη ην 64 πνπ ζα ήηαλ ηδαληθό.

5.2.3) Νόμοσ Gustafson


Τν αξλεηηθό θιήκα πνπ ππήξρε γηα ηελ παξάιιειε επεμεξγαζία κεγάιεο θιίκαθαο
ώζεζε κεξηθνύο εξεπλεηέο λα επαλεμεηάζνπλ ηνλ λόκν Amdahl σο πξνο ηελ θαηαιιειόηεηά
ηνπ λα εμάγεη ηελ πξνβιεπόκελε επηηάρπλζε ζηελ επίιπζε ξεαιηζηηθά πξνβιεκάησλ. Ο John
L Gustafson εξεπλεηήο ζηελ Sandia National Laboratories παξαηήξεζε όηη ν λόκνο Amdahl
αλ θαη νξζόο, κειεηνύζε ηελ παξάιιειε επεμεξγαζία ππνζέηνληαο όηη είρε ζηόρν ηεο ηελ
ηαρύηεξε εθηέιεζε ελόο αιγνξίζκνπ ζηαζεξνύ κεγέζνπο. Τν ζελάξην απηό είλαη ρξήζηκν
κόλν γηα εξεπλεηηθνύο ζθνπνύο αιιά όρη ζε πξαθηηθέο εθαξκνγέο. Ο Gustafson ζεώξεζε όηη
έλα πην ξεαιηζηηθό ζελάξην ζα ήηαλ λα ιάβνπκε ζηαζεξό δηαζέζηκν ρξόλν γηα ηελ εθηέιεζε
ελόο αιγνξίζκνπ. Δπνκέλσο θαζώο ηνλ εθηεινύκε ζε παξάιιεια ππνινγηζηηθά ζπζηήκαηα
κε όιν θαη κεγαιύηεξν πιήζνο επεμεξγαζηώλ απμάλνπκε αληίζηνηρα θαη ην ππνινγηζηηθό
θνξηίν. Απηή ε θιηκάθσζε ηνπ ππνινγηζηηθνύ θνξηίνπ κπνξεί λα γίλεη εύθνια από θάπνηνλ
εξεπλεηή κέζσ γηα παξάδεηγκα ηεο αιιαγήο παξακέηξσλ όπσο ε ηηκή ηνπ βήκαηνο γηα

51
επαλαιεπηηθέο κεζόδνπο. Τέηνηεο κεηαβνιέο καο επηηξέπνπλ λα ξπζκίδνπκε ηελ αθξίβεηα ησλ
απνηειεζκάησλ θαη πξνζνκνηώζεώλ πνπ εμάγεη ην παξάιιειν ζύζηεκα.

Ο λόκνο ηνπ Gustafson γηα έλα παξάιιειν ππνινγηζηηθό ζύζηεκα p κνλάδσλ


επεμεξγαζίαο ην νπνίν εθηειεί αιγόξηζκν κε ζεηξηαθό πνζνζηό S πεξηγξάθεη ηελ „θιηκαθσηή
επηηάρπλζε‟  scaled ε νπνία δίλεηαη από ηε ζρέζε:

 scaled  p  1  p  * S 5.4

4 επεξεργαςτζσ 8 επεξεργαςτζσ 16 επεξεργαςτζσ


32 επεξεργαςτζσ 64 επεξεργαςτζσ
68
64
60
56
52
Επιτάχυνςθ ψ scaled

48
44
40
36
32
28
24
20
16
12
8
4
0
7%

12%
0%
1%
2%
3%
4%
5%
6%

8%
9%
10%
11%

13%
14%
15%
16%
17%
18%
19%
20%
21%
22%
23%
24%
25%
26%
27%
28%
29%
30%
Ροςοςτό ςειριακοφ τμιματοσ S

Σχ. 5.2. Γραφικι αναπαράςταςθ των μζγιςτων εφικτϊν επιταχφνςεων κατά Gustafson για διαφορετικά
μεγζκθ παράλλθλων ςυςτθμάτων ςε ςχζςθ με το ςειριακό ποςοςτό.

Τν παξαπάλσ εκθαλίδεη γξακκηθή εμάξηεζε ηεο επηηάρπλζεο από ην πνζνζηό


ζεηξηαθνύ ηκήκαηνο ηνπ αιγόξηζκνπ, κε ηελ πξώηε λα θζίλεη πνιύ πην νκαιά θαζώο
απμάλεηαη ην ζεηξηαθό ηκήκα ζε ζρέζε κε ηνλ λόκν Amdahl [29]. Αθόκα ε αύμεζε ηνπ
ππνινγηζηηθνύ θνξηίνπ έρεη σο απνηέιεζκα εμαηξεηηθά κεγαιύηεξε αύμεζε ηνπ ρξόλνπ πνπ
απαηηείηαη γηα ηελ εθηέιεζε ηνπ παξάιιεινπ ηκήκαηνο ζε ζρέζε κε εθείλνπ πνπ απαηηείηαη
γηα ην ζεηξηαθό. Γειαδή θαζώο απμάλνπκε ηνλ όγθν ππνινγηζκώλ πνπ πξέπεη λα
εθηειεζηνύλ απμάλεηαη θαη ην πνζνζηό παξάιιεινπ ηκήκαηνο ηνπ αιγνξίζκνπ νδεγώληαο ζε
κεγαιύηεξεο επηηαρύλζεηο.

5.2.3) Σφγκριςη νόμων Amdahl - Gustafson


Ο λόκνο ηνπ Amdahl ρξεζηκνπνηήζεθε από ηνπο ππνζηεξηθηέο ηεο ζεηξηαθήο
επεμεξγαζίαο σο αληίδξαζε ζηελ ηόηε πξσηνεκθαληδόκελε παξάιιειε επεμεξγαζία. Απηό
είλαη εκθαλέο δηόηη νη πξνβιέςεηο ηνπ γηα ηελ επηηάρπλζε πνπ πεηπραίλνπκε ζε κεγάιεο

52
θιίκαθαο παξάιιεια ππνινγηζηηθά ζπζηήκαηα πεξηνξίδεηαη ζεκαληηθά από ην ζεηξηαθό
θνκκάηη ηνπ αιγνξίζκνπ. Γηα λα θαηαλνήζνπκε ην παξαπάλσ αξθεί λα ζεσξήζνπκε έλαλ
αιγόξηζκν πνπ ηξέρεη παξάιιεια ζε άπεηξεο κνλάδεο επεμεξγαζίαο κε ζεηξηαθό ηκήκα κόιηο
1%, ηόηε ζα έρνπκε κέγηζηε δπλαηή επηηάρπλζε:

1 1
 absolute    100
f
1  f  0.01
p

Δπνκέλσο αθόκα θαη έλα παξάιιειν ππνινγηζηηθό ζύζηεκα κε άπεηξνπο


επεμεξγαζηέο δελ ζα κπνξνύζε λα πεηύρεη επηηάρπλζε κεγαιύηεξε από 100 γηα ηνλ
παξαπάλσ αιγόξηζκν. Δλώ ζύκθσλα κε ηνλ λόκν Gustafson γηα λα πεηύρνπκε επηηάρπλζε
ίζε κε 100 ζηνλ ίδην αιγόξηζκν κε ζεηξηαθό ηκήκα 1% έρνπκε:

 scaled  N  1  N  * S  100  N  1  N  *0.01  N  101

Γειαδή ζα ρξεηαζηνύκε 101 επεμεξγαζηέο ζηελ παξάιιειε εθηέιεζε, γεγνλόο πνπ


θαζηζηά ηελ παξάιιειε επεμεξγαζία κεγάιεο θιίκαθαο εμαηξεηηθά απνδνηηθή. Πνηνο όκσο
από ηνπο δύν είλαη νξζόο;

Η απάληεζε πξνθύπηεη από κηα πην πξνζεθηηθή κειέηε ησλ δύν λόκσλ κε ηδηαίηεξε
πξνζνρή ζηα ζεηξηαθά πνζνζηά f θαη S πνπ ρξεζηκνπνηνύλ [30].

Οξίδνπκε ηα παξαθάησ κεγέζε:

ts : Η ρξνληθή δηάξθεηα γηα ηελ εθηέιεζε ηνπ ζεηξηαθνύ ηκήκαηνο ηνπ αιγνξίζκνπ

t p 1 : Η ρξνληθή δηάξθεηα ηεο εθηέιεζεο ηνπ παξάιιεινπ ηκήκαηνο από έλαλ επεμεξγαζηή

t p  p  : Η ρξνληθή δηάξθεηα ηεο εθηέιεζεο ηνπ κέξνπο ηνπ παξάιιεινπ ηκήκαηνο πνπ
αληηζηνηρεί ζε έλαλ από ηνπο p επεμεξγαζηέο όηαλ ν αιγόξηζκνο εθηειείηαη παξάιιεια

Δκθαλώο ηζρύεη t p 1  p * t p  p   5.5 


Ο λόκνο Amdahl αλαθέξεηαη ζηε ζεηξηαθή εθηέιεζε ηνπ αιγνξίζκνπ, επνκέλσο ην ζεηξηαθό
πνζνζηό πξνθύπηεη :

ts
f  5.6
ts  t p 1

53
Ο λόκνο Gustafson αλαθέξεηαη ζηελ παξάιιειε εθηέιεζε ηνπ αιγνξίζκνπ, επνκέλσο ην
ζεηξηαθό πνζνζηό πξνθύπηεη :

ts
S 5.7
ts  t p  p 

Από  5.7  κε ρξήζε ηεο  5.5  έρνπκε:

ts S ts p t * p  t p 1 p  p  1 ts ts * p  t p 1  p  1 ts
S     s     
t p 1 p ts * p  t p 1 S ts S ts ts ts
ts 
p
p  p  1 S ts  t p 1 p  p*S  S 1 S 1
     f   f 
S S ts S f 1  S  p  S 1  S  p  1
S
 5.8 

Άξα θαίλεηαη όηη ηα δύν ζεηξηαθά πνζνζηά ζπλδένληαη κε κηα απιή ζρέζε αιιά ζε θακία
πεξίπησζε δελ κπνξνύκε λα ζεσξνύκε όηη εθθξάδνπλ αθξηβώο ην ίδην κέγεζνο. Η δηαθνξά
εληνπίδεηαη ζην γεγνλόο όηη ν Amdahl ζεσξεί σο βάζε ηε ζεηξηαθή εθηέιεζε δειαδή όηη

ηζρύεη ts  t p 1  1 γηα ηνλ ππνινγηζκό ηνπ πνζνζηνύ απηνύ, ελώ ν Gustafson ζεσξεί σο

βάζε ηελ παξάιιειε εθηέιεζε δειαδή ts  t p  p   1 πξάγκα πνπ γίλεηαη εκθαλέο θαη

από ηα δηαγξάκκαηα πνπ ππάξρνπλ ζηε εξγαζία ηνπ Gustafson “Reevaluating Amdahl‟s law”
θαη παξνπζηάδνληαη παξαθάησ:

Σχ. 5.3. Σχθματικι αναπαράςταςθ των χρόνων ςειριακισ και παράλλθλθσ εκτζλεςθσ ςφμφωνα με τον
Amdahl.

54
Σχ. 5.4. Σχθματικι αναπαράςταςθ των χρόνων ςειριακισ και παράλλθλθσ εκτζλεςθσ ςφμφωνα με τον
Gustafson.

Τώξα ζα απνδείμνπκε όηη ν λόκνο Gustafson πξνθύπηεη από ην λόκν Amdahl αλ


ρξεζηκνπνηήζνπκε ηε ζρέζε πνπ ζπλδέεη ηα δύν ζεηξηαθά πνζνζηά S θαη f . Θα ρξεηαζηεί λα

εμάγνπκε θαη ην παξάιιειν πνζνζηό (1-f) άξα από ηελ  5.8 

S S 1  S  p  S  S  1  S  p
f   1 f  1  5.9
1  S  p  S 1  S  p  S 1  S  p  S 1  S  p  S

1
Ο λόκνο Amdahl γξάθεηαη  absolute  άξα κε αληηθαηάζηαζε ησλ δύν πνζνζηώλ
f
1 f 
p
f θαη (1-f) έρνπκε:

1 1 1
 absolute    
1  S  p S

1 S 1
S 1  S  p  S 1  S  p  S 1  S  p  S 1  S  p  S

1  S  p  S p
 absolute  1  S  p  S  p  1  p  S   absolute   scaled

Γηα λα αλαθεθαιαηώζνπκε ηα παξαπάλσ ζα ρξεζηκνπνηήζνπκε έλα παξάδεηγκα πνπ


πξνέξρεηαη από ηε δεκνζίεπζε ηνπ Gustafson κε ηελ νπνία αζρνιεζήθακε [29]. Σε απηήλ
αλαθέξεη όηη ρξεζηκνπνίεζε αιγνξίζκνπο κε ζεηξηαθό πνζνζηό κεηαμύ 0,4% θαη 0,8% γηα
ηνπο νπνίνπο ην παξάιιειν ζύζηεκα 1024 επεμεξγαζηώλ πνπ δηέζεηε εκθάληζε επηηάρπλζε
1020 γεγνλόο ρσξίο πξνεγνύκελν όπσο αλαθέξεη θαη ν ίδηνο. Τν 0,4% όκσο είλαη ζεηξηαθό

πνζνζηό θαηά Gustafson, ρξεζηκνπνηώληαο ηελ  5.8  βξίζθνπκε ην αληίζηνηρν ζεηξηαθό

πνζνζηό θαηά Amdahl λα ηζνύηαη κε 0,00039%. Αλ αληηθαηαζηήζνπκε ην παξαπάλσ


πνζνζηό ζηνλ λόκν Amdahl, κε 1024 επεμεξγαζηέο πξνβιέπεηαη επηηάρπλζε πεξίπνπ ίζε κε

55
1020 δειαδή όζε αθξηβώο κέηξεζε θαη ν Gustafson ζηα πεηξάκαηά ηνπ. Έηζη ν Gustafson δελ
αλαθάιπςε θάπνην θαηλνύξην λόκν νύηε θαηάξξηςε ηνλ λόκν Amdahl αιιά πξνζέθεξε κία
ελαιιαθηηθή δηαηύπσζή ηνπ βαζηζκέλε ζε πεηξακαηηθά απνηειέζκαηα. Φάξε ζε απηή άιιαμε
ν ηξόπνο πνπ ε επηζηεκνληθή θνηλόηεηα αληηιακβαλόηαλ ηελ εθηθηή επηηάρπλζε
αλαηξέπνληαο ηειηθά ην αξλεηηθό θιίκα πνπ επηζθίαδε ηελ παξάιιειε επεμεξγαζία.

5.3) Αποδοτικότητα και isoefficiency


Η επηηάρπλζε πνπ κειεηήζακε παξαπάλσ καο δίλεη ηελ ζεκαληηθή πιεξνθνξία ηνπ
πόζν πην γξήγνξα εθηέιεζε ηνλ αιγόξηζκν ην παξάιιειν ζύζηεκα ζε ζρέζε κε έλα ζεηξηαθό.
Γελ καο θαλεξώλεη όκσο ην πόζν ρξήζηκνη ήηαλ νη επεμεξγαζηέο ζηελ επίηεπμε ηνπ
απνηειέζκαηνο απηνύ. Γηα ηνλ ιόγν απηό ρξεζηκνπνηνύκε ηελ αποδοηηθόηεηα (efficiency)
πνπ ζρεηίδεη ηελ επηηάρπλζε πνπ παξαηεξνύκε κε ην ζύλνιν ησλ επεμεξγαζηώλ πνπ
ρξεηαζηήθακε. Η ηηκή ηεο δίλεηαη από ηνλ παξαθάησ ηύπν:

 n , p
e n , p    5.10
p

Πσο όκσο απνδίδεη έλα παξάιιειν ζύζηεκα ζηελ εθηέιεζε θάπνηνπ αιγνξίζκνπ
όηαλ πξνζζέηνπκε ζε απηό νινέλα θαη πεξηζζόηεξνπο επεμεξγαζηέο; Τελ απάληεζε ζε απηό
ην εξώηεκα καο δίλεη ε ζρέζε isoefficiency πνπ κειεηνύκε παξαθάησ:

Η επηηάρπλζε τ δίλεηαη από ηνλ νξηζκό σο

διάρκεια ζειριακής εκηέλεζης   n    n 


  n, p   
διάρκεια παράλληλης εκηέλεζης n
  n       n, p 
p

   n, p  

p   n    n  
p *   n    n   p *   n , p   5.11

   n, p  

p   n    n  
  n    n    p  1 *  n   p *   n , p 

Σηελ παξαπάλσ ζρέζε ην  p  1 *  n είλαη ν ζπλνιηθόο ρξόλνο πνπ δαπαλάηαη ζε

ζεηξηαθέο εξγαζίεο νη νπνίεο δελ ήηαλ απαξαίηεηεο ζηε ζεηξηαθή εθδνρή ηνπ πξνγξάκκαηνο.

Τν ηκήκα p *   n, p  καο δίλεη ην ζπλνιηθό παξάιιειν θνξηίν. Δπνκέλσο ην άζξνηζκα ησλ

56
δύν απηώλ όξσλ απνηειεί ηηο εξγαζίεο πνπ εηζάγνληαη ζηελ παξάιιειε εθηέιεζε αιιά δελ
είλαη απαξαίηεηεο ζηε ζεηξηαθή. Ολνκάδνπκε απηό ην κέγεζνο T n , p .
 

  n, p  

p   n   n  
  n, p 

  n   n
 5.12
  n   n  T n , p
p   n   n  T n , p

Τν πξώην κέινο ηζνύηαη κε ηελ απνδνηηθόηεηα, άξα

  n    n  1
e n , p    e n , p   5.13
  n   n   T T n , p
n , p
1
  n    n 

Τν άζξνηζκα   n   n καο δίλεη ηνλ ζπλνιηθό ρξόλν ζεηξηαθήο εθηέιεζεο T n ,1


 

1 T n , p 1  e n , p e n,p
e n , p       Tn ,1    Tn , p 5.13
T n , p T n ,1 e n , p  1  e n , p 
1
T n ,1

Η ζρέζε 5.13 αλαπαξηζηά ην isoefficiency ελόο ζπζηήκαηνο p επεμεξγαζηώλ γηα ηελ

επίιπζε πξνβιήκαηνο κεγέζνπο n. Έλαο ρξήζηκνο ηξόπνο λα αμηνπνηήζνπκε ην παξαπάλσ


είλαη ε εύξεζε θαηάιιεισλ δεπγαξηώλ n θαη p πνπ δηαηεξνύλ ηελ απνδνηηθόηεηα ζε
ηθαλνπνηεηηθά επίπεδα.

5.4) Σχζςη επιτάχυνςησ – ενζργειασ


Η κεηάβαζε από ηα ζεηξηαθά ζηα παξάιιεια ππνινγηζηηθά ζπζηήκαηα ήηαλ
απνηέιεζκα ηεο αλάγθεο γηα απνηειεζκαηηθόηεξε θαη ηαρύηεξε επεμεξγαζία δεδνκέλσλ.
Δπνκέλσο νη ζρεδηαζηέο ηνπο είραλ σο κνλαδηθό ζηόρν ηελ επίηεπμε ηεο κέγηζηεο δπλαηήο
ππνινγηζηηθήο ηζρύνο. Η ζπλερήο πξόνδνο ζηνλ ηνκέα ησλ παξάιιεισλ ππνινγηζηώλ είρε σο
ζπλέπεηα ηελ όιν θαη απμαλόκελε ηζρύ ιεηηνπξγίαο ηνπο. Τν παξαπάλσ γίλεηαη εκθαλέο από
ηνλ πίλαθα 2 πνπ πεξηέρεη ζηνηρεία γηα ηνπο ηξείο ηζρπξόηεξνπο ππεξππνινγηζηέο ην 1993 ζε
ζρέζε κε ην 2022 [31].

57
Πίν. 5.1. Τα κφρια χαρακτθριςτικά των τριϊν ιςχυρότερων υπερυπολογιςτϊν το 1993 και το 2022.

Χρονολογία 1993 2022


CM- CM- CM- Supercomputer
Ονομασία Frontier LUMI
5/1024 5/544 5/512 Fugaku
Πσρήνες 1.024 544 512 8.730.112 7.630.848 1.110.144
6
GFlop/s 59,7 30,4 30,4 1102*10 6
442,01*10 151,9*106
Ιστύς (kW) 131 69,63 65,54 21.000 29.899 2.942

Τν ελδηαθέξνλ έρεη πιένλ ζηξαθεί ζηελ ελεξγεηαθή απνδνηηθόηεηα [32] ε νπνία ζε κεξηθνύο
ηνκείο όπσο θνξεηέο ζπζθεπέο θαζίζηαηαη εμίζνπ ή αθόκα θαη ζεκαληηθόηεξε ηεο
ππνινγηζηηθήο ηζρύνο. Δπνκέλσο ζα ήηαλ ρξήζηκε ε αλάπηπμε κεηξηθώλ πνπ ζπζρεηίδνπλ
ηελ επηηάρπλζε πνπ πξνζθέξνπλ ηα παξάιιεια ζπζηήκαηα κε ηελ ηζρύ ιεηηνπξγίαο θαη ηελ
ελέξγεηα πνπ θαηαλαιώλνπλ ζε δηάθνξεο εθαξκνγέο. Απηά ηα κεγέζε κπνξνύλ λα
ζπκβάιινπλ ζηελ θαιύηεξε θαηαλόεζε ησλ πεξηνξηζκώλ πνπ ε ελεξγεηαθή απνδνηηθόηεηα
επηβάιιεη ζην ζρεδηαζκό ελόο λένπ ζπζηήκαηνο [33].

Δπηηάτσλζε αλά θαηαλαιηζθόκελε ελέργεηα (Speedup/Joule) : Μπνξνύκε λα


ρξεζηκνπνηήζνπκε ην κέγεζνο απηό γηα ηελ εθηίκεζε ηεο κέγηζηεο επηηάρπλζεο πνπ είλαη
δπλαηό λα επηηεπρζεί γηα ζπγθεθξηκέλν πνζό ελέξγεηαο. Αθόκα κειεηώληαο ην κέγεζνο απηό
γηα ζπζηήκαηα δηαθνξεηηθνύ πιήζνπο ίδησλ ππξήλσλ κπνξνύκε λα βξνύκε ην κέγεζνο
ζπζηήκαηνο γηα ην νπνίν έρνπκε ηε βέιηηζηε ηζνξξνπία κεηαμύ ππνινγηζηηθήο θαη
ελεξγεηαθήο απόδνζεο.

Δπηηάτσλζε αλά ηζτύ ιεηηοσργίας (Speedup/Watt) : Μαο παξέρεη ηε δπλαηόηεηα λα


κειεηήζνπκε ηελ κέγηζηε δπλαηή επηηάρπλζε πνπ κπνξνύκε λα πεηύρνπκε κε ην δηαζέζηκν
ζύζηεκα παξνρήο ηζρύνο. Η ζπζρέηηζε ηεο κέγηζηεο δπλαηήο ππνινγηζηηθήο ηζρύνο κε ηελ
απαηηνύκελε ηζρύ ιεηηνπξγίαο γηα έλα ππνινγηζηηθό θέληξν είλαη εμαηξεηηθά ζεκαληηθή δηόηη
ζε αξθεηέο πεξηπηώζεηο ην 25% ησλ εμόδσλ ιεηηνπξγίαο νθείινληαη ζηελ παξνρή ηζρύνο.

58
6) Περιγραφή αλγορίθμων που χρηςιμοποιήθηκαν

6.1) Πολλαπλαςιαςμόσ πινάκων


Η δνκή ησλ πηλάθσλ ρξεζηκνπνηήζεθε αξρηθά ζηνλ ηνκέα ηεο γξακκηθήο άιγεβξαο
γηα ηελ απνηειεζκαηηθόηεξε αλαπαξάζηαζε ζπζηεκάησλ γξακκηθώλ εμηζώζεσλ. Σπλήζσο
ζπλαληώληαη ζηε κνξθή ησλ δύν δηαζηάζεσλ όπνπ θάζε γξακκή πεξηέρεη ηνπο ζπληειεζηέο
ησλ κεηαβιεηώλ θάπνηαο εμίζσζεο πνπ αλήθεη ζην ζύζηεκα. Αλ επηζπκνύκε λα βξνύκε ηηο
ιύζεηο ησλ εμηζώζεσλ ηνπ ζπζηήκαηνο γηα έλα ζύλνιν ηηκώλ κεηαβιεηώλ, ηηο δηαηάζζνπκε
ζε πίλαθα κίαο ζηήιεο θαη πνιιαπιαζηάδνπκε ηνπο δύν πίλαθεο. Η επίιπζε ζπζηεκάησλ
εμηζώζεσλ κε ηνλ παξαπάλσ ηξόπν βξίζθεη κεγάιε εθαξκνγή ζε πιεζώξα επηζηεκνληθώλ
ηνκέσλ όπσο ε γελεηηθή αλάιπζε.

Σηνλ ρώξν ησλ ππνινγηζηώλ νη πίλαθεο θαηέρνπλ ζέζε κεγάιεο ζεκαζίαο θαζώο
ρξεζηκνπνηνύληαη γηα ηελ αλαπαξάζηαζε ςεθηαθώλ εηθόλσλ [34]. Κάζε ζηνηρείν απηνύ ηνπ
πίλαθα πεξηέρεη κία ηηκή πνπ αλαθέξεηαη ζηελ θσηεηλόηεηα ηνπ αληίζηνηρνπ εηθνλνζηνηρείνπ
(pixel) ηεο εηθόλαο. Δπνκέλσο ε εθαξκνγή θάπνηνπ θίιηξνπ ή κεηαζρεκαηηζκνύ εηθόλαο
απαηηεί ηε ρξήζε πνιιαπιαζηαζκώλ πηλάθσλ.

Αλγόρικμοσ 6.1. Σειριακόσ αλγόρικμοσ πολλαπλαςιαςμοφ πινάκων Α και Β διαςτάςεων m*n και n*n
αντίςτοιχα.

unsigned int i, j, k;
double sum;
for (i = 0; i < A.m; i++) // Rows
{
for (j = 0; j < B.n; j++) // Cols
{
sum = 0;
for (k = 0; k < A.n; k++)
{
sum += A.rows[i][k] * B.rows[k][j];
{
C.rows[i][j] = sum;
}
}

Η παξαπάλσ πινπνίεζε ηνπ πνιιαπιαζηαζκνύ πηλάθσλ ππνινγίδεη ην C  A * B .


Έζησ πίλαθεο A θαη B δηαζηάζεσλ n * m θαη m * p αληίζηνηρα, ν πίλαθαο C ζα έρεη

δηαζηάζεηο n * p . Ο ππνινγηζκόο θάζε ζηνηρείνπ ηνπ ηειηθνύ πίλαθα C απαηηεί m


πνιιαπιαζηαζκνύο κεηαμύ ησλ ζηνηρείσλ κίαο γξακκήο ηνπ πίλαθα A κε ησλ αληίζηνηρσλ
θάπνηαο ζηήιεο ηνπ B θαη m  1 πξνζζέζεηο κεηαμύ ησλ ζηνηρείσλ πνπ πξνθύπηνπλ από
ηνπο παξαπάλσ πνιιαπιαζηαζκνύο. Έζησ όηη νη αξρηθνί πίλαθεο είλαη ηεηξαγσληθνί
δηαζηάζεσλ m * m ηόηε θαη ν πίλαθαο πνπ ζα πξνθύςεη από ηνλ πνιιαπιαζηαζκό ζα έρεη ηηο

59
ίδηεο δηαζηάζεηο. Γηα λα βξνύκε ηελ ππνινγηζηηθή πνιππινθόηεηα ηνπ πνιιαπιαζηαζκνύ
πηλάθσλ έρνπκε:

ύ πολλαπλαζιαζμών  m2 * m  m3 6.1

ύ προζθέζεων  m2 *  m  1  m3  m2 6.2

Δπνκέλσο ε πνιππινθόηεηα πξνθύπηεη O n3   θαλεξώλνληαο όηη ν ρξόλνο εθηέιεζεο ζα

απμάλεηαη δξακαηηθά θαζώο απμάλνπκε ην κέγεζνο ησλ πηλάθσλ πνπ επηζπκνύκε λα


πνιιαπιαζηάζνπκε. Φάξε ζε απηό ν αιγόξηζκνο δηαζέηεη εμαηξεηηθά κεγάιν παξάιιειν
πνζνζηό f παρζχοντασ ζτςι ςθμαντικό περικώριο για τθν επιτάχυνςι του.

6.1.2) Παράλληλοσ αλγόριθμοσ πολλαπλαςιαςμοφ πινάκων


Ο αιγόξηζκνο πνιιαπιαζηαζκνύ πηλάθσλ αλήθεη ζηελ θαηεγνξία nearly
embarrassingly parallel algorithms πξάγκα πνπ ζεκαίλεη όηη ελδείθλπηαη γηα
παξαιιεινπνίεζε. Σε απηή ηελ θαηεγνξία αλήθνπλ αιγόξηζκνη νη νπνίνη κπνξνύλ λα
δηαζπαζηνύλ ζε ππνπξνβιήκαηα κε κεγάιε απνηειεζκαηηθόηεηα. Σπγθεθξηκέλα νη κόλεο
πεξηπηώζεηο επηθνηλσλίαο κεηαμύ ησλ δηεξγαζηώλ πξέπεη λα ζπκβαίλνπλ ζηελ αξρή ηνπ
αιγνξίζκνπ γηα ηνλ δηακνηξαζκό ησλ δεδνκέλσλ πξνο επεμεξγαζία θαη ζην ηέινο γηα ηε
ζπγθέληξσζε ησλ απνηειεζκάησλ [35].

Γηα λα εθηειέζνπκε ηνλ πνιιαπιαζηαζκό πηλάθσλ ζε έλα παξάιιειν ζύζηεκα


πξέπεη λα απνθαζίζνπκε κε πνηνλ ηξόπν ζα δηαλείκνπκε ζηηο δηεξγαζίεο ηα δεδνκέλα πνπ
πεξηέρνπλ νη δύν αξρηθνί πίλαθεο. Δπίζεο ζα πξέπεη λα νξίζνπκε ηνλ ηξόπν κε ηνλ νπνίν ε
θεληξηθή δηεξγαζία ζα ιάβεη ηα απνηειέζκαηα από ηηο ππόινηπεο ώζηε λα ζπλζέζεη ηνλ
πίλαθα C .

Αλγόρικμοσ 6.2. Παράλλθλθ υλοποίθςθ αλγορίκμου πολλαπλαςιαςμοφ πινάκων Α και Β διαςτάςεων m*n
και n*n αντίςτοιχα. Το παράρτθμα αυτό περιζχει τισ εργαςίεσ που κα εκτελζςει θ κεντρικι διεργαςία.

// Broadcast the dimension of B matrix and then its data


my_bcast((void*)&n, 1, MPI_INT, 0, MPI_COMM_WORLD);

my_bcast((void*)B.data, n * n, MPI_DOUBLE, 0, MPI_COMM_WORLD);

// Send each process its own part of A


m = n / processor_count;
offset = n - m * (processor_count - 1);
for (i = 1; i < processor_count; i++)
{
MPI_Send((void*)A.rows[offset], m * n, MPI_DOUBLE,
i, TAG_MATRIX_PARTITION, MPI_COMM_WORLD);
offset += m;
}

// Multiply own part of matrix A with B into matrix C

60
A.m = n - m * (processor_count - 1);

unsigned int i, j, k;
double sum;
for (i = 0; i < A.m; i++) // Rows
{
for (j = 0; j < B.n; j++) // Cols
{
sum = 0;
for (k = 0; k < A.n; k++)
{
sum += A.rows[i][k] * B.rows[k][j];
{
C.rows[i][j] = sum;
}
}

A.m = n;
offset = n - m * (processor_count - 1);

// Receive part of C matrix from each process


for (i = 1; i < processor_count; i++)
{
MPI_Recv((void*)C.rows[offset], m * n, MPI_DOUBLE,
i, TAG_MATRIX_PARTITION, MPI_COMM_WORLD, &status);
offset += m;
}

Κάζε δηεξγαζία εθηόο ηεο θεληξηθήο δέρεηαη ηε δηάζηαζε, ηα ζηνηρεία ηνπ


ηεηξαγσληθνύ πίλαθα B ζην ζύλνιό ηνπο θαζώο θαη έλα ηκήκα από ηηο γξακκέο ηνπ πίλαθα
A . Τν πιήζνο γξακκώλ ηνπ πίλαθα A πνπ ζα ιάβεη θάζε δηεξγαζία δίλεηαη από ηελ αθέξαηα
δηαίξεζε ηνπ ζπλόινπ γξακκώλ ηνπ πίλαθα κε ην πιήζνο ησλ δηαζέζηκσλ δηεξγαζηώλ. Σε
πεξίπησζε πνπ ε παξαπάλσ δηαίξεζε δελ είλαη αθέξαηα ε θεληξηθή δηεξγαζία ζα
πξαγκαηνπνηήζεη ηνλ πνιιαπιαζηαζκό κε επηπιένλ γξακκέο ηνπ A πνπ έρνπλ κείλεη σο
ππόινηπν. Έηζη ε κόλε δηεξγαζία πνπ κπνξεί λα αλαιάβεη κεγαιύηεξν ππνινγηζηηθό από ηηο
ππόινηπεο είλαη ε θεληξηθή. Κάζε δηεξγαζία ιακβάλεη όιεο ηηο ηηκέο πνπ πεξηέρεη ν πίλαθαο
B , επνκέλσο ρξεζηκνπνηνύκε Broadcast γηα ηελ απνζηνιή. Σηε ζπλέρεηα ηα ηκήκαηα ηνπ
πίλαθα A δηακνηξάδνληαη ζηηο δηεξγαζίεο κε επαλαιεπηηθή ρξήζε ηεο MPI_Send() θαη θαηά
αύμνπζα ηάμε. Ο αζξνηζηήο offset ρξεζηκνπνηείηαη γηα ηελ θαηάιιειε επηινγή ησλ γξακκώλ
ηνπ πίλαθα A πξνο απνζηνιή.

Γηα ηελ ζύλζεζε ηνπ ηειηθνύ πίλαθα, ε θεληξηθή δηεξγαζία ηνπνζεηεί ζηελ αξρή ηνπ
πίλαθα C ην πιήζνο ησλ γξακκώλ πνπ ππνιόγηζε. Έπεηηα ιακβάλεη από θάζε άιιε
δηεξγαζία ηηο γξακκέο ηνπ C πνπ αληηζηνηρνύλ θαη ηηο ηνπνζεηεί ζηνλ ηειηθό πίλαθα κε
αύμνπζα ζεηξά ηάμεο. Η παξαπάλσ δηαδηθαζία απνηειείηαη από επαλαιεπηηθή θιήζε ηεο
MPI_Recv() γηα ηε ιήςε θαη έλαλ αζξνηζηή offset γηα ηε ζσζηή ηνπνζέηεζε ησλ ηηκώλ.

61
6.2) Ταξινόμηςη merge sort
Οη αιγόξηζκνη ηαμηλόκεζεο απνηεινύλ πνιύ ζεκαληηθή θαηεγνξία αιγνξίζκσλ κε
ηελ ζπζηεκαηηθή κειέηε ηνπο λα μεθηλά από ηελ πξώηε εκθάληζε ησλ ππνινγηζηώλ. Απηό
ζπλέβε θαζώο παξέρνπλ ηε δπλαηόηεηα νξγάλσζεο πεηξακαηηθώλ απνηειεζκάησλ θαη
δεδνκέλσλ ζε κία πην επθαηαλόεηε κνξθή γηα πεξεηαίξσ επεμεξγαζία. Ο John von Neumann
έγξαςε ηνπο πξώηνπο αιγόξηζκνπο merge sort ην 1945 νη νπνίνη ήηαλ νη πξώηνη αιγόξηζκνη
ηαμηλόκεζεο πνπ πξνηάζεθαλ γηα ρξήζε ζε ππνινγηζηέο [36]. Σηηο κέξεο καο έρεη πξνθύςεη
κεγάιν πιήζνο πινπνηήζεσλ ηεο ηαμηλόκεζεο merge sort κε ζεκαληηθή εθαξκνγή ζηνπο
ππνινγηζηέο ζπζηάδαο ράξε ζηελ απνηειεζκαηηθόηεηα κε ηελ νπνία ρεηξίδεηαη κεγάινπο
όγθνπο δεδνκέλσλ. Αθόκα πνιιέο γιώζζεο πξνγξακκαηηζκνύ ρξεζηκνπνηνύλ ηε merge sort
ή θάπνηα πβξηδηθή κέζνδν σο ηελ θύξηα πινπνίεζε γηα εξγαζίεο ηαμηλόκεζεο [37].

Η ταξινόμθςθ merge sort ανικει ςτθν κατθγορία αλγορίκμων που εφαρμόηουν τθ


λογικι διαίρει και βαςίλευε. Σφμφωνα με τθ λογικι αυτι το αρχικό πρόβλθμα χωρίηεται
επαναλθπτικά ςε όλο και μικρότερα μζχρι να φτάςουμε ςτα ςτοιχειώδθ προβλιματα που
το απαρτίηουν. Τα ςτοιχειώδθ προβλιματα που προκφπτουν είναι εφκολο να επιλυκοφν και
μόλισ αυτό επιτευχκεί κινοφμαςτε αντίςτροφα ςυνδυάηοντασ τισ επιμζρουσ λφςεισ για να
φτάςουμε ςτθ λφςθ του αρχικοφ προβλιματοσ.

Αλγόρικμοσ 6.3. Συνάρτθςθ αναδρομικοφ διαχωριςμοφ λίςτασ ςτο μζςο τθσ. Αποτελεί τθν πρϊτθ διαδικαςία
που πρζπει να ολοκλθρωκεί για τθν υλοποίθςθ ταξινόμθςθσ merge sort.

void m_sort(int* A, int min, int max)


{
int* C; /* dummy, just to fit the function */
int mid = (min + max) / 2;
int lowerCount = mid - min + 1;
int upperCount = max - mid;

/* If the range consists of a single element, it's already sorted */


if (max == min)
{
return;
}
else {
/* Otherwise, sort the first half */
m_sort(A, min, mid);
/* Now sort the second half */
m_sort(A, mid + 1, max);
/* Now merge the two halves */
C = merge(A + min, lowerCount, A + mid + 1, upperCount);
}
}

Το πρόβλθμα που καλοφμαςτε να επιλφςουμε με τον αλγόρικμο merge sort είναι θ


ταξινόμθςθ μίασ λίςτασ n ςτοιχείων ςε αφξουςα ςειρά μεγζκουσ. Ρρώτο βιμα είναι θ

62
εφρεςθ του μζςου τθσ λίςτασ A ώςτε να ςτθ χωρίςουμε ςε δφο τμιματα, το πρώτο από τθν
αρχι μζχρι και το μζςο ςτοιχείο και το δεφτερο από το επόμενο του μζςου μζχρι το τζλοσ.
Στον αλγόρικμο τα διαςτιματα αυτά παριςτάνονται ωσ [min, mid] και [mid+1, max]
αντίςτοιχα. Στθ ςυνζχεια εφαρμόηουμε επαναλθπτικά τον παραπάνω διαχωριςμό ςτο
κατώτερο μιςό τθσ εκάςτοτε λίςτασ μζχρι να φτάςει ςτο ςθμείο που κα περιζχει ζνα μόνο
ςτοιχείο. Ζπειτα απευκυνόμαςτε ςτο άνω τμιμα τθσ λίςτασ και εφαρμόηουμε τθν ίδια
λογικι.

Η ςυνάρτθςθ m_sort() μασ δίνει κάκε φορά τα όρια και το πλικοσ ςτοιχείων των
υπολιςτών επομζνωσ πραγματοποιεί και τθν αναδρομικι κλιςθ. Η ςυνάρτθςθ merge()
είναι αυτι που πραγματοποιεί τθν ςφγκριςθ των ςτοιχείων των δφο υπολιςτών και μασ
επιςτρζφει τθν ενιαία.

Αλγόρικμοσ 6.4. Συνάρτθςθ για τθν παραγωγι ενιαίασ ταξινομθμζνθσ λίςτασ. Ζχουμε ωσ είςοδο τα ςτοιχεία
δφο λιςτϊν τα οποία τοποκετοφμε ςτθν τελικι ςε αφξουςα ςειρά.

int* merge(int* A, int asize, int* B, int bsize)


{
int ai, bi, ci, i;
int* C;
int csize = asize + bsize;
ai = 0;
bi = 0;
ci = 0;

/*the array can be statically allocated too*/


C = (int*)malloc(csize * sizeof(int));
while ((ai < asize) && (bi < bsize)) {
if (A[ai] <= B[bi]) {
C[ci] = A[ai];
ai++;
}
else {
C[ci] = B[bi];
bi++;
}
ci++;
}
if (ai >= asize) /*if A is shorter*/
for (i = ci; i < csize; i++, bi++)
C[i] = B[bi];
else if (bi >= bsize) /*if B is shorter*/
for (i = ci; i < csize; i++, ai++)
C[i] = A[ai];
for (i = 0; i < asize; i++)
A[i] = C[i];
for (i = 0; i < bsize; i++)
B[i] = C[asize + i];

return C;
}

63
Τα ζηνηρεία ηεο θάησ ιίζηαο A ζπγθξίλνληαη κε ηα αληίζηνηρα ηεο άλσ B θαη γξάθνληαη ζηε
C ώζηε λα πεξηέρεη ηελ ηειηθή ελνπνηεκέλε θαη ηαμηλνκεκέλε ιίζηα. Οη ιίζηεο πνπ
εηζέξρνληαη ζηε ζπλάξηεζε είλαη ήδε ηαμηλνκεκέλεο από ηηο πξνεγνύκελεο θιήζεηο ηεο.
Έηζη, αλ ηα ζηνηρεία κίαο εθ ησλ A ή B έρνπλ κεηαθεξζεί εμνινθιήξνπ ζηελ C θαη ε
ππνιεηπόκελε πεξηέρεη αθόκε ζηνηρεία ηόηε απηά αληηγξάθνληαη ζηελ C κε ηελ ππάξρνπζα
ζεηξά.

6.2.3) Παράλληλοσ αλγόριθμοσ ταξινόμηςησ merge sort


Τα δεδνκέλα πνπ θαινύκαζηε λα ηαμηλνκήζνπκε βξίζθνληαη ζε πίλαθα ζηήιεο n
ζηνηρείσλ επνκέλσο θάζε δηεξγαζία ζα αλαιάβεη λα ηαμηλνκήζεη έλαλ ηκήκα ηνπ πίλαθα
ίδηνπ κεγέζνπο. Σε πεξίπησζε πνπ ε δηαίξεζε ηνπ αξρηθνύ πιήζνπο ζηνηρείσλ κε ηνλ αξηζκό
ησλ δηεξγαζηώλ δελ είλαη αθέξαηα ζπκπιεξώλνπκε ηνλ αξρηθό πίλαθα κε κεδεληθέο ηηκέο
ώζηε λα κελ ππάξρεη ππόινηπν ηεο δηαίξεζεο. Ο αιγόξηζκνο ηαμηλόκεζεο merge sort είλαη

πνιύ απνηειεζκαηηθόο θαζώο ραξαθηεξίδεηαη από ππνινγηζηηθή πνιππινθόηεηα O  n log n 

[37]. Λόγσ ηεο γξακκηθήο ζρέζεο ησλ ππνινγηζκώλ πνπ απαηηνύληαη γηα ηελ πινπνίεζε κε
ην κέγεζνο πξνβιήκαηνο αλακέλνπκε ν αιγόξηζκνο λα παξνπζηάδεη κηθξό παξάιιειν
πνζνζηό f .

Αλγόρικμοσ 6.5. Παράλλθλθ υλοποίθςθ αλγορίκμου merge sort για λίςτα data που περιζχει n ςτοιχεία. Στο
παράρτθμα αυτό παρουςιάηονται οι εργαςίεσ που κα εκτελζςει θ κεντρικι διεργαςία.

int s, r;
s = n / p;
r = n % p;

data = (int*)malloc((n + p - r) * sizeof(int));


for (i = 0; i < n; i++)
{
data[i] = rand() % 100 + 1;
}
if (r != 0)
{
for (i = n; i < n + p - r; i++)
{
data[i] = 0;
}
s = s + 1;
}

chunk = (int*)malloc(s * sizeof(int));

my_bcast(&s, 1, MPI_INT, 0, MPI_COMM_WORLD);


// End of Bcst the size of matrix for each process

offset = s;
for (i = 1; i < processor_count; i++)
{
MPI_Send(data[offset], s, MPI_INT, i, TAG_MATRIX_PARTITION,
MPI_COMM_WORLD);
offset += s;

64
}

// End of distributing the data across the processes


m_sort(chunk, 0, s - 1);
for (i = 1; i < p; i++)
{
other = (int*)malloc(s * sizeof(int));
MPI_Recv(other, s, MPI_INT, i, TAG_MATRIX_PARTITION,
MPI_COMM_WORLD, &status);
// Sort the chunk from process i with the ones previously acquired
chunk = merge(chunk, s * i, other, s);
}

Οξίδνπκε ηνλ πίλαθα ζηήιεο data δηάζηαζεο n σο ηε δνκή πξνο ηαμηλόκεζε θαη ηνπ
εθρσξνύκε ηπραίεο ηηκέο ζην δηάζηεκα από ην 1 κέρξη ην 100. Σηε ζπλέρεηα ππνινγίδνπκε ηε
δηάζηαζε s ηνπ ππνπίλαθα πνπ ζα ιάβεη θάζε κία από ηηο p δηεξγαζίεο θαη κέζσ broadcast ηε
γλσζηνπνηνύκε ζην ζύλνιν ηνπ θαηαλεκεκέλνπ ζπζηήκαηνο. Με επαλαιεπηηθή θιήζε ηεο
ζπλάξηεζεο MPI_Send() θαη ρξήζε ηνπ αζξνηζηή offset ζηέιλνπκε ην θαηάιιειν ηκήκα ηνπ
αξρηθνύ πίλαθα ζε θάζε κία από ηηο δηεξγαζίεο θαηά αύμνπζα ηάμε. Μόιηο ε θεληξηθή
δηεξγαζία νινθιεξώζεη ηελ ηαμηλόκεζε ηνπ ππνπίλαθα πνπ ηεο αληηζηνηρεί θαιεί
επαλαιεπηηθά ην δεύγνο ζπλαξηήζεσλ MPI_Recv() θαη merge(). Έηζη ζε θάζε επαλάιεςε
ζπγρσλεύεηαη κε ηνλ ππνπίλαθα ηεο θεληξηθήο δηεξγαζίαο έλα αθόκε ηαμηλνκεκέλν θνκκάηη
πνπ πξνήιζε από θάπνηα άιιε δηεξγαζία. Σαλ απνηέιεζκα ιακβάλνπκε ηνλ αξρηθό πίλαθα κε
ηα ζηνηρεία ηνπ ηαμηλνκεκέλα θαηά αύμνπζα ζεηξά.

65
7) Μεθοδολογία μετρήςεων

7.1) Κατανεμημζνο ςφςτημα εργαςτηρίου


Τν εξγαζηήξην Αξρηηεθηνληθήο Υπνινγηζηώλ θαη Σπζηεκάησλ Υςειώλ Δπηδόζεσλ
δηαζέηεη 30 κεραλήκαηα πνπ ζπγθξνηνύλ θαηαλεκεκέλν ζύζηεκα ζπζηάδαο (cluster
computer). Η επηθνηλσλία κεηαμύ απηώλ πξαγκαηνπνηείηαη κέζσ δηθηύνπ ηνπνινγίαο δηαύινπ
θαη κε βάζε ην πξσηόθνιιν Ethernet. Κάπνηα από ηα δηαζέζηκα κεραλήκαηα παξνπζηάδνπλ
κεηαμύ ηνπο αλνκνηόηεηεο ζην πιηθό πνπ ηα απαξηίδεη, επνκέλσο γηα ηελ εθηέιεζε ηνπ
πεηξάκαηνο επηιέρζεθε έλα ππνζύλνιν. Κξηηήξην γηα ηελ επηινγή ησλ κεραλεκάησλ ήηαλ νη
επηδόζεηο ηνπο ζηελ εθηέιεζε ησλ δύν αιγνξίζκσλ πνπ ρξεζηκνπνηήζεθαλ γηα ηηο κεηξήζεηο.
Έηζη επηιέρζεθε κία ππννκάδα 10 κεραλεκάησλ πνπ εκθάληδαλ κηθξή απόθιηζε ζηνπο
ρξόλνπο εθηέιεζεο ησλ αιγνξίζκσλ.

Πίν. 7.1. Διάρκεια εκτζλεςθσ ςειριακοφ αλγορίκμων πολλαπλαςιαςμοφ πινάκων και ταξινόμθςθσ merge sort
από τα 10 μθχανιματα του εργαςτθρίου που επιλζγθκαν.

Φξνληθή δηάξθεηα εθηέιεζεο αιγνξίζκσλ (sec)


Dioptis Πνιιαπιαζηαζκόο πηλάθσλ 1000x1000 Merge sort 8M
10 18.24 5.40
13 16.58 5.81
15 18.01 5.80
16 17.43 5.88
20 18.62 5.63
21 19.81 6.69
22 17.95 5.20
25 20.40 5.82
26 18.88 5.26
27 20.12 5.55

7.2) Μζθοδοσ υπολογιςμοφ μετρικϊν-μεγεθϊν


Γηα ηνλ ππνινγηζκό ηεο ζπλνιηθήο ελέξγεηαο πνπ θαηαλαιώλεηαη θαηά ηελ εθηέιεζε
ελόο αιγνξίζκνπ απαηηείηαη λα γλσξίδνπκε ηελ ηζρύ ιεηηνπξγίαο θάζε κεραλήκαηνο θαη ην
ρξνληθό δηάζηεκα πνπ απηό ρξεηάζηεθε γηα ηελ νινθιήξσζή ηνπ. Τν όξγαλν πνπ
ρξεζηκνπνηήζεθε γηα ηελ κέηξεζε ηεο ηζρύνο ιεηηνπξγίαο είλαη έλα ςεθηαθό βαηόκεηξν.
Μεηξήζεθε ζε θάζε κεράλεκα ε ηζρύο ιεηηνπξγίαο θαηά ηελ εθηέιεζε ηνπ πνιιαπιαζηαζκνύ
πηλάθσλ ώζηε λα πξνθύςεη ε ηηκή κέγηζηεο θαηαλάισζεο WFL . Σηε ζπλέρεηα κεηξήζεθε ε

ηζρύο ιεηηνπξγίαο θαηά ηελ αλακνλή γηα ιήςε δεδνκέλσλ κέζσ ηεο ζπλάξηεζεο MPI_Recv()
θαη πξνέθπςε ε ηηκή θαηαλάισζεο αδξάλεηαο WNL . Γηα ηελ εύξεζε ηεο ζπλνιηθήο ελέξγεηαο

θαηαλάισζεο ρξεζηκνπνηήζεθε ε κέζε ηηκή ησλ κεηξήζεσλ ηζρύνο κέγηζηεο θαηαλάισζεο

W FL  128 Watt και κατανάλωςθσ αδράνειασ W NL  77 Watt .

66
Πίν. 7.2. Αποτελζςματα μετριςεων ιςχφοσ λειτουργίασ πλιρουσ φορτίου και αδράνειασ για τα 10
μθχανιματα του εργαςτθρίου που επιλζγθκαν.

Ιζρύο ιεηηνπξγίαο κεραλεκάησλ (Watt)


Dioptis W W
FL NL
10 150 94
13 124 70
15 119 66
16 117 67
20 133 78
21 125 75
22 152 98
25 124 76
26 118 71
27 116 73

Καζώο δηαζέηνπκε δύν δηαθνξεηηθέο ζηάζκεο θαηαλάισζεο ηζρύνο δηαρσξίδνπκε ηνλ


ζπλνιηθό ρξόλν εθηέιεζεο ζε δηαζηήκαηα πξαγκαηνπνίεζεο ελεξγεηώλ timeactive θαη

δηαζηήκαηα αλακνλήο timeidle . Η δηαδηθαζία εύξεζεο ησλ παξαπάλσ δηαζηεκάησλ αλαιύεηαη

ζην επόκελν θεθάιαην.

Η ζσλοιηθή ελέργεηα πνπ θαηαλαιώζεθε από ην θαηαλεκεκέλν ζύζηεκα θαηά ηελ εθηέιεζε
ελόο αιγνξίζκνπ δίλεηαη από ηε ζρέζε:

Total _ energyP  idle _ energy  active _ energy  7.1


Όπνπ:

idle _ energy  timeidle *W NL

active _ energy  timeactive *W FL

Η κέζε ηζτύς ιεηηνπξγίαο W P ηνπ θαηαλεκεκέλνπ ζπζηήκαηνο γηα αξηζκό κεραλεκάησλ P


ππνινγίζηεθε σο:

Total _ energyP
WP 
Parallel _ execution _ timeP
 7.2

Η επηηάτσλζε πνπ πεηπραίλνπκε κε P κεραλήκαηα ππνινγίζηεθε σο :

Serial _ execution _ time


Speedup   7.3
Parallel _ execution _ timeP
Όπνπ:

67
Serial _ execution _ time Τν ρξνληθό δηάζηεκα γηα ηελ εθηέιεζε ηεο ζεηξηαθήο εθδνρήο ηνπ
αιγόξηζκνπ γηα δηάζηαζε πίλαθα n.

Parallel _ execution _ timeP Τν ρξνληθό δηάζηεκα γηα ηελ εθηέιεζε ηεο παξάιιειεο
εθδνρήο ηνπ αιγόξηζκνπ γηα δηάζηαζε πίλαθα n από P κεραλήκαηα.

Speedup
Η επηηάρπλζε πξνο ηε κέζε ηζρύ ιεηηνπξγίαο ηνπ θαηαλεκεκέλνπ ζπζηήκαηνο
WP
1
θαλνληθνπνηεκέλε σο πξνο πνπ απνηειεί ην αληίζηνηρν κέγεζνο γηα ηε ζεηξηαθή
W FL
εθηέιεζε καο δίλεη:

Speedup Serial _ execution _ time


WP W P * Total _ execution _ timeP W FL * Serial _ execution _ time
 
1 1 W P * Total _ execution _ timeP
W FL W FL
Speedup
 WP 
Total _ energySerial  7.4 
1 Total _ energyP
W FL

Τα δύν πνζά ελέξγεηαο Total _ energySerial θαη Total _ energyP δαπαλήζεθαλ γηα πξνθύςεη

ην ίδην απνηέιεζκα θαζώο αλαθέξνληαη ζηελ πινπνίεζε ηνπ ίδηνπ αιγνξίζκνπ κε κόλε
δηαθνξά ηνλ ηξόπν εθηέιεζεο, ζεηξηαθά θαη παξάιιεια αληίζηνηρα. Όιεο νη εξγαζίεο πνπ
εθηεινύληαη ζηνλ ζεηξηαθό αιγόξηζκν είλαη απαξαίηεηεο γηα ηελ επίηεπμε ηνπ ηειηθνύ
απνηειέζκαηνο. Σηελ παξάιιειε εθηέιεζε όκσο δαπαλάκε πνζό ελέξγεηαο ζε θαηαζηάζεηο
αλακνλήο θαη επηθνηλσλίαο πνπ απνηεινύλ ην παξάιιειν θνξηίν θαζώο δελ ζπκβάιινπλ
άκεζα ζηελ εμαγσγή ηνπ απνηειέζκαηνο. Έηζη κπνξνύκε λα ζεσξήζνπκε ηνλ παξαπάλσ
ιόγν σο ην πνζνζηό ελέξγεηαο ζηελ παξάιιειε εθηέιεζε πνπ δαπαλήζεθε ζε σθέιηκν έξγν.

7.4) Ανάλυςη υλοποίηςησ ςε χρονικά διαςτήματα


Γηα ηνλ ππνινγηζκό ηεο ζπλνιηθήο ελέξγεηαο πνπ θαηαλαιώζεθε από ην
θαηαλεκεκέλν ζύζηεκα θαηά ηελ εθηέιεζε ηνπ αιγνξίζκνπ πνιιαπιαζηαζκνύ πηλάθσλ ζα
πξέπεη λα δηαθξίλνπκε ηα θαηάιιεια ρξνληθά δηαζηήκαηα. Αξρηθά ζα βξνύκε ηνλ ζπλνιηθό
ρξόλν θαηά ηνλ νπνίν νη θόκβνη ηνπ ζπζηήκαηνο βξίζθνληαη ζε αδξάλεηα. Έπεηηα ζα
ππνινγίζνπκε ηνλ ζπλνιηθό ρξόλν θαηά ηνλ νπνίν ην ζύζηεκα είλαη ελεξγό, δειαδή εθηειεί
ππνινγηζκνύο ή ιακβάλεη/ζηέιλεη δεδνκέλα.

68
7.4.1) Σειριακό τμήμα
Τν ζεηξηαθό ηκήκα ηνπ αιγνξίζκνπ πνιιαπιαζηαζκνύ πηλάθσλ απνηειείηαη αξρηθά
από δέζκεπζε κλήκεο γηα ηα ζηνηρεία ησλ πηλάθσλ A θαη B πνπ ζα πνιιαπιαζηαζηνύλ,
θαζώο θαη γηα ηνλ πίλαθα C πνπ ζα απνζεθεπηεί ην απνηέιεζκα. Σαλ δεύηεξν βήκα
ζεσξνύκε ηελ εθρώξεζε ηπραίσλ ηηκώλ ηνπ δηαζηήκαηνο από 0 κέρξη 3 ζηνπο πίλαθεο A θαη
B.

Αλγόρικμοσ 7.1. Σειριακό τμιμα αλγορίκμου πολλαπλαςιαςμοφ πινάκων.

// Allocate memory for matrices


A = createMatrix(n, n);
B = createMatrix(n, n);
C = createMatrix(n, n);

// Initialize matrices
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
A.rows[i][j] = 3.0 * (rand() / (RAND_MAX + 1.0));
B.rows[i][j] = 3.0 * (rand() / (RAND_MAX + 1.0));
}
}

Τν ζεηξηαθό θνκκάηη ηνπ αιγνξίζκνπ merge sort απνηειείηαη από ηε δεκηνπξγία ηνπ πίλαθα
πνπ πεξηέρεη ηπραίεο ηηκέο data θαη ηνλ νξηζκό ηνπ κεγέζνπο s ππνπίλαθα πνπ ζα αλαιάβεη
θάζε δηεξγαζία λα ηαμηλνκήζεη.

Αλγόρικμοσ 7.2. Σειριακό τμιμα αλγορίκμου merge sort.

s = n / p;
r = n % p;

// If there is a remainder in the divison of the n data by p processes


// We extend the data matrix so that every process get an equal piece
data_dim = n + p - r;
data = (int*)malloc(data_dim * sizeof(int));

for (i = 0; i < n; i++)


{
data[i] = rand() % 100 + 1;
}
if (r != 0)
{
for (i = n; i < data_dim; i++)
{
data[i] = 0;
}
s = s + 1;
}

other = (int*)malloc(s * (p - 1) * sizeof(int));

// Create the part of data for master to sort


chunk = (int*)malloc(s * sizeof(int));

69
for (i = 0; i < s; i++)
{
chunk[i] = data[i];
}

Καζώο ην θνκκάηη απηό ην εθηειεί κόλν ε θεληξηθή δηεξγαζία ηα ρξνληθά δηαζηήκαηα


ππνινγίδνληαη θαη ζηνπο δύν αιγόξηζκνπο κε ηνλ ίδην ηξόπν.

t _ serialactive  tserial  7.5

Όπνπ t serial ε δηάξθεηα ζεηξηαθνύ ηκήκαηνο πνπ κεηξάκε.

t _ serialidle  tserial *  P 1  7.6


Όπνπ P ην πιήζνο ησλ δηεξγαζηώλ.

7.4.2) Τμήμα επικοινωνίασ


 Απνζηνιή δεδνκέλσλ κέζσ broadcast

Οη πξώηεο κέζνδνη επηθνηλσλίαο πνπ ρξεζηκνπνηνύληαη ζηνπο δύν παξάιιεινπο αιγόξηζκνπο


είλαη broadcast. Σηνλ πνιιαπιαζηαζκό πηλάθσλ ζηέιλνπκε ζην ζύλνιν ησλ δηαζέζηκώλ
δηαδηθαζηώλ ηε δηάζηαζε ησλ αξρηθώλ ηεηξαγσληθώλ πηλάθσλ n θαη ην ζύλνιν ησλ ζηνηρείσλ
ηνπ πίλαθα Β. Σηνλ αιγόξηζκν merge sort θάζε δηεξγαζία ιακβάλεη ην κέγεζνο ηνπ
ππνπίλαθα πνπ ζα πξέπεη λα ηαμηλνκήζεη.

Αλγόρικμοσ 7.3. Μζκοδοσ επικοινωνίασ broadcast ςτον αλγόρικμο πολλαπλαςιαςμοφ πινάκων.

// Broadcast the dimension of B matrix and then its data


my_bcast((void*)&n, 1, MPI_INT, 0, MPI_COMM_WORLD); if (n == 0) break;

my_bcast((void*)B.data, n * n, MPI_DOUBLE, 0, MPI_COMM_WORLD);

Αλγόρικμοσ 7.4. Μζκοδοσ επικοινωνίασ broadcast ςτον αλγόρικμο merge sort.

// Broadcast the size of matrix for each process


my_bcast(&s, 1, MPI_INT, 0, MPI_COMM_WORLD);

Όηαλ θαιείηαη ε ζπλάξηεζε my_bcast() ε θεληξηθή δηεξγαζία ζηέιλεη αξρηθά ην κήλπκα πνπ
πεξηέρεη ην ζύλνιν ησλ δεδνκέλσλ ζε κία από ηηο ππόινηπεο δηεξγαζίεο. Η ρξνληθή δηάξθεηα

γηα λα ζπκβεί απηό ζεσξείηαη torder . Μόιηο νινθιεξσζεί ε απνζηνιή θαη εθόζνλ ππάξρνπλ
δηεξγαζίεο πνπ δελ έρνπλ ιάβεη ηα δεδνκέλα, ε θεληξηθή καδί κε ηελ δηεξγαζία ηνπ
πξνεγνύκελνπ βήκαηνο αλαιακβάλνπλ ηελ ηαπηόρξνλε απνζηνιή ν θαζέλαο ζε κία από ηηο

ππόινηπεο. Απηή ε απνζηνιή έρεη επίζεο δηάξθεηα torder θαζώο ηα δεδνκέλα έρνπλ ην ίδην

70
κέγεζνο θαη νη απνζηνιέο πξαγκαηνπνηνύληαη ηαπηόρξνλα. Σην επόκελν torder δηαζέηνπκε 4
δηεξγαζίεο πνπ έρνπλ ιάβεη ηα δεδνκέλα θαη επνκέλσο έρνπκε ηε δπλαηόηεηα απνζηνιήο ζε
κέρξη θαη 4 λέεο δηεξγαζίεο. Η παξαπάλσ δηαδηθαζία ζπλερίδεηαη κέρξη λα ιάβνπλ όιεο νη
δηεξγαζίεο ηα απαξαίηεηα δεδνκέλα.

΢τ. 7.1. Αλαπαράζηαζε αποζηοιής δεδοκέλφλ κέζφ ηες my_bcast() γηα παράιιειο ζύζηεκα κε 13
δηεργαζίες. Οη δηεργαζίες ποσ αλήθοσλ ζηο ίδηο ορηδόληηα δηατφρηζκέλο ηκήκα ιακβάλοσλ ηο κήλσκα
ηασηότρολα.

Έηζη από ηελ παξαπάλσ πινπνίεζε ην ρξνληθό δηάζηεκα torder ππνινγίδεηαη από ηελ νιηθή

δηάξθεηα ηεο Broadcast πνπ κεηξήζεθε σο:

tbroadcast
torder   7.7
order

Όπνπ order  log2  P  ε ζπλνιηθή ηάμε ηνπ ζπζηήκαηνο κε P αξηζκό δηεξγαζηώλ.

Γηα ηνλ ρξόλν πνπ θάζε process βξίζθεηαη ζε αλακνλή κέρξη λα ιάβεη ηα δεδνκέλα

ππνινγίδνπκε ην πιήζνο ησλ torder πνπ ρξεηάδεηαη γηα λα μεθηλήζεη ηε ιήςε σο:

until _ receive _ idle  log2  P _ rank  1 1  7.8

Όπνπ P _ rank  1, P  1 ν βαζκόο πνπ έρεη δνζεί ζηελ θάζε process θαηά ηελ εθθίλεζε

ηνπ πεξηβάιινληνο MPI.

Οη δηεξγαζίεο πνπ δελ είλαη θύιια ηνπ γξαθήκαηνο θαη δελ απαηηείηαη λα πξνρσξήζνπλ ζε

θάπνηα απνζηνιή ηίζεληαη ζε αλακνλή γηα ρξόλν torder . Απηό ζπκβαίλεη δηόηη πξέπεη λα

71
πεξηκέλνπλ ηελ θεληξηθή δηεξγαζία λα νινθιεξώζεη ηελ Broadcast πξηλ πξνρσξήζεη ζηνλ
δηακνηξαζκό ησλ γξακκώλ ηνπ πίλαθα A. Ο ζπλνιηθόο αξηζκόο ησλ παξαπάλσ ρξνληθώλ
δηαζηεκάησλ ζπκπίπηεη κε ην πιήζνο δηεξγαζηώλ πνπ ζα ρξεηαδόηαλ γηα λα ζπκπιεξσζεί ην
ηειεπηαίν order. Δπνκέλσο ππνινγίδεηαη σο:

after _ receive _ idle  2order  P  7.9

Από όια ηα παξαπάλσ, έρνπκε ζπλνιηθό ρξόλν αλακνλήο γηα P  1 δηεξγαζίεο :

 P 1 
t _ broadcastidle   after _ receive _ idle   until _ receive _ idle P _ rank   * torder
 P _ rank 1 
 7.10
Τν ρξνληθό δηάζηεκα πνπ αθηεξώλεη ην ζύλνιν ησλ δηεξγαζηώλ ζην θνκκάηη Broadcast είλαη
P * tbroadcast θαη έρνληαο ππνινγίζεη ην t _ broadcastidle ν ζπλνιηθόο ελεξγόο ρξόλνο
πξνθύπηεη:

t _ broadcastactive  P * tbroadcast  t _ broadcastidle  7.11

 Γηακνηξαζκόο ζηνηρείσλ πίλαθα κέζσ επαλαιεπηηθήο send

Σηνπο δύν αιγνξίζκνπο ρξεζηκνπνηνύκε ηε ζπλάξηεζε MPI_Send() γηα λα ζηείινπκε ζε


θάζε δηεξγαζία ην θαηάιιειν ηκήκα ελόο αξρηθνύ πίλαθα πξνθεηκέλνπ λα πινπνηεζνύλ
παξάιιεια νη ππνινγηζκνί. Γηα ηνλ πνιιαπιαζηαζκό πηλάθσλ απνζηέιινληαη ζηηο δηεξγαζίεο
ηα ηζόπνζα ηκήκαηα ηνπ πίλαθα A ελώ γηα ηελ merge sort ηα ηκήκαηα ηνπ πίλαθα data.

Αλγόρικμοσ 7.5. Καταμεριςμόσ και αποςτολι δεδομζνων ϊςτε ο πολλαπλαςιαςμόσ πινάκων να εκτελεςτεί
παράλλθλα.

// Send each process its own part of A


m = n / processor_count;
offset = n - m * (processor_count - 1);
for (i = 1; i < processor_count; i++)
{
MPI_Send((void*)A.rows[offset], m * n, MPI_DOUBLE,
i, TAG_MATRIX_PARTITION, MPI_COMM_WORLD);

offset += m;
}

72
Αλγόρικμοσ 7.6. Διαμοιραςμόσ του πίνακα data ϊςτε να πραγματοποιθκεί θ παράλλθλθ ταξινόμθςι του.

// Send each process a part of matrix data of size s


offset = s;
for (i = 1; i < p; i++)
{
MPI_Send(data + offset, s, MPI_INT, i, TAG_MATRIX_PARTITION,
MPI_COMM_WORLD);

offset += s;
}

Τν ρξνληθό δηάζηεκα πνπ κεηξάκε είλαη ν ζπλνιηθόο ρξόλνο πνπ απαηηείηαη γηα λα

νινθιεξσζεί ε επαλαιεπηηθή θιήζε ηεο ζπλάξηεζεο MPI_Send() πνπ νλνκάδεηαη t send . Τα

δηαζηήκαηα θαηά ηα νπνία θάζε κηα από ηηο δηεξγαζίεο εθηόο ηεο θεληξηθήο ιακβάλεη ηα
ζηνηρεία πνπ ηεο αληηζηνηρνύλ ππνινγίδεηαη σο:

t send
t _ send p 
P 1
 7.12

Δπνκέλσο ην νιηθό ελεξγό δηάζηεκα γηα ηε δηαδηθαζία MPI_Send() είλαη:

t _ sendactive   P 1 * t _ send p  tsend  2* tsend  7.13


Σηε δηαδηθαζία ιήςεο ηκεκάησλ ηνπ πίλαθα έρνπκε δύν δηαθνξεηηθά δηαζηήκαηα αδξάλεηαο
ζε θάζε δηεξγαζία εθηόο ηεο θεληξηθήο. Τν πξώην είλαη από ηε ζηηγκή πνπ θιεζεί ε
MPI_Recv κέρξη λα ιεθζνύλ ηα δεδνκέλα. Τν δεύηεξν απνηειείηαη από ηνλ ρξόλν κεηά ηελ
εθηέιεζε ηνπ παξάιιεινπ θνκκαηηνύ πνπ ε δηεξγαζία ηίζεηαη ζε αλακνλή κέρξη λα
νινθιεξώζεη θαη ε θεληξηθή δηεξγαζία ηνπο ππνινγηζκνύο κε ην ηκήκα πίλαθα πνπ ηεο
αληηζηνηρεί. Ο ζπλνιηθόο ρξόλνο αδξάλεηαο γηα ηηο P  1 δηεξγαζίεο ππνινγίδεηαη σο:

t _ sendidle  t _ sendtotal  t _ send active  P * tsend  2* tsend


 t _ sendidle   P  2  * tsend  7.14 

 Λήςε ηκεκάησλ ηειηθνύ πίλαθα

Γηα ηνλ αιγόξηζκν πνιιαπιαζηαζκνύ πηλάθσλ ε ζύλζεζε ηνπ ηειηθνύ πίλαθα από ηα
ηκήκαηα πνπ ππνιόγηζε ε θάζε δηεξγαζία έγθεηηαη ζηελ ιήςε θαη ηνπνζέηεζή ηνπο ζηελ
θαηάιιειε ζεηξά. Οη δύν απηέο ελέξγεηεο πξαγκαηνπνηνύληαη κέζσ ηεο επαλαιεπηηθήο
θιήζεο ηεο ζπλάξηεζεο MPI_Recv().

73
Αλγόρικμοσ 7.7. Σφνκεςθ του ςυνολικοφ αποτελζςματοσ πολλαπλαςιαςμοφ πινάκων από τθν κεντρικι
διεργαςία.

// Receive part of C matrix from each process


for (i = 1; i < processor_count; i++)
{
MPI_Recv((void*)C.rows[offset], m * n, MPI_DOUBLE,
i, TAG_MATRIX_PARTITION, MPI_COMM_WORLD, &status);

offset += m;
}

Μεηξάκε ην ρξνληθό δηάζηεκα γηα ηελ νινθιήξσζε ηνπ ζπλόινπ επαλαιήςεσλ treceive , άξα

ν ρξόλνο πνπ ε θεληξηθή δηεξγαζία ρξεηάδεηαη γηα λα ιάβεη ηνλ πνιιαπιαζηαζκέλν πίλαθα
από κία δηεξγαζία είλαη:

treceive
t _ receiveP 
P 1
 7.15
Δπνκέλσο ην ζπλνιηθό ελεξγό δηάζηεκα γηα ηελ εθηέιεζε ηεο MPI_Recv() είλαη:
treceive
t _ receiveactive   P  1 *  treceive  2* treceive  7.16
P 1

Σε απηή ηε δηαδηθαζία κπνξνύλ λα ππάξμνπλ δύν δηαζηήκαηα αλακνλήο γηα θάζε δηεξγαζία.
Έλα κέρξη λα έξζεη ε ζεηξά ηεο λα ζηείιεη ην ηκήκα ησλ απνηειεζκάησλ θαη ην άιιν από ηε
ζηηγκή πνπ νινθιεξώζεθε ε απνζηνιή κέρξη λα ηεξκαηίζεη θαη ε ηειεπηαία δηεξγαζία ηνλ
αιγόξηζκν. Τν ζπλνιηθό ρξνληθό δηάζηεκα αλακνλήο γηα ηηο P  1 δηεξγαζίεο νξίδεηαη:

t _ receiveidle  t _ receivetotal  t _ receiveactive  P * treceive  2* treceive


 t _ receiveidle   P  2  * treceive  7.18
Σηνλ αιγόξηζκν merge sort ε δηαδηθαζία ζρεκαηηζκνύ ηνπ ηειηθνύ πίλαθα από ηα ηκήκαηά
ηνπ δηαθέξεη. Γηα θάζε ηαμηλνκεκέλν ηκήκα πνπ ιακβάλεη ε θεληξηθή δηεξγαζία πξέπεη λα
θαιέζεη ηε ζπλάξηεζε merge() πξνθεηκέλνπ λα ην πξνζαξηήζεη ζην ήδε ππάξρνλ κέρξη λα
πξνθύςεη ν ηειηθόο ηαμηλνκεκέλνο πίλαθαο.

Αλγόρικμοσ 7.8. Λιψθ και προςάρτθςθ των ταξινομθμζνων τμθμάτων από τθν κεντρικι διεργαςία.

offset = 0;
for (i = 1; i < p; i++)
{
// Receive sorted part from process i
MPI_Recv(other + offset, s, MPI_INT, i, TAG_MATRIX_PARTITION,
MPI_COMM_WORLD, &status);
// Sort the received part with the ones previously acquired
chunk = merge(chunk, s * i, other + offset, s);

offset += s;

74
}

Δδώ κεηξάκε μερσξηζηά ηα ρξνληθά δηαζηήκαηα θαηά ηα νπνία ε θεληξηθή δηεξγαζία


ιακβάλεη ην ηκήκα ιίζηαο θάζε άιιεο t _ receiveP θαη ηα ρξνληθά δηαζηήκαηα πνπ

απαηηνύληαη γηα ηελ πξνζάξηεζε θάζε λένπ ηκήκαηνο t _ mergeP . Τν ζπλνιηθό ελεξγό

δηάζηεκα γηα ηελ θεληξηθή δηεξγαζία πξνθύπηεη από ην άζξνηζκα ηνπ ζπλόινπ ρξνληθώλ
δηαζηεκάησλ ιήςεο. Γηα ηηο ππόινηπεο δηεξγαζίεο πξνθύπηεη σο ην άζξνηζκα ησλ
δηαζηεκάησλ πνπ θάζε κία ζηέιλεη ζηελ θεληξηθή ην ηκήκα πίλαθα πνπ ηεο αλαινγεί.

P 1
t _ receiveactive    2* t _ receivei  t _ mergei   7.19
i 1

Ο ζπλνιηθόο ρξόλνο πνπ δαπαλάηαη ζε απηή ηε δηαδηθαζία από όιεο ηηο δηεξγαζίεο ηνπ
ζπζηήκαηνο είλαη:

P 1
t _ receivetotal  P *   t _ receivei  t _ mergei   7.20
i 1

Έηζη ν ρξόλνο αδξάλεηαο πξνθύπηεη:

t _ receiveidle  t _ receivetotal  t _ receiveactive  7.21

7.4.3) Παράλληλο τμήμα


Απνηειείηαη από ηελ εθηέιεζε ησλ απαξαίηεησλ ινγηθώλ ή αξηζκεηηθώλ πξάμεσλ
θαη κεηαζρεκαηηζκώλ από ηνπο ζα πξνθύςεη ην επηζπκεηό απνηέιεζκα. Γηα ηνλ αιγόξηζκν
πνιιαπιαζηαζκνύ πηλάθσλ ζπλίζηαηαη από ηνπο απαξαίηεηνπο πνιιαπιαζηαζκνύο θαη
πξνζζέζεηο ζηνηρείσλ κεηαμύ ηκήκαηνο ηνπ πίλαθα A θαη ηνπ πίλαθα B. Σηνλ αιγόξηζκν
merge sort ην παξάιιειν ηκήκα πεξηιακβάλεη ηελ αλαδξνκηθή ππνδηαίξεζε ηνπ ηκήκαηνο
chunk πνπ έρεη ιάβεη θάζε δηεξγαζία θαη ζηε ζπλέρεηα ηε ζπλέλσζε θνκκαηηώλ κέζσ ηεο
ζύγθξηζεο ησλ ζηνηρείσλ ηνπο.

Τε ρξνληθή δηάξθεηα ηνπ παξάιιεινπ ηκήκαηνο t _ paralleli ηε κεηξάκε ζε θάζε

δηεξγαζία μερσξηζηά. Γηα ηνλ ππνινγηζκό ηνπ ζπλνιηθνύ ελεξγνύ ρξνληθνύ δηαζηήκαηνο
ζεσξνύκε αξρηθά όηη ην δηάζηεκα πνπ απαηηεί θάζε δηεξγαζία είλαη ίζν κε απηό ηεο
θεληξηθήο.

t _ paralleltotal  P * t _ parallelmaster  7.22

75
Γηα ηηο δηεξγαζίεο πνπ εθηεινύλ ηαρύηεξα από ηελ θεληξηθή ην παξάιιειν ηκήκα ε δηαθνξά
ησλ ρξόλσλ εθηέιεζεο ζεσξείηαη t _ parallelidle πνπ πξνθύπηεη από ην άζξνηζκα ησλ

δηαθνξώλ απηώλ:

P 1
t _ parallelidle   t _ parallelmaster  t _ paralleli  7.23
i 1

t _ parallelmaster : Γηάξθεηα εθηέιεζεο ηνπ παξάιιεινπ ηκήκαηνο από ηελ θεληξηθή


δηεξγαζία

t _ paralleli : Γηάξθεηα εθηέιεζεο ηνπ παξάιιεινπ ηκήκαηνο από ηελ δηεξγαζία κε rank=i

Γηα ηα κεραλήκαηα πνπ απαηηνύλ πεξηζζόηεξν ρξόλν από απηό πνπ αλαιακβάλεη ηελ
θεληξηθή δηεξγαζία ε δηαθνξά ησλ ρξόλσλ εθηέιεζεο ζεσξείηαη t _ parallelactive και

προκφπτει από το άκροιςμα:

P 1
t _ parallelactive   t _ paralleli  t _ parallelmaster  7.24
i 1

Γηα ηελ εύξεζε ηεο ηειηθήο ηηκήο ησλ ζπλνιηθώλ ελεξγώλ θαη αδξαλώλ ρξόλσλ
πξνζαξκόδνπκε ηελ t _ paralleltotal πνπ ππνινγίζακε αξρηθά ζύκθσλα κε ηηο ηηκέο

t _ parallelactive θαη t _ parallelidle .

7.4.4) Συνολικοί χρόνοι αδράνειασ και πλήρουσ φορτίου


Σύκθσλα κε όζα αλαπηύρζεθαλ παξαπάλσ, νη ζπλνιηθνί αδξαλείο θαη ελεξγνί ρξόλνη
θαηά ηελ εθηέιεζε ησλ αιγνξίζκσλ από θαηαλεκεκέλν ζύζηεκα P κεραλεκάησλ
πξνθύπηνπλ :

timeidle  t _ serialidle *  P  1  t _ broadcastidle  t _ sendidle  t _ receiveidle


 7.25
 t _ parallelidle  t _ parallelactive

timeactive  t _ serialactive  t _ broadcastactive  t _ sendactive  t _ paralleltotal


 7.26
 t _ parallelactive  t _ parallelidle  t _ receiveactive

76
Master
Serial
Broadcast
Process1 Send
Parallel
Receive
Process2

Σχ. 7.2. Ανάλυςθ τθσ εκτζλεςθσ παράλλθλου πολλαπλαςιαςμοφ πινάκων ςτα επιμζρουσ χρονικά διαςτιματα
για ςφςτθμα τριϊν διεργαςιϊν.

Serial
Master
Broadcast
Send
Parallel
Process1
Receive1
Merge1
Receive2
Process2
Merge2

Σχ. 7.3. Ανάλυςθ τθσ εκτζλεςθσ αλγορίκμου merge sort ςτα επιμζρουσ χρονικά διαςτιματα για ςφςτθμα
τριϊν διεργαςιϊν.

77
8) Πειραματικά αποτελζςματα

8.1) Αλγόριθμοσ πολλαπλαςιαςμοφ πινάκων


Σην θεθάιαην απηό παξνπζηάδνληαη ηα απνηειέζκαηα πνπ πξνέθπςαλ από ηηο
κεηξήζεηο θαη ηνπο ππνινγηζκνύο θαηά ηελ εθηέιεζε ηνπ αιγόξηζκνπ πνιιαπιαζηαζκνύ
πηλάθσλ γηα 3 δηαθνξεηηθά κεγέζε. Οη ηηκέο πνπ παξνπζηάδνληαη ζηα δηαγξάκκαηα είλαη
θαλνληθνπνηεκέλεο ώζηε λα δηεπθνιύλεηαη ε αμηνιόγεζή ηνπο. Τα απνηειέζκαηα
αλαθέξνληαη ζην θαηαλεκεκέλν ζύζηεκα 10 κεραλεκάησλ ηνπ εξγαζηεξίνπ Αξρηηεθηνληθήο
Υπνινγηζηώλ θαη Σπζηεκάησλ Υςειώλ Δπηδόζεσλ.

Πιν. 8.1. Ενεργειακι αποδοτικότθτα του κατανεμθμζνου ςυςτιματοσ.

Πιήζος Energy Efficiency


κεταλεκάηφλ (Flops/W)
2 763536
3 776720
4 812429
5 825472
6 844009
7 828622
8 817696
9 834476
10 849164

Τν δεκνθηιέζηεξν κέγεζνο γηα ηελ πεξηγξαθή ηεο ελεξγεηαθήο απόδνζεο ελόο


ππνινγηζηηθνύ ζπζηήκαηνο είλαη ην πιήζνο πξάμεσλ θηλεηήο ππνδηαζηνιήο πνπ κπνξεί λα
πξαγκαηνπνηήζεη αλά δεπηεξόιεπην πξνο ηελ ηζρύ ιεηηνπξγίαο ηνπ (Flops/Watt). Απηό είλαη
ην κέγεζνο πνπ ρξεζηκνπνηείηαη θαη ζηελ ιίζηα Green500 ε νπνία πεξηέρεη ηελ θαηάηαμε κε
ηνπο 500 ελεξγεηαθά απνδνηηθόηεξνπο ππεξππνινγηζηέο παγθνζκίσο [31]. Ο παξαπάλσ
πίλαθαο πεξηέρεη ηηο ηηκέο Flops/Watt πνπ ππνινγίζηεθαλ γηα ην θαηαλεκεκέλν ζύζηεκα ηνπ
εξγαζηεξίνπ.

78
Πιν. 8.1. Επιτάχυνςθ, καταναλιςκόμενθ ενζργεια και μζςθ ιςχφσ λειτουργίασ για το κατανεμθμζνο ςφςτθμα
κατά τθν εκτζλεςθ του αλγορίκμου παράλλθλου πολλαπλαςιαςμοφ πινάκων.

ΠΑΡΑΛΛΗΛΟ΢ ΠΟΛΛΑΠΛΑ΢ΙΑ΢ΜΟ΢ ΠΙΝΑΚΩΝ


Μέγεζος
100x100 300x300 1000x1000
πίλαθα
Παράιιειο
91,345% 98,08% 99,456%
ποζοζηό
Μέζε Μέζε Μέζε
Μεταλήκα Δλέργεηα Δλέργεηα Δλέργεηα
Spdup ηζτύς Spdup ηζτύς Spdup ηζτύς
ηα (Joule) (Joule) (Joule)
(Watt) (Watt) (Watt)

1 1,000 1,666 128,00 1,000 68,70 128,00 1,000 2717,06 128,00

2 1,416 2,248 244,45 1,797 71,90 240,80 1,946 2749,29 252,09

3 1,634 2,738 343,74 2,370 81,48 359,78 2,817 2813,98 373,38

4 1,704 3,281 429,42 2,916 84,69 460,09 3,665 2837,02 489,81

5 1,740 3,966 529,94 3,317 90,71 560,55 4,421 2923,37 608,83

6 1,698 4,679 609,98 3,635 98,12 664,51 4,995 3027,34 712,34

7 1,786 5,087 697,88 3,841 104,50 747,96 5,584 3107,49 817,48

8 1,803 5,611 776,90 3,920 113,38 828,07 6,433 3083,82 934,64

9 1,705 6,828 893,96 4,186 120,39 938,98 6,966 3172,18 1041,00

10 1,560 7,971 954,69 4,362 127,30 1034,52 7,319 3308,90 1140,91

79
Η επιτάχυνςθ που πετυχαίνουμε για πολλαπλαςιαςμό πινάκων διαςτάςεων
100x100 φτάνει μόλισ το 1,803 ςτα 8 μθχανιματα και ζπειτα παρουςιάηει πτώςθ για
ςφςτθμα 9 και 10 μθχανθμάτων. Αυτό οφείλεται ςτθ μικρι χρονικι διάρκεια του
παράλλθλου τμιματοσ μόλισ 0,0119 δευτερόλεπτα θ οποία δεν προςφζρει περικώρια για
επιτάχυνςθ. Σε ςυνδυαςμό με το αυξανόμενο κόςτοσ επικοινωνίασ κάκε φορά που
χρθςιμοποιοφμε μεγαλφτερο πλικοσ μθχανθμάτων, οδθγεί τελικά ςτθ ςταδιακι μείωςι
τθσ. Η εκκετικι πτώςθ τθσ επιτάχυνςθσ ςε ςχζςθ με το ςειριακό ποςοςτό γίνεται εμφανισ
από τισ μετριςεισ που παρουςιάηονται. Ραρατθροφμε ότι κατά τθ μετάβαςθ από πίνακεσ
διάςταςθσ 100x100 ςε 300x300 ζχουμε μείωςθ του ςειριακοφ ποςοςτοφ κατά 6,7%
πετυχαίνοντασ αφξθςθ ςτθν μζγιςτθ επιτάχυνςθ ίςθ με 2,56. Πμωσ όταν ζχουμε πίνακεσ
διάςταςθσ 1000x1000 με περεταίρω μείωςθ το ςειριακοφ ποςοςτοφ κατά μόλισ 1,5%
πετυχαίνουμε αφξθςθ ςτθ μζγιςτθ επιτάχυνςθ ίςθ με 3,05 μζγεκοσ που περιορίηεται από το
πλικοσ μθχανθμάτων που ζχουμε διακζςιμο.

Η ενζργεια που καταναλώνεται ςτο παράλλθλο τμιμα του αλγορίκμου από


ςφςτθμα με μθχανιματα ίςθσ ιςχφοσ λειτουργίασ είναι ςτακερι ανεξάρτθτα από το πλικοσ
μθχανθμάτων που χρθςιμοποιοφμε. Επομζνωσ θ αφξθςθ ςτθ ςυνολικι ενζργεια οφείλεται
ςτθν ςυνεχι αφξθςθ του κόςτουσ επικοινωνίασ και των μθχανθμάτων που βρίςκονται ςε
αδράνεια κατά τθν εκτζλεςθ του ςειριακοφ τμιματοσ. Αυτό επαλθκεφεται κακώσ για
μζγεκοσ πινάκων 100x100 θ ενζργεια που απαιτείται για 10 μθχανιματα είναι 4,78 φορζσ
περιςςότερθ από αυτι που δαπανάται ςτθ ςειριακι εκτζλεςθ. Το αντίςτοιχο μζγεκοσ για
πίνακεσ 300x300 είναι 1,85 και για 1000x1000 μειώνεται ςτο 1,21.

Η μζγιςτθ ιςχφσ λειτουργίασ για το ςφςτθμα εντοπίηεται ςτο διάςτθμα εκτζλεςθσ


του παράλλθλου τμιματοσ κακώσ το ςφνολο των μθχανθμάτων απορροφά ιςχφ πλιρουσ
φορτίου εκτελώντασ απαιτθτικζσ εργαςίεσ. Αντίκετα, θ ελάχιςτθ ιςχφσ λειτουργίασ
εντοπίηεται κατά τθν εκτζλεςθ του ςειριακοφ τμιματοσ κακώσ μόνο ζνα μθχάνθμα
βρίςκεται ςε ιςχφ πλιρουσ φορτίου με τα υπόλοιπα να βρίςκονται ςε κατάςταςθ
αδράνειασ. Τα παραπάνω επαλθκεφονται από τισ τιμζσ μζςθσ ιςχφοσ λειτουργίασ του
πίνακα 7.1 κακώσ παρατθροφμε αφξθςθ τθσ μζςθσ ιςχφοσ λειτουργίασ κακώσ αυξάνεται το
παράλλθλο ποςοςτό για το ίδιο πλικοσ μθχανθμάτων.

80
Θεωρθτικό Speedup
10
9
8
7
Επιτάχυνςθ

6
5 1000
4
300
3
2 100
1
0
1 2 3 4 5 6 7 8 9 10
Ρλικοσ μθχανθμάτων

Σχ. 8.2. Επιτάχυνςθ που προκφπτει από τον νόμο Amdahl.

Πειραμματικό Speedup
10
9
8
7
Επιτάχυνςθ

6
5 1000
4
300
3
2 100
1
0
1 2 3 4 5 6 7 8 9 10

Ρλικοσ μθχανθμάτων

Σχ. 8.3. Πραγματικι επιτάχυνςθ που μετρικθκε ςτο κατανεμθμζνο ςφςτθμα.

Η ζεκαληηθή δηαθνξά κεηαμύ πξαγκαηηθήο θαη ζεσξεηηθήο επηηάρπλζεο πξνθύπηεη


από ην γεγνλόο όηη ην κόλν κέγεζνο πνπ ιακβάλεη σο είζνδν ν λόκνο Amdahl είλαη ην
πνζνζηό ηνπ πξνγξάκκαηνο πνπ κπνξεί λα εθηειεζηεί παξάιιεια. Απηό ζεκαίλεη όηη αγλνεί
ην θόζηνο επηθνηλσλίαο κεηαμύ ησλ δηεξγαζηώλ. Καηά ηελ αύμεζε κεγέζνπο ηνπ ζπζηήκαηνο,
όηαλ ε δηάξθεηα ησλ δηαδηθαζηώλ επηθνηλσλίαο απμάλεηαη ζε κεγαιύηεξν βαζκό από όηη
κεηώλεηαη ε δηάξθεηα εθηέιεζεο ηνπ παξάιιεινπ ηκήκαηνο νη απνθιίζεηο από ηνλ παξαπάλσ
λόκν είλαη κεγάιεο. Γηα παξάδεηγκα, ζηα 10 κεραλήκαηα ην πνζνζηό ρξόλνπ επηθνηλσλίαο
πξνο παξάιιεινπ ηκήκαηνο είλαη 446,64% , 99,41% θαη 31,35% γηα παξάιιειν
πνιιαπιαζηαζκό πηλάθσλ δηαζηάζεσλ 100x100, 300x300 θαη 1000x1000 αληίζηνηρα.

81
Πιν. 8.2. Επιτάχυνςθ ανά καταναλιςκόμενθ ενζργεια και επιτάχυνςθ ανά μζςθ ιςχφ λειτουργίασ για το
κατανεμθμζνο ςφςτθμα κατά τθν εκτζλεςθ του αλγορίκμου παράλλθλου πολλαπλαςιαςμοφ πινάκων.

ΠΑΡΑΛΛΗΛΟ΢ ΠΟΛΛΑΠΛΑ΢ΙΑ΢ΜΟ΢ ΠΙΝΑΚΩΝ


Μέγεζος
100x100 300x300 1000x1000
πίλαθα
Παράιιειο
91,345% 98,08% 99,456%
ποζοζηό
Δπηηάτσλζε Δπηηάτσλζε Δπηηάτσλζε Δπηηάτσλζε Δπηηάτσλζε Δπηηάτσλζε
Μεταλήκαηα
αλά Joule αλά Watt αλά Joule αλά Watt αλά Joule αλά Watt

1 0,600 0,00781 0,0146 0,00781 0,00037 0,00781

2 0,630 0,00579 0,0250 0,00746 0,00071 0,00772

3 0,597 0,00475 0,0291 0,00659 0,00100 0,00754

4 0,519 0,00397 0,0344 0,00634 0,00129 0,00748

5 0,439 0,00328 0,0366 0,00592 0,00151 0,00726

6 0,363 0,00278 0,0370 0,00547 0,00165 0,00701

7 0,351 0,00256 0,0368 0,00513 0,00180 0,00683

8 0,321 0,00232 0,0346 0,00473 0,00209 0,00688

9 0,250 0,00191 0,0348 0,00446 0,00220 0,00669

10 0,196 0,00163 0,0343 0,00422 0,00221 0,00642

82
Speedup / Joule
7
6
Επιτάχυνςθ/Ενζργεια

5
4
1000
3
300
2
100
1
0
1 2 3 4 5 6 7 8 9 10
Ρλικοσ μθχανθμάτων

Σχ. 8.4. Επιτάχυνςθ ανά καταναλιςκόμενθ ενζργεια για τα διαφορετικά μεγζκθ πινάκων.

Τν κέγεζνο επηηάρπλζε αλά θαηαλαιηζθόκελε ελέξγεηα καο δίλεη ην πόζν ελεξγεηαθά


απνδνηηθή είλαη ε παξάιιειε εθηέιεζε ελόο αιγνξίζκνπ από ην ζύζηεκα πνπ δηαζέηνπκε.
Όπσο θαίλεηαη ζην ζρήκα 7.3 πνπ πεξηέρεη ηηο θαλνληθνπνηεκέλεο ηηκέο ηνπ παξαπάλσ
κεγέζνπο αιγόξηζκνη κε κεγαιύηεξν παξάιιειν πνζνζηό είλαη θαη ελεξγεηαθά
απνδνηηθόηεξνη ζηελ παξάιιειε εθηέιεζε. Αθόκα παξαηεξνύκε όηη αλ ε δηάξθεηα ηνπ
παξάιιεινπ θνξηίνπ είλαη ζπγθξίζηκε κε ηελ ζπλνιηθή δηάξθεηα εθηέιεζεο ηνπ αιγνξίζκνπ
ε παξάιιειε εθηέιεζε ηνπ αιγνξίζκνπ είλαη ελεξγεηαθά αζύκθνξε. Απηό γίλεηαη εκθαλέο
από ηελ κνξθή ηεο θακπύιεο ηνπ ζρήκαηνο γηα κέγεζνο πίλαθα 100x100.

Speedup / Watt
1,1
1
0,9
Επιτάχυνςθ/Ιςχφ

0,8
0,7
0,6
1000
0,5
0,4 300
0,3
100
0,2
0,1
0
1 2 3 4 5 6 7 8 9 10
Ρλικοσ μθχανθμάτων

Σχ. 8.5. Επιτάχυνςθ ανά μζςθ ιςχφ λειτουργίασ για τα διαφορετικά μεγζκθ πινάκων.

Τν κέγεζνο επηηάρπλζε πξνο κέζε ηζρύ ιεηηνπξγίαο όπσο είδακε θαη ζην θεθάιαην 6
κπνξεί λα εξκελεπηεί σο ην πνζνζηό ελέξγεηαο ζηελ παξάιιειε εθηέιεζε πνπ δαπαλήζεθε

83
γηα σθέιηκν έξγν. Η ηηκή 1, δειαδή 100% επηηπγράλεηαη κόλν ζηε ζεηξηαθή εθηέιεζε θαη
ζην ζεσξεηηθό ζελάξην αιγνξίζκνπ απνηεινύκελνπ εμνινθιήξνπ από παξαιιεινπνηήζηκεο
εξγαζίεο. Σε ζύζηεκα 10 κεραλεκάησλ γηα πίλαθεο 1000x1000 έρνπκε 82% ηεο ζπλνιηθήο
ελέξγεηαο λα παξέρεηαη ζηηο αξηζκεηηθέο πξάμεηο γηα ηνλ ππνινγηζκό κε ην ππόινηπν λα
δαπαλάηαη ζηελ επηθνηλσλία θαη ζε ζηάδηα αδξάλεηαο. Η πςειή απηή ηηκή νθείιεηαη ζηελ
κεγάιε ππνινγηζηηθή πνιππινθόηεηα ηεο πξάμεο πνιιαπιαζηαζκνύ πηλάθσλ θαζώο ε
δηάξθεηα πνπ απαηηείηαη γηα ηελ νινθιήξσζή ηεο θιηκαθώλεηαη ξαγδαία ζε ζρέζε κε ην
θόζηνο επηθνηλσλίαο.

8.2) Αλγόριθμοσ ταξινόμηςησ merge sort


Σην θεθάιαην απηό παξνπζηάδνληαη ηα απνηειέζκαηα πνπ πξνέθπςαλ από ηηο
κεηξήζεηο θαη ηνπο ππνινγηζκνύο γηα ηελ εθηέιεζε ηνπ αιγόξηζκνπ ηαμηλόκεζεο merge sort.
Οη ηηκέο πνπ παξνπζηάδνληαη πξνέθπςαλ γηα ην θαηαλεκεκέλν ζύζηεκα 10 κεραλεκάησλ ηνπ
εξγαζηεξίνπ Αξρηηεθηνληθήο Υπνινγηζηώλ θαη Σπζηεκάησλ Υςειώλ Δπηδόζεσλ.

Η κέγηζηε επηηάρπλζε πνπ πεηπραίλνπκε γηα πίλαθα 100 ρηιηάδσλ ζηνηρείσλ είλαη
1,91 όηαλ ν αιγόξηζκνο εθηειείηαη από ζύζηεκα 5 κεραλεκάησλ θαη γηα κεγαιύηεξα
ζπζηήκαηα παξνπζηάδεηαη θαζνδηθή ηάζε. Αθόκα θαη ε δξακαηηθή αύμεζε ησλ ζηνηρείσλ
ζηα 8 εθαηνκκύξηα αληηζηνηρεί ζε αύμεζε ηνπ παξάιιεινπ πνζνζηνύ ηνπ αιγνξίζκνπ θαηά
κόιηο 1,13%. Γηα ην πιήζνο ζηνηρείσλ απηό ε κέγηζηε επηηάρπλζε επηηπγράλεηαη κε ηε ρξήζε
ζπζηήκαηνο 8 κεραλεκάησλ θαη ηζνύηαη κε 2,244. Τα ζηνηρεία απηά επαιεζεύνπλ ηελ πςειή
απνδνηηθόηεηα ηνπ αιγνξίζκνπ ε νπνία νθείιεηαη ζηελ ππνινγηζηηθή πνιππινθόηεηά ηνπ

O  n log n  . Πξάγκα πνπ ζεκαίλεη όηη θαζώο απμάλνπκε ζε κεγάιν βαζκό ην κέγεζνο ηνπ
πξνβιήκαηνο, νη ππνινγηζκνί θαη επνκέλσο ν ρξόλνο πνπ απαηηείηαη γηα ηε ιύζε ηνπ
απμάλνπλ κε δπζαλάινγα αξγό ξπζκό.

Δπεηδή ην παξάιιειν πνζνζηό ζηα δύν κεγέζε ηνπ πξνβιήκαηνο δελ δηαθέξεη
ζεκαληηθά, ν ξπζκόο αύμεζεο ηεο ελέξγεηαο θαηαλάισζεο πνπ παξαηεξείηαη είλαη ζρεδόλ
ηζνδύλακνο. Σπγθεθξηκέλα, ην πνζό ελέξγεηαο πνπ απαηηείηαη γηα πινπνίεζε κε 10
κεραλήκαηα θαη κέγεζνο 100ρηι θαη 8εθ είλαη αληίζηνηρα 2,86 θαη 2,48 θνξέο κεγαιύηεξν
από απηό ηεο ζεηξηαθήο εθηέιεζεο.

84
Πιν. 8.3. Επιτάχυνςθ, καταναλιςκόμενθ ενζργεια και μζςθ ιςχφσ λειτουργίασ για το κατανεμθμζνο ςφςτθμα
κατά τθν εκτζλεςθ του αλγορίκμου ταξινόμθςθσ merge sort.

ΠΑΡΑΛΛΗΛΗ ΣΑΞΙΝΟΜΗ΢Η MERGE SORT


Μέγεζος
100K 8M
Πίλαθα
Παράιιειο
93,065% 94,198%
ποζοζηό
Μέζε
Δλέργεηα Μέζε ηζτύς Δλέργεηα
Μεταλήκαηα Spdup Spdup ηζτύς
(Joule) (Watt) (Joule)
(Watt)

1 1 7,57 128 1 746,18 128

2 1,495 9,51 240,52 1,589 892,05 243,07

3 1,745 10,97 323,72 1,907 1017,08 332,68

4 1,830 12,61 390,25 2,087 1128,61 404,06

5 1,910 13,80 445,74 2,152 1264,02 466,54

6 1,835 15,98 495,83 2,238 1344,95 516,41

7 1,795 17,83 541,24 2,241 1465,49 563,23

8 1,849 18,51 578,67 2,244 1578,06 607,47

9 1,803 20,25 617,53 2,209 1709,04 647,58

10 1,768 21,67 647,87 2,151 1849,95 682,46

85
Καηά ηελ εθηέιεζε ελόο 100% παξαιιεινπνηήζηκνπ αιγόξηζκνπ έλα
ζύζηεκα P κεραλεκάησλ κε ηζρύ πιήξνπο θνξηίνπ K ζα απνξξνθνύζε κέζε ηζρύ
P*K . Γηα ηνλ αιγόξηζκν merge sort παξαηεξνύκε όηη γηα 10 κεραλήκαηα ε ηζρύο πνπ
απνξξνθά ην ζύζηεκα είλαη 5,06*K θαη 5,33*K γηα κέγεζνο πίλαθα 100ρηι θαη 8εθ
αληίζηνηρα.

Θεωρθτικό Speedup
7
6
5
Επιτάχυνςθ

4
3 8M
2 100K
1
0
1 2 3 4 5 6 7 8 9 10
Ρλικοσ μθχανθμάτων

Σχ. 8.5. Επιτάχυνςθ που προκφπτει από τον νόμο Amdahl.

Πειραματικό Speedup
7
6
5
Επιτάχυνςθ

4
3 8M
2 100K
1
0
1 2 3 4 5 6 7 8 9 10
Ρλικοσ μθχανθμάτων

Σχ. 8.6. Πραγματικι επιτάχυνςθ που μετρικθκε ςτο κατανεμθμζνο ςφςτθμα.

86
Πιν. 8.4. Επιτάχυνςθ ανά καταναλιςκόμενθ ενζργεια και επιτάχυνςθ ανά μζςθ ιςχφ λειτουργίασ για το
κατανεμθμζνο ςφςτθμα κατά τθν εκτζλεςθ του αλγορίκμου merge sort.

ΠΑΡΑΛΛΗΛΗ ΣΑΞΙΝΟΜΗ΢Η MERGE SORT


Μέγεζος
100K 8M
Πίλαθα
Παράιιειο
93,065% 94,198%
ποζοζηό
Δπηηάτσλζε αλά Δπηηάτσλζε αλά Δπηηάτσλζε αλά Δπηηάτσλζε αλά
Μεταλήκαηα
Joule Watt Joule Watt

1 0,132 0,00781 0,00134 0,00781

2 0,157 0,00622 0,00178 0,00654

3 0,159 0,00539 0,00187 0,00573

4 0,145 0,00469 0,00185 0,00517

5 0,138 0,00429 0,00170 0,00461

6 0,115 0,0037 0,00166 0,00433

7 0,101 0,00332 0,00153 0,00398

8 0,1 0,00320 0,00142 0,00369

9 0,089 0,00292 0,00129 0,00341

10 0,082 0,00273 0,00116 0,00315

87
Speedup / Joule
1,6
1,4
Επιτάχυνςθ/Ενζργεια

1,2
1
0,8
8M
0,6
0,4 100K
0,2
0
1 2 3 4 5 6 7 8 9 10
Ρλικοσ μθχανθμάτων

Σχ. 8.7. Επιτάχυνςθ ανά καταναλιςκόμενθ ενζργεια για τα διαφορετικά μεγζκθ πινάκων.

Η δξακαηηθή δηαθνξά κεηαμύ ζεσξεηηθήο θαη πξαγκαηηθήο επηηάρπλζεο εληνπίδεηαη


ζην γεγνλόο όηη ν λόκνο Amdahl ιακβάλεη ππόςε κόλν ηε ζεηξηαθή εθδνρή ηνπ αιγνξίζκνπ.
Έηζη δελ πξνβιέπεη γηα ην επηθνηλσληαθό θόζηνο, νύηε γηα ηηο επηπιένλ ελέξγεηεο πνπ κπνξεί
λα απαηηεί ε παξάιιειε έθδνζε. Σηνλ αιγόξηζκν merge sort ε έλσζε ησλ ηαμηλνκεκέλσλ
ηκεκάησλ πνπ ιακβάλεη ε θεληξηθή δηεξγαζία απνηειεί ζεκαληηθό παξάγνληα επηβάξπλζεο
πνπ ππάξρεη απνθιεηζηηθά ζηνλ παξάιιειν αιγόξηζκν.

Η ελεξγεηαθή απόδνζε ηεο παξαιιεινπνίεζεο γηα ηνλ αιγόξηζκν merge sort


παξνπζηάδεη κηθξή άλνδν αθνινπζνύκελε από ζπλερή θαζνδηθή πνξεία θαζώο επεθηείλνπκε
ηε δηάζηαζε ηνπ θαηαλεκεκέλνπ ζπζηήκαηνο. Απηή ε ηάζε παξαηεξείηαη θαη ζηα δύν κεγέζε
ηνπ πξνβιήκαηνο παξά ηελ ζεκαληηθή δηαθνξά ηνπο, πξάγκα πνπ εμεγείηαη από ηελ ρακειή
ππνινγηζηηθή πνιππινθόηεηα ηνπ αιγνξίζκνπ. Τν παξαπάλσ ζε ζπλδπαζκό κε ην
απμαλόκελν παξάιιειν θνξηίν καο δείρλεη όηη ε εθηέιεζε ηνπ αιγνξίζκνπ είλαη ελεξγεηαθά
αζύκθνξε γηα εθηελή παξάιιεια ζπζηήκαηα.

88
Speedup / Watt
1,2

1
Επιτάχυνςθ/Ιςχφ

0,8

0,6
8M
0,4
100K
0,2

0
1 2 3 4 5 6 7 8 9 10
Ρλικοσ μθχανθμάτων

Σχ. 8.8. Επιτάχυνςθ ανά μζςθ ιςχφ λειτουργίασ για τα διαφορετικά μεγζκθ πινάκων.

Τν πνζνζηό ζπλνιηθήο ελέξγεηαο πνπ δαπαλάηαη ζηελ ηαμηλόκεζε ζηνηρείσλ


κεηώλεηαη ζε κεγάιν βαζκό θαζώο ηα όιν θαη πεξηζζόηεξα κεραλήκαηα πνπ ρξεζηκνπνηνύκε
απμάλνπλ ην παξάιιειν θνξηίν. Η πεξηνξηζκέλε αύμεζε ηεο δηάξθεηαο ηνπ παξάιιεινπ
ηκήκαηνο γηα κέγεζνο πίλαθα από 100ρηι ζηνηρεία ζηα 8εθ είλαη εκθαλήο από ην γεγνλόο όηη
νη δύν γξαθηθέο παξαζηάζεηο είλαη όκνηεο. Σπγθεθξηκέλα, ζηα 10 κεραλήκαηα γηα 100ρηι θαη
8εθ ζηνηρεία έρνπκε 35% θαη 40% πνζνζηό σθέιηκεο ελέξγεηαο αληίζηνηρα.

89
9) Συμπεράςματα
Η κειέηε ησλ αιγνξίζκσλ πνιιαπιαζηαζκνύ πηλάθσλ θαη ηαμηλόκεζεο merge sort
θαζώο θαη ηα απνηειέζκαηα πνπ πξνέθπςαλ από ηηο πεηξακαηηθέο κεηξήζεηο θαη ηνπο
ππνινγηζκνύο κεγεζώλ καο νδεγνύλ ζηα παξαθάησ ζπκπεξάζκαηα.

Η ππνινγηζηηθή πνιππινθόηεηα απνηειεί πνιύ ζεκαληηθό δείθηε γηα ηελ αμηνιόγεζε


ηεο παξαιιεινπνίεζεο ελόο αιγνξίζκνπ γεγνλόο πνπ θαίλεηαη από ηε ζύγθξηζε ησλ
επηηαρύλζεσλ ηνπ πνιιαπιαζηαζκνύ πηλάθσλ έλαληη ηεο ηαμηλόκεζεο merge sort. Όκσο δελ
απνηειεί ηνλ κνλαδηθό παξάγνληα πνπ επεξεάδεη ηελ απόδνζε ελόο παξάιιεινπ αιγνξίζκνπ,
εμίζνπ ζεκαληηθό ξόιν παίδεη θαη ν βαζκόο αλάιπζήο ηνπ (granularity). Απηόο ζπκβνιίδεη ην
πόζν ζπρλά πξέπεη λα επηθνηλσλνύλ νη δηεξγαζίεο κεηαμύ ησλ ππνινγηζκώλ δίλνληάο καο
ζαθή εηθόλα γηα ην θόζηνο επηθνηλσλίαο. Ο αιγόξηζκνο πνιιαπιαζηαζκνύ πηλάθσλ αλήθεη
ζηελ θαηεγνξία nearly embarrassingly parallel θαζώο ε κόλε αλάγθε επηθνηλσλίαο είλαη γηα
λα κνηξαζηνύλ ηα αξρηθά δεδνκέλα θαη λα ιεθζνύλ ηα απνηειέζκαηα. Ο αιγόξηζκνο merge
sort δελ έρεη ηόζν πςειό βαζκό αλάιπζεο θαζώο κεηά ηε ιήςε ησλ απνηειεζκάησλ
απαηηνύληαη επηπιένλ εξγαζίεο γηα λα πξνθύςεη ν ηειηθόο πίλαθαο, γεγνλόο πνπ πεξηνξίδεη ην
παξάιιειν πνζνζηό ηνπ.

Τν πνζό ελέξγεηαο πνπ θαηαλαιώλεηαη από ζπκκεηξηθό παξάιιειν ζύζηεκα είλαη


ζηαζεξό αλεμάξηεηα από ην πιήζνο ησλ κεραλεκάησλ πνπ ζπκκεηέρνπλ ζηελ παξάιιειε
εθηέιεζε. Έηζη ε αύμεζε ηεο θαηαλαιηζθόκελεο ελέξγεηαο κε ην κέγεζνο ηνπ παξάιιεινπ
ζπζηήκαηνο νθείιεηαη απνθιεηζηηθά ζην ζπλερώο απμαλόκελν παξάιιειν θνξηίν.

Η κέζε ηζρύο ιεηηνπξγίαο ηνπ ζπζηήκαηνο θαηά ηελ παξάιιειε εθηέιεζε ελόο
αιγνξίζκνπ κπνξεί λα απνηειέζεη δείθηε ηνπ θαηά πόζν παξαιιεινπνηήζηκνο είλαη. Απηό
θαίλεηαη από ηε ζύγθξηζε ησλ ηηκώλ κέζεο ηζρύνο ζηνπο δύν δηαθνξεηηθνύο αιγόξηζκνπο
πνπ κειεηήζεθαλ. Τν γεγνλόο απηό ζηεξίδεηαη ζην όηη θαηά ηελ πιήξε ηζρύ ιεηηνπξγίαο ην
κεράλεκα πινπνηεί ηνπο αλαγθαίνπο ππνινγηζκνύο, ελώ ζε ρακειόηεξε ηζρύ βξίζθεηαη ζε
θαηάζηαζε αλακνλήο, δειαδή νη πόξνη ηνπ δελ αμηνπνηνύληαη.

Τν θαλνληθνπνηεκέλν κέγεζνο επηηάρπλζε αλά ελέξγεηα πνπ θαηαλαιώζεθε


(Speedup/Joule) θαλεξώλεη γηα έλαλ αιγόξηζκν ην κέγεζνο ζπζηήκαηνο πνπ κεγηζηνπνηεί ηε
ζρέζε ππνινγηζηηθήο θαη ελεξγεηαθήο απνδνηηθόηεηαο.

90
Βιβλιογραφία
[1] M. Smotherman. IBM Stretch (7030) -- Aggressive Uniprocessor Parallelism. [Online].
Available: https://people.computing.clemson.edu/~mark/stretch.html

[2] M. Flynn, “Very High-Speed Computing Systems,” in Proceedings of the IEEE, vol. 54,
no. 12, 1966, pp. 1901–1909.

[3] S. Graham, M. Snir and C. Patterson, Getting Up to Speed: The Future of


Supercomputing, Washington, USA: The National Academies Press, 2005.

[4] “Big.LITTLE Technology: The Future of Mobile.” ARM Limited, 2013.

[5] B. Moyer, “Communication Arcitectures,” in Real World Multicore Embedded


Systems: A Practical Approach: Expert Guide, Oxford, UK: Newnes, 2013, pp. 49-59

[6] H. El-Rewini and M. Abd-El-Barr, “Multiprocessors Interconnection Networks,” in


Advanced Computer Architecture and Parallel Processing, Hoboken, NJ, USA: John
Wiley and Sons, 2005, pp. 19-33.

[7] W. Stallings, “Parallel Organization,” in Computer Organization and Architecture,


Hoboken, NJ, USA: Pearson Education, 2016, pp. 615-627.

[8] D. Chaiken, “Directory-Based Cache Coherence in Large-Scale Multiprocessors,” in


Computer, vol. 23, no. 6, 1990, pp. 49–58.

[9] Β. Β. Δθμακόπουλοσ, “ Κρυφζσ μνιμεσ και το πρόβλθμα τθσ ςυνοχισ, ” in


Παράλληλα Συστήματα Και Προγραμματισμός, ΣΕΑΒ, 2017, pp. 44-46.

[10] IBM. What Is Distributed Computing. [Online]. Available:


https://www.ibm.com/docs/en/txseries/8.2?topic=overview-what-is-distributed-
computing.

[11] A. Zomaya, “Models of Parallel Computation,” in Parallel and Distributed


Computing Handbook. ,NY, USA: McGraw Hill, 1996, pp. 334-339.

[12] Sterling, M. Anderson and M. Brodowicz,”Cluster elements,” in High Performance


Computing, Cambridge, MA, USA: Morgan Kaufmann ,2017, pp. 85-86.

[13] G. F. Pfister, “Cluster Computing,” in Encyclopedia of Computer Science, 4th ed.


Hoboken, NJ, USA: Wiley, 2003, pp. 218–221.

91
[14] M. Jurczyk, H. J. Siegel and C. Stunkel, “Interconnection Networks for Parallel
Computers,” in Wiley Encyclopedia of Computer Science and Engineering, vol. 3,
B.W.Wah, Eds. Hoboken, NJ, USA: J.Wiley, 2009, pp. 1613-1622.

[15] J. Flower and A. Kolowa, “A ‘packet’ history of message passing systems,” in


Physics Reports, Volume 207, Issues 3–5, 1991, pp. 291-304.

[16] The MPI Forum, “MPI: a message passing interface,” in Supercomputing ’93:
Proceedings of the 1993 ACM/IEEE conference on Supercomputing. New York, NY,
USA: ACM Press, 1993

[17] P. Balaji. (2010) Parallel Programming with MPI [PowerPoint Slides]. Available:
https://www.mcs.anl.gov/~balaji/tmp/csdms-mpi-basic.pdf

[18] Open MPI org. Running MPI jobs. [Online]. Available: https://www.open-
mpi.org/faq/?category=running#oversubscribing

[19] F. Nielsen,” Global Communications Between Pro” in Introduction To HPC With MPI
For Data Science , Switzerland: Springer, 2016, pp. 23-28.

[20] M. J. Quinn, “Message-Passing Programming,” in Parallel Programming in C with


MPI and Openmp, Dubuque, IA, USA: McGraw-Hill Education, 2004, pp. 93-108.

[21] The MPI forum, “MPI-3.0 and MPI-3.1 Overview – LRZ,” in Message Passing
Interface Forum, 4 June 2015, Available:
https://www.lrz.de/services/compute/courses/x_lecturenotes/Parallel_Programmin
g_Languages_Workshop/MPI.pdf.

[22] J. Dongarra. Types of MPI calls. [Online]. Available: netlib.org/utk/papers/mpi-


book/node14.html

[23] Α.Μάργαρθσ, “MPI notes”, unpublished.

[24] W. Gropp, E. Lusk and A. Skjellum, “ Basic MPI concepts” in Using MPI_ Portable
Parallel Programming with the Message-Passing Interface, 3rd ed. London, England:
MIT Press, 2014, pp. 14-18

[25] Ding-Kai Chen, Hong-Men Su, Pen-Chung Yew, ”The impact of synchronization and
granularity on parallel systems,” in ACM SIGARCH Computer Architecture News,
Volume 18 Issue 2SI, June 1990, pp. 239–248

92
[26] J. Kwiatkowski,” Evaluation of Parallel Programs by Measurement of Its
Granularity,” in Parallel Processing and Applied Mathematics, 4th International
Conference, Sept. 2001, pp. 145-153.

[27] D. Kaeli, P. Mistry, D. Schaa and Dong Ping Zhang, “Device Architectures,” in
Heterogeneous Computing with OpenCL 2.0 , Waltham, MA, USA: Elsevier, 2015, pp.
26-33.

[28] G. Amdahl, “Validity of the Single Processor Approach to Achieving Large Scale
Computing Capabilities,” in Proceedings of the April 18-20, 1967, Spring Joint
Computer Conference on - AFIPS '67 (Spring), 1967, pp. 483-485.

[29] J. L. Gustafson, “Reevaluating Amdahl's Law,” in Proc. Communications of the ACM,


vol. 31, no. 5, 1988, pp. 532–533.

[30] Y. Shi, “Reevaluating Amdahl's Law and Gustafson's Law,” in Statistic Multiplexed
Computing, Nov. 1996.

[31] Top 500 org. [Online]. Available : https://www.top500.org/


[32] T. Mudge, “Power: A First-Class Architectural Design Constraint,” in Computer, Apr.
2001, pp. 52-58.
[33] D. H. Woo, H. S. Lee “Extending Amdahl’s Law for Energy-Efficient Computing in the
Many-Core Era,” in IEEE Computer, Dec. 2008, pp. 24-30.

[34] L. Hardesty. Explained: Matrices, MIT News Office [Online]. Available :


https://news.mit.edu/2013/explained-matrices-1206

[35] Boise State University. Embarrassingly parallel computations. [PowerPoint slides].


Available: https://cs.boisestate.edu/~amit/teaching/530/handouts/ep.pdf

[36] D. Knuth, "Section 5.2.4: Sorting by Merging," in The Art of Computer Programming,
Vol. 3, 2nd ed., USA: Addison-Wesley, 1998, pp. 158–168.
[37] Sort – Perl 5 version 8.8 documentation. [Online]. Available :
https://perldoc.perl.org/sort
[38] A. Spector and D. Gifford, "The space shuttle primary computer system,"
in Communications of the ACM, Vol. 27, issue 9, Sept. 1984, pp. 872–900.
[39] Σ. Αργφρθ, “Συγκριτικι μελζτθ των νόμων Amdahl/Gustafson και εφαρμογι ςε
ςφςτθμα χαμθλισ κατανάλωςθσ ιςχφοσ/ ενζργειασ,” Μεταπτυχιακι Διατριβι,
Τμιμα ΗΜΜΥ, ΔΡΘ, 2010.

93

You might also like