Κατανεμημένα Συστήματα Σημειώσεις εργαστηρίου Lab#5 - SISD, SIMD, Νόμος του Amdahl, Γράφος εξάρτησης Νεβράντζας Βάιος-Γερμανός Λάρισα, Φεβρουάριος 2013
Lab#5, σελίδα 1 Περίληψη Στο 2ο μέρος του εργαστηριακού μαθήματος θα ασχοληθούμε με θέματα των κατανεμημένων συστημάτων, θεωρητικά και πρακτικά. Τα μαθήματα θα περιλαμβάνουν κάποιες εισαγωγικές έννοιες, ασκήσεις εργαστηρίου και ασκήσεις homework. Αναλυτικά: Έννοιες μαθήματος Ασκήσεις εργαστηρίου Homework
Lab#5, σελίδα 2 Notes Έννοιες μαθήματος Στο συγκεκριμένο μέρος των σημιεώσεων θα αναλύουμε τις έννοιες που θα συναντήσουμε τόσο στις ασκήσεις εργαστηρίου όσο και στα homeworks. Επεξεργαστές SISD Στους επεξεργαστές Μιας εντολής-μίας ροής δεδομένων κάθε φορά εκτελείται μία εντολή σε ένα αντίστοιχο στοιχείο δεδομένων. Δεν υπάρχει κανένας παραλληλισμός καθώς οι εντολές εκτελούνται με σειριακό τρόπο. Ως παραδείγματα τέτοιων υπολογιστών μπορούμε να αναφέρουμε PC με έναν μονοπύρηνο επεξεργαστή ή τα παλαιότερα mainframes. Κώδικας που μπορεί να εκτελεστεί μόνο παράλληλα θα μπορούσε να είναι ο υπολογισμός του αθροίσματος μίας ακολουθίας όρων. Επεξεργαστές SIMD Στους επεξεργαστές Μιας εντολής-πολλαπλών δεδομένων κάθε φορά εκτελείται μια εντολή σε πολλά σετ διαφορετικών δεδομένων. Στην ουσία πρόκειται για πολλές μονάδες επεξεργασίας οι οποίες συντονίζονται από μία και μόνο μονάδα ελέγχου για να εκτελέσουν την ίδια εντολή σε διαφορετικά δεδομένα. Στη συγκεκριμένη αρχιτεκτονική έχουμε παραλληλισμό και χρησιμοποιούνται για την εξαιρετικά γρήγορη εκτέλεση πράξεων σε πίνακες ή διανύσματα (επεξεργασία εικόνας, ήχου και βίντεο).
Lab#5, σελίδα 3 Νόμος του Amdahl Ο νόμος του Amdahl χρησιμοποιείται για τον υπολογισμό του κέρδους στην απόδοση, όταν βελτιωθεί κάποιο τμήμα του υπολογιστή. Πιο συγκεκριμένα, η βελτίωση της απόδοσης που μπορούμε να επιτύχουμε χρησιμοποιώντας έναν πιο γρήγορο τρόπο εκτέλεσης, περιορίζεται από το κλάσμα του χρόνου που μπορεί να χρησιμοποιηθεί αυτός ο πιο γρήγορος τρόπος εκτέλεσης. Ο τύπος του νόμου είναι ο ακόλουθος: όπου s είναι το ποσοστό του σειριακού κομματιού του προγράμματος και Ν ο αριθμός των επεξεργαστών. Από το γράφημα παρατηρούμε ότι υπάρχει ένα άνω όριο στο ποσοστό του speedup (SpeedupMax) που μπορούμε να πετύχουμε αν προσθέσουμε πολλούς επεξεργαστές στο σύστημά μας, ακόμη και αν το κομμάτι του κώδικα που παραλληλίζεται είναι 95%.
Lab#5, σελίδα 4 Γράφος εξάρτησης Ο γράφος εξάρτησης (ή προήγησης) μας δείχνει σχηματικά ποιες πράξεις προηγούνται κάποιων άλλων πράξεων. Από έναν τέτοιο γράφο μπορούμε να συμπεράνουμε και να υπολογίσουμε το ποσοστό του μηπαραλληλίσιμου κώδικα (δηλαδή του s: σειριακού κομματιού) που χρησιμοποιεί ο νόμος του Amdahl. Ο γενικός τύπος είναι ο : Παράδειγμα Ας υποθέσουμε ότι έχουμε τις παρακάτω 2 εντολές: Ε1: c = a * b E2: d = a - 5 τότε ο γράφος θα είναι ο ακόλουθος: Παρατηρούμε ότι το μέγιστο μονοπάτι είναι 1, ενώ ο αριθμός των κόμβων είναι 2. Έτσι το ποσοστό του μη παραλληλίσιμου κώδικα θα είναι s = 1/2
Lab#5, σελίδα 5 άρα (σύμφωνα με τον νόμο του Amdahl) το μέγιστο speedup (Ν->οο) = 1/s = 1/(1/2) = 2, οπότε όσους επεξεργαστές και να προσθέσουμε η μέγιστη επιτάχυνση που θα πετύχουμε θα είναι Χ2 (διπλασιασμός της ταχύτητας). Ασκήσεις εργαστηρίου Οι ασκήσεις εργαστηρίου θα γίνονται την ώρα του μαθήματος. Οι φοιτητές θα πρέπει να τις λύνουν στον υπολογιστή τους (ή στο χαρτί) με τη σειρά, να τις αποθηκεύουν και να τις χρησιμοποιούν ως προεργασία για την επίλυση των Homeworks. #1 Δημιουργήστε και υπολογίστε τη επιτάχυνση (Speedup) και τη μέγιστη επιτάχυνση (SpeedupMax) που μπορούμε να πετύχουμε εάν έχουμε ένα 8-πύρηνο σύστημα το οποίο θα πρέπει να εκτελέσει τις παρακάτω εντολές: Ε1: b = 1 * 2 E2: c = 1 * 3 E3: d = b * c E4: e = d + 3 Ενδεικτική Λύση
Lab#5, σελίδα 6 Άρα, το είναι s = 3/4. Με βάση τους τύπους Speedup(N=8) = 1/((3/4)+(1/4)/8) = 1,28 και Speedup(max) = 1/s = 4/3 = 1,33. #2 Πρόγραμμα σε Python Να γίνει πρόγραμμα το οποίο θα αποδεικνύει με πραγματικά νούμερα τον Νόμο του Amdahl. Συγκεκριμένα, θα πρέπει να υπολογίζει την επιτάχυνση που μπορούμε να επιτύχουμε μειώνοντας το ποσοστό ενός απόλυτα σειριακού προγράμματος (s) από 100% σε 0% με διαδοχικά βήματα της τάξης που θα δίνει ο χρήστης (περιορίστε το διάστημα τιμών στο [0.005-0.5]. Το πλήθος των επεξεργαστών θα το δίνει επίσης ο χρήστης.
Lab#5, σελίδα 7
Lab#5, σελίδα 8 Homeworks Τα homeworks είναι υποχρεωτικά για όλους τους φοιτητές που παρακολουθούν το εργαστηριακό μάθημα και θα πρέπει να στέλνονται ηλεκτρονικά σε.zip μορφή μέσω της πλατφόρμας του E-Class. #1 Καταγρα ψτε το τυ πο του επεξεργαστη του προσωπικου υπολογιστη σας και μελετη στε: 1. Υποστηρίζει εντολε ς SIMD; 2. Ποια σετ εντολω ν SIMD υποστηρι ζει; 3. Αναφε ρετε ενδεικτικα 4 εντολε ς SIMD σε assembly μορφη. 4. Αναφε ρετε ενδεικτικα 3-4 προγρα μματα-εφαρμογε ς που χρησιμοποιου ν εντολε ς SIMD. #2 Αναζητήστε στο διαδίκτυο τον συλλογισμό του Νόμου του Amdahl και γράψτε σε ένα αρχείο.doc τα βήματα που έκανε για να φτάσει στον μαθηματικό τύπο που δίνει το άνω όριο της επιτάχυνσης (speedup). #3 Αλλάξτε το πρόγραμμα που γράψατε στο εργαστήριο έτσι ώστε: ο αριθμός των επεξεργαστών να παράγεται τυχαία στο διάστημα [1,60000] το βήμα να παράγεται τυχαία στο διάστημα [0.0,0.5] να γίνεται χρονομέτρηση της λειτουργίας του προγράμματος σε κάθε βήμα να υπολογίζεται και το Speedup(Max) Όλες οι πληροφορίες θα πρέπει να γράφονται σε ένα αρχείο με το όνομα Amdahl.txt. Δείτε ένα screenshot του συγκεκριμένου αρχείου:
Lab#5, σελίδα 9