Μεταπτυχιακή Διατριβή «Ανάπτυξη Γραφικής Διεπαφής για Εφαρμογές Κατανεμημένου Προγραμματισμού» Καλογιάννης Γρηγόριος Επιβλέπων Καθηγητής : κ. Χασάπης Γεώργιος ΘΕΣΣΑΛΟΝΙΚΗ 2009
Αφιέρωση Στους γονείς μου, Θανάση και Αγγελική 2
Ευχαριστίες Σε αυτό το σημείο θα ήθελα να ευχαριστήσω τον επιβλέπων αυτής της Μεταπτυχιακής Διατριβής, τον κ. Χασάπη Γεώργιο, Καθηγητή του Τομέα Ηλεκτρονικής και Υπολογιστών του Τμήματος Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών, της Πολυτεχνικής Σχολής του Α.Π.Θ. τόσο για την εμπιστοσύνη να μου αναθέσει την παρούσα εργασία όσο και για την παρότρυνση του να εργαστώ πάνω σε θέματα παράλληλου προγραμματισμού. Παράλληλα θα ήθελα να ευχαριστήσω τον κ.vassil N. Alexandrov, Καθηγητή του Πανεπιστημίου του Reading, Διευτυντή του ACET και τον συνεργάτη του Christian Weihrauch καθώς μέσα στα πλαίσια του μαθήματος «Δικτυακή Υπολογιστική και Περιβάλλοντα Ανάπτυξης Εφαρμογών» καθώς και «Παράλληλα και Κατανεμημένα Συστήματα», του Διατμηματικού προγράμματος σπουδών μου έδωσαν την εφαλτήριο δύναμη ενασχόλησης μου με τα συστήματα παράλληλης επεξεργασίας. Επιπλέον θα ήθελα να ευχαριστήσω τον συνάδελφο Κουτσόπουλο Κωνσταντίνο, του οποίου η Διπλωματική εργασία σε προπτυχιακό επίπεδο αποτέλεσε σημαντικό βοήθημα στην εκπόνηση της παρούσας διατριβής καθώς και τα μέλη του εργαστηρίου «Εργαστήριο Αρχιτεκτονικής Υπολογιστών και Συστημάτων», του Τομέα Ηλεκτρονικής και Υπολογιστών του Τμήματος Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών, της Πολυτεχνικής Σχολής του Α.Π.Θ για την προσφορά χώρου και εξοπλισμού. Τέλος πολλές ευχαριστίες στον φίλο και συνάδελφο κ. Δάρα Πέτρο, Ερευνητή βαθμίδος Γ, του Ινστιτούτου Πληροφορικής και Τηλεματικής, του Εθνικού Κέντρου Έρευνας και Ανάπτυξης (ΕΚΕΤΑ) για την παρότρυνση του να εργαστώ σε θέματα κατανεμημένου προγραμματισμού. Καλογιάννης Γρηγόριος Ηλεκτρολόγος Μηχανικός & Μηχανικός Υπολογιστών Α.Π.Θ. 3
Λέξεις Κλειδιά Παράλληλα Συστήματα, Κατανεμημένα Συστήματα, Πλέγματα, Συστοιχίες Υπολογιστών, Προβλεπτικός Έλεγχος, Γενικευμένος Προβλεπτικός Έλεγχος, Προδιαγραφές, Μοντέλο Διεργασιών, Τετραγωνικός προγραμματισμός, Κατανεμημένες Εφαρμογές, Πολυστρωσικές Εφαρμογές, Γραφική Διεπαφή 4
Περιεχόμενα Εισαγωγή... 14 Οργάνωση της διατριβής... 14 1ο Κεφάλαιο... 17 Στοιχεία παράλληλης και κατανεμημένης επεξεργασίας... 17 1.1. Εισαγωγή... 17 1.2. Παράλληλα υπολογιστικά περιβάλλοντα... 18 1.2.1. Αριθμός επεξεργαστικών μονάδων... 19 1.2.2. Είδος μνήμης... 19 1.2.3. Ροή διεργασιών και δεδομένων... 23 1.3. Περίληψη Κεφαλάιου... 24 1.4. Βιβλιογραφία Κεφαλαίου... 25 2ο Κεφάλαιο... 26 Μοντέλα ανάπτυξης λογισμικού σε περιβάλλον πολυεπεξεργασίας... 26 2.1. Εισαγωγή... 26 2.2. Επικοινωνία και ανταλλαγή μηνυμάτων... 27 2.3. Είδη παραλληλίας και παράλληλων αλγορίθμων... 27 2.3.1. Ο νόμος του Άμνταλ Αξιολόγηση απόδοσης... 29 2.3.2. Αυτόματη παραλληλοποίηση... 29 2.3.3. Γλώσσες ταυτόχρονου προγραμματισμού... 30 2.4. Εφαρμογή της μεθόδου των πεπερασμένων στοιχείων με το μοντέλο master slave 30 2.5. Μη συνεκτικά κατανεμημένα συστήματα... 32 2.6. Λογισμικό... 34 2.7. Ζητήματα σχεδίασης... 35 2.8. Περίληψη Κεφαλάιου... 36 2.9. Βιβλιογραφία Κεφαλαίου... 37 3ο Κεφάλαιο... 38 Στοιχεία τεχνολογίας πλέγματος... 38 3.1. Εισαγωγή... 38 5
3.2. Δυνατότητες της Τεχνολογίας Πλέγματος... 38 3.3. Εικονικοί Οργανισμοί... 40 3.4. Αξιοπιστία... 40 3.5. Προαπαιτούμενα Εφαρμογών Πλέγματος... 41 3.6. Επιπλέον Πόροι Πλέγματος Υπολογιστών... 42 3.7. Αρχιτεκτονική του πλέγματος... 42 3.8. Grid Middleware... 44 3.9. Ασφάλεια στο πλέγμα... 46 3.10. Αποστολή εργασιών στο πλέγμα... 47 3.11. Κατασκευή ενός Πλέγματος Υπολογιστών... 48 3.12. Τμήματα του Λογισμικού ενός Πλέγματος... 50 3.13. Περίληψη Κεφαλάιου... 54 3.14. Βιβλιογραφία Κεφαλαίου... 54 4ο Κεφάλαιο... 55 Λογισμικά ανταλαγής μυνημάτων Το πρωτόκολλο επικοινωνίας MPI... 55 4.1. Εισαγωγή... 55 4.2. Το πρωτόκολλο επικοινωνίας MPI... 56 4.3. Κλήσεις προγραμμάτων MPI... 56 4.4. MPI C/C++ bindings... 57 4.5. Τύποι Δεδομένων του MPI... 58 4.6. Αρχικοποίηση του MPI... 58 4.7. Τερματισμός του MPI... 59 4.8. Communicators... 59 4.8.1. Μέγεθος του Communicator... 60 4.8.2. Τάξη διεργασίας... 61 4.9. Μεταφορά δεδομένων στο MPI... 61 4.9.1. Αποστολή δεδομένων... 62 4.9.2. Λήψη Δεδομένων... 62 4.10. Επιστροφή λαθών... 63 4.11. Εξειδικευμένες συναρτήσεις MPI... 64 4.11.1. Broadcast communications... 64 4.11.2. Non blocking Send και Receive... 65 4.11.3. Ανταλλαγή δεδομένων μεταξύ δυο διεργασιών... 66 4.12. Περίληψη Κεφαλαίου... 66 6
4.13. Βιβλιογραφία Κεφαλαίου... 66 5ο Κεφάλαιο... 68 Το μοντέλο COM : Μία τεχνική επισκόπηση... 68 5.1. Εισαγωγή... 68 5.2. Το πρόβλημα του λογισμικού των components... 69 5.3. Βασικές αρχές του COM... 70 5.3.1. Δυαδικό Πρότυπο... 70 5.3.2. Globally Unique Identifiers (GUIDs)... 71 5.4. Το COM λύνει το πρόβλημα του λογισμικού των components... 72 5.4.1. Βασική διαλειτουργικότητα και απόδοση... 72 5.4.2. Νέες Εκδόσεις (Versioning)... 72 5.4.3. Γλωσσική ανεξαρτησία... 74 5.4.4. Διαφανής διαλειτουργικότητα (Transparent Cross process Interoperability)... 74 5.4.5. Τοπική/απομακρυσμένη (Local/Remote) transparency... 75 5.5. Το COM και το μοντέλο Client Server... 77 5.5.1. Είδη Server : In Process και Out of Process... 78 5.6. COM και δομή εφαρμογής... 79 5.7. Περίληψη Κεφαλαίου... 79 5.8. Βιβλιογραφία Κεφαλαίου... 81 6ο Κεφάλαιο... 82 Το μοντέλο DCOM (Distributed Component Object Model)... 82 6.1. Εισαγωγή... 82 6.2. Γιατί να γράψω μια κατανεμημένη εφαρμογή;... 82 6.3. Η αρχιτεκτονική του DCOM... 83 6.4. Components και επαναχρησιμοποίηση... 85 6.5. Ανεξαρτησία θέσης... 85 6.6. Γλωσσική ουδετερότητα... 87 6.7. Διαχείριση της σύνδεσης... 88 6.8. Εξελιξιμότητα... 89 6.8.1. Εύκαμπτη επέκταση... 89 6.8.2. Παράδειγμα... 90 6.9. Εξελισσόμενη λειτουργία: Versioning... 93 6.10. Απόδοση... 95 6.10.1. Εύρος ζώνης και καθυστέρηση... 98 7
6.11. Κοινή διαχείριση της σύνδεσης μεταξύ των εφαρμογών... 99 6.12. Ασφάλεια μέσω διαμόρφωσης... 101 6.13. Ανοχή βλαβών... 103 6.14. Ευκολία στην ανάπτυξη... 105 6.14.1. Εγκατάσταση... 105 6.14.2. Διαχείριση... 106 6.15. Ουδετερότητα πρωτοκόλλου... 106 6.16. Ουδετερότητα πλατφόρμων... 107 6.16.1. Διαθέσιμες πλατφόρμες... 108 6.17. DCOM σε ιδεατά ιδιωτικά δίκτυα... 108 6.18. DCOM μέσω του Διαδικτύου... 109 6.19. Περίληψη Κεφαλαίου... 110 6.20. Βιβλιογραφία Κεφαλαίου... 111 7ο Κεφάλαιο... 112 Ανάπτυξη Γραφικής Διεπαφής για εφαρμογές παράλληλου προγραμματισμού... 112 7.1. Εισαγωγή... 112 7.2. Αναγκαιότητα ανάπτυξης εφαρμογής... 112 7.1. Περιγραφή της εφαρμογής... 115 7.2. Εφαρμογή Client... 115 7.3. Εφαρμογή Server... 120 7.4. Περίληψη Κεφαλαίου... 122 8ο Κεφάλαιο... 124 Προβλεπτικός Έλεγχος... 124 8.1. Εισαγωγή... 124 8.2. Ιστορική αναδρομή στις μεθοδολογίες ρύθμισης προβλεπτικού μοντέλου... 126 8.3. Στρατηγική Ρύθμισης Προβλεπτικού Μοντέλου... 129 8.4. Ρύθμιση Δυναμικού Μητρώου (Dynamic Matrix Control, DMC)... 130 8.4.1. Δυναμικά μοντέλα παλμικής και βηματικής εισόδου... 130 8.4.2. Ανάπτυξη ρυθμιστή DMC με βάση το μοντέλο παλμικής εισόδου... 133 8.4.3. Ανάπτυξη ρυθμιστή DMC για πολυμεταβλητό σύστημα... 136 8.4.4. Εισαγωγή περιορισμών... 137 8.5. Περίληψη Κεφαλαίου... 140 8.6. Βιβλιογραφία Κεφαλαίου... 141 9ο Κεφάλαιο... 142 8
Παραληλοποίηση αλγορίθμου γενικευμένου προβλεπτικού ελέγχου... 142 9.1. Εισαγωγή... 142 9.2. Παράλληλος πολλαπλασιασμός πινάκων... 144 9.2.1. Ο παράλληλος αλγόριθμος του πολλαπλασιασμού πινάκων... 144 9.3. Παράλληλη αντιστροφή πίνακα... 146 9.3.1. Ο παράλληλος αλγόριθμος της παράλληλης αντιστροφής πίνακα... 146 9.4. Περίληψη Κεφαλαίου... 149 9.5. Βιβλιογραφία Κεφαλαίου... 149 10ο Κεφάλαιο... 150 Πειραματικά Αποτελέσματα... 150 10.1. Εισαγωγή... 150 10.2. Εκτέλεση σε συστοιχία υπολογιστών... 151 10.2.1. Πείραμα 1 Εκτέλεση του προγράμματος για αριθμό εισόδων 50 και αριθμό εξόδων 30... 152 10.2.2. Πείραμα 2 Εκτέλεση του προγράμματος για αριθμό εισόδων 60 και αριθμό εξόδων 40... 153 10.2.3. Πείραμα 3 Εκτέλεση του προγράμματος για αριθμό εισόδων 80 και αριθμό εξόδων 60... 154 10.3. Συμπεράσματα... 156 Παράτμημα Α... 158 Δημιουργία Συστοιχίας Υπολογιστών... 158 Εισαγωγή... 158 Εγκατάσταση MPICH2 σε Microsoft Windows XP... 159 9
Κατάλογος Πινάκων Πίνακας 4 1 : Τύποι δεδομένων του MPI για C/C++... 58 Πίνακας 6 1 :. Η απόδοση για το COM και το DCOM σε διάφορους τύπους επεξεργαστών. 97 Πίνακας 8 1 : Διαστάσεις πινάκων αλγορίθμου DMC... 136 Πίνακας 10 1 : Τιμές των παραμέτρων των πειραμάτων... 151 Πίνακας 10 2 : Πειραματικά αποτελέσματα για αριθμό εισόδων 50, αριθμό εξόδων 30 Μονός πυρήνας... 152 Πίνακας 10 3 : Πειραματικά αποτελέσματα για αριθμό εισόδων 50, αριθμό εξόδων 30 Διπλός πυρήνας... 152 Πίνακας 10 4 : Πειραματικά αποτελέσματα για αριθμό εισόδων 60, αριθμό εξόδων 40 Μονός πυρήνας... 153 Πίνακας 10 5 : Πειραματικά αποτελέσματα για αριθμό εισόδων 60, αριθμό εξόδων 40 Διπλός πυρήνας... 154 Πίνακας 10 6 : Πειραματικά αποτελέσματα για αριθμό εισόδων 80, αριθμό εξόδων 60 Μονός πυρήνας... 155 Πίνακας 10 7 : Πειραματικά αποτελέσματα για αριθμό εισόδων 80, αριθμό εξόδων 60 Διπλός πυρήνας... 155 10
Κατάλογος Εξισώσεων Εξίσωση 2 1 : Ο νόμος του Άμνταλ... 29 Εξίσωση 8 1 : Μοντέλο παλμικής επιβολής... 130 Εξίσωση 8 2 : Άθροισμα πεπερασμένων όρων... 131 Εξίσωση 8 3 : Πρόβλεψη μεταβλητής εξόδου... 131 Εξίσωση 8 4 : Πολυμεταβλητό σύστημα... 132 Εξίσωση 8 5 : Έξοδος σε βηματική είσοδο... 132 Εξίσωση 8 6 : Πρόβλεψη εξόδου για σύστημα μιας εισόδου και μιας εξόδου... 133 Εξίσωση 8 7 : Παράγοντας διαταραχής... 133 Εξίσωση 8 8 : Σφάλμα Ν επόμενων χρονικών στιγμών... 134 Εξίσωση 8 9 : Μετασχηματισμός πινάκων για παλμική είσοδο... 134 Εξίσωση 8 10 : Απλοποίηση πρόβλεψης σφάλματος... 135 Εξίσωση 8 11 : Αντικειμενική συνάρτηση... 135 Εξίσωση 8 12 : Ομαδοποίηση συντελεστών βάρους... 135 Εξίσωση 8 13 : Δομή αλγορίθμου πλυμεταβλητού συστήματος... 136 Εξίσωση 8 14 : Πλήθος εξισώσεων γινομένου nin nout... 137 Εξίσωση 8 15 : Σύστημα ανισώσεων nin μεταβλητών εισόδου... 138 Εξίσωση 8 16 : Γραμμική ανισότητα μητρώων... 138 Εξίσωση 8 17 : Αντικειμενική Συνάρτηση... 138 Εξίσωση 8 18 : Μορφή τετραγωνικού προγραμματισμού... 139 Εξίσωση 8 19 : Τετραγωνικός προγραμματισμός Προβλεπτικού ελέγχου με προδιαγραφές... 140 Εξίσωση 9 1 : Βήματα επόμενου ελέγχου... 143 Εξίσωση 9 2 : Μορφή Πίνακα Α με υποπίνακες... 144 Εξίσωση 9 3 : Υπολογισμός πίνακα C ως γίνομενο Πινάκων με Υπο πίνακες... 145 Εξίσωση 9 4 : Μέθοδος απαλοιφής Gauss Jordan... 146 Εξίσωση 9 5 : Αποτέλεσμα απαλοιφής με τη μέθοδο Gauss Jordan... 147 Εξίσωση 9 6 : Μορφή πινάκων με υποπίνακες αντίστοιχου τύπου... 148 Εξίσωση 10 1 : Η επιτάχυνση των υπολογισμών... 151 11
Κατάλογος Σχημάτων Σχήμα 1 1: Υπολογιστικό Περιβάλλον Κοινής Μνήμης... 20 Σχήμα 1 2 : Τοπολογία Υπολογιστικού Συστήματος με χρήση διαύλων και τοπικές μνήμες 21 Σχήμα 1 3 : Δομές επεξεργαστών διαύλων... 22 Σχήμα 1 4 : Ροές δεδομένων σε επίπεδο τοπικής μνήμης... 23 Σχήμα 1 5 : Αυτονομία SISD σε μοντέλο MIMD... 24 Σχήμα 5 1 : VBTables... 71 Σχήμα 5 2 : Client Server επικοινωνία... 76 Σχήμα 6 1 : COM components στην ίδια διαδικασία... 83 Σχήμα 6 2 : COM components σε διαφορετικές διαδικασίες... 84 Σχήμα 6 3 : COM components σε διαφορετικά μηχανήματα... 85 Σχήμα 6 4 : Ανεξαρτησία θέσης... 87 Σχήμα 6 5 : Παράλληλη επέκταση... 91 Σχήμα 6 6 : Απομονώνοντας τα βασικά components... 92 Σχήμα 6 7 : Pipelining... 93 Σχήμα 6 8 : «Δυνατή» εξελιξημότητα... 95 Σχήμα 6 9 : Συγκεντρωμένος έλεγχος του χρόνου ζωής... 100 Σχήμα 6 10 : Κατανεμημένο component για ανοχή βλαβών... 104 Σχήμα 6 11 : DCOM σε ιδεατό ιδιωτικό δίκτυο... 109 Σχήμα 7 1 : Αλληλουχία βημάτων για την εκτέλεση παράλληλου προγράμματος... Error! Bookmark not defined. Σχήμα 8 1 : Σχηματική αναπαράσταση ρυθμιστή προβλεπτικού μοντέλου... 125 Σχήμα 8 2 : Απόκριση σε παλμική είσοδο... 131 Σχήμα 8 3 : Απόκριση σε βηματική είσοδο... 132 Σχήμα 8 4 : Απεικόνιση πολυμετάβλητου συστήματος... 137 Σχήμα 9 1 : Αλγόριθμος GPC... 143 Σχήμα 9 2 : Αποστολή πίνακα Β σε διεργασίας... 145 Σχήμα 9 3 : Αποστολή υποπινάκων σε διεργασίες... 145 Σχήμα 9 4 : Τοπικός Πολλαπλασιασμός σε κάθε διεργασία... 146 Σχήμα 9 5 : Αποστολή αποτελεσμάτων από τις δευτερεύουσες διεργασίες στην κύρια... 146 Σχήμα 10 1 : Γραφικές καμπύλες επιτάχυσνης για αριθμό εισόδων 50, αριθμό εξόδων 30... 153 Σχήμα 10 2 : Γραφικές καμπύλες επιτάχυσνης για αριθμό εισόδων 60, αριθμό εξόδων 40... 154 Σχήμα 10 3 : Γραφικές καμπύλες επιτάχυσνης για αριθμό εισόδων 60, αριθμό εξόδων 40... 156 12
Κατάλογος Εικόνων Εικόνα 3 1 : Επίπεδα δομών Σύνθεση Πλέγματος... 43 Εικόνα 6 1 : Υπηρεσίες των COM μέσα από τον πίνακα ελέγχου της οικογένειας λειτουργικών Windows της Microsoft... 102 Εικόνα 7 1 : Στιγμιότυπο της διεπαφής του MPICH2... 113 Εικόνα 7 2 : Ρυθμίσεις του firewall των Windows... 114 Εικόνα 7 3 : Γενικό στιγμιότυπο της διεπαφής client... 116 Εικόνα 7 4 : Χώρος εποπτείας πόρων συστήματος συστοιχίας ανενεργός κατάσταση Master Node... 117 Εικόνα 7 5 : Λεμπτομέρια της διεπαφής client παράθυρο συγγραφής κώδικα... 118 Εικόνα 7 6 : Ρυθμίσεις που παρέχονται για την συμβολομετάφραση του κώδικα... 118 Εικόνα 7 7 : Χώρος εποπτείας πόρων συστήματος συστοιχίας ανενεργός κατάσταση Slave Nodes... 119 Εικόνα 7 8 : Γραφήματα απόδοσης σε πραγματικό χρόνο... Error! Bookmark not defined. Εικόνα 7 9 : Παράθυρο εισαγωγής νέου αντικειμένου... 121 Εικόνα 7 10 : Νέο Remote Data Module... 121 Εικόνα 7 11 : H μη ορατή διεπαφή της υπηρεσίας του server... 122 13
Εισαγωγή Τα τελευταία χρόνια, γινόμαστε μάρτυρες της ραγδαίας ανάπτυξης των συστημάτων πληροφορικής, τόσο σε επίπεδο λογισμικού(software) όσο και σε επίπεδο υλικού (hardware). Με το πέρασμα των χρόνων, η έννοια της πληροφορίας αποκτά ολοένα και μεγαλύτερη σημασία καθιστώντας, την υλοποίηση των συστημάτων διαχείρισης αυτής, ολοένα και πιο σημαντική υπόθεση. Σήμερα, σύγχρονα συστήματα παράλληλης και πολλαπλής επεξεργασίας πληροφορίας υλοποιούνται με γοργούς ρυθμούς τόσο σε ιδιωτικές εταιρείες όσο και στο δημόσιο τομέα, συμβάλοντας έτσι στην επίλυση δύσκολών υπολογιστικών προβλημάτων, στην προβλεπτική συμπεριφορά σύστημάτων π.χ. μετερεολογικών μοντέλων, σεισμολογικών προβλέψεων, βιομηχανικού ελέγχου αλλά και στην άμεση και γρήγορη εξαγωγή ορθών αποτελεσμάτων μεγάλου αριθμού πράξεων. Παρόλη όμως τη σημαντική πρόοδο που έχει γίνει, υπάρχουν ακόμη περιοχές στο χώρο της παράλληλης και κατανεμημένης επεξεργασίας όπου οι συνθήκες επιδέχονται σημαντικής βελτίωσης. Μια από τι περιοχές αυτές είναι εκείνη που έχει να κάνει με την σε πραγματικό χρόνο εποπτεία των πόρων και των διεργασιών που επιτελούνται σε ένα τέτοιο σύστημα παράλληλης πολυεπεξεργασίας. Επέκταση αυτής της έλειψης, είναι η απούσία εργαλείων αποσφαλμάτωσης σε προγραμματιστικό επίπεδο των κατανεμημένων εφαρμογών. Σκοπός της παρούσας διατριβής είναι αφού πρωταρχικά μελετήσει τις παρούσες τεχνολογίες σύνθεσης και κατασκευής κατανεμημένων εφαρμογών, να θέσει τις βάσεις για την ανάπτυξη τέτοιων λογισμικών παρουσιάζοντας μια πρότυπη εφαρμογή με τις αντίστοιχες διεπαφές της για περιπτώσεις κατανεμημένου προγραμματισμού. Η εφαρμογή αυτή που θα παρουσιασθεί εποπτεύει από πλευρας πόρων και διεργασιών μια συστοχία υπολογιστών σε πραγματικό χρόνο ένω μπορεί να αποτελέσει, αφού πρόκειται για κατανεμημένη εφαρμογή, τον πρόδρομο κατασκευής εφαρμογών αποσφαλμάτωσης σε συστήματα πολυεπεξεργασίας. Οργάνωση της διατριβής Στο 1ο κεφάλαιο γίνεται μια συνολική αναφορά στα σύστημα παράλληλης και κατανεμημένης επεξεργασίας. Γίνεται μια προσπάθεια διάκρισης των συστημάτων ανάλογα με το αριθμό των υπολογιστικών μονάδων, το είδος μνήμης, και τον τρόπο επικοινωνίας των διεργασιων τους. 14
Το Κεφάλαιο 2 αναφέρεται στα ποικίλα μοντέλα ανάπτυξης λογισμικού σε περιβάλλοντα πολυεπεξεργασίας. Γίνεται παράλληλα αναφορά στον τρόπο με τον οποίο επιτυχγάνεται η επικοινωνία και ανταλλαγή μηνυμάτων ανάμεσα στις επεξεργαστικές μονάδες ενός κατανεμημένου συστήματος. Παρουσιάζονται τα είδη αλγοριθμικής παραλληλίας ενώ ορίζεται ο τρόπος με τον οποίο αξιολογούνται οι τελευταίοι. Γίνεται επιπλέον αναφορά στο μοντέλο master slave και στη διαμέριση των διεργασιών σε αυτά καθώς και στα μη συνεκτικά κατανεμημένα συστήματα. Τέλος θέτωνται τα πρώτα ζητήματα σχεδίασης πολυυπολογιστικών συστημάτων. Στο 3ο κεφάλαιο γίνεται εκτενής αναφορά σε στοιχεία τεχνολογίας πλέγματος, τις δυνατότητες που αυτά προσφέρουν από πλευράς υπολογισμών και δυνατοτήτων. Στη συνέχεια μελετάται η αξιοπιστία που παρέχει ένα πλέγμα υπολογιστών σε συνδιασμό με την ύπαρξη ενός εικονικού οργανισμού, ενώ γινεται αναφορά στους πόρους που αυτά απαιτούν αλλά και στο τρόπο που τα τελευταία δομούνται. Δίνονται ορισμοί όπως αυτοί του middleware ενώ παράλληλα γίνεται συζήτηση για θέματα ασφάλειας στο πλέγμα. Τέλος παρουσιάζονται τα τμήματα του λογισμικού ενός πλέγματος ενώ γίνεται μια σύντομη αναφορά σε τρόπους κατασκευής τους. Το κεφάλαιο 4 πραγματεύεται σχετικά με τα λογισμικά ανταλλαγής μηνυμάτων και ειδικότερα του πρωτοκόλλου επικοινωνίας MPI. Δίνονται οι αρχικοί ορισμοί σε θέματα επικοινωνίας μυνημάτων ενώ παρουσιάζονται αναλυτικά όλοι οι τύποι δεδομένων και ορισμοί των συναρτήσεων εντολών που αυτό περιλαμβάνει. Σε κάθε μια από τι εντολές του MPI δίνεται το αντίστοιχο πρότυπο της σύναρτησης με περιγραφή των ορισμάτων εισόδου και εξόδου. Στο 5ο κεφάλαιο αναλύεται και παρουσιάζεται το μοντέλο COM, από τεχνική πλευρά, παρουσιάζοντας μια μικρή εισαγωγή στην τεχνολογία COM, στις βασικές αρχές του και στην αποδοτικότητα του κατά την χρήση του σε εφαρμογές. Παράλληλα αναλύεται το μοντέλο Client Server, σε σχέση με την τεχνολογία COM, καθώς επίσης και η δομή μιας εφαρμογής, που χρησιμοποιεί το συγκεκριμένο μοντέλο. Στο 6ο κεφάλαιο παρουσιάζεται το μοντέλο DCOM και αναφέρονται οι λόγοι για τους οποίους χρησιμοποιείται από μία εφαρμογή, η αρχιτεκτονική του και τα χαρακτηριστικά του. Γίνεται επίσης, αναφορά στην ευκολία που παρουσιάζει στην ανάπτυξη εφαρμογών, στην εγκατάσταση και στην διαχείριση του. Στο 7ο κεφάλαιο αρχίζει η περιγραφή του κυρίας εφαρμογής. Αρχικά παρουσιάζεται η κατάσταση που επικρατεί, στο χώρο ανάπτυξης και εποπτείας εφαρμογών παράλληλου προγραμματισμού. Με βάση τα μεγάλα μειονεκτήματα που υπάρχουν στο χώρο ελέγχου τόσο των πόρων όσο και των διεργασιών προτείνεται η κατασκευή μιας εφαρμογής κατανεμημένου προγραμματισμού για 15
την αποστολή παράλληλων προγραμματών σε συστοιχία υπολογιστών αλλά και για την εποπτεία της τελευταίας σε πραγματικό χρόνο. Γίνεται ανάλυση της εφαρμογής σύμφωνα με την αρχιτεκτονική DCOM ενώ παρουσιάζονται με λεπτομέρειες οι διεπαφές του καθώς και ο τρόπος επικοινωνίας των τμηματων της. Ο έλεγχος της απόδοσης από πλευράς χρόνου και ταχύτητας εκτελέσεων των πράξεων της εφαρμογής γίνεται με εφαρμογή σε αυτή, ενός παράλληλου αλγοριθμου, και με αντιπαράθεση των πειραματικών αποτελεσμάτων που προκυπτουν με αυτά που εξάγονται μόνο με χρήση του ενδιάμεσου λογισμικού. Ο αλγόριθμος αυτός που επιλέχθηκε είναι αυτός του Γενικευμένου Προβλεπτικού Ελέγχου και παρουσιάζεται από μαθηματικής σκοπιάς στο 8 ο κεφάλαιο. Το 9 ο κεφάλαιο παρουσιάζει τον τρόπο και τις τεχνικές με τον οποίο παραλληλοποιήθηκε ο αλγόριθμος του γενικευμένου προβλεπτικού ελέγχου προκειμένου να τεθεί σε δοκιμασία από την εφαρμογή μας. Στο τελευατίο 10 ο κεφάλαιο, παρουσιάζονται τα πειραματικά αποτελέσματα του αλγορίθμου από τη χρήση στην εφαρμογής μας τα οποία έρχονται σε αντιπαράθεση με εκέινα που προκύπτουν μόνο με χρήση της ενδιάμεσης εφαρμογής. 16
1ο Κεφάλαιο Στοιχεία παράλληλης και κατανεμημένης επεξεργασίας 1.1. Εισαγωγή Στην επιστήμη υπολογιστών παράλληλα, κατανεμημένα ή ταυτόχρονα συστήματα ονομάζονται υπολογιστές οι οποίοι επιτρέπουν την ταυτόχρονη εκτέλεση πολλαπλών συνεργαζόμενων προγραμμάτων σε μία ή περισσότερες επεξεργαστικές μονάδες. Οι διαφορές μεταξύ αυτών των όρων είναι λεπτές, με την έμφαση να δίνεται άλλοτε στον σχεδιασμό και ανάλυση αλγορίθμων, άλλοτε στην κατασκευή υποστηρικτικού λογισμικού και άλλοτε στη σχεδίαση των υποδομών υλικού που απαιτούνται για την επίτευξη του ταυτοχρονισμού. Ο Cray 2, ο ταχύτερος υπολογιστής του κόσμου από το 1985 έως το 1989. Μία παραδοσιακή χρήση του υπολογιστικού παραλληλισμού είναι στον τομέα της κατασκευής τέτοιων υπερυπολογιστών. Κατά τη δεκαετία του 1960 η εμφάνιση πολυδιεργασιακών λειτουργικών συστημάτων και η τυποποίηση της έννοιας της διεργασίας έφεραν στην επιφάνεια τον ταυτοχρονισμό, μία ιδιότητα των υπολογιστικών συστημάτων η οποία αφορά την παράλληλη ή ψευδοπαράλληλη εκτέλεση διαφορετικών, συνεργαζόμενων διεργασιών, σε έναν ή περισσότερους υπολογιστές, για την εκτέλεση ενός υπολογισμού. Αρχικώς οι επιστήμονες της θεωρητικής πληροφορικής επιχείρησαν να δώσουν απαντήσεις σε αλγοριθμικά ζητήματα λογισμικού όπως ο αμοιβαίος αποκλεισμός, η εκλογή αρχηγού, ο συγχρονισμός και η ομοφωνία μεταξύ συνεργαζόμενων, ταυτοχρόνως εκτελούμενων διεργασιών (το πεδίο αυτό σήμερα προσδιορίζεται με τον όρο κατανεμημένος υπολογισμός), ενώ με τις μεθόδους πρακτικής υλοποίησης της πολυδιεργασίας (τον χρονοπρογραμματισμό) ασχολήθηκαν οι ερευνητές από τον χώρο των λειτουργικών συστημάτων. Με την καθιέρωση υπολογιστών με πολλαπλούς επεξεργαστές, όπου οι διεργασίες μπορούσαν να εκτελούνται πραγματικά παράλληλα και όχι ψευδοπαράλληλα, προέκυψαν νέα ζητήματα υλικού με αποτέλεσμα να αναδυθεί η παράλληλη επεξεργασία, ένα επιστημονικό πεδίο το οποίο μελετά, τόσο από πλευράς υλικού όσο και λογισμικού, μόνο υπολογιστικά συστήματα με πολλαπλές επεξεργαστικές μονάδες. Τα συστήματα αυτά μπορούν να εκτελούν ορισμένες, κατάλληλα σχεδιασμένες εφαρμογές (συνήθως επιστημονικού σκοπού, π.χ. προσομοιώσεις) ταχύτερα απ' ότι οι συνηθισμένοι σειριακοί υπολογιστές 17
αρχιτεκτονικής Φον Νόιμαν. Την ίδια περίοδο όμως εξελίσσονταν και τα δίκτυα υπολογιστών με αποτέλεσμα, καθώς η δικτύωση άρχισε να είναι πανταχού παρούσα προς τα τέλη της δεκαετίας του 1970, να εμφανιστούν δικτυακά προγράμματα που όχι μόνο αλληλεπιδρούσαν μεταξύ τους μέσω της υποκείμενης δικτυακής υποδομής αλλά εκτελούσαν από κοινού υπολογισμούς με διαφανή για τον χρήστη τρόπο, διασπώντας τους σε τμήματα και κατανέμοντάς τους μεταξύ τους, ενώ στο εξωτερικό περιβάλλον εμφανίζονταν ως ένα μοναδικό σύστημα. Καθώς αυτός ήταν ένας τύπος παραλληλισμού εμφανίστηκε ο όρος κατανεμημένη επεξεργασία για να τον περιγράψει. Η κατανεμημένη επεξεργασία αποτελεί ένα υποσύνολο της παράλληλης επεξεργασίας, στο οποίο όλες οι CPU έχουν ιδιωτικές, τοπικές μνήμες με ξεχωριστούς χώρους διευθύνσεων (είναι δηλαδή ανεξάρτητοι, δικτυωμένοι υπολογιστές) και παρέχουν στον χρήστη την ψευδαίσθηση του ενιαίου, μοναδικού συστήματος. Ο όρος «κατανεμημένο σύστημα» αναφέρεται τόσο στο υλικό (επεξεργαστές, μνήμες, δίκτυο) όσο και στο λογισμικό (λειτουργικό σύστημα, εφαρμογές) που είναι απαραίτητα για να υλοποιηθούν η κατανομή και αυτή η ψευδαίσθηση, με έμφαση όμως στο λογισμικό. Στα κατανεμημένα συστήματα, σε αντίθεση με τα παράλληλα, η εικόνα συνεκτικότητας των γεωγραφικά διεσπαρμένων πόρων είναι συνήθως σπουδαιότερος στόχος από την αύξηση των υπολογιστικών επιδόσεων που επιτυγχάνεται με τον παραλληλισμό. Δεν είναι σπάνιο μάλιστα να μη συμμετέχουν καν οι κόμβοι σε κάποιον από κοινού υπολογισμό αλλά να εκτελούν διαφορετικές επιμέρους εργασίες, παρουσιαζόμενοι όμως στο εξωτερικό περιβάλλον (π.χ. σε πελάτες οι οποίοι ζητούν υπηρεσίες) ως ενιαίο σύστημα. Αυτά ονομάζονται μη συνεκτικά κατανεμημένα συστήματα (π.χ. ο Παγκόσμιος Ιστός ή οι ομότιμες εφαρμογές ανταλλαγής αρχείων μέσω Διαδικτύου), σε αντίθεση με τα συνεκτικά κατανεμημένα συστήματα, τα οποία αξιοποιούνται περισσότερο ως συνήθη παράλληλα συστήματα για τη μεγιστοποίηση των υπολογιστικών επιδόσεων. 1.2. Παράλληλα υπολογιστικά περιβάλλοντα Υπάρχουν πολλοί τύποι υπολογιστικών συστημάτων με δυνατότητες πολυεπεξεργασίας τα οποία μπορούν να χωρισθούν σε κατηγορίες ανάλογα με τον αριθμό των επεξεργαστών, το είδος της μνήμης και τον τρόπο ανταλλαγής μηνυμάτων μεταξύ των επεξεργαστών. Οι κύριες κατηγορίες παράλληλων υπολογιστών, ανάλογα με τον τύπο των βασικών χαρακτηριστικών τους, παρουσιάζονται παρακάτω. 18
1.2.1. Αριθμός επεξεργαστικών μονάδων Ανάλογα με τον αριθμό των επεξεργαστικών μονάδων, τα παράλληλα υπολογιστικά περιβάλλοντα διακρίνονται σε: Πυκνής δομής (fine grained) ή μαζικής παραλληλίας (massively parallel) όταν αποτελούνται από μερικές εκατοντάδες επεξεργαστικές μονάδες Μεσαίας δομής (medium grained) όταν αποτελούνται από μερικές δεκάδες επεξεργαστικές μονάδες και Αραιής δομής (coarse grained) όταν αποτελούνται από μερικούς επεξεργαστές. Επειδή ο αριθμός των επεξεργαστικών μονάδων ενός παράλληλου υπολογιστικού περιβάλλοντος υψηλών επιδόσεων μπορεί να αυξομειώνεται, ένα πολύ σημαντικό χαρακτηριστικό των παράλληλων υπολογιστικών συστημάτων είναι η επεκτασιμότητα τους (scalability), δηλαδή η ιδιότητά τους να επιτυγχάνουν γραμμική αύξηση (στην ιδανική περίπτωση) της απόδοσής τους με την αύξηση του αριθμού των επεξεργαστών. Τα πιο οικονομικά συστήματα παράλληλης επεξεργασίας είναι τα δίκτυα σταθμών εργασίας (workstation networks). Εντούτοις, στην περίπτωση αυτή περιορίζεται η αύξηση της αποτελεσματικότητας του δικτύου με την προσθήκη νέων επεξεργαστικών μονάδων (σταθμοί εργασίας workstations) εξαιτίας της σχετικά αργής επικοινωνίας μεταξύ των επεξεργαστικών μονάδων. Για να επιτευχθεί ικανοποιητική βελτίωση της απόδοσης του συστήματος θα πρέπει η ανταλλαγή δεδομένων μεταξύ των επεξεργαστικών μονάδων να πραγματοποιείται σε μικρό χρονικό διάστημα σε σχέση με αυτό που απαιτείται για τους τοπικούς υπολογισμούς οι οποίοι πραγματοποιούνται σε κάθε επεξεργαστική μονάδα. 1.2.2. Είδος μνήμης Το είδος μνήμης είναι το σημαντικότερο χαρακτηριστικό των παράλληλων υπολογιστικών συστημάτων διότι επηρεάζει σε μεγάλο βαθμό τον τρόπο ανάπτυξης λογισμικού. Έτσι, ανάλογα με το είδος μνήμης, τα παράλληλα υπολογιστικά περιβάλλοντα διακρίνονται σε: 19
Κοινής μνήμης (shared memory) στα οποία τα δεδομένα του προβλήματος αποθηκεύονται σε μνήμη η οποία είναι διαθέσιμη σε όλες τις επεξεργαστικές μονάδες του υπολογιστικού συστήματος και σε Κατανεμημένης μνήμης (distributed memory) στα οποία τα δεδομένα του προβλήματος κατανέμονται στις τοπικά προσπελαυνόμενες μνήμες των επεξεργαστικών μονάδων του υπολογιστικού συστήματος. Το πρώτο είδος υπολογιστικών συστημάτων συναντάται σε συστήματα υπολογιστών με λίγες επεξεργαστικές μονάδες (αραιής δομής), συνήθως 4 ως και 16, αλλά μεγάλης ισχύος (π.χ. CRAY ή SGI). Σχήμα 1 1: Υπολογιστικό Περιβάλλον Κοινής Μνήμης Τα μειονεκτήματα ενός τέτοιου είδους υπολογιστικών συστημάτων είναι αφενός το μεγάλο κόστος αγοράς και αφετέρου η μέτρια προς κακή επεκτασιμότητά τους αφού η προσπέλαση της κοινής μνήμης γίνεται μέσω διαύλων επικοινωνίας πεπερασμένου εύρους ζώνης (bandwidth). Έτσι, η αύξηση του αριθμού των επεξεργαστικών μονάδων αυξάνει τη συχνότητα προσπέλασης στην κοινή μνήμη και έχει ως αποτέλεσμα τη συμφόρηση των διαύλων επικοινωνίας και κατά συνέπεια πτώση της απόδοσής τους. Τα πλεονεκτήματα ενός τέτοιου υπολογιστικού συστήματος είναι αφενός η αποτελεσματικότερη επικοινωνία μεταξύ των επεξεργαστών (αφού δεν έχομε μετακίνηση δεδομένων από και προς τις τοπικές μνήμες των επεξεργαστών), γεγονός το οποίο συνεπάγεται μεγαλύτερη απόδοση σε σχέση με τα κατανεμημένης μνήμης, και αφετέρου η ευκολότερη συγγραφή και παραγωγή κατάλληλου 20
λογισμικού σε σχέση με αυτή των υπολογιστικών συστημάτων κατανεμημένης μνήμης. Το δεύτερο είδος υπολογιστικών συστημάτων είναι ένα είδος στο οποίο κάθε επεξεργαστική μονάδα έχει τη δική του μνήμη την οποία δε μοιράζεται με τους υπόλοιπους. Απλώς ανταλλάσσει δεδομένα με μερικές ή και όλες τις υπόλοιπες επεξεργαστικές μονάδες με τη χρήση κατάλληλων διαύλων. Σχήμα 1 2 : Τοπολογία Υπολογιστικού Συστήματος με χρήση διαύλων και τοπικές μνήμες Υπάρχουν διάφορες τοπολογίες υπολογιστών με κατανεμημένη μνήμη, όπως π.χ. σειράς, δακτυλίου, καννάβου κλπ. Οι παράμετροι οι οποίες χαρακτηρίζουν αυτή την τοπολογία του δικτύου είναι οι εξής: Η διάμετρος η οποία ορίζεται ως η μέγιστη απόσταση την οποία πρέπει να διανύσει ένα μήνυμα μεταξύ δύο κόμβων 21
Ο βαθμός κάθε κόμβου ο οποίος ορίζεται ως ο αριθμός των συνδέσεων του με άλλους κόμβους Οι ως άνω παράμετροι είναι καθοριστικής σημασίας για μια τοπολογία δικτύου διότι επηρεάζουν σημαντικά το κόστος και την απόδοσή τους. Τα μειονεκτήματα ενός τέτοιου είδους υπολογιστικών συστημάτων αφενός η δυσκολότερη συγγραφή κατάλληλου λογισμικού το οποίο να εκμεταλλεύεται στο έπακρο την επεξεργαστική ισχύ ενός τέτοιου συστήματος και αφετέρου η επικοινωνία μεταξύ των επεξεργαστικών μονάδων είναι πιο αργή σε σχέση με αυτή των συστημάτων κοινής μνήμης. Αυτό οφείλεται στη χρήση διαύλων μικρότερου εύρους ζώνης και στο γεγονός ότι τα μηνύματα μεταξύ των επεξεργαστικών μονάδων συνήθως περιέχουν πολύ μεγαλύτερη ποσότητα δεδομένων, συγκρινόμενα με αυτά των συστημάτων κοινής μνήμης, διότι σε αυτά πολλές φορές ενυπάρχουν δεδομένα τα οποία δεν είναι διαθέσιμα σε όλες τις επεξεργαστικές μονάδες. Σχήμα 1 3 : Δομές επεξεργαστών διαύλων Το μεγάλο πλεονέκτημα ενός τέτοιου είδους επεξεργαστικού συστήματος είναι ότι η κατασκευή του μπορεί να γίνει με επεξεργαστικές μονάδες μικρού κόστους. Έτσι, είναι εφικτή η κατασκευή ενός ισχυρού υπολογιστικού συστήματος με σχετικά χαμηλό κόστος με τη συνεχή προσθήκη επεξεργαστικών μονάδων. Σε αυτή την κατηγορία ανήκουν και τα δίκτυα σταθμών εργασίας στα οποία οι 22
υπολογιστές συνδέονται με καλώδια συρμάτινα ή οπτικών ινών και η παράλληλη εκτέλεση των προγραμμάτων γίνεται με τη χρήση κατάλληλου προγραμματιστικού μέσου διασύνδεσης για εφαρμογές (application programming interface API) για το οποίο θα κάνουμε ιδιαίτερη μνεία σε επόμενο κεφάλαιο. 1.2.3. Ροή διεργασιών και δεδομένων Κάθε ηλεκτρονικός υπολογιστής έχει, όπως είναι γνωστό, τρία βασικά μέρη: τη μονάδα ελέγχου, τη μονάδα υπολογισμών (ή επεξεργαστή) και τη μνήμη. Οι παράλληλοι υπολογιστές δεν έχουν απαραίτητα πολλαπλά αντίγραφα των ανωτέρω τμημάτων, εκτός από τη μονάδα υπολογισμών. Όπως ήδη έχουμε αναφέρει παραπάνω, η μνήμη μπορεί να είναι κοινή ή κατανεμημένη και κατά ανάλογο τρόπο μπορεί να υπάρχουν μια ή πολλαπλές μονάδες ελέγχου οι οποίες να «δίνουν» οδηγίες (instructions) και δεδομένα (data) στις μονάδες υπολογισμών. Σχήμα 1 4 : Ροές δεδομένων σε επίπεδο τοπικής μνήμης Έτσι σύμφωνα με την ταξινόμηση κατά Flynn, τα είδη παράλληλων αρχιτεκτονικών είναι τα εξής: SISD (Single Instruction Single Data) το οποίο είναι το απλό ακολουθιακό (sequential) μοντέλο υπολογισμών όπου διεξάγεται μία σειρά υπολογισμών ανά ομάδα δεδομένων SIMD (Single Instruction Multiple Data) στο οποίο οι επεξεργαστικές μονάδες εκτελούν τις ίδιες πράξεις με διαφορετικά δεδομένα. Αυτή η αρχιτεκτονική είναι κατάλληλη για παραλληλία μικρού όγκου υπολογισμών (data loop parallelism ή fine grain parallelism) και είναι ανεφάρμοστη σε συστήματα με πολλές επεξεργαστικές μονάδες MISD (Multiple Instruction Single Data) το οποίο είναι το αντίστροφο του μοντέλου SIMD το οποίο και αποτελεί απλώς μία θεωρητική δυνατότητα με αδυναμία εφαρμογής σε πρακτικά προβλήματα MIMD (Multiple Instruction Multiple Data) στο οποίο κάθε επεξεργαστική μονάδα έχει την αυτονομία ενός SISD μοντέλου για αυτό και αποτελεί τη μόνη αρχιτεκτονική γενικής εφαρμογής αφού δεν αντιμετωπίζει τα προβλήματα κανονικότητας των δεδομένων και συγχρονισμού της αρχιτεκτονικής SIMD. 23
Σχήμα 1 5 : Αυτονομία SISD σε μοντέλο MIMD Οι συνηθέστερες αρχιτεκτονικές είναι τύπου SIMD ή τύπου MIMD με την επικρατέστερη να είναι τύπου MIMD. Σε αυτό το σημείο θα ήταν σκόπιμο να υπενθυμίσουμε ότι εκτός από τα κανονικά συστήματα πολυεπεξεργασίας, μπορούμε να χρησιμοποιήσουμε ένα δίκτυο υπολογιστών, είτε σειριακών είτε παράλληλων, ως ένα ενιαίο υπολογιστικό περιβάλλον πολυεπεξεργασίας με τη χρήση κατάλληλου API. Τα πιο διαδεδομένα λογισμικά αυτού του τύπου είναι τα PVM (Parallel Virtual Machine) και MPI (Message Passing Interface) με το οποίο και θα ασχοληθούμε εκτενέστερα σε επόμενο κεφάλαιο. 1.3. Περίληψη Κεφαλάιου Στο κεφάλαιο αυτό έγινε μία προσπάθεια να δοθούν οι βασικές έννοιες του τομέα της επιστήμης των υπολογιστών που ασχολείται με παράλλήλα και κατανεμημένα συστήματα. Συνάμα έγινε μια σύντομη ιστορική αναδρομή στη πορεία κατασκευής και δημιούργίας γρήγορων υπολογιστικών συστημάτων, από τη δεκαετία του 1960 εως τις ημέρες μας. Στη συνέχεια έγινε η βασική διάκριση των υπολογιστικών περιβάλοντων ανάλογα με το πλήθος των επεξεργαστικών μονάδων, τον τρόπο χρήσης και το έιδος της μνήμης που αυτά περιλαμβάνουν και έγινε μια αντιπαράθεση των πλεονεκτημάτων και μειονεκτημάτων που αυτά εμφανίζουν. 24
Έιναι προφανές ότι, η ανάπτυξη της επιστήμης των υπολογιστών, η έρευνα επάνω σε νέες τεχνολογίες αγώγιμων και ημιαγώγιμων υλικών, οδηγεί καθημερινά και με γεωμετρικό ρυθμό, στη υλοποίηση γρηγορότερων, αξιόπιστων αλλά και συνθετότερων περιβάλλοντων. Την ανάπτυξη αυτή ακολούθει με ραγδαίους ρυθμού και η ανάπτυξη λογισμικών που εκμεταλεύονται, αν όχι ολόκληρο αλλά το μεγαλύτερο τμήμα που προσφέρει η ανάπτυξη του λογισμικού. Υπάρχουν όμως σημεία όπου χρειάζεται ιδιάιτερη μέριμνα στη κατασκευή λογισμικού, ειδικά εκέινων που ασχολούνται με το παράλληλο και καταννεμημενο προγραμματισμό και σε σημεία που αναφέρονται στη φιλικότητα ως προς τον χρήστη και την εποπτεια του συστήματος. 1.4. Βιβλιογραφία Κεφαλαίου 1. http://en.wikipedia.org/wiki/cray 2 2. Computer Architecture: Pipelined and Parallel Processor Design (Computer Science Series),Jones and Bartlett Publishers, Inc. 1995 05 10 ISBN 0867202041 PDF Pages 788 11.49 MB 3. Conference on High Performance Networking and Computing,Proceedings of the 1988 ACM/IEEE conference on Supercomputing Orlando, Florida, United States, Pages: 288 295,Year of Publication: 1988, ISBN:0 8186 0882 X 4. ΒΑΣΙΚΕΣ ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΣΕ ΠΑΡΑΛΛΗΛΟ ΠΕΡΙΒΑΛΛΟΝ, Γιώργος Σταυρουλάκης, Διπλ. Πολ. Μηχ., Διπλ. ΔΠΜΣ Υπολ. Μηχ., Υποψήφιος Διδάκτωρ Ε.Μ.Π. Νοέμβριος 2004 5. ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ, ΤΜΗΜΑ ΧΗΜΙΚΩΝ ΜΗΧΑΝΙΚΩΝ,ΔΠΜΣ ΥΠΟΛΟΓΙΣΤΙΚΗΣ ΜΗΧΑΝΙΚΗΣ, Μάθημα: Υπολογιστικές Τεχνικές και Αλγόριθμοι Επίλυσης Μέρος Ι,Διδάσκων: Μανόλης Παπαδρακάκης, Καθηγητής Ε.Μ.Π 6. http://el.wikipedia.org/wiki/distrubuted systems 7. http://www.scl.ameslab.gov/projects/parallel_computing/ 25
2ο Κεφάλαιο Μοντέλα ανάπτυξης λογισμικού σε περιβάλλον πολυεπεξεργασίας 2.1. Εισαγωγή Η ανάπτυξη αποτελεσματικών αλγορίθμων που να μπορούν να εκμεταλλευθούν πλήρως τις δυνατότητες των υπερυπολογιστών δεν είναι εύκολο έργο και βασικό ρόλο στην επίτευξη αυτού του στόχου είναι το είδος του αλγορίθμου και η αρχιτεκτονική του συστήματος. Η ανάπτυξη παράλληλου λογισμικού είναι μία διεργασία η οποία συνήθως δεν μπορεί να γίνει αυτόματα. Εντούτοις, υπάρχουν κάποια προγράμματα τα οποία παραλληλοποιούν με αυτόματο τρόπο εφαρμογές οι οποίες έχουν αναπτυχθεί σε σειριακό περιβάλλον. Τα λογισμικά αυτά έχουν δύο βασικά μειονεκτήματα: Η βελτίωση της απόδοσης των κωδίκων που επιτυγχάνουν είναι σχετικά περιορισμένη Ο παράλληλος κώδικας που προκύπτει είναι περίπλοκος αφήνοντας πολύ λίγες δυνατότητες στον προγραμματιστή Κατά συνέπεια, ο προγραμματιστής έχει δύο επιλογές: είτε να προσαρμόσει τον υπολογιστικό κώδικα που χρησιμοποιούσε σε σειριακό περιβάλλον στο παράλληλο σύστημα που διαθέτει, είτε να μορφώσει εξαρχής τον υπολογιστικό κώδικα και να τον προσαρμόσει με μεγαλύτερη αποτελεσματικότητα στις ιδιαιτερότητες της παράλληλης αρχιτεκτονικής. Στην πρώτη περίπτωης, με τη χρήση εργαλείων του παράλληλου συστήματος τα οποία εντοπίζουν τα σημεία του κώδικα τα οποία επιδέχονται παραλληλοποίηση αλλά και της γνώσης των ιδιαιτεροτήτων του υπολογιστικού συστήματος και των αλγορίθμων διαχείρισης και επίλυσης των προβλημάτων που αντιμετωπίζει ο κώδικας είναι δυνατόν να επιτευχθεί μεγάλη μείωση του πραγματικού χρόνου εκτελέσεως των υπολογισμών. Η παραλληλοποίηση των προγραμμάτων επικεντρώνεται στους επαναληπτικούς βρόχους (loops) όπου πραγματοποιείται μεγάλος όγκος υπολογισμών σε κάθε επανάληψη, πολλές φορές χωρίς να υπάρχουν εξαρτήσεις δεδομένων μεταξύ των επαναλήψεων. 26
2.2. Επικοινωνία και ανταλλαγή μηνυμάτων Συνήθως σε κάθε αριθμητικό αλγοριθμικό κώδικα παράλληλης επεξεργασίας είναι απαραίτητη η ανταλλαγή ή συγκέντρωση δεδομένων σε κάποια φάση των υπολογισμών. Η επικοινωνία μεταξύ των επεξεργαστών πρέπει να ρυθμίζεται κατάλληλα ούτως ώστε να μην υπάρχουν αναμονές των επεξεργαστικών μονάδων αλλά και να μην εκτελούνται υπολογισμοί με μη επικαιροποιημένα δεδομένα. Οι παράλληλοι αλγόριθμοι πρέπει να αναπτύσσονται με τέτοιο τρόπο, ούτως ώστε να υπάρχει μεγάλος όγκος ανεξάρτητων εργασιών οι οποίες να εκτελούνται παράλληλα για να ελαχιστοποιείται το επικοινωνιακό κόστος. Ακόμα, πρέπει να συγχρονίζονται οι παράλληλες διεργασίες για την αποφυγή συγκρούσεων (collisions) είτε κατά την ανάγνωση και εγγραφών κοινών μεταβλητών στη μνήμη είτε στους διαύλους επικοινωνίας. Τα σημεία όπου οι επεξεργαστικές μονάδες χρειάζεται να επικοινωνήσουν μεταξύ τους ονομάζονται σημεία συγχρονισμού (synchronization points). Η ανταλλαγή των μηνυμάτων μεταξύ των επεξεργαστικών μονάδων γίνεται με τους εξής τρόπους: Χωρίς συγχρονισμό (asynchronous communication) όπου ο αποστολέας του μηνύματος στέλνει ένα μήνυμα στον παραλήπτη και συνεχίζει τους υπολογισμούς που έχει αναλάβει χωρίς επιβεβαίωση ότι το μήνυμα ελήφθη. Με συγχρονισμό (synchronized communication) όπου ο αποστολέας του μηνύματος περιμένει επιβεβαίωση από τον παραλήπτη ότι έλαβε το μήνυμα το οποίο εστάλη και συνεχίζει μετά τους υπολογισμούς που έχει αναλάβει. Ο πρώτος τρόπος είναι και ο ταχύτερος για την ανταλλαγή μηνυμάτων αλλά ενέχει κινδύνους σε περίπτωση σφαλμάτων συστήματος (π.χ. ελαττωματικό καλώδιο σύνδεσης δικτύου) ή υπερφόρτωσης των διαύλων επικοινωνίας. 2.3. Είδη παραλληλίας και παράλληλων αλγορίθμων εξής: Τα είδη αλγοριθμικής παραλληλίας παρουσιάζονται παρακάτω και είναι τα Φυσική παραλληλία (natural parallelism) η οποία αφορά υπολογισμούς οι οποίοι μπορούν να πραγματοποιηθούν ταυτόχρονα χωρίς παρέμβαση του προγραμματιστή σε αλγοριθμικό επίπεδο. Τέτοιοι υπολογισμοί είναι π.χ. η μόρφωση τοπικών μητρώων στιβαρότητας ή ο υπολογισμός των τάσεων στη μέθοδο πεπερασμένων στοιχείων. Τεχνητή ή υπολογιστική παραλληλία (artificial or computational parallelism) η οποία αφορά υπολογισμούς μη επιδεχόμενους φυσική παραλληλοποίηση αλλά απαιτείται χρήση ειδικών υπολογιστικών μεθόδων σε αλγεβρικό επίπεδο για να επιτευχθεί η παραλληλοποίησή τους. Τέτοιοι 27
υπολογισμοί είναι π.χ. η επίλυση γραμμικών συστημάτων με τη μέθοδο του διαμερισμού των πεδίων σε υποπεδία (domain decompositioning). Είναι προφανές ότι η υλοποίηση αλγορίθμων οι οποίοι εμπίπτουν στο δεύτερο είδος της αλγοριθμικής παραλληλίας παρουσιάζουν σαφώς μεγαλύτερη δυσκολία σε σχέση με το πρώτο.τα κυριότερα μοντέλα παραλληλοποίησης διεργασιών είναι τα εξής: Pipelining or processor farming όπου όλες οι επεξεργαστικές μονάδες κάνουν χρήση του ίδιου υπολογιστικού κώδικα και των ίδιων δεδομένων. Αυτή η τεχνική έχει μειωμένες απαιτήσεις σε επικοινωνία κατά την εκτέλεση των πράξεων αλλά δεν παρουσιάζει ικανοποιητική επεκτασιμότητα σε πολλούς επεξεργαστές Geometric parallelism όπου κάθε επεξεργαστική μονάδα κάνει χρήση του ίδιου υπολογιστικού κώδικα αλλά διαφορετικών δεδομένων (π.χ. μέθοδος πεπερασμένων στοιχείων με υποφορείς) και ανταλλάσσει πληροφορίες με επεξεργαστικές μονάδες οι οποίες έχουν γειτονικά δεδομένα. Η τεχνική αυτή παρουσιάζει καλή επεκτασιμότητα άρα και ικανοποιητική επιτάχυνση των υπολογισμών Algorithmic parallelism όπου σε κάθε επεξεργαστική μονάδα έχει γίνει κατανομή όχι μόνο διαφορετικών δεδομένων αλλά και διαφορετικού υπολογιστικού κώδικα. Αυτή τεχνική έχει μεγάλο εύρος εφαρμογών αλλά επειδή συνήθως απαιτεί συχνή επικοινωνία μεταξύ των επεξεργαστικών μονάδων δεν παρουσιάζει ικανοποιητική επεκτασιμότητα λόγω υπερφόρτωσης του διαύλου επικοινωνίας. Task farming (master slave model) όπου μία από τις επεξεργαστικές μονάδες οργανώνει τις υπόλοιπες για την εκτέλεση των υπολογισμών και φροντίζει να κατανέμει ισομερώς τον υπολογιστικό φόρτο, κρατώντας κατ αυτό τον τρόπο συνεχώς απασχολημένες τις επεξεργαστικές μονάδες. Αυτή η τεχνική εφαρμόζεται μόνο σε συστήματα κατανεμημένης μνήμης, είναι αρκετά αποτελεσματική και η απόδοσή της εξαρτάται από τη διαθεσιμότητα της τοπικής μνήμης. Η επιλογή του μοντέλου παραλληλίας που θα χρησιμοποιηθεί κατά την υλοποίηση ενός αλγορίθμου εξαρτάται από το είδος του προβλήματος, δηλαδή το μέγεθος του όγκου των παράλληλων υπολογισμών (granularity) που αναλαμβάνει κάθε επεξεργαστική μονάδα. Το μέγεθος αυτό καθορίζει σε μεγάλο βαθμό και το πόσο καλά είναι μοιρασμένο το υπολογιστικό φορτίο (load balancing) στις επεξεργαστικές μονάδες.το μέγεθος των παράλληλων υπολογισμών διακρίνεται στις εξής κατηγορίες: Fine grain, όπου ο όγκος των παράλληλων υπολογισμών αποτελείται από ελάχιστες αριθμητικές πράξεις Medium grain, όπου οι παράλληλοι υπολογισμοί είναι μερικές εκατοντάδες ή χιλιάδες αριθμητικές πράξεις Large or coarse grain, όπου οι υπολογισμοί σε κάθε επεξεργαστικής μονάδας είναι αρκετά εκατομμύρια αριθμητικές πράξεις. 28
Η πρώτη κατηγορία μπορεί να εφαρμοσθεί αποτελεσματικά σε υπολογιστές υψηλών επιδόσεων με διανυσματικές υπολογιστικές δυνατότητες ή σε συστήματα μαζικής παραλληλίας. Η δεύτερη κατηγορία εμφανίζει καλή αναλογία παράλληλων υπολογισμών και επικοινωνιακού κόστους αλλά παρουσιάζει δυσκολίες στην εφαρμογή της σε μεγάλα προβλήματα και σε συστήματα με πολλούς επεξεργαστές. Τέλος το τρίτο είδος, το οποίο έχει την καλύτερη απόδοση αφού μειώνει στο ελάχιστο το επικοινωνιακό κόστος, είναι το πιο κατάλληλο για συστήματα κοινής μνήμης αλλά μπορεί να εμφανίσει προβλήματα όταν η κατανομή του υπολογιστικού φορτίου δεν είναι ισομερής. 2.3.1. Ο νόμος του Άμνταλ Αξιολόγηση απόδοσης Ο νόμος του Άμνταλ χρησιμοποιείται για να διαπιστωθεί η αναμενόμενη μείωση του χρόνου εκτέλεσης από την παραλληλοποίηση ενός σειριακού προγράμματος. Φέρει το όνομα του Τζιν Άμνταλ που τον πρωτοδιατύπωσε και δηλώνει ότι η επιτάχυνση ενός προγράμματος το οποίο αξιοποιεί πολλαπλούς επεξεργαστές περιορίζεται από τον χρόνο εκτέλεσης που απαιτεί το σειριακό μέρος του προγράμματος. Ο νόμος του Άμνταλ συνήθως ορίζεται με τη βοήθεια του παρακάτω μαθηματικού τύπου: 1 1 1 1 Εξίσωση 2 1 : Ο νόμος του Άμνταλ Στον τύπο αυτόν η μεταβλητή P δηλώνει το ποσοστό των συνολικών υπολογισμών του προγράμματος οι οποίοι μπορούν να παραλληλοποιηθούν και η μεταβλητή Ν το πλήθος των διαθέσιμων επεξεργαστών. Για παράδειγμα, αν το P είναι 90% (0,9), τότε το (1 P) είναι 10% και το ολικό πρόγραμμα (σύμφωνα με τον τύπο του Άμνταλ) μπορεί να επιταχυνθεί το πολύ 10 φορές, όσους επεξεργαστές και αν χρησιμοποιήσουμε. Γι' αυτόν τον λόγο η παράλληλη επεξεργασία είναι χρήσιμη μόνο για περιορισμένο πλήθος επεξεργαστών (μικρό N) ή για προβλήματα με πολύ μεγάλη τιμή P (π.χ. η πρόσθεση δύο ν διάστατων διανυσμάτων έχει P 100%, αφού πρακτικώς δεν υπάρχει αποκλειστικά σειριακό τμήμα στον αλγόριθμο). 2.3.2. Αυτόματη παραλληλοποίηση Στις περισσότερες περιπτώσεις ένα παράλληλο πρόγραμμα έχει σχεδιαστεί κατάλληλα και ο πηγαίος κώδικας έχει γραφεί από τον προγραμματιστή έτσι ώστε να υποστηρίζει παραλληλισμό («ρητός παραλληλισμός»). Επειδή η διαδικασία αυτή είναι επίπονη, χρονοβόρα και απαιτεί ειδικές γνώσεις εκ μέρους του προγραμματιστή, έχουν υπάρξει πολλές προσπάθειες για την αυτόματη παραλληλοποίηση τμημάτων σειριακού πηγαίου κώδικα (συνήθως επαναληπτικών βρόχων) από κατάλληλους μεταγλωττιστές. Στην περίπτωση αυτή ο 29
προγραμματιστής συγγράφει τυπικό σειριακό κώδικα, χωρίς κλήσεις σε κάποια υποστηρικτική βιβλιοθήκη όπως των νημάτων POSIX, του OpenMP ή του MPI, και κατά τη μεταγλώττιση εντοπίζονται αυτομάτως τα σημεία που επιδέχονται παραλληλισμό. 2.3.3. Γλώσσες ταυτόχρονου προγραμματισμού Πέρα από τις, συμπληρωματικές μεταξύ τους, λύσεις της αυτόματης παραλληλοποίησης και της προσθήκης εξειδικευμένων βιβλιοθηκών και επεκτάσεων σε συνήθεις γλώσσες προγραμματισμού όπως η C ή η Fortran, κατά καιρούς έχουν εμφανιστεί και ορισμένες γλώσσες προγραμματισμού σχεδιασμένες από τη βάση τους με στόχο την εγγενή υποστήριξη ταυτοχρονισμού, είτε παράλληλου είτε ψευδοπαράλληλου. Ακόμη και συνηθισμένες γλώσσες γενικού σκοπού παρέχουν κάποια στοιχειώδη εγγενή υποστήριξη για ταυτοχρονισμό και αμοιβαίο αποκλεισμό (π.χ. η Java και η C#), αλλά οι εξειδικευμένες γλώσσες ταυτόχρονου προγραμματισμού είναι βελτιστοποιημένες συγκεκριμένα προς αυτή την κατεύθυνση. 2.4. Εφαρμογή της μεθόδου των πεπερασμένων στοιχείων με το μοντέλο master slave Ένα παράλληλο πρόγραμμα πεπερασμένων στοιχείων υλοποιημένο με το μοντέλο task farming ή master slave διεξάγει υπολογιστικές διαδικασίες οι οποίες συνοψίζονται στα παρακάτω στάδια: Γένεση δικτύου πεπερασμένων στοιχείων (mesh generation), διαδικασία η οποία παρουσιάζει αρκετές δυσκολίες κατά την παραλληλοποίησή της και για αυτό κατά κανόνα πραγματοποιείται σειριακά από τον master κόμβο. Διαμέριση φορέα σε υποφορείς (mesh partitioning) όπου το δίκτυο πεπερασμένων στοιχείων το οποίο έχει παραχθεί ομαδοποιείται σε υποδίκτυα (submeshes), κάθε ένα από τα οποία ορίζει έναν υποφορέα (substructure or subdomain). Η διαμέριση πραγματοποιείται σειριακά από τον master κόμβο. Ακόμα, αν απαιτείται από τον αλγόριθμο επίλυσης, μπορεί το δίκτυο να χωριστεί σε αριθμό υποφορέων μεγαλύτερο του αριθμού των επεξεργαστικών μονάδων οπότε και πραγματοποιείται επιπλέον η δημιουργία ομάδων υποφορέων (subdomain cluster). Ενεργοποίηση slave κόμβων, διαδικασία κατά την οποία ο master κόμβος, έχοντας στη μνήμη ένα διαμερισμένο σε υποφορείς δίκτυο πεπερασμένων στοιχείων, ενεργοποιεί τις διαδικασίες πουεκτελούνται στους slave κόμβους και αναθέτει σε αυτούς υποφορείς ή ομάδες υποφορέων και τους εφοδιάζει με τα απαραίτητα δεδομένα, όπως συντεταγμένες κόμβων, ιδιότητες υλικών, φορτία κλπ. Τέλος, όλοι οι κόμβοι μορφώνουν τις δομές δεδομένων στις οποίες αποθηκεύονται 30
πληροφορίες προς αποστολή για τη διευκόλυνση της ανταλλαγής μηνυμάτων σε επόμενα στάδια. Μόρφωση μητρώου στιβαρότητας και διανύσματος επικόμβιων δράσεων για κάθε υποφορέα, όπου και αρχίζει ουσιαστικά το παράλληλο τμήμα του λογισμικού ανάλυσης με τη μέθοδο των πεπερασμένων στοιχείων. Οι slave κόμβοι υπολογίζουν παράλληλα τα μητρώα στιβαρότητας και τα διανύσματα επικόμβιων δράσεων των υποφορέων αξιοποιώντας τα δεδομένα που έχουν λάβει από τον master κόμβο στο προηγούμενο στάδιο. Κάθε slave κόμβος πραγματοποιεί τους υπολογισμούς που αντιστοιχούν στους υποφορείς που του έχουν ανατεθεί χωρίς καμία ανάγκη επικοινωνίας με τον master κόμβο. Τέλος, αν απαιτείται η μορφή αποθήκευσης των μητρώων να είναι με τη μορφή ενεργών στηλών (skyline storage), τότε γίνεται επαναρίθμηση των βαθμών ελευθερίας του κάθε υποφορέα, ούτως ώστε να μειωθούν στο ελάχιστο οι απαιτήσεις μνήμης για την αποθήκευσή τους. Η διαδικασία αυτή εκτελείται και αυτή παράλληλα από τους slave κόμβους χωρίς να είναι αναγκαία η επικοινωνία τους με τον master κόμβο. Παραγοντοποίηση μητρώου στιβαρότητας και προσδιορισμός μετακινήσεων στερεού σώματος όπου απαιτείται. Γίνεται παραγοντοποίηση των μητρώου δυσκαμψίας κάθε υποφορέα στους slave κόμβους αφού πρώτα προσδιοριστούν οι κινήσεις στερεού σώματος προκειμένου να γίνουν οι κατάλληλες διαδικασίες για να είναι δυνατή η παραγοντοποίηση του μητρώου. Επίλυση εξισώσεων ισορροπίας. Έχοντας πλέον διαθέσιμες όλες τις απαιτούμενες δομές δεδομένων, καλείται ένας παράλληλος αλγόριθμος επίλυσης συστημάτων γραμμικών εξισώσεων με σκοπό τον υπολογισμό των επικόμβιων μετατοπίσεων των υποφορέων. Στο στάδιο αυτό η επικοινωνία είναι στις περισσότερες περιπτώσεις απαραίτητη. Μετεπεξεργασία αποτελεσμάτων (result post processing) όπου γίνεται χρήση των υπολογισμένων επικόμβιων μετατοπίσεων με σκοπό τον προσδιορισμό των τάσεων των στοιχείων και, εφόσον απαιτείται, του σφάλματος της λύσης. Οι παραπάνω υπολογισμοί των τάσεων γίνονται από τους slave κόμβους και εκτελούνται παράλληλα, ενώ αυτοί της εκτίμησης σφάλματος ενδέχεται να χρειάζεται επικοινωνία με τον master κόμβο. Από τα παραπάνω στάδια, γίνεται φανερό ότι, από τη στιγμή που αρχίζουν οι παράλληλοι υπολογισμοί των slave κόμβων, η συμμετοχή του master κόμβου είναι περιορισμένη και ο ίδιος χρησιμοποιείται κυρίως κατά την επίλυση των εξισώσεων ισορροπίας για να συγκεντρώνει, να αθροίζει και να επαναδιανέμει πληροφορίες σχετικές με τους ενδοσυνοριακούς βαθμούς ελευθερίας των υποφορέων. Με αυτό τον τρόπο επιτυγχάνεται η σύνδεση των ανεξάρτητων υπολογισμών που πραγματοποιούν οι slave κόμβοι. Τα απαιτούμενα βήματα επικοινωνίας διεξάγονται αξιοποιώντας αποθηκευμένες πληροφορίες με τις οποίες: οι slave κόμβοι είναι σε θέση να εντοπίζουν τους βαθμούς ελευθερίας των υποφορέων τους που ανήκουν στο σύνορο με άλλους υποφορείς, ενώ 31
ο master κόμβος είναι ενήμερος για τους βαθμούς ελευθερίας που ανήκουν σε κάθε υποφορέα, καθώς και ποιοί από αυτούς τους βαθμούς ελευθερίας ανήκουν στο σύνορο με άλλους υποφορείς. Τέλος, θα πρέπει να σημειώσουμε ότι το στάδιο επίλυσης των εξισώσεων ισορροπίας παρουσιάζει ιδιαίτερο ενδιαφέρον λόγω των απαιτήσεων επικοινωνίας που συνεπάγεται. Η αδυναμία εφαρμογής των άμεσων μεθόδων για την επίλυση των εξισώσεων σε περιβάλλον πολυεπεξεργασίας είχε ως αποτέλεσμα την ανάπτυξη επαναληπτικών μεθόδων επίλυσης για την αξιοποίηση διαδικτυωμένων υπολογιστικών συστημάτων. 2.5. Μη συνεκτικά κατανεμημένα συστήματα Τα μη συνεκτικά κατανεμημένα συστήματα εκτελούνται συνήθως σε ετερογενείς δικτυωμένους πολυυπολογιστές και βασίζονται σε λογισμικό το οποίο παρέχει υπηρεσίες σε χρήστες, αποκρύπτοντας όμως την ύπαρξη πολλαπλών υπολογιστών και τη χρήση του υποκείμενου δικτύου (διαφάνεια). Το δίκτυο διασύνδεσης ποικίλει, από την κλίμακα ενός τοπικού Ethernet (π.χ. για τις ανάγκες μίας επιχείρησης ή ενός πανεπιστημιακού τμήματος) μέχρι την κλίμακα του Internet. Στόχος αυτών των συστημάτων συνήθως είναι η διαφανής παροχή κάποιας υπηρεσίας (π.χ. διαμοιρασμός πόρων μεταξύ απομακρυσμένων χρηστών, αυτόματη μετάφραση κειμένου μέσω Διαδικτύου κλπ), αλλά σπανιότερα μπορούν να αξιοποιηθούν και για αύξηση των υπολογιστικών επιδόσεων κατά την επίλυση ενός προβλήματος (π.χ. υπολογιστικά πλέγματα, αν και γι' αυτόν τον σκοπό χρησιμοποιούνται κυρίως πολυεπεξεργαστές ή συνεκτικοί πολυυπολογιστές με τοπικά δίκτυα διασύνδεσης χαμηλής υστέρησης). Συνήθως η εργασία που επιτελεί ένα τέτοιο κατανεμημένο σύστημα μπορεί να γίνει και από ένα συγκεντρωτικό σύστημα (π.χ. έναν κεντρικό υπολογιστή στον οποίον συνδέονται οι πελάτες μέσω δικτύου). Ωστόσο τα κατανεμημένα συστήματα πλεονεκτούν έναντι των συγκεντρωτικών ως προς: Την οικονομία, αφού ένας κεντρικός υπολογιστής μεγάλης ισχύος μπορεί να είναι πολύ ακριβότερος Την ευελιξία, αφού ο φόρτος εργασίας μπορεί να διαμοιραστεί κατάλληλα στους κόμβους του συστήματος Την αξιοπιστία, αφού αν ένας κόμβος καταρρεύσει δεν επηρεάζονται οι υπόλοιποι Τη σταδιακή ανάπτυξη, αφού μπορεί να προστεθεί σταδιακά περισσότερη ισχύς με την προσθήκη νέων κόμβων Την κοινοχρησία δεδομένων ή συσκευών μεταξύ απομακρυσμένων χρηστών Με την εμφάνιση των κατανεμημένων συστημάτων προέκυψαν ζητήματα λογισμικού, αφού έπρεπε να γραφούν κατάλληλες γλώσσες προγραμματισμού, λειτουργικά συστήματα και εφαρμογές που να υποστηρίζουν αυτό το μοντέλο, 32