Next                  Up                    Back                  Contents     

Επόμενο:1.7 Παράλληλοι Αλγόριθμοι Πάνω:Κεφάλαιο 1ο: Γιατί Παράλληλος Προγραμματισμός ; Πίσω:1.5 Παράλληλος Προγραμματισμός


 

1.6 Η Γλώσσα Multi-Pascal

 

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

 

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

Η Multi-Pascal σχεδιάστηκε σαν ένα ανεξάρτητο σύστημα και μπορεί να εκτελείται σε μια μεγάλη ποικιλία παράλληλων συστημάτων, περιλαμβάνοντας τα συστήματα διαμοιραζόμενης μνήμης και τα συστήματα κατανεμημένης μνήμης. Η Multi-Pascal έχει ιδιότητες που επιτρέπουν τη δυναμική δημιουργία παράλληλων διεργασιών που εκτελούνται σε φυσικούς επεξεργαστές. Θυμηθείτε από το σχήμα 1.1 ότι στα παράλληλα συστήματα διαμοιραζόμενης μνήμης η μνήμη προσπελαύνεται από όλους τους επεξεργαστές. Σαν απεικόνιση αυτής της ιδιότητας του υλικού, η Multi-Pascal επιτρέπει τα δεδομένα να μοιράζονται σε παράλληλες διεργασίες χρησιμοποιώντας διαμοιραζόμενες μεταβλητές, που είναι μια αφηρημένη έννοια λογισμικού που έρχεται σε αντιστοιχία με την διαμοιραζόμενη μνήμη που βρίσκεται στο υλικό των παράλληλων συστημάτων διαμοιραζόμενης μνήμης. Στο παράλληλο πρόγραμμα ταξινόμησης σειράς του σχήματος 1.4 οι διαμοιραζόμενες μεταβλητές είναι οι πίνακες οι LIST, RANK και SORTED. Αυτές οι διαμοιραζόμενες μεταβλητές αποθηκεύονται στην διαμοιραζόμενη μνήμη. Το ακόλουθο διάγραμμα παρουσιάζει την αντιστοιχία ανάμεσα στις βασικές πλευρές των παράλληλων συστημάτων διαμοιραζόμενης μνήμης και της γλώσσας Multi-Pascal.

ΥΛΙΚΟ ΠΑΡΑΛΛΗΛΩΝ ΣΥΣΤΗΜΑΤΩΝ ΔΙΑΜΟΙΡΑΖΟΜΕΝΗΣ ΜΝΗΜΗΣ                                                 Multi-Pascal


Επεξεργαστής                                                                                                                             ------------------ >         Διεργασία


Διαμοιραζόμενη Μνήμη                                                                                                           ------------------ >          Διαμοιραζόμενες Μεταβλητές

 

 

Στην περίπτωση των παράλληλων συστημάτων κατανεμημένης μνήμης, ο κάθε επεξεργαστής έχει την δική του τοπική μνήμη, αλλά δεν υπάρχει καθόλου διαμοιραζόμενη μνήμη. Όπως διευκρινίζεται στο σχήμα 1.3 οι επεξεργαστές στα συστήματα κατανεμημένης μνήμης χρησιμοποιούν ένα δίκτυο με κανάλια επικοινωνίας για να στέλνουν μηνύματα ο ένας στον άλλο κατά τη διάρκεια της υπολογιστικής δραστηριότητας. Οι ενδιάμεσες τιμές δεδομένων που παράγονται κατά τη διάρκεια της υπολογιστικής διαδικασίας, μπορούν να μεταβιβαστούν στους άλλους επεξεργαστές μέσα από αυτά τα κανάλια επικοινωνίας. Η Multi-Pascal για αυτά τα κανάλια επικοινωνίας διαθέτει ένα αφηρημένο τύπο δεδομένων τις μεταβλητές καναλιών (channel variables). Οι μεταβλητές καναλιών μπορούν να χρησιμοποιηθούν για να μεταβιβάσουν δεδομένα από την μια διεργασία στην άλλη. Η διεργασία μπορεί να γράφει τις τιμές δεδομένων σε μια μεταβλητή καναλιού, από την οποία τα δεδομένα μπορούν να διαβαστούν από μια άλλη διεργασία που τρέχει παράλληλα. Οι μεταβλητές καναλιών στη Multi-Pascal είναι μια λογική έννοια οντότητα λογισμικού, που επιτρέπει την επικοινωνία ανάμεσα στις παράλληλες διεργασίες με μηνύματα τα οποία μεταβιβάζονται μέσα από τα κανάλια. Τα χαρακτηριστικά των μεταβλητών καναλιών περιγράφονται στο κεφάλαιο 4.

Επειδή τα παράλληλα συστήματα κατανεμημένης μνήμης δεν έχουν καθόλου διαμοιραζόμενη μνήμη, απαιτούν ένα διαφορετικό μοντέλο παράλληλου προγραμματισμού. Σε αντίθεση με την απλή τοποθέτηση τιμών δεδομένων στη διαμοιραζόμενη μνήμη προκειμένου να ανακτηθούν αργότερα από άλλους επεξεργαστές, οι τιμές δεδομένων στα συστήματα κατανεμημένης μνήμης πρέπει να σταλούν στους άλλους επεξεργαστές με τη χρήση μηνυμάτων. Αυτό το μοντέλο παράλληλου προγραμματισμού καλείται μοντέλο περάσματος μηνυμάτων. Από τη στιγμή που η Multi-Pascal διαθέτει από μόνη της μεταβλητές καναλιών, μπορεί να χρησιμοποιηθεί για τη δημιουργία προγραμμάτων σύμφωνα με το μοντέλο περάσματος μηνυμάτων για τα συστήματα κατανεμημένης μνήμης. Στο κεφάλαιο 8 αναπτύσσεται το μοντέλο περάσματος μηνυμάτων με λεπτομέρεια. Τα ακόλουθα διαγράμματα δείχνουν την αντιστοιχία ανάμεσα στις βασικές πλευρές της αρχιτεκτονικής των συστημάτων κατανεμημένης μνήμης και των ιδιοτήτων της Multi-Pascal.

 

ΥΛΙΚΟ ΠΑΡΑΛΛΗΛΩΝ ΣΥΣΤΗΜΑΤΩΝ ΚΑΤΑΝΕΜΗΜΕΝΗΣ ΜΝΗΜΗΣ                                              Multi-Pascal


Επεξεργαστής                                                                                                                     ---------------- >              Διεργασία


Τοπική Μνήμη                                                                                                                    ----------------- >            Τοπικές Μεταβλητές


Δίκτυο Επικοινωνίας                                                                                                         ----------------- >             Μεταβλητές Καναλιών

 

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

Η παρούσα έκδοση της Multi-Pascal που περιγράφεται σε αυτό το κείμενο δεν σχεδιάστηκε για διατάξεις επεξεργαστών απλής εντολής (SIMD) όπως το Connection Machine [Hillis, 1986], στην οποία κάθε επεξεργαστής εκτελεί την ίδια εντολή ταυτόχρονα με τους υπόλοιπους. Η Multi-Pascal επίσης, δεν υποστηρίζει προς το παρόν ανυσματική επεξεργασία, που συχνά θεωρείται σαν μια πλευρά της παράλληλης επεξεργασίας.

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

Η Pascal είναι η γλώσσα που χρησιμοποιείται κυρίως στην διδασκαλία προγραμματισμού υπολογιστών, και χρησιμοποιείται από τα περισσότερα πανεπιστήμια για να διδάξουν στους φοιτητές πώς να προγραμματίζουν. Επιπλέον, η Multi-Pascal είναι ιδιαίτερα χρήσιμη για την διδασκαλία των τεχνικών του παράλληλου προγραμματισμού. Το σύνολο των κοινά διαθέσιμων ιδιοτήτων παράλληλου προγραμματισμού που διαθέτει η Multi-Pascal, είναι επαρκές για να καταστήσει την ικανότητα των φοιτητών στον παράλληλο προγραμματισμό εύκολα προσαρμόσιμη και σε άλλες γλώσσες. Μέσα από μια μεγάλη ποικιλία προγραμματιστικών εργασιών που χρησιμοποιούν το σύστημα προσομοίωσης της Multi-Pascal, οι φοιτητές μαθαίνουν τις σημαντικές τεχνικές και αρχές οργάνωσης των παράλληλων προγραμμάτων για αποδοτική εκτέλεση στα παράλληλα συστήματα διαμοιραζόμενης και κατανεμημένης μνήμης. Στη συνέχεια αυτή η γνώση μπορεί πρακτικά να εφαρμοστεί σε συγκεκριμένα παράλληλα συστήματα με τη χρήση άλλων γλωσσών παράλληλου προγραμματισμού, που υποστηρίζονται από αυτά τα συστήματα


     Next                  Up                     Back                  Contents     

Επόμενο:1.7 Παράλληλοι Αλγόριθμοι Πάνω:Κεφάλαιο 1ο: Γιατί Παράλληλος Προγραμματισμός ; Πίσω:1.5 Παράλληλος Προγραμματισμός