Next             Up                Back                   Contents

Επόμενο:Αναφορές Πάνω: Κεφάλαιο 8o: Προγράμματα περάσματος μηνυμάτων Πίσω: 8.5 Επικοινωνίες Πολλαπλών Θυρών


 

8.6 Περίληψη

 

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

Ο παράλληλος προγραμματισμός με πέρασμα μηνυμάτων είναι σχεδιασμένος έτσι ώστε να παρέχει μεγαλύτερη αποδοτικότητα στην εκτέλεση προγραμμάτων σε συστήματα κατανεμημένης μνήμης. Στο πέρασμα μηνυμάτων η οργάνωση του προγράμματος αντικατοπτρίζει την υποκείμενη οργάνωση του συστήματος κατανεμημένης μνήμης. Κάθε διεργασία δημιουργείται από μια κλήση διαδικασίας με όλα τα απαιτούμενα διαμοιραζόμενα δεδομένα που περνιούνται σαν παράμετροι τιμών στη διαδικασία. Από τη στιγμή που μια διεργασία έχει δημιουργηθεί βασίζεται κυρίως στις δικές της τοπικές μεταβλητές, που βρίσκονται αποθηκευμένες στην τοπική μνήμη του επεξεργαστή. Όλη η επικοινωνία των διεργασιών πραγματοποιείται μέσα από πέρασμα μηνυμάτων χρησιμοποιώντας θύρες επικοινωνίας, οι οποίες είναι κανάλια μεταβλητών που τους έχει ανατεθεί να λαμβάνουν μηνύματα για μια συγκεκριμένη διεργασία. Οι θύρες επικοινωνίας δημιουργούνται με δήλωση δύο τμημάτων-μια δήλωση μεταβλητής καναλιού στην αρχή του κυρίως προγράμματος και μια δήλωση PORT στη δήλωση δημιουργίας της διεργασίας.

Όταν κάποια διεργασία γράφει μια τιμή δεδομένων στη θύρα επικοινωνίας μια άλλης διεργασίας τα δεδομένα αυτόματα στέλνονται μέσα από το δίκτυο επικοινωνίας του επεξεργαστή στη διεργασία προορισμού, όπου φτάνουν μετά από κάποια καθυστέρηση επικοινωνίας που εξαρτάται από την τοπολογία του συστήματος κατανεμημένης μνήμης. Η Multi-Pascal περιλαμβάνει επιλογές για τις ακόλουθες τοπολογίες: Γραμμής, Δακτυλίου, Διδιάστατου Πλέγματος, Τόρου, Τρισδιάστατου Πλέγματος και Υπερκύβου. Η Multi-Pascal καθορίζει την καθυστέρηση επικοινωνίας για κάθε μήνυμα που στέλνεται μέσα από το δίκτυο επικοινωνίας, συμπεριλαμβανομένων και των μηνυμάτων δημιουργίας και τερματισμού της διεργασίας. Η καθυστέρηση κάθε μηνύματος υπολογίζεται χρησιμοποιώντας τη βασική καθυστέρηση επικοινωνίας κατά μήκους κάθε συνδέσμου επικοινωνίας στο δίκτυο, που μπορεί να καθορίζεται από τον χρήστη. Ο χρήστης μπορεί επίσης να επιλέξει μια επιλογή συμφόρησης με την οποία καταγράφεται με λεπτομέρεια η ροή των μηνυμάτων κατά μήκους του δικτύου.

Ο τελεστής “@” επιτρέπει στο πρόγραμμα να αγνοήσει την προκαθορισμένη πολιτική εκχώρησης διεργασίας σε επεξεργαστή και να τοποθετήσει τις διεργασίες σε οποιονδήποτε φυσικό επεξεργαστή. Ο προγραμματιστής γνωρίζοντας την υποκείμενη τοπολογία του συστήματος κατανεμημένης μνήμης και το πρότυπο επικοινωνίας διεργασιών του προγράμματος μπορεί να βελτιστοποιήσει την απόδοση του προγράμματος τοποθετώντας συνετά τις διεργασίες. Όπως είδαμε και στο πρόγραμμα Ταξινόμησης με Εισαγωγή, η δομή επικοινωνίας ενός προγράμματος μπορεί συχνά να απεικονιστεί απευθείας πάνω στην τοπολογία επικοινωνίας του συστήματος κατανεμημένης μνήμης. Με αυτό το πρόγραμμα η διασωλήνωση της διεργασίας απεικονίζεται πάνω στην τοπολογία Γραμμής, έτσι ώστε όλη η επικοινωνία να γίνεται μόνο με τους άμεσους γείτονες.

Το κεφάλαιο αυτό τελειώνει με την αναφορά στα προγράμματα πολλαπλών θυρών, στα οποία κάθε διεργασία απαιτεί αρκετές θύρες επικοινωνίας για τη λήψη δεδομένων από διαφορετικές πηγές. Παρουσιάστηκαν δύο σημαντικά παραδείγματα τέτοιων προγραμμάτων: ένας αλγόριθμος Πολλαπλής Συλλογής και ένας αλγόριθμος Πολλαπλής Διάδοσης σε Υπερκύβο. Και οι δυο αυτοί αλγόριθμοι βασίζονται στο πρότυπο επικοινωνίας της πεταλούδας, στο οποίο κάθε διεργασία επιλέγει μια θύρα επικοινωνίας σε κάθε βήμα, αντιστρέφοντας το αντίστοιχο bit του δικού της αριθμού επεξεργαστή. Επίσης και οι δύο αυτοί αλγόριθμοι είναι χρήσιμοι για μια ευρεία ποικιλία αριθμητικών επαναληπτικών προγραμμάτων, της μορφής που παρουσιάστηκαν στο κεφάλαιο 6. Το επόμενο κεφάλαιο δίνει περισσότερα παραδείγματα προγραμμάτων συστημάτων κατανεμημένης μνήμης, με ειδική έμφαση στο θέμα της επιμερισμού των καθολικών δομών δεδομένων στους επεξεργαστές.


     Next             Up                Back                   Contents

Επόμενο:Αναφορές Πάνω: Κεφάλαιο 8o: Προγράμματα περάσματος μηνυμάτων Πίσω: 8.5 Επικοινωνίες Πολλαπλών Θυρών