Professional Documents
Culture Documents
Διπλωματικι Εργαςία
Ηλιοφδθσ Αναςτάςιοσ
Α.Μ.:56714
Ξάνκθ, 2022
Σηην οικογένειά μος
Εσταριστίες
Σε αςηό ηο ζημείο θα ήθελα να εςσαπιζηήζυ θεπμά ηον Δπ. Ηπακλή Σπηλιώηη για ηην
καθοδήγηζη πος μος πποζέθεπε καηά ηη διάπκεια εκπόνηζηρ ηηρ παπούζαρ
διπλυμαηικήρ επγαζίαρ.
Τέλορ, θα ήθελα να εςσαπιζηήζυ ηην οικογένειά μος για ηη ζηήπιξη πος μος παπείσε ζε
όλη ηη διάπκεια ηυν θοιηηηικών μος σπόνυν.
Περίληψη
Η ύπαξμε πιήζνπο κνλάδσλ επεμεξγαζίαο ζην ίδην ππνινγηζηηθό ζύζηεκα θαη ε
παξάιιειε πινπνίεζε εξγαζηώλ θαληάδνπλ δεδνκέλεο ζηε ζύγρξνλε επνρή. Όκσο νη έλλνηεο
απηέο γηα λα θηάζνπλ ζηελ ηειηθή ηνπο επηθξάηεζε ήξζαλ ζε αληηπαξάζεζε κε ηελ
πξνϋπάξρνπζα ζεηξηαθή ινγηθή. Σηελ παξνύζα δηπισκαηηθή εξγαζία κειεηνύκε ηα
ζεσξήκαηα κε ηα νπνία νη ππνζηεξηθηέο ηεο ζεηξηαθήο θαη παξάιιειεο αξρηηεθηνληθήο
ππνινγηζηώλ αηηηνιόγεζαλ ηε ζηάζε ηνπο θαη ηα επεθηείλνπκε ζηνλ ηνκέα ελεξγεηαθήο
απνδνηηθόηεηαο. Αξρηθά ζπγθξίλνπκε ηα δύν ζεσξήκαηα πνπ πξναλαθέξζεθαλ θαη
απνηεινύλ ηνπο λόκνπο Amdahl θαη Gustafson ώζηε λα πξνθύςεη έλα ηειηθό ζπκπέξαζκα γηα
ηε ζρέζε ηνπο. Έπεηηα, γηα ηνπο αιγνξίζκνπο πνιιαπιαζηαζκνύ πηλάθσλ θαη ηαμηλόκεζεο
merge sort ρξεζηκνπνηήζεθε ην ζεώξεκα πνπ παξάγεη ηελ επηηάρπλζε γηα εθηέιεζε ζε
παξάιιειν ζύζηεκα. Οη παξαπάλσ αιγόξηζκνη επηιέρζεθαλ ιόγσ ηεο δηαθνξεηηθήο
θιηκάθσζεο ηνπ παξαιιεινπνηήζηκνπ ηκήκαηνο πνπ δηαζέηνπλ.
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
9) Συμπεράςματα .................................................................................................................... 90
Βιβλιογραφία .......................................................................................................................... 91
Ειςαγωγή
Από ηελ εκθάληζε ησλ πξώησλ ειεθηξνληθώλ ππνινγηζηώλ ζηα κέζα ηνπ εηθνζηνύ
αηώλα μεθίλεζε ν ζπλερήο αγώλαο γηα ηελ βειηίσζε ηεο απόδνζήο ηνπ. Όηαλ ε αύμεζε ησλ
transistor θαη ηεο ζπρλόηεηαο ξνινγηνύ ησλ επεμεξγαζηώλ απνδεηθλύνληαλ όιν θαη
δπζθνιόηεξε γηα ηα θαηαζθεπαζηηθά κέζα ηεο επνρήο πξνηάζεθε κία ελαιιαθηηθή ιύζε.
Απηή ζπληζηνύζε ηε ρξήζε πνιιώλ δηαθνξεηηθώλ επεμεξγαζηώλ πνπ εθηεινύλ ηαπηόρξνλα
εξγαζίεο γηα ηε ιύζε ηνπ ίδηνπ πξνβιήκαηνο. Η λέα αξρηηεθηνληθή δίραζε ηελ θνηλόηεηα ησλ
ζρεδηαζηώλ ππνινγηζηώλ κε απνηέιεζκα ε παξάιιειε επεμεξγαζία λα ζπλαληήζεη κεγάια
εκπόδηα κέρξη ηελ εδξαίσζή ηεο. Σηε ζύγρξνλε επνρή, ε αλαδήηεζε νινέλα θαη πςειόηεξεο
ππνινγηζηηθήο ηζρύνο παξακέλεη αθαηάπαπζηε αιιά ζπλνδεύεηαη από ηε ζηξνθή ζηελ
ελεξγεηαθή απνδνηηθόηεηα. Ο παξαπάλσ ζπζρεηηζκόο κεγεζώλ είλαη ηδηαίηεξα ζεκαληηθόο
ζηελ θαηεγνξία παξάιιεισλ ζπζηεκάησλ πνπ νλνκάδνληαη ππεξππνινγηζηέο ιόγσ ηεο
πςειήο ηζρύνο πνπ απαηηνύλ. Σηελ παξνύζα εξγαζία κειεηνύκε ηελ επηηάρπλζε πνπ
πξνθύπηεη από ηελ παξάιιειε εθηέιεζε αιγνξίζκσλ ζε ζύζηεκα θαηαλεκεκέλεο κλήκεο θαη
ηνλ ηξόπν πνπ απηή ζρεηίδεηαη κε ηελ θαηαλάισζε ελέξγεηαο θαη ηελ ηζρύ ιεηηνπξγίαο ηνπ
ζπζηήκαηνο απηνύ.
Σηα πξώηα ηξία θεθάιαηα πξνζεγγίδεηαη ε έλλνηα ηεο παξάιιειεο επεμεξγαζίαο από
πιεπξάο πιηθνύ παξνπζηάδνληαο ηνπο παξάγνληεο πνπ δηαθξίλνπλ ην ζύλνιν ησλ
παξάιιεισλ επεμεξγαζηώλ ζε επηκέξνπο θαηεγνξίεο. Αλαιύνληαη νη αξρηηεθηνληθέο
παξάιιεισλ ζπζηεκάησλ θνηλήο κλήκεο θαη θαηαλεκεκέλεο κλήκεο σο πξνο ηνλ ηξόπν
ιεηηνπξγίαο θαη ηα δνκηθά ραξαθηεξηζηηθά ηνπο.
Σην ηέηαξην θεθάιαην γίλεηαη εηζαγσγή ζηε ινγηθή επηθνηλσλίαο ησλ ζπζηεκάησλ
θαηαλεκεκέλεο κλήκεο κέζσ κεηαβίβαζεο κελπκάησλ. Αλαιύνληαη νη θύξηεο έλλνηεο θαη ν
ηξόπνο ιεηηνπξγίαο ηνπ πξσηνθόιινπ κεηαβίβαζεο κελπκάησλ MPI θαη αλαιύνληαη νη
βαζηθέο ζπλαξηήζεηο πνπ πεξηιακβάλεη.
Σην πέκπην θεθάιαην αλαιύεηαη ε δνκή ελόο παξάιιεινπ αιγνξίζκνπ θαη ηα κεγέζε
πνπ καο βνεζνύλ λα απνθηήζνπκε κηα γεληθή εηθόλα γηα ηελ απόδνζε ηεο παξάιιειεο
πινπνίεζήο ηνπ. Σηε ζπλέρεηα ζπγθξίλνληαη ηα δύν επηθξαηέζηεξα ζεσξήκαηα γηα ηνλ
ππνινγηζκό ηεο επηηάρπλζεο θαηά ηελ παξάιιειε επεμεξγαζία, ηνπο λόκνπο Amdahl θαη
Gustafson. Παξνπζηάδνληαη ηα κεγέζε επηηάρπλζε αλά ελέξγεηα θαη επηηάρπλζε αλά κέζε
ηζρύο ιεηηνπξγίαο θαηά ηελ πινπνίεζε παξάιιεισλ αιγνξίζκσλ πνπ ζπλδένπλ ηελ
επεμεξγαζηηθή ηζρύ κε ηελ ελεξγεηαθή απνδνηηθόηεηα.
9
Σην έθην θεθάιαην παξνπζηάδνληαη νη αιγόξηζκνη πνιιαπιαζηαζκνύ πηλάθσλ θαη
ηαμηλόκεζεο merge sort πνπ ρξεζηκνπνηήζεθαλ γηα ηε δηεμαγσγή ησλ πεηξακαηηθώλ
κεηξήζεσλ. Η επηινγή ησλ παξαπάλσ αιγνξίζκσλ βαζίζηεθε ζηηο κεγάιεο δηαθνξέο πνπ
παξνπζηάδνπλ ζηελ θιηκάθσζε ηνπ παξάιιεινπ πνζνζηνύ ηνπο θαζώο απμάλνπκε ην πιήζνο
ησλ δεδνκέλσλ εηζόδνπ. Τόζν ε ζεηξηαθή όζν θαη ζηελ παξάιιειε εθδνρή ηνπο
αλαπηύρζεθε ζε γιώζζα C++.
10
1) Παράλληλη Επεξεργαςία
1.1) Ειςαγωγή
Σηα πξώηα ρξόληα εκθάληζεο ησλ ειεθηξνληθώλ ππνινγηζηώλ ν κόλνο
ηξόπνο γηα ηελ εθηέιεζε θάπνηνπ πξνγξάκκαηνο ήηαλ κία εληνιή ηε θνξά θ αη ζε
απόιπηε ρξνλνινγηθή ζεηξά. Δπνκέλσο ήηαλ απνθιεηζηηθά θαζνξηζκέλε από ηε
δηαδνρή ησλ εληνιώλ ζηνλ αιγόξηζκν. Απηή ε ζεηξηαθή κέζνδνο απνηεινύζε
κνλόδξνκν κέρξη λα ηεζεί ππό εμέηαζε ε έλλνηα ηεο παξάιιειεο εθηέιεζεο
αξηζκεηηθώλ ππνινγηζκώλ από ηνπο John Cocke θαη Daniel Slotnick. Αθνξκή γηα ην
παξαπάλσ ππήξμε έξεπλα πνπ πξαγκαηνπνηνύζαλ γηα ηελ IBM ην 1958. Από εθεί
θαη έπεηηα ην ζέκα άξρηζε λα απνηειεί αληηθείκελν νινέλα θαη πεξηζζόηεξσλ
εξεπλώλ. Τειηθά δελ άξγεζαλ λα εκθαληζηνύλ ππνινγηζηέο πνπ ρξεζηκνπνηνύζαλ
θάπνηαο κνξθήο παξάιιειε επεμεξγαζία όπσο νη ILLAC II θαη IBM 7030 [1].
Σηε ζύγρξνλε επνρή κε ηελ πξόνδν ησλ κεζόδσλ θαηαζθεπήο θαη γεληθόηεξα
ηεο ηερλνινγίαο ππνινγηζηώλ ν παξαιιειηζκόο έρεη επηθξαηήζεη ζξηακβεπηηθά ησλ
ζεηξηαθώλ αξρηηεθηνληθώλ. Οη ζρεδηαζηέο ππνινγηζηηθώλ ζπζηεκάησλ ζηξέθνληαη
ζηελ πεξαηηέξσ παξαιιεινπνίεζε εηζάγνληαο νινέλα θαη πεξηζζόηεξνπο ππξήλεο
ζηηο κνλάδεο επεμεξγαζίαο θαη νινέλα θαη πεξηζζόηεξεο κνλάδεο επεμεξγαζίαο
ζηνπο ππεξππνινγηζηέο.
11
δηάζηεκα κεηαμύ δύν ζπκβάλησλ θάπνηαο πεξηνδηθήο αθνινπζίαο ή αιιηώο ηε
ζπρλόηεηα κε ηελ νπνία έλα ζπκβάλ επαλαιακβάλεηαη. Σπγθεθξηκέλα, γηα λα ην
ζπζρεηίζνπκε θαη κε ηνπο δύν πξνεγνύκελνπο όξνπο, εύξνο δώλεο επεμεξγαζίαο
(Computational Bandwidth) είλαη ην πιήζνο ησλ εληνιώλ πνπ επεμεξγαδόκαζηε
θάζε δεπηεξόιεπην θαη εύξνο δώλεο απνζήθεπζεο ( Storage Bandwidth) είλαη ν
ξπζκόο κε ηνλ νπνίν ν ηειεζηήο θαη νη ηειεζηένη ιακβάλνληαη από ηε κλήκε. Δπίζεο
ε Καζσζηέρεζε (Latency) πνπ εθθξάδεη ηνλ ρξόλν πνπ απαηηείηαη γηα ηε ζπλνιηθή
επεμεξγαζία (από ηελ θιήζε κέρξη ην ηειηθό απνηέιεζκα) κίαο κνλάδαο δεδνκέλσλ.
Σύκθσλα κε ηνπο όξνπο απηνύο νη θαηεγνξίεο ησλ παξάιιεισλ ππνινγηζηηθώλ
ζπζηεκάησλ είλαη ηέζζεξηο θαη παξνπζηάδνληαη παξαθάησ.
Σχ. 1.1. Λειτουργία ςυςτιματοσ με μοναδικό ρεφμα εντολϊν και ρεφμα δεδομζνων.
12
Παξ‟ όιεο όκσο ηηο ηερληθέο γηα βειηίσζε ηεο απόδνζεο, ην θύξην πξόβιεκα ηεο
ζπγθεθξηκέλεο αξρηηεθηνληθήο παξακέλεη ην γεγνλόο όηη κπνξνύκε λα έρνπκε κόλν
κία εληνιή ζην ζηάδην ηεο απνθσδηθνπνίεζεο θάζε ρξνληθή ζηηγκή. Πην
ζπγθεθξηκέλα ν παξαιιειηζκόο θαηά ηελ απνθσδηθνπνίεζε έρεη σο παξελέξγεηεο
ηελ εθηελή πεξηπινθή ηνπ κεραληζκνύ πνπ είλαη ππεύζπλνο γηα απηό ην ζηάδην
επεμεξγαζίαο ησλ εληνιώλ.
Σχ. 1.2. Λειτουργία ςυςτιματοσ με μοναδικό ρεφμα εντολϊν και ρεφματα δεδομζνων όςα οι μονάδεσ
επεξεργαςίασ.
13
SIMD ρξεζηκνπνηείηαη επξέσο γηα ηελ επεμεξγαζία ηξηζδηάζηαησ λ γξαθηθώλ αιιά
ζπλαληάηαη όιν θαη ιηγόηεξν ζε επεμεξγαζηέο γεληθνύ ζθνπνύ.
Σχ. 1.3. Λειτουργία ςυςτιματοσ με ρεφματα εντολϊν ιςάρικμα με τισ μονάδεσ επεξεργαςίασ και μοναδικό
ρεφμα δεδομζνων. Τα δεδομζνα μεταφζρονται ταυτόχρονα ςτουσ επεξεργαςτζσ.
Σηε δεύηεξε θαηεγνξία ε δηαθνξά έγθεηηαη ζηε ξνή ησλ δεδνκέλσλ ε νπνία
αληί λα πξαγκαηνπνηείηαη από θαη πξνο ην ρώξν απνζήθεπζεο πεξλάεη δηαδνρηθά
από θάζε κνλάδα επεμεξγαζίαο ρσξίο λα ππάξρεη ελδηάκεζε επηθνηλσλία κε απηόλ.
Γειαδή ηα δεδνκέλα πξνο επεμεξγαζία κεηαθέξνληαη αξρηθά από ηε κλήκε ζηελ
πξώηε κνλάδα επεμεξγαζίαο ε έμνδνο ηεο νπνίαο απνηειεί ηελ είζνδν ηεο επόκελεο.
Η αθνινπζία απηή επαλαιακβάλεηαη κέρξη ηα δεδνκέλα λα θηάζνπλ ζηελ ηειεπηαία
14
κνλάδα επεμεξγαζίαο ε νπνία είλαη ε κόλε πνπ έρεη ηε δπλαηόηεηα λα εθρσξεί ζηε
κλήκε.
Σχ. 1.4. Λειτουργία ςυςτιματοσ με ρεφματα εντολϊν ιςάρικμα με τισ μονάδεσ επεξεργαςίασ και μοναδικό
ρεφμα δεδομζνων. Μόλισ ο πρϊτοσ επεξεργαςτισ ολοκλθρϊςει τισ εργαςίεσ του τα αποτελζςματα που
παράγονται μεταφζρονται ςτον επόμενο για επεξεργαςία.
15
Σχ. 1.5. Λειτουργία ςυςτιματοσ με ρεφματα εντολϊν και ρεφματα δεδομζνων ιςάρικμα με το πλικοσ
μονάδων επεξεργαςίασ.
16
2) Συςτήματα κοινήσ μνήμησ
2.1) Ειςαγωγή
Τελ δεθαεηία ηνπ 1980 νη θαηαζθεπαζηέο ππνιν γηζηώλ γηα λα
αληαπεμέιζνπλ ζηηο όιν θαη κεγαιύηεξεο απαηηήζεηο γηα πςειόηεξεο επηδόζεηο
ζηξάθεθαλ ζε κία δηαθνξεηηθή αξρηηεθηνληθή πιηθνύ. Αληί λα βαζίδνληαη
απνθιεηζηηθά ζηνλ παξαιιειηζκό ησλ εληνιώλ γηα παξάδεηγκα ρξήζε pipeline,
ζρεδίαζαλ ππνινγηζηέο πνπ δηέζεηαλ πεξηζζόηεξνπο από έλαλ επεμεξγαζηέο
ζπλδεδεκέλνπο ζηελ ίδηα θύξηα κλήκε. Τα ζπζηήκαηα πνπ βαζίδνληαη ζηελ
αξρηηεθηνληθή απηή νλνκάδνληαη ζπζηήκαηα θνηλήο κλήκεο (ΣΚΜ) (shared memory
systems).
Τα ΣΚΜ απνδείρζεθαλ εμαηξεηηθά απνηειεζκαηηθά πξάγκα πνπ θαίλεηαη από
ην γεγνλόο όηη είλαη ε πην δεκνθηιήο αξρηηεθηνληθή ζρεδίαζεο παξάιιεισ λ
ζπζηεκάησλ κέρξη θαη ζήκεξα. Τα θέξδε όκσο δελ εληνπίδνληαη κόλν ζηελ
επεμεξγαζηηθή ηζρύ, ηέηνηα ζπζηήκαηα καο πξνζθέξνπλ επειημία ζε πνιινύο ηνκείο.
Έλαο από απηνύο είλαη ε θαηαλάισζε ηζρύνο κε βαζηθό παξάδεηγκα ηελ
αξρηηεθηνληθή big.LITTLE ηεο ARM πνπ ρξεζηκνπνηείηαη ζε κηα πιεζώξα θνξεηώλ
ζπζθεπώλ. Σε απηή έρνπκε δηαθνξεηηθέο κνλάδεο επεμεξγαζίαο, θάπνηεο κε πςειή
απόδνζε θαη θαηαλάισζε θαη άιιεο κε ρακειή. Έηζη δηακνηξάδνληαο θαηάιιεια ηηο
εξγαζίεο κεηώλεηαη ε θαηαλάισζε ελέξγεηαο ζε ζρέζε κε αληίζηνηρν ζύζηεκα
όκνησλ κνλάδσλ επεμεξγαζίαο [4].
Η θύξηα κλήκε ζηα ΣΚΜ ζπλήζσο είλαη ρσξηζκέλε ζε ηκήκαηα έηζη ώζηε λα
κπνξεί λα πξνζπειαύλεηαη από πεξηζζόηεξνπο ηνπ ελόο επεμεξγαζηέο. Η
επηθνηλσλία κεηαμύ κλήκεο θαη κνλάδσλ επεμεξγαζίαο επηηπγράλεηαη κέζσ ελόο
ζπζηήκαηνο κεηαθνξάο δεδνκέλσλ πνπ νλνκάδεηαη δίθηπν δηαζύλδεζεο. Έηζη ε
εθηέιεζε βαζηθώλ εξγαζηώλ όπσο ε κεηαθνξά θαη απνζήθεπζε δεδνκέλσλ παύεη λα
απνηειεί κηα ηεηξηκκέλε δηαδηθαζία δηόηη πξέπεη λα ζπκθσλεί κε ηε δνκή ηνπ
εθάζηνηε δηθηύνπ. Η πνιππινθόηεηα όκσο πνπ εηζάγεηαη από ηε ρξήζε ελόο ηέηνηνπ
δηθηύνπ ππεξληθείηαη θαηά πνιύ από ηα νθέιε ηεο παξάιιειεο επεμεξγαζίαο.
17
παξακέλνπλ ελεξγνί κεηά ηε ρξήζε ηνπο [5]. Τα είδε ησλ δπλακηθώλ δηθηύσλ δηαζύλδεζεο
είλαη ηα δίθηπα δηαύινπ θαη ηα δίθηπα δηαθνπηώλ.
18
όηη δηαζέηνπκε N κνλάδεο επεμεξγαζίαο θαη M ηκήκαηα κλήκεο, ην δηαζηαπξσηηθό δίθηπν
πνπ ζα εμππεξεηνύζε ην ζύζηεκα απηό ζα είρε νξγάλσζε δηζδηάζηαηνπ πίλαθα N γξακκώλ
θαη M ζηειώλ. Τν παξαπάλσ δίθηπν απνηειείηαη από M*N ζηνηρεία δηαθνπηώλ θαζέλα από
ηα νπνία κπνξεί λα βξεζεί ζε θαηάζηαζε θάζεηεο ή δηαγώληαο ζύλδεζεο. Έηζη δεκηνπξγείηαη
θάζε θνξά ην θαηάιιειν κνλνπάηη γηα ηε κεηαθνξά δεδνκέλσλ από θαη πξνο ηε κλήκε.
Σχ. 2.2. Παράδειγμα διαςταυρωτικοφ δικτφου 8 μνθμϊν και 8 μονάδων επεξεργαςίασ (a) διακόπτθσ ςε
κάκετθ ςφνδεςθ (b) διακόπτθσ ςε διαγϊνια ςφνδεςθ.
19
θαηάζηαζε exchange νη είζνδνη αληαιιάζζνπλ εμόδνπο επνκέλσο ε είζνδνο1 ζπλδέεηαη κε
ηελ έμνδν2 θαη ε είζνδνο2 κε ηελ έμνδν1. Σηελ θαηάζηαζε upper broadcast ε είζνδνο1
ζπλδέεηαη θαη κε ηηο δύν εμόδνπο. Τέινο, ζηελ θαηάζηαζε lower broadcast ε είζνδνο2
ζπλδέεηαη κε ηηο δύν δηαζέζηκεο εμόδνπο.
Γηα παξάδεηγκα, ζε δίθηπν ελόο επηπέδνπ 16 εηζόδσλ θαη 16 εμόδσλ πνπ ζέινπκε λα
κεηαθέξνπκε δεδνκέλα από ηελ πέκπηε (0100) είζνδν ζηελ δέθαηε ηξίηε έμνδν (1100)
εθαξκόδνληαο Shuffle-Exchange ζα εθηειέζνπκε ηηο ελέξγεηεο:
20
Shuffle-Exchange. Έρνληαο πνιιά επίπεδα δηαθνπηώλ ζηελ δηάζεζή καο μεπεξλάκε ηνπο
πεξηνξηζκνύο πνπ εηζάγεη ε ύπαξμε κνλαδηθνύ κνλνπαηηνύ κεηαμύ θάζε δεύγνπο εηζόδνπ-
εμόδνπ. Έηζη κπνξνύκε λα εμππεξεηνύκε πεξηζζόηεξεο κεηαθνξέο δεδνκέλσλ ηαπηόρξνλα
πεηπραίλνληαο θαιύηεξε ζπλνιηθή απόδνζε ηνπ ζπζηήκαηνο θαηαλεκεκέλεο κλήκεο.
Γηα λα γίλεη πην θαηαλνεηή ε ιεηηνπξγία ηνπ παξαπάλσ δηθηύνπ παξαζέηνπκε έλα
παξάδεηγκα ηεο ζηξαηεγηθήο Shuffle-Exchange γηα ζύζηεκα 8 εηζόδσλ θαη 8 εμόδσλ ηνπ
ζρήκαηνο 2.3.
Δδώ ν δπαδηθόο αξηζκόο ηεο εμόδνπ θαζνξίδεη ηελ θαηάζηαζε ηνπ θάζε δηαθνπηηθνύ
ζηνηρείνπ ηεο δηαδξνκήο πνπ ζα αθνινπζνύζνπλ ηα δεδνκέλα. Σπγθεθξηκέλα θάζε δπαδηθό
ζηνηρείν ηεο εμόδνπ αληηζηνηρεί ζε έλα επίπεδν δηαθνπηώλ από ηα αξηζηεξά πξνο ηα δεμηά. Αλ
ε ηηκή ηνπ δπαδηθνύ είλαη 0 ην δηαθνπηηθό ζηνηρείν πξνσζεί ηα δεδνκέλα ηεο εηζόδνπ ζηελ
έμνδν1 θαη αλ ε ηηκή είλαη 1 ηα δεδνκέλα πξνσζνύληαη ζηελ έμνδν2. Άξα ην πιήζνο ησλ
επηπέδσλ ηζνύηαη κε ην πιήζνο ησλ δπαδηθώλ ζηνηρείσλ πνπ ρξεηαδόκαζηε γηα λα
αλαπαξαζηήζνπκε ηηο N κνλάδεο επεμεξγαζίαο θαη ηα N ηκήκαηα κλήκεο, δειαδή .
Πνιύ ζεκαληηθό πιενλέθηεκα ηεο Shuffle-Exchange απνηειεί ε απιόηεηα ζηελ επηινγή ηνπ
θαηάιιεινπ κνλνπαηηνύ ε νπνία είλαη κέγηζηεο ζεκαζίαο ζηα δίθηπα δηαθνπηώλ [6]. Άιιεο
δεκνθηιείο ζηξαηεγηθέο απνηεινύλ ηα δίθηπα Banyan θαη Omega.
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] θαζηζηώληαο ηέηνηνπ είδνπο ζπζηήκαηα εμαηξεηηθά επέιηθηα.
24
δηεξγαζηώλ δελ είλαη πάληνηε γλσζηό θαηά ηελ εθθίλεζε. Έηζη απαηηείηαη ν
δπλακηθόο θαηαθεξκαηηζκόο θαη αλάζεζε ηνπο θαηά ηελ εθηέιεζε.
25
Σχ. 3.1. Απλοποιθμζνθ δομι υπολογιςτϊν ςυςτάδασ.
26
ιεηηνπξγεί ζπλερώο κε ηελ ίδηα απόδνζε ηνπνζεηνύκε πιεόλαζκα θόκβσλ νη νπνίνη
ελεξγνπνηνύληαη κόλν όηαλ ππάξμεη βιάβε.
27
Γίθησο δαθησιίοσ: Κάζε θόκβνο ζπλδέεηαη κόλν κε ηνλ πξνεγνύκελν θαη
ηνλ επόκελν θόκβν, επνκέλσο έρεη βαζκό ίζν κε 2 θαη ε δηάκεηξνο ηνπ δηθηύνπ
ηζνύηαη κε ην κηζό ηνπ πιήζνπο ησλ δηαζπλδεδεκέλσλ θόκβσλ.
Έζησ όηη δηαζέηνπκε X θόκβνπο θαηά πιάηνο θαη Y θαηά ύςνο, ηόηε ην
ζπλνιηθό πιήζνο θόκβσλ ζα ηζνύηαη κε N X Y . Κάζε εζσηεξηθόο θόκβνο
ζπλδέεηαη κε ηνπο ηέζζεξηο θνληηλόηεξνπο θόκβνπο ζε ζρήκα ζηα πξνύ επνκέλσο
είλαη βαζκνύ 4 ελώ νη εμσηεξηθνί θόκβνη πνπ ζρεκαηίδνπλ ην πεξίγξακκα ηεο
δηάηαμεο είλαη βαζκνύ 3 ή 2 γηα ηνπο ηέζζεξηο πνπ βξίζθνληαη ζηηο γσλίεο. Η
δηάκεηξνο ηεο ηνπνινγίαο δηζδηάζηαηνπ πιέγκαηνο δίλεηαη από ηε ζρέζε
28
X 1 Y 1 θαη απνηειεί ην βαζηθό ηνπο κεηνλέθηεκα ην νπνίν γίλεηαη
ηδηαίηεξα αηζζεηό ζε κεγαιύηεξα δίθηπα. Μία ιύζε είλαη λα ζπλδέζνπκε ζε δεύγε
ηνπο αθξηαλνύο θόκβνπο θαηά ζηήιε θαη θαηά ζεηξά κεηαηξέπνληαο έηζη θαη ηνπ ο
αθξηαλνύο θόκβνπο ζε βαζκνύ 4.
Έηζη, κέζσ ησλ επηπιένλ ζπλδέζεσλ κεηώλεηαη ε δηάκεηξνο πνπ ηώξα δίλεηαη
X Y
από ηε ζρέζε . Γηα δίθηπα πνπ ζπλδένπλ κεγάιν αξηζκό θόκβσ λ
2 2
είλαη αθόκα πην απνδνηηθό αλ απηνί ζρεκαηίζνπλ έλα ηξηζδηάζηαην πιέγκα ην νπνίν
απμάλεη ηνλ βαζκό ησλ εζσηεξηθώλ θόκβσλ θαη επνκέλσο κεηώλεη ηε δηάκεηξν.
29
Σχ. 3.5. Δίκτυο υπερκφβου 16 κόμβων, όπωσ φαίνεται οι αποςτάςεισ Hamming των κόμβων που ςυνδζονται
ιςοφνται με 1.
Λόγσ ηεο εμαηξεηηθά κηθξήο δηακέηξνπ είλαη ηδαληθή γηα ηελ εμππεξέηεζε
θαηαλεκεκέλσλ ζπζηεκάησλ κεγάινπ κεγέζνπο. Τν κεηνλέθηεκα πνπ παξαηεξείηαη
εδώ είλαη ην γεγνλόο όηη ην πιήζνο ησλ θόκβσλ πνπ δηαζπλδένληαη είλαη
θβαληηζκέλν [14]. Έηζη θάζε δίθηπν κεγαιύηεξνπ κεγέζνπο πνπ πινπνηνύκε απαηηεί
ηνλ δηπιάζην αξηζκό θόκβσλ από ην πξνεγνύκελν. Αλ απηό είλαη αλεπηζύκεην
κπνξνύκε ελαιιαθηηθά λα ρξεζηκνπνηήζνπκε εκηηειή σπερθύβο (incomplete
hypercube).
Γσαδηθά δέλδρα: Σηελ ηνπνινγία απηή έρνπκε έλα κεηαγσγέα πνπ απνηειεί
ηε ξίδα θαη ζπλδέεηαη κε ηνπο δύν επόκελνπο, ν θαζέλαο εθ ησλ νπνίσλ ζπλδέεηαη
κε δύν αθόκα επαλαιακβάλνληαο ην κνηίβν. Έηζη δεκηνπξγνύληαη νξηδόληηα επίπεδα
πνπ ην θαζέλα πεξηέρεη δηπιάζηα ζηνηρεία από ην πξνεγνύκελν κέρξη λα θηάζνπκε
ζε απηό πνπ δηαζέηεη πιήζνο κεηαγσγέσλ ίζν κε ηνπο θόκβνπο ηνπ θαηαλεκεκέλνπ
ζπζηήκαηνο.
30
Σχ. 3.6. Δίκτυο δυαδικοφ δζντρου για 8 κόμβουσ.
Σχ. 3.7. Δίκτυο γενικευμζνου κφβου για 16 κόμβουσ με χριςθ μεταγωγϊν 2x2. Απαιτοφνται 3 ςτάδια
μεταγωγϊν για τθν εξυπθρζτθςθ όλων των κόμβων.
Τν πιήζνο ησλ ζηαδίσλ πνπ ζα ρξεηαζηνύκε εμαξηάηαη ηόζν από ηνλ αξηζκό
ησλ θόκβσλ ζηελ θάζε πιεπξά ηνπ δηθηύνπ όζν θαη από ην πιήζνο εηζόδσλ/εμόδσλ
πνπ δηαζέηεη ν θάζε κεηαγσγέαο. Σπγθεθξηκέλα, έζησ όηη έρνπκε N ζπλνιηθνύο
31
θόκβνπο ζην δίθηπν θαη κεηαγσγείο K εηζόδσλ/εμόδσλ, ηόηε ηα ζηάδηα πνπ ζα
N
ρξεηαζηνύκε δίλνληαη από ηε ζρέζε S log K .
2
32
4) Μεταβίβαςη μηνυμάτων (Message passing)
4.1) Ειςαγωγή
Η κεηαβίβαζε κελπκάησλ (message passing) είλαη ζπλπθαζκέλε κε ηελ
έλλνηα ησλ παξάιιεισλ ππνινγηζηώλ θαηαλεκεκέλεο κλήκεο. Η αλάγθε γηα
αληαιιαγή δεδνκέλσλ κεηαμύ ησλ επηκέξνπο κνλάδσλ επεμεξγαζίαο (θ όκβσλ) θαηά
ηελ εθηέιεζε εξγαζηώλ είλαη πξνθαλήο. Δθηόο όκσο από ηηο θπζηθέο ζπλδέζεηο ησλ
θόκβσλ πνπ απνηεινύλ ην physical network, αλαγθαίνο είλαη θαη ν νξηζκόο ηεο
απαξαίηεηεο ινγηθήο πνπ ζα επηηξέπεη ηελ επηζπκεηή επηθνηλσλία.
33
4.2) Βαςικζσ ζννοιεσ του MPI
4.2.1) Διεργαςίεσ
Η εθηέιεζε αιγνξίζκσλ παξάιιεια κε ρξήζε ηνπ πξνηύπνπ MPI απαηηεί
αξρηθά ηε δεκηνπξγία ελόο ζπλόινπ νληνηήησλ ώζηε θαζεκία λα αλαιάβεη λα ιύζεη
δηαθνξεηηθό ηκήκα ηνπ πξνβιήκαηνο. Απηέο νλνκάδνληαη δηεργαζίες (processes)
θαη δηαθξίλνληαη κεηαμύ ηνπο από κηα μερσξηζηή ηαπηόηεηα πνπ ιακβάλνπλ θαηά
ηελ εθθίλεζε ηνπ παξάιιεινπ πξνγξάκκαηνο, ηνλ βαζκό (rank) [17]. Ο θάζε
βαζκόο είλαη έλαο αθέξαηνο αξηζκόο ζε αύμνπζα ζεηξά μεθηλώληαο από ην κεδέλ,
δειαδή αλ επηζπκνύκε λα ηξέμνπκε ην πξόγξακκά καο παξάιιεια ζε 5 δηεξγαζίεο
νη βαζκνί πνπ ζα ρξεζηκνπνηνύληαλ είλαη από 0 κέρξη 4. Η ραξαθηεξηζηηθή απηή
ηηκή πνπ δηαζέηεη θάζε δηεξγαζία είλαη πνιύ ζεκαληηθή θαζώο καο επηηξέπεη λα
πξνζδηνξίζνπκε επαθξηβώο ηε ξνή ησλ κελπκάησλ θαηά ηε ζ πγγξαθή ηνπ
πξνγξάκκαηνο.
34
4.2.2) Μζθοδοι επικοινωνίασ
Τν θύξην κέιεκα ηνπ πξνηύπνπ MPI απνηειεί ε επηθνηλσλία ησλ δηεξγαζηώλ
κέζσ ηεο αληαιιαγήο δεδνκέλσλ κεηαμύ απηώλ. Ο ζθνπόο γηα ηνλ νπνίν
δεκηνπξγήζεθε ήηαλ ε εμαζθάιηζε ηεο θνξεηόηεηαο ησλ παξάιιεισλ
πξνγξακκάησλ πνπ αμηνπνηνύζαλ κεηαβίβαζε κελπκάησλ [20]. Γηα ηνλ ιόγν απηό
ην MPI ρξεζηκνπνηεί ζαλ δνκηθή ύιε ηελ κεηαβίβαζε ελόο κελύκαηνο κεηαμύ ελόο
δεύγνπο δηεξγαζηώλ. Η απιή δηαδηθαζία MPI_Send() ρξεζηκνπνηείηαη έπεηηα γηα ηε
δεκηνπξγία κίαο πιεζώξαο πνιύπινθσλ δηαδηθαζηώλ νη νπνίεο αληαπνθξίλνληαη ζε
θάζε αλάγθε ηνπ παξάιιεινπ πξνγξάκκαηνο. Έηζη εθόζνλ ην ζύζηεκα πνπ
δηαζέηνπκε είλαη ζε ζέζε λα πεξαηώζεη κία απιή δηαδηθαζία απνζηνιήο είλαη θαη
ηθαλό λα πινπνηήζεη όιεο ηηο πην ζύλζεηεο ξνπηίλεο επηθνηλσλίαο θαη ζπγρξνληζκνύ.
Έλα δεύηεξν πιενλέθηεκα ηεο MPI είλαη όηη έρεη δεκηνπξγεζεί σο κηα
βηβιηνζήθε πςεινύ επηπέδνπ. Φάξε ζε απηό ν ρξήζηεο δελ είλαη αλαγθαζκέλνο λα
δηαζέηεη εμεηδηθεπκέλεο γλώζεηο γηα ην δίθηπν δηαζύλδεζεο πνπ ρξεζηκνπνηείηαη θαη
ηελ ηνπνινγία ηνπ θαηαλεκεκέλνπ ζπζηήκαηνο. Τν MPI δηαζέηεη ηα
απηνκαηνπνηεκέλα εξγαιεία πνπ ζα αλαιάβνπλ ηελ απνδνηηθή πινπνίεζε ησλ
πςεινύ επηπέδνπ δηαδηθαζηώλ επηθνηλσλίαο ζε ρακειό επίπεδν [21].
Οη ζπλαξηήζεηο επηθνηλσλίαο ηνπ MPI πξνθεηκέλνπ λα κειεηεζνύλ
απνηειεζκαηηθόηεξα κπνξνύλ λα νκαδνπνηεζνύλ κε βάζε ηα παξαθάησ
ραξαθηεξηζηηθά ηνπο.
35
Σχ. 4.1. Blocking επικοινωνία μεταξφ δφο διεργαςιϊν. (a)Η διεργαςία Proc0 καλεί τθ ςυνάρτθςθ αποςτολισ
πριν καλζςει τθ ςυνάρτθςθ λιψθσ θ Proc1. (b)Η διεργαςία Proc1 καλεί τθ ςυνάρτθςθ λιψθσ πριν καλζςει τθ
ςυνάρτθςθ αποςτολισ θ Proc0.
36
Σχ. 4.2. Non-blocking επικοινωνία μεταξφ δφο διεργαςιϊν. (a)Η διεργαςία Proc0 καλεί τθ ςυνάρτθςθ
αποςτολισ πριν καλζςει τθ ςυνάρτθςθ λιψθσ θ Proc1. (b)Η διεργαςία Proc1 καλεί τθ ςυνάρτθςθ λιψθσ πριν
καλζςει τθ ςυνάρτθςθ αποςτολισ θ Proc0.
37
4.2.3) Δομζσ επικοινωνίασ
Η θαηάιιειε νξγάλσζε ηνπ πιήζνπο δηεξγαζηώλ απνηειεί παξάγνληα
κεγάιεο ζεκαζίαο ζηελ απνηειεζκαηηθόηεηα ηεο εθηέιεζεο ησλ εξγαζηώλ πνπ
επηζπκνύκε. Γηα παξάδεηγκα αληί λα αλαζέζνπκε ζε όιεο ηηο δηαζέζηκεο δηεξγαζίεο
λα εθηειέζνπλ ηκήκα ελόο ππνινγηζκνύ, ζα κπνξνύζακε λα ηνλ αλαζέζνπκε ζε έλα
ππνζύλνιν απηώλ θαη νη ππόινηπεο λα αμηνπνηεζνύλ γηα ιήςε δεδνκέλσλ πνπ ζα
ρξεζηκνπνηήζνπκε αξγόηεξα. Τν πξόηππν MPI καο παξέρεη απηή ηελ επειημία κε ηνλ
νξηζκό οκάδφλ (groups) δηεξγαζηώλ. Κάζε νκάδα ραξαθηεξίδεηαη από κνλαδηθή
ηαπηόηεηα όπσο θαη θάζε δηεξγαζία δηαζέηεη κνλαδηθή ηάμε ζηελ νκάδα πνπ αλήθεη.
Τν κέγεζνο θάζε νκάδαο είλαη ην πιήζνο δηεξγαζηώλ πνπ πεξηέρεη θαη κπνξνύκε λα
ην ιάβνπκε από ηελ ζπλάξηεζε MPI_Group_size() θαζώο θαη ε ηαπηόηεηά ηεο
ιακβάλεηαη από ηελ MPI_Group_Rank().
38
δηεξγαζίεο πνπ ηνπο ρξεζηκνπνηνύλ. Σε αληίζεζε κε ηνπο intercommunicators
κπνξνύλ λα εμππεξεηήζνπλ απνθιεηζηηθά δηαδηθαζίεο επηθνηλσλίαο ζεκείνπ πξνο
ζεκείν, δειαδή κόλν κεηαμύ ελόο δεύγνπο δηεξγαζηώλ δηαθνξεηηθώλ νκάδσλ ηε
θνξά.
Σχ. 4.3. Κατθγοριοποίθςθ των communicators με βάςθ τισ ομάδεσ που εξυπθρετοφν.
39
δηεξγαζία πνπ ζρεηίδεηαη κε απηή. Τν γεγνλόο απηό απαηηεί πξνζεθηηθό ρεηξηζκό θαη
ζε πνιιέο πεξηπηώζεηο πξόζζεηεο ελέξγεηεο όπσο εθ λένπ δηακνίξαζε δεδνκέλσλ γηα
ηε ζσζηή νινθιήξσζε ησλ επηζπκεηώλ εξγαζηώλ.
Σχ. 4.4. Παράδειγμα οργάνωςθσ των διεργαςιϊν του communicator world ςε επιμζρουσ εικονικζσ τοπολογίεσ.
Πιν. 4.1. Αντιςτοιχία τφπων δεδομζνων του προτφπου MPI με τουσ όμοιουσ ςε γλϊςςα C.
40
Δθηόο ησλ παξαπάλσ νξίδνληαη θαη δύν αθόκα ζεκαληηθνί ηύπνη, ν πξώηνο
νλνκάδεηαη MPI_BYTE θαη πεξηέρεη ηε δπαδηθή αλαπαξάζηαζε θάπνηνπ αξηζκνύ ζε
8 bit. Έηζη καο εμαζθαιίδεη όηη ν ζπγθεθξηκέλνο αξηζκόο ζα απνζεθεπηεί ζε
αθξηβώο 8 bit αλεμάξηεηα από ηελ αξρηηεθηνληθή ηνπ ρώξνπ δηεπζύλζεσλ πνπ ζα
ηνλ θηινμελήζεη. Ο δεύηεξνο είλαη MPI_PACKED θαη αλαθέξεηαη ζε
θαηαθεξκαηηζκέλα δεδνκέλα πνπ έρνπκε νκαδνπνηήζεη κε ηελ εληνιή MPI_PACK
γηα ηελ θαιύηεξε απνζηνιή ηνπο.
Ld { type1 , dist1 , type2 , dist2 , type3 , dist3 ,..., typen , distn } όπου typei ο τφποσ
δεδομζνων του ςτοιχείου ςτθ μετατόπιςθ disti από τθ διεφκυνςθ που ζχουμε ορίςει. Ζτςι
41
int MPI_Finalize( void )
Τεξκαηίδεη ην πεξηβάιινλ εθηέιεζεο MPI επνκέλσο είλαη ε ηειεπηαία ζπλάξηεζε
MPI πνπ πξέπεη λα θαιείηαη. Δίλαη απαξαίηεην λα είκαζηε ζίγνπξνη όηη θάζε άιιε
εξγαζία έρεη νινθιεξσζεί πξηλ ηελ θιήζε ηεο MPI_Finalize, ηδηαίηεξε πξνζνρή
απαηηνύλ νη Non-blocking ζπλαξηήζεηο.
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 εθδνρή.
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 διεργαςίεσ. Κάκε διεργαςία
λαμβάνει ακριβϊσ τα ίδια δεδομζνα.
Σχ. 4.7. Αναπαράςταςθ τθσ λειτουργίασ τθσ MPI_Scatter ςε communicator με 4 διεργαςίεσ. Τα αρχικά
δεδομζνα τθσ διεργαςίασ root που εδϊ ζχει τάξθ 0 ιςομοιράηονται ςε όλεσ τισ διεργαςίεσ του communicator
με αφξουςα ςειρά τάξθσ.
45
Η δηεξγαζία κε ηάμε(rank) root ιακβάλεη από θάζε άιιε δηεξγαζία ηνπ
communicator comm κελύκαηα πνπ πεξηέρνπλ recvcount πιήζνο ζηνηρείσλ κε
ζεηξά αύμνπζαο ηάμεο. Γηα ηηο ππόινηπεο δηεξγαζίεο εθηόο ηεο root κε ηελ θιήζε
ηεο MPI_Gather εθηειείηαη απνζηνιή ησλ δεδνκέλσλ πνπ μεθηλνύλ από ηε
δηεύζπλζε sendbuf κε πιήζνο ζηνηρείσλ sendcount.
int my_bcast( void *buffer, int count, MPI_Datatype datatype, int root,
MPI_Comm comm)
46
5) Απόδοςη παράλληλων αλγορίθμων
47
ζπγγξαθή παξάιιεισλ πξνγξακκάησλ είλαη ε εύξεζε ηνπ απνηειεζκαηηθόηεξνπ
ηξόπνπ δηαρσξηζκνύ ηνπ παξάιιεινπ ηκήκαηνο ζε επηκέξνπο εξγαζίεο. Σηε
ζπλέρεηα θάζε επηκέξνπο εξγαζία είλαη ζε ζέζε λα πινπνηεζεί από κία δηαζέζηκε
δηεξγαζία ηαπηόρξνλα. Τν ραξαθηεξηζηηθό απηό νθείιεηαη γηα ηε βειηίσζε
απόδνζεο ελόο παξάιιεινπ πξνγξάκκαηνο ζε ζρέζε κε ηελ ζεηξηαθή εθδνρή ηνπ.
Δπνκέλσο έλαο αιγόξηζκνο κε κεγάιε ρξνληθή δηάξθεηα εθηέιεζεο ηνπ παξάιιεινπ
ηκήκαηνο είλαη πνιύ πηζαλό λα απνδώζεη ζεκαληηθά ζηελ παξάιιειε εθηέιεζε.
48
ελόο παξάιιεινπ πξνγξάκκαηνο είλαη ν ιόγνο ηεο δηάξθεηαο ησλ ππνινγηζκώλ πξνο
ηε δηάξθεηα ηεο επηθνηλσλίαο [26].
Γηα ηνλ νξηζκό απηό ζεσξήζακε όηη ην παξάιιειν ηκήκα ηνπ αιγνξίζκνπ
κπνξεί λα κνηξαζηεί ηζόπνζα ζηηο κνλάδεο επεμεξγαζίαο πξάγκα πνπ θαίλεηαη από
ηε ρξήζε ηνπ ιόγνπ ησλ δύν κεγεζώλ. Σε πνιιέο πεξηπηώζεηο όκσο θάηη ηέηνην είλαη
αδύλαην. Όπσο γηα παξάδεηγκα όηαλ έρνπκε λα θαηαλείκνπκε έλαλ πίλαθα ζε
ζύζηεκα κνλάδσλ επεμεξγαζίαο πνπ ην πιήζνο ηνπο δελ δηαηξεί αθέξαηα ηε
δηάζηαζή ηνπ. Δπνκέλσο εδώ ππνινγίδεηαη ε κέγηζηε δπλαηή επηηάρπλζε γηα ην
ζύζηεκά καο.
49
Καηά ηε δεκηνπξγία παξάιιεισλ αιγόξηζκσλ κε ζθνπό ηελ επίιπζε θάπνηνπ
πξνβιήκαηνο είλαη πνιύ ζεκαληηθό λα γλσξίδνπκε ην πόζν απνδνηη θνί είλαη.
Γειαδή ηελ ηαρύηεηα εθηέιεζήο ηνπο από ην ππνινγηζηηθό ζύζηεκα γηα ην νπνίν
πξννξίδνληαη, ώζηε λα απνθαζίζνπκε αλ ρξεηάδεηαη θάπνηα κεηαβνιή ζηνλ θώδηθα.
Υπάξρνπλ δηάθνξεο κέζνδνη γηα ηνλ πξνζδηνξηζκό ηεο κέγηζηεο επηηάρπλζεο πνπ
έλα ππνινγηζηηθό ζύζηεκα κπνξεί λα πεηύρεη κε ηε ρξήζε p αξηζκνύ κνλάδσλ
επεμεξγαζίαο θαηά ηελ εθηέιεζε ελόο αιγνξίζκνπ. Σηε ζπλέρεηα ζα αλαιπζνύλ δύν
από ηηο ζεκαληηθόηεξεο.
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 για διαφορετικά μεγζκθ
παράλλθλων ςυςτθμάτων ςε ςχζςθ με το ςειριακό ποςοςτό.
51
επαλαιεπηηθέο κεζόδνπο. Τέηνηεο κεηαβνιέο καο επηηξέπνπλ λα ξπζκίδνπκε ηελ αθξίβεηα ησλ
απνηειεζκάησλ θαη πξνζνκνηώζεώλ πνπ εμάγεη ην παξάιιειν ζύζηεκα.
scaled p 1 p * S 5.4
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 για διαφορετικά
μεγζκθ παράλλθλων ςυςτθμάτων ςε ςχζςθ με το ςειριακό ποςοςτό.
52
θιίκαθαο παξάιιεια ππνινγηζηηθά ζπζηήκαηα πεξηνξίδεηαη ζεκαληηθά από ην ζεηξηαθό
θνκκάηη ηνπ αιγνξίζκνπ. Γηα λα θαηαλνήζνπκε ην παξαπάλσ αξθεί λα ζεσξήζνπκε έλαλ
αιγόξηζκν πνπ ηξέρεη παξάιιεια ζε άπεηξεο κνλάδεο επεμεξγαζίαο κε ζεηξηαθό ηκήκα κόιηο
1%, ηόηε ζα έρνπκε κέγηζηε δπλαηή επηηάρπλζε:
1 1
absolute 100
f
1 f 0.01
p
Η απάληεζε πξνθύπηεη από κηα πην πξνζεθηηθή κειέηε ησλ δύν λόκσλ κε ηδηαίηεξε
πξνζνρή ζηα ζεηξηαθά πνζνζηά f θαη S πνπ ρξεζηκνπνηνύλ [30].
ts : Η ρξνληθή δηάξθεηα γηα ηελ εθηέιεζε ηνπ ζεηξηαθνύ ηκήκαηνο ηνπ αιγνξίζκνπ
t p 1 : Η ρξνληθή δηάξθεηα ηεο εθηέιεζεο ηνπ παξάιιεινπ ηκήκαηνο από έλαλ επεμεξγαζηή
t p p : Η ρξνληθή δηάξθεηα ηεο εθηέιεζεο ηνπ κέξνπο ηνπ παξάιιεινπ ηκήκαηνο πνπ
αληηζηνηρεί ζε έλαλ από ηνπο p επεμεξγαζηέο όηαλ ν αιγόξηζκνο εθηειείηαη παξάιιεια
ts
f 5.6
ts t p 1
53
Ο λόκνο Gustafson αλαθέξεηαη ζηελ παξάιιειε εθηέιεζε ηνπ αιγνξίζκνπ, επνκέλσο ην
ζεηξηαθό πνζνζηό πξνθύπηεη :
ts
S 5.7
ts t p p
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.
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
55
1020 δειαδή όζε αθξηβώο κέηξεζε θαη ν Gustafson ζηα πεηξάκαηά ηνπ. Έηζη ν Gustafson δελ
αλαθάιπςε θάπνην θαηλνύξην λόκν νύηε θαηάξξηςε ηνλ λόκν Amdahl αιιά πξνζέθεξε κία
ελαιιαθηηθή δηαηύπσζή ηνπ βαζηζκέλε ζε πεηξακαηηθά απνηειέζκαηα. Φάξε ζε απηή άιιαμε
ν ηξόπνο πνπ ε επηζηεκνληθή θνηλόηεηα αληηιακβαλόηαλ ηελ εθηθηή επηηάρπλζε
αλαηξέπνληαο ηειηθά ην αξλεηηθό θιίκα πνπ επηζθίαδε ηελ παξάιιειε επεμεξγαζία.
n , p
e n , p 5.10
p
Πσο όκσο απνδίδεη έλα παξάιιειν ζύζηεκα ζηελ εθηέιεζε θάπνηνπ αιγνξίζκνπ
όηαλ πξνζζέηνπκε ζε απηό νινέλα θαη πεξηζζόηεξνπο επεμεξγαζηέο; Τελ απάληεζε ζε απηό
ην εξώηεκα καο δίλεη ε ζρέζε isoefficiency πνπ κειεηνύκε παξαθάησ:
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
ζεηξηαθέο εξγαζίεο νη νπνίεο δελ ήηαλ απαξαίηεηεο ζηε ζεηξηαθή εθδνρή ηνπ πξνγξάκκαηνο.
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
1 T n , p 1 e n , p e n,p
e n , p Tn ,1 Tn , p 5.13
T n , p T n ,1 e n , p 1 e n , p
1
T n ,1
57
Πίν. 5.1. Τα κφρια χαρακτθριςτικά των τριϊν ιςχυρότερων υπερυπολογιςτϊν το 1993 και το 2022.
Τν ελδηαθέξνλ έρεη πιένλ ζηξαθεί ζηελ ελεξγεηαθή απνδνηηθόηεηα [32] ε νπνία ζε κεξηθνύο
ηνκείο όπσο θνξεηέο ζπζθεπέο θαζίζηαηαη εμίζνπ ή αθόκα θαη ζεκαληηθόηεξε ηεο
ππνινγηζηηθήο ηζρύνο. Δπνκέλσο ζα ήηαλ ρξήζηκε ε αλάπηπμε κεηξηθώλ πνπ ζπζρεηίδνπλ
ηελ επηηάρπλζε πνπ πξνζθέξνπλ ηα παξάιιεια ζπζηήκαηα κε ηελ ηζρύ ιεηηνπξγίαο θαη ηελ
ελέξγεηα πνπ θαηαλαιώλνπλ ζε δηάθνξεο εθαξκνγέο. Απηά ηα κεγέζε κπνξνύλ λα
ζπκβάιινπλ ζηελ θαιύηεξε θαηαλόεζε ησλ πεξηνξηζκώλ πνπ ε ελεξγεηαθή απνδνηηθόηεηα
επηβάιιεη ζην ζρεδηαζκό ελόο λένπ ζπζηήκαηνο [33].
58
6) Περιγραφή αλγορίθμων που χρηςιμοποιήθηκαν
Σηνλ ρώξν ησλ ππνινγηζηώλ νη πίλαθεο θαηέρνπλ ζέζε κεγάιεο ζεκαζίαο θαζώο
ρξεζηκνπνηνύληαη γηα ηελ αλαπαξάζηαζε ςεθηαθώλ εηθόλσλ [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;
}
}
59
ίδηεο δηαζηάζεηο. Γηα λα βξνύκε ηελ ππνινγηζηηθή πνιππινθόηεηα ηνπ πνιιαπιαζηαζκνύ
πηλάθσλ έρνπκε:
Αλγόρικμοσ 6.2. Παράλλθλθ υλοποίθςθ αλγορίκμου πολλαπλαςιαςμοφ πινάκων Α και Β διαςτάςεων m*n
και n*n αντίςτοιχα. Το παράρτθμα αυτό περιζχει τισ εργαςίεσ που κα εκτελζςει θ κεντρικι διεργαςία.
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);
Γηα ηελ ζύλζεζε ηνπ ηειηθνύ πίλαθα, ε θεληξηθή δηεξγαζία ηνπνζεηεί ζηελ αξρή ηνπ
πίλαθα C ην πιήζνο ησλ γξακκώλ πνπ ππνιόγηζε. Έπεηηα ιακβάλεη από θάζε άιιε
δηεξγαζία ηηο γξακκέο ηνπ C πνπ αληηζηνηρνύλ θαη ηηο ηνπνζεηεί ζηνλ ηειηθό πίλαθα κε
αύμνπζα ζεηξά ηάμεο. Η παξαπάλσ δηαδηθαζία απνηειείηαη από επαλαιεπηηθή θιήζε ηεο
MPI_Recv() γηα ηε ιήςε θαη έλαλ αζξνηζηή offset γηα ηε ζσζηή ηνπνζέηεζε ησλ ηηκώλ.
61
6.2) Ταξινόμηςη merge sort
Οη αιγόξηζκνη ηαμηλόκεζεο απνηεινύλ πνιύ ζεκαληηθή θαηεγνξία αιγνξίζκσλ κε
ηελ ζπζηεκαηηθή κειέηε ηνπο λα μεθηλά από ηελ πξώηε εκθάληζε ησλ ππνινγηζηώλ. Απηό
ζπλέβε θαζώο παξέρνπλ ηε δπλαηόηεηα νξγάλσζεο πεηξακαηηθώλ απνηειεζκάησλ θαη
δεδνκέλσλ ζε κία πην επθαηαλόεηε κνξθή γηα πεξεηαίξσ επεμεξγαζία. Ο John von Neumann
έγξαςε ηνπο πξώηνπο αιγόξηζκνπο merge sort ην 1945 νη νπνίνη ήηαλ νη πξώηνη αιγόξηζκνη
ηαμηλόκεζεο πνπ πξνηάζεθαλ γηα ρξήζε ζε ππνινγηζηέο [36]. Σηηο κέξεο καο έρεη πξνθύςεη
κεγάιν πιήζνο πινπνηήζεσλ ηεο ηαμηλόκεζεο merge sort κε ζεκαληηθή εθαξκνγή ζηνπο
ππνινγηζηέο ζπζηάδαο ράξε ζηελ απνηειεζκαηηθόηεηα κε ηελ νπνία ρεηξίδεηαη κεγάινπο
όγθνπο δεδνκέλσλ. Αθόκα πνιιέο γιώζζεο πξνγξακκαηηζκνύ ρξεζηκνπνηνύλ ηε merge sort
ή θάπνηα πβξηδηθή κέζνδν σο ηελ θύξηα πινπνίεζε γηα εξγαζίεο ηαμηλόκεζεο [37].
Αλγόρικμοσ 6.3. Συνάρτθςθ αναδρομικοφ διαχωριςμοφ λίςτασ ςτο μζςο τθσ. Αποτελεί τθν πρϊτθ διαδικαςία
που πρζπει να ολοκλθρωκεί για τθν υλοποίθςθ ταξινόμθςθσ merge sort.
62
εφρεςθ του μζςου τθσ λίςτασ A ώςτε να ςτθ χωρίςουμε ςε δφο τμιματα, το πρώτο από τθν
αρχι μζχρι και το μζςο ςτοιχείο και το δεφτερο από το επόμενο του μζςου μζχρι το τζλοσ.
Στον αλγόρικμο τα διαςτιματα αυτά παριςτάνονται ωσ [min, mid] και [mid+1, max]
αντίςτοιχα. Στθ ςυνζχεια εφαρμόηουμε επαναλθπτικά τον παραπάνω διαχωριςμό ςτο
κατώτερο μιςό τθσ εκάςτοτε λίςτασ μζχρι να φτάςει ςτο ςθμείο που κα περιζχει ζνα μόνο
ςτοιχείο. Ζπειτα απευκυνόμαςτε ςτο άνω τμιμα τθσ λίςτασ και εφαρμόηουμε τθν ίδια
λογικι.
Η ςυνάρτθςθ m_sort() μασ δίνει κάκε φορά τα όρια και το πλικοσ ςτοιχείων των
υπολιςτών επομζνωσ πραγματοποιεί και τθν αναδρομικι κλιςθ. Η ςυνάρτθςθ merge()
είναι αυτι που πραγματοποιεί τθν ςφγκριςθ των ςτοιχείων των δφο υπολιςτών και μασ
επιςτρζφει τθν ενιαία.
Αλγόρικμοσ 6.4. Συνάρτθςθ για τθν παραγωγι ενιαίασ ταξινομθμζνθσ λίςτασ. Ζχουμε ωσ είςοδο τα ςτοιχεία
δφο λιςτϊν τα οποία τοποκετοφμε ςτθν τελικι ςε αφξουςα ςειρά.
return C;
}
63
Τα ζηνηρεία ηεο θάησ ιίζηαο A ζπγθξίλνληαη κε ηα αληίζηνηρα ηεο άλσ B θαη γξάθνληαη ζηε
C ώζηε λα πεξηέρεη ηελ ηειηθή ελνπνηεκέλε θαη ηαμηλνκεκέλε ιίζηα. Οη ιίζηεο πνπ
εηζέξρνληαη ζηε ζπλάξηεζε είλαη ήδε ηαμηλνκεκέλεο από ηηο πξνεγνύκελεο θιήζεηο ηεο.
Έηζη, αλ ηα ζηνηρεία κίαο εθ ησλ A ή B έρνπλ κεηαθεξζεί εμνινθιήξνπ ζηελ C θαη ε
ππνιεηπόκελε πεξηέρεη αθόκε ζηνηρεία ηόηε απηά αληηγξάθνληαη ζηελ C κε ηελ ππάξρνπζα
ζεηξά.
[37]. Λόγσ ηεο γξακκηθήο ζρέζεο ησλ ππνινγηζκώλ πνπ απαηηνύληαη γηα ηελ πινπνίεζε κε
ην κέγεζνο πξνβιήκαηνο αλακέλνπκε ν αιγόξηζκνο λα παξνπζηάδεη κηθξό παξάιιειν
πνζνζηό f .
Αλγόρικμοσ 6.5. Παράλλθλθ υλοποίθςθ αλγορίκμου merge sort για λίςτα data που περιζχει n ςτοιχεία. Στο
παράρτθμα αυτό παρουςιάηονται οι εργαςίεσ που κα εκτελζςει θ κεντρικι διεργαςία.
int s, r;
s = n / p;
r = n % p;
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
}
Οξίδνπκε ηνλ πίλαθα ζηήιεο data δηάζηαζεο n σο ηε δνκή πξνο ηαμηλόκεζε θαη ηνπ
εθρσξνύκε ηπραίεο ηηκέο ζην δηάζηεκα από ην 1 κέρξη ην 100. Σηε ζπλέρεηα ππνινγίδνπκε ηε
δηάζηαζε s ηνπ ππνπίλαθα πνπ ζα ιάβεη θάζε κία από ηηο p δηεξγαζίεο θαη κέζσ broadcast ηε
γλσζηνπνηνύκε ζην ζύλνιν ηνπ θαηαλεκεκέλνπ ζπζηήκαηνο. Με επαλαιεπηηθή θιήζε ηεο
ζπλάξηεζεο MPI_Send() θαη ρξήζε ηνπ αζξνηζηή offset ζηέιλνπκε ην θαηάιιειν ηκήκα ηνπ
αξρηθνύ πίλαθα ζε θάζε κία από ηηο δηεξγαζίεο θαηά αύμνπζα ηάμε. Μόιηο ε θεληξηθή
δηεξγαζία νινθιεξώζεη ηελ ηαμηλόκεζε ηνπ ππνπίλαθα πνπ ηεο αληηζηνηρεί θαιεί
επαλαιεπηηθά ην δεύγνο ζπλαξηήζεσλ MPI_Recv() θαη merge(). Έηζη ζε θάζε επαλάιεςε
ζπγρσλεύεηαη κε ηνλ ππνπίλαθα ηεο θεληξηθήο δηεξγαζίαο έλα αθόκε ηαμηλνκεκέλν θνκκάηη
πνπ πξνήιζε από θάπνηα άιιε δηεξγαζία. Σαλ απνηέιεζκα ιακβάλνπκε ηνλ αξρηθό πίλαθα κε
ηα ζηνηρεία ηνπ ηαμηλνκεκέλα θαηά αύμνπζα ζεηξά.
65
7) Μεθοδολογία μετρήςεων
Πίν. 7.1. Διάρκεια εκτζλεςθσ ςειριακοφ αλγορίκμων πολλαπλαςιαςμοφ πινάκων και ταξινόμθςθσ merge sort
από τα 10 μθχανιματα του εργαςτθρίου που επιλζγθκαν.
ηζρύο ιεηηνπξγίαο θαηά ηελ αλακνλή γηα ιήςε δεδνκέλσλ κέζσ ηεο ζπλάξηεζεο MPI_Recv()
θαη πξνέθπςε ε ηηκή θαηαλάισζεο αδξάλεηαο WNL . Γηα ηελ εύξεζε ηεο ζπλνιηθήο ελέξγεηαο
66
Πίν. 7.2. Αποτελζςματα μετριςεων ιςχφοσ λειτουργίασ πλιρουσ φορτίου και αδράνειασ για τα 10
μθχανιματα του εργαςτθρίου που επιλζγθκαν.
Η ζσλοιηθή ελέργεηα πνπ θαηαλαιώζεθε από ην θαηαλεκεκέλν ζύζηεκα θαηά ηελ εθηέιεζε
ελόο αιγνξίζκνπ δίλεηαη από ηε ζρέζε:
Total _ energyP
WP
Parallel _ execution _ timeP
7.2
67
Serial _ execution _ time Τν ρξνληθό δηάζηεκα γηα ηελ εθηέιεζε ηεο ζεηξηαθήο εθδνρήο ηνπ
αιγόξηζκνπ γηα δηάζηαζε πίλαθα n.
Parallel _ execution _ timeP Τν ρξνληθό δηάζηεκα γηα ηελ εθηέιεζε ηεο παξάιιειεο
εθδνρήο ηνπ αιγόξηζκνπ γηα δηάζηαζε πίλαθα n από P κεραλήκαηα.
Speedup
Η επηηάρπλζε πξνο ηε κέζε ηζρύ ιεηηνπξγίαο ηνπ θαηαλεκεκέλνπ ζπζηήκαηνο
WP
1
θαλνληθνπνηεκέλε σο πξνο πνπ απνηειεί ην αληίζηνηρν κέγεζνο γηα ηε ζεηξηαθή
W FL
εθηέιεζε καο δίλεη:
Τα δύν πνζά ελέξγεηαο Total _ energySerial θαη Total _ energyP δαπαλήζεθαλ γηα πξνθύςεη
ην ίδην απνηέιεζκα θαζώο αλαθέξνληαη ζηελ πινπνίεζε ηνπ ίδηνπ αιγνξίζκνπ κε κόλε
δηαθνξά ηνλ ηξόπν εθηέιεζεο, ζεηξηαθά θαη παξάιιεια αληίζηνηρα. Όιεο νη εξγαζίεο πνπ
εθηεινύληαη ζηνλ ζεηξηαθό αιγόξηζκν είλαη απαξαίηεηεο γηα ηελ επίηεπμε ηνπ ηειηθνύ
απνηειέζκαηνο. Σηελ παξάιιειε εθηέιεζε όκσο δαπαλάκε πνζό ελέξγεηαο ζε θαηαζηάζεηο
αλακνλήο θαη επηθνηλσλίαο πνπ απνηεινύλ ην παξάιιειν θνξηίν θαζώο δελ ζπκβάιινπλ
άκεζα ζηελ εμαγσγή ηνπ απνηειέζκαηνο. Έηζη κπνξνύκε λα ζεσξήζνπκε ηνλ παξαπάλσ
ιόγν σο ην πνζνζηό ελέξγεηαο ζηελ παξάιιειε εθηέιεζε πνπ δαπαλήζεθε ζε σθέιηκν έξγν.
68
7.4.1) Σειριακό τμήμα
Τν ζεηξηαθό ηκήκα ηνπ αιγνξίζκνπ πνιιαπιαζηαζκνύ πηλάθσλ απνηειείηαη αξρηθά
από δέζκεπζε κλήκεο γηα ηα ζηνηρεία ησλ πηλάθσλ A θαη B πνπ ζα πνιιαπιαζηαζηνύλ,
θαζώο θαη γηα ηνλ πίλαθα C πνπ ζα απνζεθεπηεί ην απνηέιεζκα. Σαλ δεύηεξν βήκα
ζεσξνύκε ηελ εθρώξεζε ηπραίσλ ηηκώλ ηνπ δηαζηήκαηνο από 0 κέρξη 3 ζηνπο πίλαθεο A θαη
B.
// 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 ππνπίλαθα πνπ ζα αλαιάβεη
θάζε δηεξγαζία λα ηαμηλνκήζεη.
s = n / p;
r = n % p;
69
for (i = 0; i < s; i++)
{
chunk[i] = data[i];
}
Όηαλ θαιείηαη ε ζπλάξηεζε my_bcast() ε θεληξηθή δηεξγαζία ζηέιλεη αξρηθά ην κήλπκα πνπ
πεξηέρεη ην ζύλνιν ησλ δεδνκέλσλ ζε κία από ηηο ππόινηπεο δηεξγαζίεο. Η ρξνληθή δηάξθεηα
γηα λα ζπκβεί απηό ζεσξείηαη torder . Μόιηο νινθιεξσζεί ε απνζηνιή θαη εθόζνλ ππάξρνπλ
δηεξγαζίεο πνπ δελ έρνπλ ιάβεη ηα δεδνκέλα, ε θεληξηθή καδί κε ηελ δηεξγαζία ηνπ
πξνεγνύκελνπ βήκαηνο αλαιακβάλνπλ ηελ ηαπηόρξνλε απνζηνιή ν θαζέλαο ζε κία από ηηο
ππόινηπεο. Απηή ε απνζηνιή έρεη επίζεο δηάξθεηα torder θαζώο ηα δεδνκέλα έρνπλ ην ίδην
70
κέγεζνο θαη νη απνζηνιέο πξαγκαηνπνηνύληαη ηαπηόρξνλα. Σην επόκελν torder δηαζέηνπκε 4
δηεξγαζίεο πνπ έρνπλ ιάβεη ηα δεδνκέλα θαη επνκέλσο έρνπκε ηε δπλαηόηεηα απνζηνιήο ζε
κέρξη θαη 4 λέεο δηεξγαζίεο. Η παξαπάλσ δηαδηθαζία ζπλερίδεηαη κέρξη λα ιάβνπλ όιεο νη
δηεξγαζίεο ηα απαξαίηεηα δεδνκέλα.
τ. 7.1. Αλαπαράζηαζε αποζηοιής δεδοκέλφλ κέζφ ηες my_bcast() γηα παράιιειο ζύζηεκα κε 13
δηεργαζίες. Οη δηεργαζίες ποσ αλήθοσλ ζηο ίδηο ορηδόληηα δηατφρηζκέλο ηκήκα ιακβάλοσλ ηο κήλσκα
ηασηότρολα.
Έηζη από ηελ παξαπάλσ πινπνίεζε ην ρξνληθό δηάζηεκα torder ππνινγίδεηαη από ηελ νιηθή
tbroadcast
torder 7.7
order
Όπνπ order log2 P ε ζπλνιηθή ηάμε ηνπ ζπζηήκαηνο κε P αξηζκό δηεξγαζηώλ.
Γηα ηνλ ρξόλν πνπ θάζε process βξίζθεηαη ζε αλακνλή κέρξη λα ιάβεη ηα δεδνκέλα
ππνινγίδνπκε ην πιήζνο ησλ torder πνπ ρξεηάδεηαη γηα λα μεθηλήζεη ηε ιήςε σο:
Όπνπ P _ rank 1, P 1 ν βαζκόο πνπ έρεη δνζεί ζηελ θάζε process θαηά ηελ εθθίλεζε
Οη δηεξγαζίεο πνπ δελ είλαη θύιια ηνπ γξαθήκαηνο θαη δελ απαηηείηαη λα πξνρσξήζνπλ ζε
θάπνηα απνζηνιή ηίζεληαη ζε αλακνλή γηα ρξόλν torder . Απηό ζπκβαίλεη δηόηη πξέπεη λα
71
πεξηκέλνπλ ηελ θεληξηθή δηεξγαζία λα νινθιεξώζεη ηελ Broadcast πξηλ πξνρσξήζεη ζηνλ
δηακνηξαζκό ησλ γξακκώλ ηνπ πίλαθα A. Ο ζπλνιηθόο αξηζκόο ησλ παξαπάλσ ρξνληθώλ
δηαζηεκάησλ ζπκπίπηεη κε ην πιήζνο δηεξγαζηώλ πνπ ζα ρξεηαδόηαλ γηα λα ζπκπιεξσζεί ην
ηειεπηαίν order. Δπνκέλσο ππνινγίδεηαη σο:
P 1
t _ broadcastidle after _ receive _ idle until _ receive _ idle P _ rank * torder
P _ rank 1
7.10
Τν ρξνληθό δηάζηεκα πνπ αθηεξώλεη ην ζύλνιν ησλ δηεξγαζηώλ ζην θνκκάηη Broadcast είλαη
P * tbroadcast θαη έρνληαο ππνινγίζεη ην t _ broadcastidle ν ζπλνιηθόο ελεξγόο ρξόλνο
πξνθύπηεη:
Αλγόρικμοσ 7.5. Καταμεριςμόσ και αποςτολι δεδομζνων ϊςτε ο πολλαπλαςιαςμόσ πινάκων να εκτελεςτεί
παράλλθλα.
offset += m;
}
72
Αλγόρικμοσ 7.6. Διαμοιραςμόσ του πίνακα data ϊςτε να πραγματοποιθκεί θ παράλλθλθ ταξινόμθςι του.
offset += s;
}
Τν ρξνληθό δηάζηεκα πνπ κεηξάκε είλαη ν ζπλνιηθόο ρξόλνο πνπ απαηηείηαη γηα λα
δηαζηήκαηα θαηά ηα νπνία θάζε κηα από ηηο δηεξγαζίεο εθηόο ηεο θεληξηθήο ιακβάλεη ηα
ζηνηρεία πνπ ηεο αληηζηνηρνύλ ππνινγίδεηαη σο:
t send
t _ send p
P 1
7.12
Γηα ηνλ αιγόξηζκν πνιιαπιαζηαζκνύ πηλάθσλ ε ζύλζεζε ηνπ ηειηθνύ πίλαθα από ηα
ηκήκαηα πνπ ππνιόγηζε ε θάζε δηεξγαζία έγθεηηαη ζηελ ιήςε θαη ηνπνζέηεζή ηνπο ζηελ
θαηάιιειε ζεηξά. Οη δύν απηέο ελέξγεηεο πξαγκαηνπνηνύληαη κέζσ ηεο επαλαιεπηηθήο
θιήζεο ηεο ζπλάξηεζεο MPI_Recv().
73
Αλγόρικμοσ 7.7. Σφνκεςθ του ςυνολικοφ αποτελζςματοσ πολλαπλαςιαςμοφ πινάκων από τθν κεντρικι
διεργαςία.
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 δηεξγαζίεο νξίδεηαη:
Αλγόρικμοσ 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 _ 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
δηεξγαζία μερσξηζηά. Γηα ηνλ ππνινγηζκό ηνπ ζπλνιηθνύ ελεξγνύ ρξνληθνύ δηαζηήκαηνο
ζεσξνύκε αξρηθά όηη ην δηάζηεκα πνπ απαηηεί θάζε δηεξγαζία είλαη ίζν κε απηό ηεο
θεληξηθήο.
75
Γηα ηηο δηεξγαζίεο πνπ εθηεινύλ ηαρύηεξα από ηελ θεληξηθή ην παξάιιειν ηκήκα ε δηαθνξά
ησλ ρξόλσλ εθηέιεζεο ζεσξείηαη t _ parallelidle πνπ πξνθύπηεη από ην άζξνηζκα ησλ
δηαθνξώλ απηώλ:
P 1
t _ parallelidle t _ parallelmaster t _ paralleli 7.23
i 1
t _ paralleli : Γηάξθεηα εθηέιεζεο ηνπ παξάιιεινπ ηκήκαηνο από ηελ δηεξγαζία κε rank=i
Γηα ηα κεραλήκαηα πνπ απαηηνύλ πεξηζζόηεξν ρξόλν από απηό πνπ αλαιακβάλεη ηελ
θεληξηθή δηεξγαζία ε δηαθνξά ησλ ρξόλσλ εθηέιεζεο ζεσξείηαη t _ parallelactive και
P 1
t _ parallelactive t _ paralleli t _ parallelmaster 7.24
i 1
Γηα ηελ εύξεζε ηεο ηειηθήο ηηκήο ησλ ζπλνιηθώλ ελεξγώλ θαη αδξαλώλ ρξόλσλ
πξνζαξκόδνπκε ηελ t _ paralleltotal πνπ ππνινγίζακε αξρηθά ζύκθσλα κε ηηο ηηκέο
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) Πειραματικά αποτελζςματα
78
Πιν. 8.1. Επιτάχυνςθ, καταναλιςκόμενθ ενζργεια και μζςθ ιςχφσ λειτουργίασ για το κατανεμθμζνο ςφςτθμα
κατά τθν εκτζλεςθ του αλγορίκμου παράλλθλου πολλαπλαςιαςμοφ πινάκων.
79
Η επιτάχυνςθ που πετυχαίνουμε για πολλαπλαςιαςμό πινάκων διαςτάςεων
100x100 φτάνει μόλισ το 1,803 ςτα 8 μθχανιματα και ζπειτα παρουςιάηει πτώςθ για
ςφςτθμα 9 και 10 μθχανθμάτων. Αυτό οφείλεται ςτθ μικρι χρονικι διάρκεια του
παράλλθλου τμιματοσ μόλισ 0,0119 δευτερόλεπτα θ οποία δεν προςφζρει περικώρια για
επιτάχυνςθ. Σε ςυνδυαςμό με το αυξανόμενο κόςτοσ επικοινωνίασ κάκε φορά που
χρθςιμοποιοφμε μεγαλφτερο πλικοσ μθχανθμάτων, οδθγεί τελικά ςτθ ςταδιακι μείωςι
τθσ. Η εκκετικι πτώςθ τθσ επιτάχυνςθσ ςε ςχζςθ με το ςειριακό ποςοςτό γίνεται εμφανισ
από τισ μετριςεισ που παρουςιάηονται. Ραρατθροφμε ότι κατά τθ μετάβαςθ από πίνακεσ
διάςταςθσ 100x100 ςε 300x300 ζχουμε μείωςθ του ςειριακοφ ποςοςτοφ κατά 6,7%
πετυχαίνοντασ αφξθςθ ςτθν μζγιςτθ επιτάχυνςθ ίςθ με 2,56. Πμωσ όταν ζχουμε πίνακεσ
διάςταςθσ 1000x1000 με περεταίρω μείωςθ το ςειριακοφ ποςοςτοφ κατά μόλισ 1,5%
πετυχαίνουμε αφξθςθ ςτθ μζγιςτθ επιτάχυνςθ ίςθ με 3,05 μζγεκοσ που περιορίηεται από το
πλικοσ μθχανθμάτων που ζχουμε διακζςιμο.
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
Ρλικοσ μθχανθμάτων
Πειραμματικό 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
Ρλικοσ μθχανθμάτων
81
Πιν. 8.2. Επιτάχυνςθ ανά καταναλιςκόμενθ ενζργεια και επιτάχυνςθ ανά μζςθ ιςχφ λειτουργίασ για το
κατανεμθμζνο ςφςτθμα κατά τθν εκτζλεςθ του αλγορίκμου παράλλθλου πολλαπλαςιαςμοφ πινάκων.
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. Επιτάχυνςθ ανά καταναλιςκόμενθ ενζργεια για τα διαφορετικά μεγζκθ πινάκων.
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% ηεο ζπλνιηθήο
ελέξγεηαο λα παξέρεηαη ζηηο αξηζκεηηθέο πξάμεηο γηα ηνλ ππνινγηζκό κε ην ππόινηπν λα
δαπαλάηαη ζηελ επηθνηλσλία θαη ζε ζηάδηα αδξάλεηαο. Η πςειή απηή ηηκή νθείιεηαη ζηελ
κεγάιε ππνινγηζηηθή πνιππινθόηεηα ηεο πξάμεο πνιιαπιαζηαζκνύ πηλάθσλ θαζώο ε
δηάξθεηα πνπ απαηηείηαη γηα ηελ νινθιήξσζή ηεο θιηκαθώλεηαη ξαγδαία ζε ζρέζε κε ην
θόζηνο επηθνηλσλίαο.
Η κέγηζηε επηηάρπλζε πνπ πεηπραίλνπκε γηα πίλαθα 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.
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
Ρλικοσ μθχανθμάτων
Πειραματικό Speedup
7
6
5
Επιτάχυνςθ
4
3 8M
2 100K
1
0
1 2 3 4 5 6 7 8 9 10
Ρλικοσ μθχανθμάτων
86
Πιν. 8.4. Επιτάχυνςθ ανά καταναλιςκόμενθ ενζργεια και επιτάχυνςθ ανά μζςθ ιςχφ λειτουργίασ για το
κατανεμθμζνο ςφςτθμα κατά τθν εκτζλεςθ του αλγορίκμου merge sort.
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. Επιτάχυνςθ ανά καταναλιςκόμενθ ενζργεια για τα διαφορετικά μεγζκθ πινάκων.
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. Επιτάχυνςθ ανά μζςθ ιςχφ λειτουργίασ για τα διαφορετικά μεγζκθ πινάκων.
89
9) Συμπεράςματα
Η κειέηε ησλ αιγνξίζκσλ πνιιαπιαζηαζκνύ πηλάθσλ θαη ηαμηλόκεζεο merge sort
θαζώο θαη ηα απνηειέζκαηα πνπ πξνέθπςαλ από ηηο πεηξακαηηθέο κεηξήζεηο θαη ηνπο
ππνινγηζκνύο κεγεζώλ καο νδεγνύλ ζηα παξαθάησ ζπκπεξάζκαηα.
Η κέζε ηζρύο ιεηηνπξγίαο ηνπ ζπζηήκαηνο θαηά ηελ παξάιιειε εθηέιεζε ελόο
αιγνξίζκνπ κπνξεί λα απνηειέζεη δείθηε ηνπ θαηά πόζν παξαιιεινπνηήζηκνο είλαη. Απηό
θαίλεηαη από ηε ζύγθξηζε ησλ ηηκώλ κέζεο ηζρύνο ζηνπο δύν δηαθνξεηηθνύο αιγόξηζκνπο
πνπ κειεηήζεθαλ. Τν γεγνλόο απηό ζηεξίδεηαη ζην όηη θαηά ηελ πιήξε ηζρύ ιεηηνπξγίαο ην
κεράλεκα πινπνηεί ηνπο αλαγθαίνπο ππνινγηζκνύο, ελώ ζε ρακειόηεξε ηζρύ βξίζθεηαη ζε
θαηάζηαζε αλακνλήο, δειαδή νη πόξνη ηνπ δελ αμηνπνηνύληαη.
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.
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.
[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.
[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.
[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.
[30] Y. Shi, “Reevaluating Amdahl's Law and Gustafson's Law,” in Statistic Multiplexed
Computing, Nov. 1996.
[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