ΠΑΡΑΛΛΗΛΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Βασίλειος Β. Δημακόπουλος Π Ε Ρ Ι Ε Χ Ο Μ Ε Ν Α ===================== ΚΕΦΑΛΑΙΟ 1 ΕΙΣΑΓΩΓΗ ΕΝΟΤΗΤΑ 1.1 Παράλληλοι υπολογιστές ΕΝΟΤΗΤΑ 1.2 Που υπάρχει παραλληλισμός ΕΝΟΤΗΤΑ 1.3 Παράλληλες αρχιτεκτονικές 1.3.1 Πολυεπεξεργαστές κοινής μνήμης 1.3.2 Πολυεπεξεργαστές κατανεμημένης μνήμης ΕΝΟΤΗΤΑ 1.4 Προγραμματισμός των παράλληλων υπολογιστών 1.4.1 Βασικά μοντέλα παράλληλου προγραμματισμού ΕΝΟΤΗΤΑ 1.5 Βασική μεθοδολογία παραλληλοποίησης 1.5.1 Διάσπαση σε εργασίες ΣΥΝΟΨΗ ΚΕΦΑΛΑΙΟΥ ΒΙΒΛΙΟΓΡΑΦΙΑ ΑΠΑΝΤΗΣΕΙΣ ΣΤΙΣ ΑΣΚΗΣΕΙΣ ΑΥΤΟΑΞΙΟΛΟΓΗΣΗΣ ΚΕΦΑΛΑΙΟ 2 ΤΙ ΝΑ ΠΕΡΙΜΕΝΟΥΜΕ ΕΝΟΤΗΤΑ 2.1 Χρόνος εκτέλεσης και επιτάχυνση 2.1.1 Γραμμική και υπεργραμμική επιτάχυνση ΕΝΟΤΗΤΑ 2.2 Αποδοτικότητα και κόστος ΕΝΟΤΗΤΑ 2.3 Εξάρτηση από αρχιτεκτονική ΕΝΟΤΗΤΑ 2.4 Μικρός αριθμός επεξεργαστών - αύξηση κόκκου παραλληλίας ΕΝΟΤΗΤΑ 2.5 Όρια στην απόδοση - νομος Amdahl ΕΝΟΤΗΤΑ 2.6 Καταρρίπτοντας τα όρια στην απόδοση 2.6.1 Το επιχείρημα 2.6.2 Ο νόμος του Gustafson ΕΝΟΤΗΤΑ 2.7 Επιρπόσθετος χρόνος παραλληλισμού ΕΝΟΤΗΤΑ 2.8 Κλιμάκωση ΣΥΝΟΨΗ ΚΕΦΑΛΑΙΟΥ ΒΙΒΛΙΟΓΡΑΦΙΑ ΑΠΑΝΤΗΣΕΙΣ ΣΤΙΣ ΑΣΚΗΣΕΙΣ ΑΥΤΟΑΞΙΟΛΟΓΗΣΗΣ ΚΕΦΑΛΑΙΟ 3 ΠΑΡΑΛΛΗΛΙΣΜΟΣ ΔΕΔΟΜΕΝΩΝ ΕΝΟΤΗΤΑ 3.1 Βασικές δομές του μοντέλου ΕΝΟΤΗΤΑ 3.2 Σκεπτόμενοι συγχρονισμένα ΕΝΟΤΗΤΑ 3.3 Μικρές εφαρμογές 3.3.1 Υπολογισμός του 'π' 3.3.2 Πίνακες και ενεργοποιήσεις ΕΝΟΤΗΤΑ 3.4 Επικοινωνίες και διασυνδέσεις 3.4.1 Πίνακας επί διάνυσμα (ΙΙ) 3.4.2 Πίνακας επί πίνακα (ΙΙ) ΕΝΟΤΗΤΑ 3.5 Η γλώσσα MPL 3.5.1 Γενικά 3.5.2 Μεταβλητές 3.5.3 Πράξεις 3.5.4 Ενεργοί / ανενεργοί επεξεργαστές 3.5.5 Επικοινωνίες 3.5.6 Εντολές υποβίβασης και σάρωσης ΕΝΟΤΗΤΑ 3.6 C* και Data Parallel C 3.6.1 Μεταβλητές και σχήματα 3.6.2 Πράξεις και ενεργοποιήσεις 3.6.3 Επικοινωνίες 3.6.4 Εντολές υποβίβασης 3.6.5 DPCE ΕΝΟΤΗΤΑ 3.7 High Performance Fortran (HPF) 3.7.1 Fortran 90 3.7.2 Η HPF ΣΥΝΟΨΗ ΚΕΦΑΛΑΙΟΥ ΒΙΒΛΙΟΓΡΑΦΙΑ ΑΠΑΝΤΗΣΕΙΣ ΣΤΙΣ ΑΣΚΗΣΕΙΣ ΑΥΤΟΑΞΙΟΛΟΓΗΣΗΣ ΚΕΦΑΛΑΙΟ 4 ΚΟΙΝΟΣ ΧΩΡΟΣ ΔΙΕΥΘΥΝΣΕΩΝ ΕΝΟΤΗΤΑ 4.1 Βασικές δομές του μοντέλου ΕΝΟΤΗΤΑ 4.2 Μεταβλητές και διεργασίες ΕΝΟΤΗΤΑ 4.3 Αμοιβαίος αποκλεισμός 4.3.1 Κλειδαριές (locks / spin-locks) 4.3.2 Σηματοφόροι ΕΝΟΤΗΤΑ 4.4 Συγχρονισμός ΕΝΟΤΗΤΑ 4.5 Βασικές τεχνικές 4.5.1 Τμηματική δρομολόγηση και διάσπαση βρόχου 4.5.2 Πολλαπλοί βρόχοι 4.5.3 Διαχωρισμός σκακιέρας και γινόμενο πινάκων 4.5.4 Αυτοδρομολόγηση ΕΝΟΤΗΤΑ 4.6 Κοινή Μνήμη Στο Unix 4.6.1 Διεργασίες 4.6.2 Κοινές 'μεταβλητές' 4.6.3 Αμοιβαίος αποκλεισμός ΕΝΟΤΗΤΑ 4.7 Sequent-C 4.7.1 Μεταβλητές και διεργασίες 4.7.2 Αμοιβαίος αποκλεισμός και συγχρονισμός ΕΝΟΤΗΤΑ 4.8 Νήματα (threads) 4.8.1 Κοινές μεταβλητές και δημιουργία νημάτων 4.8.2 Αμοιβαίος αποκλεισμός και συγχρονισμός ΣΥΝΟΨΗ ΚΕΦΑΛΑΙΟΥ ΒΙΒΛΙΟΓΡΑΦΙΑ ΑΠΑΝΤΗΣΕΙΣ ΣΤΙΣ ΑΣΚΗΣΕΙΣ ΑΥΤΟΑΞΙΟΛΟΓΗΣΗΣ ΚΕΦΑΛΑΙΟ 5 ΜΕΤΑΒΙΒΑΣΗ ΜΗΝΥΜΑΤΩΝ ΕΝΟΤΗΤΑ 5.1 Βασικές δομές ΕΝΟΤΗΤΑ 5.2 Παραδείγματα εφαρμογών 5.2.1 Υπολογισμός του 'π' 5.2.2 Πίνακας επί διάνυσμα ΕΝΟΤΗΤΑ 5.3 Συλλογικές επικοινωνίες 5.3.1 Κλήσεις συλλογικών επικοινωνιών ΕΝΟΤΗΤΑ 5.4 Εμποδιστικές και μη επικοινωνίες ΕΝΟΤΗΤΑ 5.5 Γλώσσες εμπορικών πολυεπεξεργαστών 5.5.1 nCUBE-C και nCUBE-Fortran 5.5.2 IPSC/860 C ΕΝΟΤΗΤΑ 5.6 PVM 5.6.1 Διεργασίες 5.6.2 Μηνύματα 5.6.3 Συλλογικές επικοινωνίες ΕΝΟΤΗΤΑ 5.7 MPI 5.7.1 Διεργασίες 5.7.2 Μηνύματα 5.7.3 Συλλογικές επικοινωνίες ΣΥΝΟΨΗ ΚΕΦΑΛΑΙΟΥ ΒΙΒΛΙΟΓΡΑΦΙΑ ΑΠΑΝΤΗΣΕΙΣ ΣΤΙΣ ΑΣΚΗΣΕΙΣ ΑΥΤΟΑΞΙΟΛΟΓΗΣΗΣ ΓΛΩΣΣΑΡΙ