• Nenhum resultado encontrado

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

N/A
N/A
Protected

Academic year: 2023

Share "Αρχιτεκτονικές παράλληλης επεξεργασίας και αλγόριθμοι παράλληλου υπολογισμού"

Copied!
98
0
0

Texto

(1)

Τ.Ε.Ι. ΚΑΒΑΛΑΣ

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

ΘΕΜΑ ΕΡΓΑΣΙΑΣ

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

ΤΗΣ ΣΠΟΥΔΑΣΤΡΙΑΣ

ΠΑΠΑΔΟΠΟΥΛΟΥ ΕΥΑΓΓΕΛΙΑΣ

ΕΠΙΒΛΕΠΩΝ

ΓΚΟΥΜΑΣ ΣΤΕΦΑΝΟΣ Καθηγητής Εφαρμογών

ΚΑΒΑΛΑ

ΕΤΟΣ 2007

(2)

ΠΕΡΙΕΧΟΜΕΝΑ

ΕΙΣΑΓΩΓΗ ... 3

ΚΕΦΑΛΑΙΟ 1 ... 5

1.1ΗΙΣΤΟΡΙΑΤΗΣΑΡΧΙΤΕΚΤΟΝΙΚΗΣΤΩΝΥΠΟΛΟΓΙΣΤΩΝ ... 5

1.2ΑΡΧΙΤΕΚΤΟΝΙΚΗΠΑΡΑΛΛΗΛΩΝΥΠΟΛΟΓΙΣΤΩΝ ... 8

1.2.1ΥΠΟΛΟΓΙΣΤΕΣ ΜΕ ΣΩΛΗΝΩΣΗ ... 8

1.2.2ΕΠΕΞΕΡΓΑΣΤΕΣ ΜΗΤΡΩΟΥ ... 10

1.2.3ΜΗΧΑΝΕΣ ΠΟΛΥΕΠΕΞΕΡΓΑΣΙΑΣ ... 10

1.3ΤΑΞΙΝΟΜΗΣΗΠΑΡΑΛΛΗΛΩΝΥΠΟΛΟΓΙΣΤΩΝ ... 11

1.3.1ΣΥΓΧΡΟΝΟΣΣΥΝΤΟΝΙΣΜΟΣ ... 11

1.3.2ΑΣΥΓΧΡΟΝΟΣΣΥΝΤΟΝΙΣΜΟΣ ... 13

1.4ΤΑΞΙΝΟΜΗΣΗΚΑΤΑFLYNN ... 14

1.5ΕΦΑΡΜΟΓΕΣΠΑΡΑΛΛΗΛΩΝΥΠΟΛΟΓΙΣΤΩΝ ... 17

ΚΕΦΑΛΑΙΟ 2 ... 19

2.1ΓΕΝΙΚΑ... 19

2.2ΔΙΚΤΥΑΔΙΑΣΥΝΔΕΣΗΣ ... 21

2.2.1ΔΙΚΤΥΑ ΜΟΝΑΔΙΚΟΥ ΣΤΑΔΙΟΥ (SINGLE STAGE NETWORKS) ... 24

2.2.2ΔΊΚΤΥΑ ΠΟΛΛΑΠΛΟΎ ΣΤΑΔΊΟΥ (MULTIPLE STAGE NETWORKS) ... 28

2.3ΠΟΛΥΕΠΕΞΕΡΓΑΣΤΕΣΚΑΙΠΟΛΥΥΠΟΛΟΓΙΣΤΕΣ ... 41

ΚΕΦΑΛΑΙΟ 3 ... 45

3.1ΠΑΡΑΛΛΗΛΟΣΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ... 45

3.2ΟΝΟΜΟΣΤΟΥAMDHAL ... 46

3.3TRANSPUTERSΚΑΙΓΛΩΣΣΑOCCAM ... 48

3.4ΗΕΠΙΚΟΙΝΩΝΙΑΜΕΤΑΞΥΔΙΕΡΓΑΣΙΩΝ ... 52

3.4.1ΒΑΣΙΚΕΣ ΛΕΙΤΟΥΡΓΙΕΣ ΤΟΥ ΥΛΙΚΟΥ ... 52

3.4.2ΧΡΗΣΗ ΚΟΙΝΩΝ ΑΓΑΘΩΝ... 54

3.4.3ΣΥΓΧΡΟΝΙΣΜΟΣ ΔΙΕΡΓΑΣΙΩΝ ... 59

3.5ΑΔΙΕΞΟΔΑΚΑΙΑΠΟΦΥΓΗΤΟΥΣ ... 62

3.6ΠΑΡΑΛΛΗΛΕΣΕΝΤΟΛΕΣΚΑΙΔΟΜΕΣΥΨΗΛΟΥΕΠΙΠΕΔΟΥ ... 66

3.6.1ΟΙ ΕΝΤΟΛΕΣ FORK ΚΑΙ JOIN ... 66

3.6.2ΟΙ ΕΝΤΟΛΕΣ PARBEGIN ΚΑΙ PAREND ... 69

ΚΕΦΑΛΑΙΟ 4 ... 71

4.1ΕΙΣΑΓΩΓΗ ... 71

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

(3)

4.3ΚΡΙΤΗΡΙΑΜΕΙΩΣΗΣΑΠΟΔΟΣΗΣΠΑΡΑΛΛΗΛΩΝΠΡΟΓΡΑΜΜΑΤΩΝ ... 75

4.4ΗΔΙΑΔΙΚΑΣΙΑΠΑΡΑΛΛΗΛΟΠΟΙΗΣΗΣΤΟΥΠΡΟΓΡΑΜΜΑΤΟΣ ... 77

4.4.1ΒΗΜΑ 1:ΑΠΟΣΥΝΘΕΣΗ ΑΛΓΟΡΙΘΜΟΥ ΣΕ ΕΡΓΑΣΙΕΣ. ... 78

4.4.2ΒΗΜΑ 2:ΑΝΑΘΕΣΗ ΕΡΓΑΣΙΩΝ ΣΕ ΔΙΕΡΓΑΣΙΕΣ. ... 81

4.4.3ΒΗΜΑ 3:ΧΡΟΝΟΔΡΟΜΟΛΟΓΗΣΗ ... 85

4.5ΑΝΑΘΕΣΗΚΑΙΧΡΟΝΟΔΡΟΜΟΛΟΓΗΣΗ ... 87

ΚΕΦΑΛΑΙΟ 5 ... 89

5.1ΟΑΛΓΟΡΙΘΜΟΣODD-EVEN TRANSPOSITION ... 89

5.2ΟΑΛΓΟΡΙΘΜΟΣSHELL-SORT ... 91

5.3ΟΑΛΓΟΡΙΘΜΟΣQUICKSORT ... 93

5.4ΟΑΛΓΟΡΙΘΜΟΣBUCKET SORT ... 95

5.5ΟΑΛΓΟΡΙΘΜΟΣRADIX SORT ... 96

ΒΙΒΛΙΟΓΡΑΦΙΑ ... 97

(4)

ΕΙΣΑΓΩΓΗ

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

Τομέα αιχμής για την αποδοτική εκμετάλλευση των σύγχρονων παράλληλων υπολογιστικών συστημάτων καθώς και για την οικονομικότερη ανάπτυξη και συντήρηση εφαρμογών με υψηλές υπολογιστικές απαιτήσεις αποτελεί η αυτόματη παραλληλοποίηση αλγορίθμων. Στα προηγούμενα χρόνια αναπτύχθηκε μια τεράστια βιβλιοθήκη προγραμμάτων που εκτελούνταν ακολουθιακά σε συμβατούς υπολογιστές, ο χρόνος όμως εκτέλεσης τους ήταν πολύ μεγάλος και απαγορευτικός πολλές φορές για την περαιτέρω αξιοποίηση των αποτελεσμάτων. Η διαδικασία παραλληλοποίησης προγραμμάτων, είτε αυτή γίνεται από κάποιον προγραμματιστή, είτε από κάποιο αυτόματο εργαλείο προϋποθέτει την εφαρμογή αποδοτικών μεθόδων δρομολόγησης των διεργασιών και απεικόνισης τους ώστε να επιτυγχάνεται η μέγιστη δυνατή εκμετάλλευση των διαθέσιμων υπολογιστικών πόρων.

Η εργασία αυτή αποτελείται από πέντε κεφάλαια:

Στο πρώτο κεφάλαιο θα δούμε τα είδη των παράλληλων υπολογιστών και τις εφαρμογές αυτών. Επίσης σε αυτό το κεφάλαιο περιγράφονται και τα πρότυπα SISD, SIMD, MISD και MIMD.

Στο δεύτερο κεφάλαιο αναλύονται τα δίκτυα διασύνδεσης που χρησιμοποιούνται στους παράλληλους υπολογιστές. Ακόμα θα δούμε, εν συντομία, τους πολυεπεξεργαστές, και τους πολυυπολογιστές.

(5)

Στο τρίτο κεφάλαιο θα ασχοληθούμε με τον παράλληλο προγραμματισμό, τον νόμο του Αmdhal., την γλώσσα προγραμματισμού Occam. Μνεία γίνεται και στις βασικές λειτουργίες που πρέπει να προσφέρει το παράλληλο λειτουργικό σύστημα για την επικοινωνία μεταξύ των διεργασιών.

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

Τέλος, στο πέμπτο κεφαλαιο και τελευταίο αυτής της εργασίας, περιγράφονται κάποιοι από τους παράλληλους αλγόριθμους ταξινόμησης καθώς επίσης αναφέρεται και κάποια υλοποίηση αυτών.

(6)

ΚΕΦΑΛΑΙΟ 1

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΠΑΡΑΛΛΗΛΟΥΣ ΥΠΟΛΟΓΙΣΤΕΣ

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

Είναι γνωστό ότι οι αρχικοί υπολογιστές αναπτύχθηκαν και χρησιμοποιήθηκαν κυρίως για αριθμητικές εφαρμογές ( π.χ. επίλυση διαφορικών εξισώσεων). Τα τεχνολογικά δεδομένα της εποχής εκείνης δεν επέτρεπαν την χρήση υπολογιστών ούτε για τις πιο απλές εφαρμογές (λόγω του υψηλού κόστους των τότε υπολογιστών), ούτε για πιο πολύπλοκες (λόγω της χαμηλής ταχύτητας εκτέλεσης). Η αλλαγή όμως των δεδομένων στην τεχνολογία των υπολογιστών επέτρεψε τόσο την πτώση του κόστους του υλικού, όσο και την σημαντική αύξηση της ταχύτητας των υπολογιστών. Αυτό είχε σαν συνέπεια τη διεύρυνση του φάσματος των προβλημάτων που μπορούσαν να επιλυθούν από υπολογιστές. Αυτή η εξέλιξη επιταχύνθηκε με την εισαγωγή των μικροεπεξεργαστών και της τεχνολογίας. Επειδή όμως η πίεση για ακόμα ισχυρότερους υπολογιστές εξακολουθούσε να αυξάνει, οι σχεδιαστές υπολογιστικών συστημάτων έστρεψαν την προσοχή τους και σε ένα νέο πεδίο: την παράλληλη επεξεργασία.

Στον πίνακα 1 φαίνονται οι πέντε βασικές φάσεις εξέλιξης της αρχιτεκτονικής των υπολογιστών. Οι φάσεις καλούνται γενιές λόγω των σημαντικών αλλαγών μεταξύ τους

Πρώτη γενιά. Όσον αφορά το υλικό (hardware) οι υπολογιστές πρώτης γενιάς

αποτελούνταν από λυχνίες και μνήμες ρελαί. Από αρχιτεκτονικής απόψεως υπήρχε μια κεντρική μονάδα επεξεργασίας (Central Processing Unit: CPU) η οποία εκτελούσε πράξεις σταθερής υποδιαστολής, περιείχε ένα συσσωρευτή και ένα μετρητή προγράμματος (Program Counter: PC). Οι δύσχρηστες γλώσσες μηχανής ή assembly χρησιμοποιούνταν για την ανάπτυξη λογισμικού.

Δεύτερη γενιά Ως προς το υλικό οι υπολογιστές δεύτερης γενιάς είχαν μια σημαντική διαφορά από τους προγενέστερους: το τρανζίστορ αντί για λυχνίες. Επίσης η μνήμη αποτελείτο από μικρούς μαγνητικούς δακτυλίους (core memory). Αρχιτεκτονικά υπήρχε ένας επεξεργαστής µε καταχωρητές, αριθμητική κινητής υποδιαστολής, πολυπλεγμένη προσπέλαση στη μνήμη ενώ αναπτύχθηκαν ειδικοί επεξεργαστές για λειτουργίες

(7)

εισόδου/ εξόδου. Ταυτόχρονα εμφανίστηκαν οι πρώτες γλώσσες υψηλού επιπέδου (Fortran, Algol, Cobol), μαζί µε τους απαιτούμενους μεταφραστές (compilers), τις βιβλιοθήκες υπορουτινών. Η εκτέλεση των προγραμμάτων γινόταν σε μορφή batch, δηλαδή το ένα πρόγραμμα τελείωνε πλήρως πριν εκτελεστεί το επόμενο.

Τρίτη γενιά. Το υλικό της τρίτης γενιάς ακολουθεί την κατεύθυνση των ολοκληρωμένων κυκλωμάτων μικρής και μεσαίας πυκνότητας (Small/Medium Scale Integration: SSI/MSI) μέχρι 10000 τρανζίστορς ανά chip. Η αρχιτεκτονική εξακολουθεί να βασίζεται σε μια κεντρική μονάδα επεξεργασίας αλλά τώρα οι διεργασίες μπορούν να τρέχουν ταυτόχρονα μοιράζοντας το χρόνο της CPU µε κάποιο αλγόριθμο time-sharing δηλαδή, πολλοί χρήστες μπορούν να χρησιμοποιούν ταυτόχρονα τη CPU, ενώ εμφανίζονται τα αντίστοιχης πολυπλοκότητας λειτουργικά συστήματα όπως το UNIX (1973).

Τέταρτη γενιά. Στην γενιά αυτή εμφανίζονται τα κυκλώματα μεγάλης και πολύ μεγάλης πυκνότητας (LSI/VLSI) μέχρι 1 εκατομμύριο τρανζίστορς ανά chip.

Εμφανίζονται οι πολυεπεξεργαστές και τα αντίστοιχα λειτουργικά συστήματα, καθώς και οι παράλληλες γλώσσες προγραμματισμού.

Πέμπτη γενιά. Οι υπολογιστές του σήμερα χρησιμοποιούν τεχνολογία υπερβολικά μεγάλης πυκνότητας ολοκλήρωσης (μέχρι 256 εκατομμύρια τρανζίστορ /chip) και χρησιμοποιούν ταχύτητες ρολογιού που ξεπερνούν τα 3 GHz. Αρχιτεκτονικά τα παράλληλα συστήματα φτάνουν σε ωριμότητα και εμφανίζονται οι πρώτοι παράλληλοι επεξεργαστές για κοινή και καθημερινή χρήση. Αναπτύσσονται τα clusters, δηλαδή μεγάλες ομάδες απλών υπολογιστών γραφείου οι οποίοι συνδεδεμένοι μέσα από ένα υπερταχύ τυποποιημένο δίκτυο προσφέρουν τεράστιες επεξεργαστικές και αποθηκευτικές δυνατότητες διατυπώνονται οι μεγάλες προκλήσεις (grand challenges) της υπολογιστικής και των τηλεπικοινωνιών. Αυτές είναι πολύ μεγάλες και από υπολογιστικής απόψεως εξαιρετικά απαιτητικές εφαρμογές µε σπουδαία πρακτική αξία καθώς επηρεάζουν την καθημερινή µας ζωή, άμεσα ή μακροπρόθεσμα. Τέτοιες εφαρμογές είναι π.χ., η όραση των υπολογιστών, η μελέτη του κλίματος και η μακροπρόθεσμη πρόγνωση του καιρού, η μοντελοποίηση των ωκεανών, της ζώνης του όζοντος, ο σχεδιασμός πρωτεϊνών και φαρμάκων µέσω της μοντελοποίησης και της οπτικοποίησης των µορίων ([1]).

(8)

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

ΑΝΤΙΠΡΟΣΩΠΕΥΤΙΚΟΙ ΥΠΟΛΟΓΙΣΤΕΣ Πρώτη

(1945-54)

Λυχνίες και µνήµες ρελαί Μια CPU, µε

συσσωρευτή και αριθµητική σταθερής υποδιαστολής

Γλώσσα µηχανής / assembly, ένας χρήστης,

προγραµµατιζόµενη είσοδος έξοδος χρησιµοποιώντας τη CPU

ENIAC Princeton IAS IBM 701

Δεύτερη (1955-64)

Transistors, μνήμες core, αριθμητική κινητής υποδιαστολής, επεξεργαστές Ε/Ε, πολυπλεγμένη προσπέλαση μνήμης

Γλώσσες υψηλού επιπέδου, μεταφραστές, βιβλιοθήκες µε υπορουτίνες, εκτέλεση προγραμμάτων σε δέσμες (batch)

IBM 7090 CDC 1604 Univac LARC

Τρίτη (1965-74)

Ολοκληρωμένα κυκλώματα (SSI/MSI), μικροπρογραμματισμός, pipelining, μνήμες cache

Πολυπρογραμματισµός, λειτουργικά

συστήματα, μοίρασμα του χρόνου, πολλοί χρήστες

IBM 360/370 CDC 6600 PDP-11

Τέταρτη (1975-90)

LSI/VLSI, μνήμες ημιαγωγών, πολυεπεξεργαστές, διανυσματικοί υπερυπολογιστές (supercomputers), πολυυπολογιστές

Παράλληλα λειτουργικά

συστήματα, γλώσσες, μεταφραστές και περιβάλλοντα για παράλληλη επεξεργασία

VAX 9000 Cray X-MP IBM 3090

Πέµπτη (1991-σήµερα)

ULSI/VHSIC,

διακόπτες, επεκτάσιµες Αρχιτεκτονικές

Μαζικά παράλληλη επεξεργασία, µεγάλες προκλήσεις (grand challenge applications

Fujitsu VPP500 Cray MPP Intel Paragon

Πίνακας 1. Οι βασικές φάσεις εξέλιξης της αρχιτεκτονικής των υπολογιστών

(9)

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

Οι παράλληλοι υπολογιστές διαιρούνται σε τρεις κυρίως αρχιτεκτονικές διατάξεις ([1]):

Υπολογιστές με σωλήνωση (Pipeline computers)

Επεξεργαστές μητρώου (Array processors)

Μηχανές πολυεπεξεργασίας (Multiprocessors machines)

Ένας υπολογιστής με σωλήνωση (pipeline) εκτελεί υπολογισμούς που επικαλύπτονται για να πετύχει παραλληλία στο χρόνο. Ένας επεξεργαστής μητρώου (array processor) χρησιμοποιεί πολλαπλές συγχρονισμένες αριθμητικές και λογικές μονάδες (ALU’s) για να πετύχει παραλληλισμό στο χώρο. Ένα σύστημα πολυεπεξεργασίας (multiprocessor) πετυχαίνει ασύγχρονο παραλληλισμό με ένα σύνολο επεξεργαστών που επικοινωνούν μεταξύ τους και μοιράζονται κοινές μνήμες, βάσεις δεδομένων.

1.2.1 Υπολογιστές με σωλήνωση

Η διαδικασία εκτέλεσης μιας εντολής από έναν υπολογιστή περιλαμβάνει τέσσερα βασικά βήματα: instruction fetch (ΙF) δηλαδή την ανάκληση της εντολής, instruction decoding (ΙD) δηλαδή την αποκωδικοποίηση της εντολής, operand fetch(ΟF) δηλαδή την ανάκληση του παράγοντα αν χρειάζεται, και execution (EΧ) δηλαδή την εκτέλεση της εντολής. Σε έναν υπολογιστή πού δεν χρησιμοποιεί pipeline, αυτά τα βήματα κάθε εντολής πρέπει να εκτελεσθούν πριν αρχίσει η διαδικασία εκτέλεσης της επόμενης εντολής (Σχήμα 1). Σε έναν υπολογιστή που περιλαμβάνει pipeline, οι διεργασίες αυτές επικαλύπτονται με τις διεργασίες διαδοχικών εντολών, όπως φαίνεται στο Σχήμα 2. Έτσι για παράδειγμα, μπορεί να αρχίσει το instruction fetch μιας εντολής καθώς εκτελείται το instruction fetch της προηγούμενης.

Θεωρητικά, ένας υπολογιστής με σωλήνωση με k στάδια pipeline μπορεί να είναι μέχρι k φορές ταχύτερος από έναν υπολογιστή χωρίς pipeline. Στην πράξη δεν συμβαίνει αυτό γιατί μπορεί να έχουμε αλλαγές ροής, interrupts, εξάρτηση δεδομένων

(10)

Σχήμα 1 Υπολογιστής που δεν χρησιμοποιεί pipeline

Σχήμα 2 Υπολογιστής που περιλαμβάνει pipeline

1 2 3 4 5 6 7 8 time

stage s

IF OP ID EX

I1

I1

I1

I1

I2

I2

I2

I2

time Pipeline

stages

IF OP ID EX

I1

I1

I1

I1

I2 I3 I4 I5

I2

I2

I2

I3

I3

I3

I4

I4

I4

I5

I5

I5

(11)

1.2.2 Επεξεργαστές μητρώου

Ένας επεξεργαστής μητρώου (array processor) είναι ένας υπολογιστής που διαθέτει πολλές αριθμητικές και λογικές μονάδες, ονομαζόμενες processing elements (ΡΕ), και οι οποίες λειτουργούν σε απόλυτο συγχρονισμό. Τα array processors χρησιμοποιούνται κυρίως για εξειδικευμένους υπολογισμούς όπως είναι ο πολλαπλασιασμός μητρώων, η επεξεργασία εικόνων. Συνήθως τα processing elements ενός array processor είναι συνδεδεμένα μεταξύ τους με κάποιο δίκτυο, η μορφή του οποίου εξαρτάται από την εφαρμογή. Ένα παράδειγμα array processor για πολλαπλασιασμό μητρώων φαίνεται στο Σχήμα 3. Οι array processors μπορούν να πετύχουν πολύ μεγάλες ταχύτητες επεξεργασίας, αλλά δεν μπορούν να χρησιμοποιηθούν για γενικής φύσεως εφαρμογές.

Σχήμα 3Array processor για πολλαπλασιασμό μητρώων

1.2.3 Μηχανές πολυεπεξεργασίας

Τα συστήματα πολλαπλών επεξεργαστών αποτελούνται από έναν αριθμό υπολογιστών συνδεδεμένων μεταξύ τους είτε απ' ευθείας είτε μέσω κοινής μνήμης. Οι υπολογιστές αυτοί επεξεργάζονται τμήματα της ίδιας εφαρμογής παράλληλα, και επικοινωνούν μεταξύ τους για την ανταλλαγή πληροφοριών και δεδομένων.

Συνηθισμένες συνδεσμολογίες είναι το κοινό bus, οι διακόπτες crossbar, και μνήμες πολλαπλών εισόδων και εξόδων.

(12)

1.3 ΤΑΞΙΝΟΜΗΣΗ ΠΑΡΑΛΛΗΛΩΝ ΥΠΟΛΟΓΙΣΤΩΝ

Οι παράλληλοι υπολογιστές μπορούν να ταξινομηθούν σύμφωνα με το Σχήμα4:

Σχήμα 4 Ταξινόμηση παράλληλων υπολογιστών

Στα παράλληλα προγράμματα χρειάζεται συντονισμός όταν μία εργασία (task) εξαρτάται από μία άλλη. Υπάρχουν δύο γενικώς μέθοδοι συντονισμού παράλληλων υπολογιστών

 Σύγχρονος συντονισμός

 Ασύγχρονος συντονισμός

1.3.1 ΣΥΓΧΡΟΝΟΣ ΣΥΝΤΟΝΙΣΜΟΣ

Στην περίπτωση αυτή υπάρχει σύγχρονος ή lockstep συντονισμός στο hardware.

Εκτελούνται όλες οι πράξεις συγχρόνως και με τρόπο ο οποίος αφαιρεί την εξάρτηση της μιας εργασίας από την άλλη. Στην κατηγορία αυτήν των σύγχρονων υπολογιστών ανήκουν οι ακόλουθοι τύποι υπολογιστών:

Vector/ Array

Οι υπολογιστές με σωλήνωση (pipeline computers) ανήκουν στην κατηγορία αυτή.

Όταν οι εργασίες μπορούν να χωριστούν σε φάσεις (stages) οι οποίες να εκτελούνται στη

Παράλληλοι υπολογιστές

Σύγχρονοι (Synchronous)

Ασύγχρονοι (Asynchronous)

Vector/ Array SISD

Systolic

MIMD Reduction

(13)

σειρά με διαφορετικούς επεξεργαστές, τότε έχουμε παράλληλη επεξεργασία πολλαπλών εργασιών κάθε μία από τις οποίες βρίσκεται σε διαφορετική φάση. Από την άποψη μιας εργασίας ο χρόνος απόκρισης ( response time) είναι ο ίδιος αλλά ο συνολικός χρόνος (total time) για όλες τις εργασίες είναι μικρότερος.

Επειδή αυτή τη μορφή παραλληλισμού μπορούν να την αξιοποιούν καλύτερα προβλήματα που συνεπάγονται πράξεις σε πίνακες και διανύσματα για αυτό και η επεξεργασία σωλήνωσης (pipeline processing) αναφέρεται συχνά σαν vector/array επεξεργασία.

SIMD (Single Instruction Multiple Data)

Πολλαπλά στοιχεία επεξεργασίας εκτελούν την ίδια εντολή την ίδια χρονική στιγμή ή παραμένουν ανενεργά. Υπάρχει μία μονάδα ελέγχου μόνο. Οι υπολογιστές Thinking Machine, Connection Machine και MasPar είναι παραδείγματα SIMD υπολογιστών.

Συστολικοί (Systolic)

Ένας συστολικός παράλληλος υπολογιστής είναι υπολογιστής πολυεπεξεργασίας με σωλήνωση στον οποίο τα δεδομένα κατανέμονται από την μνήμη σε έναν πίνακα επεξεργαστών (array of processors) πριν επιστραφούν στην μνήμη.

Μία μακροσκοπική αντίληψη της συστολικής επεξεργασίας είναι εκείνη ενός πίνακα επεξεργαστών που έχει την μνήμη σαν όπιο στον πίνακα. Περιλαμβάνει χαρακτηριστικά και της επεξεργασίας με σωλήνωση και της SIMD.

Το σημαντικότερο πλεονέκτημα αυτού του τύπου της παράλληλης επεξεργασίας είναι ότι επιτυγχάνονται πολύ υψηλές ταχύτητες αποφεύγοντας bottlenecks εισόδου εξόδου.

Αυτό συνήθως επιτυγχάνεται με το να κυκλοφορούν τα δεδομένα μεταξύ των επεξεργαστών όσο περισσότερο γίνεται πριν επιστρέψουν στην μνήμη ([12]).

(14)

1.3.2 ΑΣΥΓΧΡΟΝΟΣ ΣΥΝΤΟΝΙΣΜΟΣ

Ο τύπος αυτός ονομάζεται ασύγχρονος διότι δεν υπάρχει lockstep συντονισμός αλλά βασίζεται σε μηχανισμούς συγχρονισμού που ονομάζεται locks για τον συγχρονισμό των επεξεργαστών.

Ο ασύγχρονος παραλληλισμός είναι η πιο γενική μορφή του παραλληλισμού επειδή οι επεξεργαστές εκτελούν ελεύθερα τις εργασίες (tasks) χωρίς να υπάρχει ολικός συγχρονισμός (global synchronization).

Αντί των locksteps των διαφόρων τύπων του συγχρονισμένου παραλληλισμού, η ασύγχρονη μέθοδος βασίζεται σε locks και σαφή έλεγχο της ροής.

MIMD (Multiple-Instruction-Multiple-Data)

Ο τύπος αυτός εννοεί ότι πολλοί επεξεργαστές εκτελούν την ίδια χρονική στιγμή διαφορετικές εντολές σε διαφορετικά δεδομένα. Επίσης οι επεξεργαστές αυτοί λειτουργούν σε μεγάλο βαθμό αυτόνομα σαν να ήταν ξεχωριστοί υπολογιστές.

Reduction

Στους reduction υπολογιστές ο παραλληλισμός επιτυγχάνεται με μια μέθοδο που ονομάζεται demand-driver data-flow. Ένα task ενεργοποιείται για εκτέλεση από έναν επεξεργαστή όταν τα αποτελέσματα του απαιτούνται από κάποιο άλλο task το οποίο επίσης ενεργοποιείται ([12]).

(15)

1.4 ΤΑΞΙΝΟΜΗΣΗ ΚΑΤΑ FLYNN

Το 1972 ο Michael Flynn πρότεινε την ακόλουθη ταξινόμηση των υπολογιστικών συστημάτων η οποία έχει κυριαρχήσει σήμερα. Οι υπολογιστές ταξινομούνται ανάλογα µε το πόσες διαφορετικές ακολουθίες εντολών (instruction streams) εκτελούνται ταυτόχρονα σε πόσες ακολουθίες δεδομένων (data streams). Έτσι οι υπολογιστές ανήκουν σε μια από τις παρακάτω τέσσερεις κατηγορίες:

1. SISD (Single Instruction stream - Single Data stream).

Ο υπολογιστής τύπου SISD εκτελεί μια µόνο εντολή κάθε χρονική στιγμή σε ένα δεδομένο. Όπως φαίνεται και στο Σχήμα 5α, το μοντέλο αυτό είναι ο κλασσικός επεξεργαστής (π.χ. ο 8086). Υπάρχει μια μονάδα ελέγχου (CU) η οποία δέχεται εντολές και εξυπηρετεί την είσοδο και την έξοδο. Η εντολή που δίνεται από τη μονάδα ελέγχου πηγαίνει στην μονάδα επεξεργασίας (PU) όπου και εκτελείται. Η μονάδα επεξεργασίας χρησιμοποιεί δεδομένα από τη μνήμη (MU) η οποία παρέχει επίσης εντολές στην μονάδα ελέγχου.

2. SIMD (Single Instruction stream - Multiple Data stream).

Στον υπολογιστή τύπου SIMD (Σχήμα 5β) υπάρχουν πολλές επεξεργαστικές μονάδες που λέγονται και επεξεργαστικά στοιχεία (PE) τα οποία όμως εκτελούν την ίδια εντολή.

Η εντολή προέρχεται από τη μοναδική μονάδα ελέγχου (CU) που υπάρχει στο σύστημα.

Κάθε επεξεργαστική μονάδα έχει κάποια τοπική μνήμη (LM) απ' όπου αντλεί τα δεδομένα πάνω στα οποία θα εκτελεστεί η εν λόγω εντολή. Ένας υπολογιστής τύπου SIMD είναι συνήθως προσκολλημένος σε ένα κύριο υπολογιστή (π.χ. ένα SUN Workstation, ένα Pentium PC) ο οποίος στέλνει εντολές για να εκτελεστούν από τον SIMD υπολογιστή. Έτσι οι υπολογιστές αυτού του τύπου είναι αρκετά απλοί στο λογισμικό αφού δεν υπάρχει π.χ. λειτουργικό σύστημα, σπανίως χειρίζονται την είσοδο και την έξοδο (κάτι που είναι δουλειά του κεντρικού υπολογιστή). Συνήθως οι υπολογιστές αυτοί είναι κάποιου είδους επιταχυντές, δηλαδή είναι ειδικευμένοι να εκτελούν γρήγορα κάποιες ειδικές λειτουργίες που χρειάζονται σε κάποιες ειδικές

(16)

εφαρμογές. Για παράδειγμα κάποιοι αλγόριθμοι επεξεργασίας εικόνας, όπως η συνέλιξη ή ο μετασχηματισμός Fourier μπορούν να υλοποιηθούν εύκολα σε τέτοιου είδους υπολογιστή.

3. MISD (Multiple Instruction stream - Single Data stream).

Το μοντέλο αυτό (Σχήμα 5γ) προσομοιάζει τη λειτουργία pipeline: υπάρχει μια σειρά από επεξεργαστικές μονάδες όπου η κάθε μια έχει τον δικό της ελεγκτή και επομένως εκτελεί εν γένει διαφορετική εντολή από τις άλλες. Η διαφορά από το μοντέλο MIMD είναι ότι η ακολουθία δεδομένων είναι μια. Τα δεδομένα πηγάζουν από την κύρια μνήμη, όπου τα επεξεργάζεται η πρώτη μονάδα επεξεργασίας, το αποτέλεσμα της πράξης παραδίδεται στη μονάδα 2, αυτή κατόπιν παραδίδει στη μονάδα 3, κοκ.

4. MIMD (Multiple Instruction stream - Multiple Data stream).

Στα Σχήματα 5δ1 και 5δ2 φαίνεται η διάταξη ενός υπολογιστή τύπου MIMD. Εδώ υπάρχουν πολλές μονάδες ελέγχου οι οποίες εν γένει εκδίδουν διαφορετικές εντολές και υπάρχουν πολλές μονάδες επεξεργασίας (μια για κάθε μονάδα ελέγχου). Οι επεξεργαστικές μονάδες είτε επικοινωνούν μέσα από μια κοινή μνήμη (σχήμα 5δ1) είτε διαθέτουν τοπικές μνήμες (σχήμα 5δ2) οπότε επικοινωνούν μεταξύ τους µέσω κάποιου δικτύου διασύνδεσης. Έτσι το μοντέλο αυτό μοιάζει µε πολλούς υπολογιστές οι οποίοι λειτουργούν εν μέρει ανεξάρτητα μεταξύ τους αλλά συνεργάζονται για τη λύση του ίδιου προβλήματος µέσω κάποιου δικτύου επικοινωνίας.

Στην αρχή της ιστορίας των παράλληλων υπολογιστών το μοντέλο SIMD μελετήθηκε πιο εκτενώς γιατί είναι και το απλούστερο. Το μοντέλο MISD δεν έχει μέχρι στιγμής υλοποιηθεί στην πράξη ως αυτόνομος και ολοκληρωμένος υπολογιστής. Δεν υπάρχει υπολογιστής στο εμπόριο ο οποίος να ακολουθεί αυτό το μοντέλο. Η φιλοσοφία του pipeline ωστόσο που κυριαρχεί στο MISD χρησιμοποιείται, και μάλιστα πολύ συχνά, σε συγκεκριμένες υπομονάδες μέσα σε επεξεργαστές. Έτσι έχουμε, π.χ. το pipeline εντολών, το pipeline της μονάδας κινητής υποδιαστολής (Floating Point Unit).

Οι επεξεργαστές τύπου MIMD είναι οι πιο γενικού σκοπού και μπορούν να σταθούν µόνοι τους σαν αυτόνομοι υπολογιστές σε αντίθεση µε τους υπολογιστές τύπου SIMD οι οποίοι πρέπει να είναι συνδεδεμένοι µε κάποιο κεντρικό υπολογιστή. Στο μοντέλο

(17)

MIMD εντάσσονται και τα clusters καθώς αποτελούνται ουσιαστικά από πολλές μονάδες τύπου SISD συνδεδεμένες στο δίκτυο. Το μοντέλο MIMD έχει πολύ αναπτυχθεί τα τελευταία χρόνια κυρίως για δύο λόγους:

o Οι μηχανές MIMD προσφέρουν ευελιξία, δηλαδή μπορούν είτε να χρησιμοποιηθούν σαν υπολογιστές ενός χρήστη όπου δίνεται η δυνατότητα επιτάχυνσης των εφαρμογών είτε σαν πολυπρογραμματιζόμενες μηχανές όπου εκτελούνται πολλές εργασίες (tasks) ταυτόχρονα.

Οι μηχανές MIMD μπορούν να χτιστούν χρησιμοποιώντας κοινούς επεξεργαστές όπως o Intel Pentium. Οι περισσότεροι παράλληλοι υπολογιστές τύπου MIMD που υπάρχουν στην αγορά σήμερα χρησιμοποιούν τέτοιου τύπου επεξεργαστές ([1]).

Σχήμα 5 Ταξινόμηση υπολογιστών κατά τον Flynn.

(18)

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

Οι παράλληλοι υπολογιστές χρησιμοποιούνται σε μεγάλη ποικιλία προβλημάτων, από εμπορικές εφαρμογές έως μεγάλες επιστημονικές εφαρμογές που απαιτούν τεράστια υπολογιστική ισχύ.

Ήδη διάφοροι υπολογιστές που κυκλοφορούν στο εμπόριο µε στόχο την αγορά μεσαίου κόστους και υψηλής απόδοσης εφαρμόζουν παράλληλη επεξεργασία. Αν και το πλήθος των επεξεργαστών δεν είναι πολύ μεγάλο όταν μιλάμε για μεσαίο κόστος (π.χ. 4 επεξεργαστές στο Quad Pentium) η χρήση τέτοιων μηχανημάτων είναι πλέον αρκετά διαδεδομένη. Φυσικά υπάρχουν -ήδη από τη δεκαετία του '70- μεγάλοι παράλληλοι υπολογιστές µε δεκάδες ή εκατοντάδες επεξεργαστές οι οποίοι όμως ανήκουν στην κατηγορία high-end και απευθύνονται µόνο σε μεγάλες επιχειρήσεις ή μεγάλους οργανισμούς. Οι παράλληλοι εμπορικοί υπολογιστές συνήθως χρησιμοποιούνται σαν servers από μεσαίες ή μεγάλες επιχειρήσεις/οργανισμούς µε σκοπό την αύξηση των πελατών που εξυπηρετούνται σε μια μονάδα χρόνου. Υπάρχει σχέση ευθείας αναλογίας μεταξύ του μεγέθους της επιχείρησης και της επίδοσης του παράλληλου συστήματος που χρησιμοποιείται από αυτή. Ένας χαρακτηριστικός δείκτης επίδοσης είναι οι συναλλαγές ανά λεπτό (transactions per minute - tpm) που χρησιµοποιείται για την αξιολόγηση της επίδοσης ενός υπολογιστικού συστήματος ως προς την ταχύτητα προσπέλασης μιας βάσης δεδομένων. Το κριτήριο tpm έχει άμεση συνάφεια µε επιχειρήσεις των οποίων η δραστηριότητα εξαρτάται άμεσα από την αποδοτική διαχείριση δεδομένων, όπως λογαριασμούς πελατών (τράπεζες, χρηματιστηριακοί οίκοι), πελατολόγια (πωλητές), μισθοδοσία (όλες οι εταιρείες), αποθήκες (super-markets, μεγάλα καταστήματα). Το benchmark TPC-C του Transaction Processing Council (TPC) σχεδιάστηκε ακριβώς µε σκοπό την μέτρηση της επίδοσης συστημάτων σε διεκπεραίωση σύνθετων ερωτημάτων (complex queries). Το συγκεκριμένο benchmark εξομοιώνει ένα μεγάλο περιβάλλον καταχώρησης δεδομένων από πολλούς περιφερειακούς σταθμούς σε μια μεγάλη βάση δεδομένων της τάξης των 3000GB.

Ένας άλλος δείκτης επίδοσης µε αυξανόμενη σημασία τα τελευταία χρόνια είναι οι Web συναλλαγές ανά δευτερόλεπτο (Web interactions per second). Η ραγδαίως

(19)

αυξανόμενη δημοτικότητα του διαδικτύου οδήγησε το TPC στην πρόταση του TPC-W Web benchmark για τη μέτρηση αυτού του δείκτη. Το συγκεκριμένο benchmark βασίζεται στην προσπέλαση µέσω web κατανεμημένης πληροφορίας μεγέθους 500 GB.

Οι επιστημονικές εφαρμογές αποτελούν το άλλο μεγάλο πεδίο εφαρμογής της παράλληλης επεξεργασίας. Η παράλληλη επεξεργασία αποτελεί βασικό εργαλείο σε προβλήματα εξομοίωσης φυσικών φαινομένων µε πάρα πολύ μεγάλους αριθμούς παραμέτρων. Τυπικά παραδείγματα, όπως καταγράφονται και στον Πίνακα 2, αποτελούν η πρόγνωση του καιρού για μεγάλα χρονικά διαστήματα, οι κινήσεις των αστέρων, η ατομική δομή των υλικών, η μελέτη των μηχανών εσωτερικής καύσεως, η αεροδυναμική μελέτη αυτοκινήτων ή αεροπλάνων, η συμπεριφορά μικροηλεκτρονικών διατάξεων, κα.

Οι εφαρμογές αυτές έχουν πολύ μεγάλες απαιτήσεις πράξεων ανά δευτερόλεπτο (> 1 GFLOPS) καθώς επίσης και πολύ μεγάλες απαιτήσεις χώρου αποθήκευσης δεδομένων (>

1 GB). Όταν οι απαιτήσεις ξεπερνούν τα 100 GFLOPS και τα 100 GB τότε μιλάμε για τις μεγάλες προκλήσεις της επιστήμης των υπολογιστών (Grand Challenges).

Πίνακας 2 Παραδείγματα εφαρμογών των παράλληλων υπολογιστών

(20)

ΚΕΦΑΛΑΙΟ 2

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΑΡΑΛΛΗΛΗ ΕΠΕΞΕΡΓΑΣΙΑ

2.1 ΓΕΝΙΚΑ

Η παράλληλη επεξεργασία δηµιουργήθηκε για να ικανοποιήσει τις αυξανόµενες απαιτήσεις για ταχύτερη λειτουργία των υπολογιστών για να αντιµετωπιστούν οι περιορισµένες δυνατότητες του υλικού η οποία μπορεί να γίνει καλύτερα κατανοητή µε ένα παράδειγμα:

Έστω ότι ο στόχος µας (η εφαρμογή) είναι να μεταφερθούν κάποιοι σάκοι µε άμμο στις όχθες ενός ποταμού για προστασία από τις πλημμύρες. Έστω ότι οι σάκοι βρίσκονται σε μια μεγάλη αποθήκη και ότι για να γίνει το φράγμα χρειάζονται να μεταφερθούν 100000 σάκοι άμμου. Έστω επίσης ότι ένας άνθρωπος µόνος του (δηλ.

ένας επεξεργαστής) εργαζόμενος οχτώ ώρες τη μέρα μπορεί να μεταφέρει 500 σάκους τη μέρα. Μ' αυτό το ρυθμό ένας άνθρωπος µόνος του θα ολοκληρώσει το έργο σε 200 μέρες δηλαδή περίπου 6.5 μήνες. Η δουλειά προφανώς θα επιταχυνθεί αν στο έργο δουλέψουν π.χ. 100 άνθρωποι ταυτόχρονα. Τότε θεωρητικά το έργο θα τελειώσει στο 1/100 του χρόνου δηλαδή σε 2 μέρες. Για να γίνει όμως αυτό οι άνθρωποι (επεξεργαστές) πρέπει να συνεργαστούν μεταξύ τους πράγμα που προϋποθέτει ότι επικοινωνούν μεταξύ τους µε κάποιο αποδοτικό τρόπο. Πρέπει για παράδειγμα να αποφύγουν να στοιβάζουν όλοι τους σάκους στο ίδιο σημείο αλλά να απλώνουν το φράγμα κατά μήκος όλου του ποταμού.

Πρέπει για παράδειγμα να συμφωνήσουν εκ των προτέρων ποιο κομμάτι του ποταμού θα επιχωματώσει ο καθένας (κατάτμηση του αλγορίθμου σε κομμάτια που θα εκτελεστούν παράλληλα). Επίσης θα πρέπει να υπάρχει κάποιος αποδοτικός τρόπος να διανέμονται οι σάκοι στον καθένα γιατί διαφορετικά αν προσπαθήσουν και οι 100 ταυτόχρονα να πάνε στην αποθήκη και να πάρουν ένα σάκο θα δημιουργηθεί συνωστισμός και αδιαχώρητο και τελικά πιθανώς δεν θα εξυπηρετηθεί κανείς. Ενδεχομένως θα ήταν πιο αποδοτικό να δημιουργηθεί μια αλυσίδα όπου ο ένας θα δίνει στον άλλο από ένα σάκο και ο τελευταίος θα τον αποθέτει στον ποταμό. Αυτό απαιτεί κάποια συνεννόηση μεταξύ των ανθρώπων η

(21)

οποία επιτυγχάνεται στην περίπτωσή µας µε την απλή οπτική επαφή αλλά στην περίπτωση των υπολογιστών επιτυγχάνεται µε ανταλλαγή μηνυμάτων μεταξύ των επεξεργαστών. Τέλος θα πρέπει να ενημερώνει ο ένας τον άλλο ότι πιάνει δουλειά ή ότι σταματάει είτε διότι σταμάτησε η βάρδια του είτε για άλλο λόγο (π.χ. ατύχημα).

Από το παράδειγμα γίνεται σαφές ότι η παράλληλη επεξεργασία απαιτεί στενή συνεργασία μεταξύ των επεξεργαστών και ότι χαρακτηριστικό τους είναι ότι λύνουν κάποιο κοινό πρόβλημα. Ο στόχος της συνεργασίας είναι η επιτάχυνση της δουλειάς και η μεγαλύτερη απόδοση. Για τους λόγους αυτούς οι παράλληλοι υπολογιστές αποτελούνται από επεξεργαστές που βρίσκονται πολύ κοντά ο ένας µε τον άλλο, όχι απλώς στο ίδιο δωμάτιο ή στο ίδιο κουτί αλλά συχνά πάνω στην ίδια κάρτα. Στόχος είναι η ελαχιστοποίηση του χρόνου επικοινωνίας μεταξύ τους και επομένως το δίκτυο διασύνδεσης έχει τυπικά πολύ μεγάλη ταχύτητα. Σε ορισμένες μάλιστα περιπτώσεις οι επεξεργαστές σχεδιάζονται ειδικά για τη λύση ενός συγκεκριμένου προβλήματος ή μιας κατηγορίας ομοειδών προβλημάτων (π.χ. πολλαπλασιασμός πινάκων, βασικοί αλγόριθμοι επεξεργασίας εικόνας). Αυτοί οι υπολογιστές λέγονται ειδικού σκοπού και βρίσκονται σε αντίθεση µε τους υπολογιστές γενικού σκοπού που, όπως λέει και το όνομά τους, έχουν σχεδιαστεί να εκτελούν οποιαδήποτε εφαρμογή.

Στο κεφάλαιο αυτό παρουσιάζονται τα χαρακτηριστικά και οι ιδιότητες διαφόρων δικτύων διασύνδεσης, τα οποία χρησιμοποιούνται είτε για την διασύνδεση επεξεργαστών με μονάδες κοινής μνήμης στους πλυεπεξεργαστές ή για την διασύνδεση επεξεργαστών μεταξύ τους στους πολυυπολογιστές. Επίσης εξετάζονται οι πολυεπεξεργαστές ομοιόμορφης προσπέλασης μνήμης (Uniform Memory Access-UMA) και μη ομοιόμορφης προσπέλασης μνήμης (Non-Uniform Memory Access-NUMA) και τα κύρια χαρακτηριστικά συγκεκριμένων πολυεπεξεργαστών.

(22)

2.2 ΔΙΚΤΥΑ ΔΙΑΣΥΝΔΕΣΗΣ

Ένα δίκτυο διασύνδεσης παριστάνεται ως ένας γραφός, του οποίου οι κόμβοι αντιπροσωπεύουν επαξεργαστές ή μεταγωγείς δικτύου (network switches) ή μονάδες μνήμης και οι ακμές αντιπροσωπεύουν φυσικούς συνδέσμους μεταξύ ζευγών κόμβων.

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

Παράδειγµα 1: Γραµµικό δίκτυο (linear network)

Για την διασύνδεση και επικοινωνία N επεξεργαστών απαιτούνται N-1 σύνδεσµοι. Για να ανταλλάξουν δεδοµένα οι επεξεργαστές 1 και N-1 απαιτούνται N-1 βήµατα.

Παράδειγµα 2: Πλήρες δίκτυο (fully connected network)

Για τη διασύνδεση και επικοινωνία µεταξύ N επεξεργαστών απαιτούνται N(N-1) ακµές. Οποιοιδήποτε δύο επεξεργαστές επικοινωνούν µεταξύ τους σε ένα βήµα απαγορευτικό, όταν ο αριθμός Ν των επεξεργαστών είναι μεγάλος. Στη συνέχεια της παραγράφου, αναφέρονται διάφοροι τύποι δικτύων διασύνδεσης, των οποίων το κόστος

(23)

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

Σημαντικές παράμετροι της τοπολογίας ενός δικτύου διασύνδεσης είναι η διάμετρος (diameter), η συνεκτικότητα (connectivity) ή ο αριθμός των ακμών που πρόσκεινται σε κάθε κόμβο, και η πράξη διαμέρισης (partitioning). Η διάμετρος ενός δικτύου διασύνδεσης ορίζεται ως ο ελάχιστος αριθμός ακμών που συνδέει τους δύο πιο απομακρυσμένους μεταξύ τους κόμβους του. Είναι επιθυμητό, η διάμετρος ενός δικτύου διασύνδεσης, να είναι όσο το δυνατόν μικρότερη, διότι το μέγεθος της διαμέτρου θέτει ένα κάτω όριο στην πολυπλοκότητα των παράλληλων αλγορίθμων που απαιτούν την επικοινωνία μεταξύ οποιωνδήποτε δύο κόμβων του δικτύου. Επίσης, είναι επιθυμητό ο αριθμός των ακμών που πρόσκεινται σε κάθε κόμβο, να είναι ίσος με μία σταθερά ανεξάρτητη από το μέγεθος του δικτύου διασύνδεσης, διότι τότε, στο δίκτυο μπορούν να προστεθούν επιπλέον κόμβοι με λιγότερο κόστος.

Η πράξη διαμέρισης (partitioning) είναι μία από τις πλέον σημαντικές παραμέτρους ενός δικτύου διασύνδεσης. Για να είναι ένα παράλληλο υπολογιστικό σύστημα διαμερίσιμο (partitionable) θα πρέπει:

(1 ) το δίκτυο διασύνδεσης του συστήματος να μπορεί να διαμερίζεται σε υποδίκτυα, τα οποία διατηρούν την πλήρη λειτουργικότητα του αρχικού δικτύου, και

(2) το παράλληλο σύστημα να μπορεί να διαμερισθεί σε ανεξάρτητα υποσυστήματα, με την έννοια ότι, κανένα υποσύστημα δεν θα πρέπει να μπορεί να επεμβαίνει στην απρόσκοπτη λειτουργία κάποιου άλλου υποσυστήματος.

Τα διαμερίσιμα παράλληλα συστήματα διαθέτουν τα ακόλουθα χαρακτηριστικά:

Ανοχή σφάλματος (fault tolerance): όταν κάποιος επεξεργαστής δυσλειτουργεί, δεν επηρεάζεται η λειτουργία ολόκληρου του συστήματος, αλλά μόνον εκείνες οι διαμερίσεις που περιλαμβάνουν τον συγκεκριμένο επεξεργαστή.

Εντοπισμό σφάλματος (fault detection): στις εφαρμογές που απαιτεται μεγάλη αξιοπιστία, είναι δυνατό να εκτελείται το ίδιο πρόγραμμα,με τα ίδια δεδομένα, σε διαφορετικές διαμερίσεις, και να συγκρίνοντατα αποτελέσματα.

(24)

Ευκολότερη ανάπτυξη προγραμμάτων: η αποσφαλμάτωση (debugging) ενός προγράμματος είναι πιο εύκολη, εάν επιτελείται σε διαμερίσεις μικρού μεγέθους.

Έτσι, αντί να επιχειρείται η αποσφαλμάτωση του παράλληλου προγράμματος για όλους τους επεξεργαστές τηςπαράλληλης μηχανής (π.χ. για 572 επεξεργαστές), είναι δυνατόν,αυτή να γίνεται σε μία διαμέριση μικρότερου μεγέθους (π.χ. 76 επεξεργαστών) και κατόπιν να επεκτείνεται στο σύνολο των επεξεργαστών.

Πολλαπλούς ταυτόχρονους χρήστες: εφόσον έχουμε πολλαπλές ανεξάρτητες διαμερίσεις της παράλληλης μηχανής, είναι δυνατό να έχουμε πολλαπλούς ταυτόχρονους χρήστες, καθένας από τους οποίουςμπορεί να τρέχει διαφορετικό παράλληλο πρόγραμμα.

Αυξημένη χρησιμοποίηση του συστήματος (increased utilization): εάν μία διεργασία χρειάζεται π.χ. μόνον Ν/4 από τους Ν διαθέσιμους επεξεργαστές, οι υπόλοιποι 3Ν/4 μπορούν να αξιοποιηθούν από μία ή περισσότερες άλλες διεργασίες.

Χρήση του βέλτιστου αριθμού επεξεργαστών: πολλές φορές, χρησιμοποιώντας περισσότερους από τους απαιτούμενους επεξεργαστές,αυξάνουμε το χρόνο εκτέλεσης μιας διεργασίας ή ενός προγράμματος. Επιλέγοντας το κατάλληλο μέγεθος του υποσυστήματος που θαχρησιμοποιήσουμε, είναι δυνατό να ελαχιστοποιήσουμε το χρόνο εκτέλεσης του προγράμματος μας.

Τα δίκτυα διασύνδεσης, τα οποία παρουσιάζονται στη συνέχεια, μπορούν να χωρισθούν σε δύο κατηγορίες: τα δίκτυα μοναδικού σταδίου (single stage networks) και τα δίκτυα πολλαπλού σταδίου (multiple stage networks). Στα δίκτυα μοναδικού σταδίου, οι επεξεργαστές είναι άμεσα συνδεδεμένοι με τους μεταγωγείς δικτύου και συνεπώς, κάθε κόμβος του γράφου που αναπαριστά το δίκτυο, αντιστοιχεί στον συνδυασμό ενός επεξεργαστή και ενός μεταγωγέα δικτύου. Έτσι, σε ένα τέτοιο δίκτυο, κάθε μήνυμα κατευθύνεται από έναν κόμβο-επεξεργαστή/μεταγωγέα σε έναν άλλον κόμβο- επεξεργαστή/μεταγωγέα, μέσω ενός και μοναδικού σταδίου μεταγωγής (single stage of switching). Στα δίκτυα πολλαπλού σταδίου, κάθε μήνυμα κατευθύνεται από έναν κόμβο- επεξεργαστή, μέσω περισσοτέρων του ενός σταδίων (συνήθως log2N) κόμβων- μεταγωγέων, σε έναν άλλον κόμβο-επεξεργαστή ή κόμβο-μονάδας μνήμης ([3]).

(25)

2.2.1 Δίκτυα Μοναδικού Σταδίου (single stage networks)

Παρακάτω θα αναλυθούν τρεις τύποι δικτύων μοναδικού σταδίου:

 το δισδιάστατο πλέγμα τεσσάρων πλησιέστερων γειτόνων (four nearest-neighbor two-dimensional mesh),

 το δισδιάστατο πλέγμα οκτώ πλησιέστερων γειτόνων (eight nearest-neighbor two- dimensional mesh), και

 ο υπερκύβος (hypercube).

Δισδιάστατο πλέγμα τεσσάρων πλησιέστερων γειτόνων: Σε ένα δισδιάστατο τετραγωνικό πλέγμα τεσσάρων πλησιέστερων γειτόνων, οι Ν κόμβοι-επεξεργαστές είναι τοποθετημένοι στο επίπεδο σε ένα √N x√N πίνακα, και κάθε επεξεργαστής επικοινωνεί άμεσα, μέσω μιας ακμής, με τέσσερις γειτονικούς επεξεργαστές. Συγκεκριμένα, ο επεξεργαστής i, 0<i<Ν-1, συνδέεται με τους επεξεργαστές (i+1)modN, (i-1)modN, (i+√N)modN και (i-√N)modN. Στο Σχήμα 6 απεικονίζεται ένα δισδιάστατο τετράγωνο πλέγμα τεσσάρων πλησιέστερων γειτόνων με «εξωτερικές» ακμές, όπως αυτές προκύπτουν από τον ορισμό, για Ν=16.

Σχήμα 6Δισδιάστατο πλέγμα τεσσάρων γειτόνων με 16 κόμβους

Η διάμετρος του δισδιάστατου τετραγωνικού πλέγματος Ν κόμβων χωρίς

«εξωτερικές» ακμές είναι 2(√N-1). Ένα τέτοιο πλέγμα μπορεί να διαμερισθεί σε τέσσερα υποπλέγματα Ν/4 κόμβων. Αν το Ν/4 είναι τέλειο τετράγωνο, τότε κάθε ένα από τα

Referências

Documentos relacionados

Αντί να επιλέγει τις πληροφορίες προϊόντος από ένα πίνακα και κατόπιν να εκτελεί ένα δεύτερο ερώτημα για την εύρεση του ονόματος κατηγορίας , το ερώτημα αυτό ενώνει απλώς τους πίνακες