Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

The University of Adelaide, School of Computer Science

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "The University of Adelaide, School of Computer Science"— Μεταγράφημα παρουσίασης:

1 The University of Adelaide, School of Computer Science
Εισαγωγή στον παράλληλο προγραμματισμό Peter Pacheco The University of Adelaide, School of Computer Science 24 September 2017 Κεφάλαιο 2 Παράλληλο υλικό και παράλληλο λογισμικό Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved. Chapter 2 — Instructions: Language of the Computer

2 The University of Adelaide, School of Computer Science
24 September 2017 Περίγραμμα κεφαλαίου Κάποιες βασικές γνώσεις Τροποποιήσεις στο μοντέλο von Neumann Παράλληλο υλικό Παράλληλο λογισμικό Είσοδος και έξοδος Επιδόσεις Σχεδίαση παράλληλων προγραμμάτων Γραφή και εκτέλεση παράλληλων προγραμμάτων Παραδοχές Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved. Chapter 2 — Instructions: Language of the Computer

3 ΚΑΠΟΙΕΣ ΒΑΣΙΚΕΣ ΓΝΩΣΕΙΣ
Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

4 Σειριακό υλικό και λογισμικό
προγράμματα είσοδος Ο υπολογιστής εκτελεί ένα πρόγραμμα τη φορά. έξοδος Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

5 Η αρχιτεκτονική von Neumann
# Chapter Subtitle Σχήμα 2.1 Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

6 Κύρια μνήμη Είναι ένα σύνολο θέσεων, κάθε μία από τις οποίες μπορεί να αποθηκεύει τόσο εντολές όσο και δεδομένα. Κάθε θέση αποτελείται από μια διεύθυνση, η οποία επιτρέπει την προσπέλαση της θέσης μνήμης, και από τα περιεχόμενά της. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

7 Κεντρική μονάδα επεξεργασίας (CPU)
Διαιρείται σε δύο μέρη. Μονάδα ελέγχου – υπεύθυνη να αποφασίζει ποιες εντολές του προγράμματος πρέπει να εκτελεστούν. (το αφεντικό) Αριθμητική και λογική μονάδα (ALU) – υπεύθυνη για την ουσιαστική εκτέλεση των εντολών. (ο εργάτης) πρόσθεσε 2+2 Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

8 Βασικοί όροι Καταχωρητής (register) – ταχύτατος αποθηκευτικός χώρος, τμήμα της CPU. Μετρητής προγράμματος (program counter) – αποθηκεύει τη διεύθυνση της επόμενης εντολής που θα εκτελεστεί. Δίαυλος (bus) – τα καλώδια και το υλικό που συνδέουν τη CPU και τη μνήμη. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

9 μνήμη προσκόμιση/ανάγνωση CPU
Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

10 μνήμη εγγραφή/αποθήκευση CPU
Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

11 Συμφόρηση von Neumann Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

12 Μια «διεργασία» του λειτουργικού συστήματος
Ένα στιγμιότυπο ενός προγράμματος υπολογιστή καθώς αυτό εκτελείται. Συστατικά διεργασίας: Το εκτελέσιμο πρόγραμμα σε γλώσσα μηχανής. Ένα μπλοκ μνήμης. Περιγραφείς των πόρων που το Λ.Σ. έχει δεσμεύσει για τη διεργασία. Πληροφορίες ασφαλείας. Πληροφορίες για την κατάσταση της διεργασίας. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

13 Πολυεργασία Δίνει την ψευδαίσθηση ότι ένα σύστημα με έναν μόνο επεξεργαστή εκτελεί πολλά προγράμματα ταυτόχρονα. Οι διεργασίες εκτελούνται εκ περιδρομής, η μία μετά την άλλη, για ένα σύντομο χρονικό διάστημα (χρονομερίδιο, time slice). Όταν περάσει το χρονικό διάστημα εκτέλεσής της, η διεργασία περιμένει μέχρι να έρθει ξανά η σειρά της (μπλοκάρεται). Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

14 Νημάτωση Τα νήματα περιέχονται εντός των διεργασιών.
Επιτρέπουν στους προγραμματιστές να διαιρούν τα προγράμματά τους σε σχετικά ανεξάρτητες εργασίες. Στόχος είναι, όσο ένα νήμα βρίσκεται σε αναμονή (μπλοκαρισμένο) για κάποιον πόρο, τα άλλα νήματα που έχουν εργασία να κάνουν να συνεχίζουν την εκτέλεσή τους. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

15 Μία διεργασία με δύο νήματα
το «κύριο» νήμα ο τερματισμός ενός νήματος ονομάζεται ένωση (join) η εκκίνηση ενός νήματος ονομάζεται διακλάδωση (fork) Σχήμα 2.2 Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

16 ΤΡΟΠΟΠΟΙΗΣΕΙΣ ΣΤΟ ΜΟΝΤΕΛΟ VON NEUMANN
Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

17 Βασικές αρχές κρυφής μνήμης
Συλλογή θέσεων μνήμης που επιτρέπουν την προσπέλασή τους σε μικρότερο χρόνο από τις άλλες θέσεις μνήμης. Μια κρυφή μνήμη CPU συνήθως βρίσκεται στο ίδιο ολοκληρωμένο κύκλωμα με τη CPU, ή σε ξεχωριστό τσιπ το οποίο όμως μπορεί να προσπελάζεται πολύ ταχύτερα από τη συνηθισμένη μνήμη. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

18 Η αρχή της τοπικότητας Η προσπέλαση μιας θέσης ακολουθείται από την προσπέλαση μιας γειτονικής θέσης. Χωρική (spatial) τοπικότητα – η προσπέλαση μιας γειτονικής θέσης. Χρονική (temporal) τοπικότητα – προσπέλαση στο εγγύς μέλλον. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

19 Η αρχή της τοπικότητας float z[1000]; … sum = 0.0;
for (i = 0; i < 1000; i++) sum += z[i]; Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

20 Επίπεδα κρυφής μνήμης L1 L2 L3 μικρότερη & ταχύτερη
μεγαλύτερη & βραδύτερη Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

21 Ευστοχία κρυφής μνήμης
προσκόμιση x L1 x sum L2 y z total L3 A[ ] radius r1 center Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

22 Αστοχία κρυφής μνήμης L1 L2 L3 προσκόμιση x x y sum r1 z total
κύρια μνήμη L1 y sum L2 r1 z total L3 A[ ] radius center Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

23 Προβλήματα κρυφής μνήμης
Όταν μια CPU γράφει δεδομένα στην κρυφή μνήμη, οι τιμές τους θα διαφέρουν από τις αντίστοιχες στην κύρια μνήμη. Οι κρυφές μνήμες ταυτόχρονης εγγραφής (write-through) ενημερώνουν τα δεδομένα στην κύρια μνήμη αμέσως μόλις τροποποιηθούν στην κρυφή μνήμη. Οι κρυφές μνήμες ετερόχρονης εγγραφής (write-back) επισημαίνουν τα δεδομένα στην κρυφή μνήμη ως βρώμικα (dirty). Όποτε μια γραμμή κρυφής μνήμης αντικαθίσταται από μια νέα γραμμή της κύριας μνήμης, η βρώμικη γραμμή γράφεται στη μνήμη. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

24 Αντιστοιχίσεις κρυφής μνήμης
Πλήρως συσχετιστική (full associative) – μια νέα γραμμή μπορεί να τοποθετηθεί σε οποιαδήποτε θέση στην κρυφή μνήμη. Άμεσης απεικόνισης (direct mapped cache) – σε κάθε γραμμή αντιστοιχεί μια μοναδική θέση κρυφής μνήμης στην οποία μπορεί να τοποθετηθεί. Συνολοσυσχετιστικές n-δρόμων (n-way set associative) – κάθε γραμμή κρυφής μνήμης μπορεί να τοποθετηθεί σε μία από n διαφορετικές θέσεις στην κρυφή μνήμη. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

25 Συνολοσυσχετιστική n-δρόμων
Όταν περισσότερες από μία γραμμές μνήμης μπορούν να αντιστοιχιστούν σε διάφορες θέσεις της κρυφής μνήμης, χρειαζόμαστε επίσης έναν τρόπο επιλογής της γραμμής που θα αντικατασταθεί ή θα εκτοπιστεί. x Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

26 The University of Adelaide, School of Computer Science
24 September 2017 Παράδειγμα Πίνακας 2.1: Αντιστοιχίσεις κύριας μνήμης 16 γραμμών σε κρυφή μνήμη 4 γραμμών. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved. Chapter 2 — Instructions: Language of the Computer

27 Κρυφές μνήμες και προγράμματα
Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

28 Εικονική μνήμη (1) Όταν εκτελούμε ένα πολύ μεγάλο πρόγραμμα ή ένα πρόγραμμα που προσπελάζει μεγάλα σύνολα δεδομένων, είναι πιθανό να μη χωρούν στην κύρια μνήμη όλες οι εντολές και τα δεδομένα. Η εικονική μνήμη (virtual memory) λειτουργεί ως κρυφή μνήμη για δευτερεύοντα αποθηκευτικά μέσα. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

29 Εικονική μνήμη (2) Εκμεταλλεύεται την αρχή της χωρικής και χρονικής τοπικότητας. Διατηρεί στην κύρια μνήμη μόνο τα ενεργά τμήματα των εκτελούμενων προγραμμάτων. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

30 Εικονική μνήμη (3) Χώρος εναλλαγή (swap space) – τα αδρανή τμήματα των προγραμμάτων διατηρούνται σε ένα τμήμα δευτερεύοντος αποθηκευτικού χώρου. Σελίδες – μπλοκ δεδομένων και εντολών. Οι σελίδες είναι σχετικά μεγάλες. Τα περισσότερα συστήματα έχουν σταθερό μέγεθος σελίδας, το οποίο στους σύγχρονους υπολογιστές κυμαίνεται μεταξύ 4 και 16 kilobyte. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

31 Εικονική μνήμη (4) πρόγραμμα A κύρια μνήμη πρόγραμμα B πρόγραμμα Γ
Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

32 Αριθμοί εικονικών σελίδων
Κατά τη μεταγλώττιση ενός προγράμματος, στις σελίδες του αντιστοιχίζονται αριθμοί εικονικών σελίδων. Όταν το πρόγραμμα εκτελείται, κατασκευάζεται ένας πίνακας που αντιστοιχίζει τους αριθμούς εικονικών σελίδων σε φυσικές διευθύνσεις. Αυτός ο πίνακας σελίδων (page table) χρησιμοποιείται για τη μετάφραση της εικονικής διεύθυνσης σε πραγματική. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

33 Πίνακας σελίδων Πίνακας 2.2: Εικονική διεύθυνση χωρισμένη σε αριθμό εικονικής σελίδας και σχετική θέση byte (byte offset) Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

34 Κρυφή μνήμη αναζήτησης μετάφρασης (TLB)
Η χρήση πίνακα σελίδων μπορεί να αυξήσει σημαντικά τον συνολικό χρόνο εκτέλεσης κάθε προγράμματος. Για την αντιμετώπιση αυτού του προβλήματος, οι επεξεργαστές διαθέτουν μια ειδική κρυφή μνήμη μετάφρασης που ονομάζεται κρυφή μνήμη αναζήτησης μετάφρασης (translation-lookaside buffer) ή TLB. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

35 Κρυφή μνήμη αναζήτησης μετάφρασης (2)
Διατηρεί έναν μικρό αριθμό καταχωρίσεων (συνήθως 16 ως 512) από τον πίνακα σελίδων σε πολύ γρήγορη μνήμη. Σφάλμα σελίδας (page fault) – όταν επιχειρούμε να προσπελάσουμε μια έγκυρη σελίδα και η σελίδα αυτή είναι αποθηκευμένη μόνο στον δίσκο. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

36 Παραλληλία επιπέδου εντολής (ILP)
Επιχειρεί να βελτιώσει τις επιδόσεις του επεξεργαστή βάζοντας πολλά συστατικά μέρη ή λειτουργικές μονάδες (functional units) του επεξεργαστή να εκτελούν ταυτόχρονα εντολές. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

37 Παραλληλία επιπέδου εντολής (2)
Διοχέτευση (pipelining) – οι λειτουργικές μονάδες είναι διευθετημένες κατά στάδια. Πολλαπλή εκκίνηση (multiple issue) – μπορούν να ξεκινούν ταυτόχρονα περισσότερες από μία εντολές. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

38 Διοχέτευση Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

39 Παράδειγμα διοχέτευσης (1)
Πρόσθεση των αριθμών κινητής υποδιαστολής 9,87×104 και 6,54×103 Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

40 Παράδειγμα διοχέτευσης (2)
Θεωρούμε ότι κάθε πράξη ολοκληρώνεται σε ένα νανοδευτερόλεπτο (10-9 δευτερόλεπτα). Ο βρόχος for θα διαρκεί περίπου 7000 νανοδευτερόλεπτα. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

41 Διοχέτευση (3) Χωρίζουμε τον αθροιστή αριθμών κινητής υποδιαστολής σε επτά διαφορετικά στοιχεία υλικού ή λειτουργικές μονάδες. Η πρώτη μονάδα θα προσκομίζει δύο τελεστέους, η δεύτερη θα συγκρίνει τους εκθέτες τους, κ.ο.κ. Η έξοδος της μίας λειτουργικής μονάδας θα είναι η είσοδος της επόμενης. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

42 Διοχέτευση (4) Πίνακας 2.3: Πρόσθεση με διοχέτευση. Οι αριθμοί στον πίνακα είναι αριθμοδείκτες τελεστέων-αποτελεσμάτων. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

43 Διοχέτευση (5) Μια πρόσθεση κινητής υποδιαστολής διαρκεί και πάλι 7 νανοδευτερόλεπτα. Όμως, οι 1000 προσθέσεις διαρκούν τώρα νανοδευτερόλεπτα! Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

44 Πολλαπλή εκκίνηση (1) for (i = 0; i < 1000; i++)
Οι επεξεργαστές πολλαπλής εκκίνησης διαθέτουν αντίγραφα των επιμέρους λειτουργικών μονάδων και προσπαθούν να εκτελούν ταυτόχρονα διαφορετικές εντολές του προγράμματος. for (i = 0; i < 1000; i++) z[i] = x[i] + y[i]; αθροιστής #1 z[3] z[4] αθροιστής #2 z[1] z[2] Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

45 υπερβαθμωτός επεξεργαστής
Πολλαπλή εκκίνηση (2) στατική πολλαπλή εκκίνηση – ο χρονοπρογραμματισμός των λειτουργικών μονάδων γίνεται κατά τον χρόνο μεταγλώττισης. δυναμική πολλαπλή εκκίνηση – o χρονοπρογραμματισμός των λειτουργικών μονάδων γίνεται κατά την εκτέλεση. υπερβαθμωτός επεξεργαστής Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

46 Εικασία (1) Για να επωφεληθεί από την πολλαπλή εκκίνηση, το σύστημα πρέπει να εντοπίζει τις εντολές που μπορούν να εκτελούνται ταυτόχρονα. Κατά την εικασία (speculation), ο μεταγλωττιστής ή ο επεξεργαστής κάνει μια πρόβλεψη σχετικά με μια εντολή και προχωρεί στην εκτέλεσή της με βάση αυτή την πρόβλεψη. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

47 Εικασία (2) z = x + y ; i f ( z > 0) w = x ; e l s e w = y ;
θετικό Αν η εικασία του συστήματος είναι λανθασμένη, θα πρέπει να επανέλθει και να εκτελέσει την εντολή w = y. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

48 Πολυνημάτωση υλικού (1)
Δεν υπάρχουν πάντα καλές ευκαιρίες για την ταυτόχρονη εκτέλεση διαφορετικών νημάτων. Η πολυνημάτωση υλικού (hardware multithreading) παρέχει στα συστήματα έναν τρόπο να συνεχίζουν να παράγουν χρήσιμο έργο ακόμα και όταν η εκτελούμενη εργασία είναι σε καθυστέρηση (stall). Π.χ. όταν η τρέχουσα εργασία περιμένει τη φόρτωση δεδομένων από τη μνήμη. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

49 Πολυνημάτωση υλικού (2)
Λεπτή πολυνημάτωση – ο επεξεργαστής εναλλάσσεται μεταξύ νημάτων μετά από κάθε εντολή, προσπερνώντας όσα νήματα καθυστερούν. Πλεονεκτήματα: μειώνει τη σπατάλη χρόνου μηχανής εξαιτίας καθυστερήσεων στα νήματα. Μειονεκτήματα: ένα νήμα έτοιμο να εκτελέσει μια μεγάλη ακολουθία εντολών ίσως χρειαστεί να περιμένει για την εκτέλεση κάθε μιας από αυτές τις εντολές. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

50 Πολυνημάτωση υλικού (3)
Χονδρή πολυνημάτωση – επιτρέπει μόνο την αντικατάσταση νημάτων που περιμένουν την ολοκλήρωση κάποιας χρονοβόρας λειτουργίας. Πλεονεκτήματα: η εναλλαγή νημάτων δεν χρειάζεται να είναι ακαριαία. Μειονεκτήματα: ο επεξεργαστής μπορεί να μείνει σε αδράνεια εξαιτίας συντομότερων καθυστερήσεων, ενώ και η εναλλαγή νημάτων προκαλεί και αυτή καθυστερήσεις. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

51 Πολυνημάτωση υλικού (3)
Ταυτόχρονη πολυνημάτωση (simultaneous multithreading, SMT) – μια παραλλαγή της λεπτής πολυνημάτωσης. Επιτρέπει σε πολλά νήματα να χρησιμοποιούν τις πολλαπλές λειτουργικές μονάδες του επεξεργαστή. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

52 Οι προγραμματιστές μπορούν να γράφουν κώδικα που να επωφελείται από το …
ΠΑΡΑΛΛΗΛΟ ΥΛΙΚΟ Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

53 Ταξινόμηση Flynn SISD Ενός ρεύματος εντολών- ενός ρεύματος δεδομένων (Single instruction stream Single data stream) (SIMD) Ενός ρεύματος εντολών- πολλών ρευμάτων δεδομένων (Single instruction stream Multiple data stream) MISD Πολλών ρευμάτων εντολών- ενός ρεύματος δεδομένων (Multiple instruction stream Single data stream) (MIMD) Πολλών ρευμάτων εντολών- πολλών ρευμάτων δεδομένων (Multiple instruction stream Multiple data stream) κλασικά von Neumann δεν καλύπτονται Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

54 SIMD Η παραλληλία επιτυγχάνεται με την κατανομή των δεδομένων μεταξύ των επεξεργαστών. Η ίδια εντολή εκτελείται σε πολλά στοιχεία δεδομένων. Ονομάζεται παραλληλία δεδομένων (data parallelism). Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

55 Παράδειγμα SIMD … for (i = 0; i < n; i++) x[i] += y[i]; x[1] x[2]
n μονάδες ALU μονάδα ελέγχου x[1] x[2] x[n] ALU1 ALU2 ALUn for (i = 0; i < n; i++) x[i] += y[i]; Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

56 The University of Adelaide, School of Computer Science
24 September 2017 SIMD Κι αν δεν έχουμε τόσες ALU όσα είναι και τα στοιχεία δεδομένων; Μοιράζουμε το υπολογιστικό φορτίο και το επεξεργαζόμαστε επαναληπτικά. Π.χ. m = 4 ALU και n = 15 στοιχεία δεδ/ν. Round3 ALU1 ALU2 ALU3 ALU4 1 X[0] X[1] X[2] X[3] 2 X[4] X[5] X[6] X[7] 3 X[8] X[9] X[10] X[11] 4 X[12] X[13] X[14] Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved. Chapter 2 — Instructions: Language of the Computer

57 Μειονεκτήματα SIMD Όλες οι ALU εκτελούν την ίδια εντολή, διαφορετικά παραμένουν αδρανείς. Στα κλασικά συστήματα, πρέπει επίσης να λειτουργούν συγχρονισμένα. Οι ALU δεν διαθέτουν αποθηκευτικό χώρο για τις εντολές. Αποδοτική για παράλληλα προβλήματα μεγάλου όγκου δεδομένων, όχι όμως για άλλα, πιο περίπλοκα προβλήματα. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

58 Διανυσματικοί επεξεργαστές (1)
Χειρίζονται συστοιχίες ή διανύσματα δεδομένων, ενώ οι συμβατικές CPU χειρίζονται μεμονωμένα στοιχεία δεδομένων ή βαθμωτούς (scalars). Διανυσματικοί καταχωρητές. Είναι ικανοί να αποθηκεύουν διανύσματα τελεστέων και να επενεργούν ταυτόχρονα στα περιεχόμενά τους. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

59 Διανυσματικοί επεξεργαστές (2)
Διανυσματικές λειτουργικές μονάδες με υποστήριξη διοχέτευσης. Η ίδια πράξη εφαρμόζεται σε κάθε στοιχείο του διανύσματος (ή σε κάθε ζεύγος στοιχείων). Διανυσματικές εντολές. Εφαρμόζονται σε διανύσματα αντί για βαθμωτούς. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

60 Διανυσματικοί επεξεργαστές (3)
Πλεκτή ή πεπλεγμένη μνήμη. Πολλές «σειρές» μνήμης, οι οποίες μπορούν να προσπελάζονται λίγο-πολύ ανεξάρτητα. Τα στοιχεία ενός διανύσματος πρέπει να κατανέμονται σε πολλές σειρές μνήμης, ώστε να ελαττώνονται ή να μηδενίζονται οι καθυστερήσεις στη φόρτωση/αποθήκευση διαδοχικών στοιχείων. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

61 Διανυσματικοί επεξεργαστές (4)
Βηματική προσπέλαση μνήμης και διασπορά/συγκέντρωση σε επίπεδο υλικού. Το πρόγραμμα προσπελάζει τα στοιχεία ενός διανύσματος που απέχουν μεταξύ τους κατά ένα συγκεκριμένο διάστημα (βήμα). Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

62 Πλεονεκτήματα διανυσματικών επεξεργαστών
Γρήγοροι. Εύχρηστοι. Υψηλό εύρος ζώνης στην επικοινωνία τους με τη μνήμη. Χρησιμοποιούν όλα τα στοιχεία δεδομένων σε μια γραμμή κρυφής μνήμης. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

63 Πλεονεκτήματα διανυσματικών επεξεργαστών (2)
Οι μεταγλωττιστές διανυσματοποίησης είναι καλοί στην αναγνώριση κώδικα κατάλληλου για διανυσματοποίηση. Οι μεταγλωττιστές παρέχουν επίσης πληροφορίες για τον κώδικα που δεν μπορεί να διανυσματοποιηθεί. Βοηθούν τον προγραμματιστή να επανεκτιμήσει τον κώδικά του. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

64 Μειονεκτήματα διανυσματικών επεξεργαστών
Δεν χειρίζονται τις ακανόνιστες δομές δεδομένων τόσο καλά όσο άλλες παράλληλες αρχιτεκτονικές. Υπάρχει ένα πεπερασμένο όριο στην επεκτασιμότητά τους, δηλαδή, την ικανότητά τους να χειρίζονται προβλήματα ολοένα και μεγαλύτερου μεγέθους. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

65 Μονάδες επεξεργασίας γραφικών (GPU)
Οι διασυνδέσεις προγραμματισμού εφαρμογών (API) για γραφικά πραγματικού χρόνου αναπαριστούν την επιφάνεια ενός αντικειμένου χρησιμοποιώντας σημεία, γραμμές και τρίγωνα. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

66 GPU Αυτή η εσωτερική αναπαράσταση μετατρέπεται σε συστοιχίες πίξελ, κατάλληλες για την οθόνη του υπολογιστή, μέσω μιας διοχέτευσης επεξεργασίας γραφικών (graphics processing pipeline). Πολλά από τα στάδια αυτής της διοχέτευσης (οι συναρτήσεις σκίασης) είναι προγραμματιζόμενα. Συνήθως αποτελούνται από λίγες μόνο γραμμές κώδικα C. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

67 GPU Οι συναρτήσεις σκίασης είναι επίσης ουσιαστικά παράλληλες, αφού μπορούν να εφαρμόζονται σε πολλά στοιχεία του ρεύματος γραφικών. Οι GPU μπορούν να βελτιστοποιούν τις επιδόσεις μέσω παραλληλίας SIMD. Οι σύγχρονες GPU χρησιμοποιούν πράγματι παραλληλία SIMD. Ωστόσο, οι GPU δεν είναι συστήματα αμιγώς SIMD. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

68 MIMD Υποστηρίζουν πολλά ταυτόχρονα ρεύματα εντολών που επενεργούν σε πολλά ρεύματα δεδομένων. Συνήθως αποτελούνται από ένα σύνολο πλήρως ανεξάρτητων μονάδων επεξεργασίας ή πυρήνων, καθένας από τους οποίους διαθέτει τη δική του μονάδα ελέγχου και τη δική του ALU. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

69 Σύστημα κοινόχρηστης μνήμης (1)
Ένα σύνολο αυτόνομων επεξεργαστών είναι συνδεδεμένο στο κοινό σύστημα μνήμης μέσω ενός δικτύου διασύνδεσης. Κάθε επεξεργαστής μπορεί να προσπελάζει οποιαδήποτε θέση μνήμης. Οι επεξεργαστές συνήθως επικοινωνούν έμμεσα μεταξύ τους προσπελάζοντας κοινόχρηστες δομές δεδομένων. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

70 Σύστημα κοινόχρηστης μνήμης (2)
Τα πιο ευρέως διαθέσιμα συστήματα κοινόχρηστης μνήμης χρησιμοποιούν έναν ή περισσότερους πολυπύρηνους επεξεργαστές. (πολλές CPU ή πυρήνες στο ίδιο τσιπ) Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

71 Σύστημα κοινόχρηστης μνήμης
Σχήμα 2.3 Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

72 Πολυπύρηνο σύστημα UMA
Ο χρόνος για την προσπέλαση όλων των θέσεων μνήμης είναι ο ίδιος για όλους τους πυρήνες. Σχήμα 2.5 Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

73 Πολυπύρηνο σύστημα NUMA
Μια θέση μνήμης άμεσα συνδεδεμένη με έναν πυρήνα προσπελάζεται ταχύτερα από μια θέση μνήμης στην οποία η πρόσβαση γίνεται μέσω διαφορετικού τσιπ. Σχήμα 2.6 Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

74 Σύστημα κατανεμημένης μνήμης
Συστοιχίες υπολογιστών (τα δημοφιλέστερα συστήματα) Σύνολο τυπικών συστημάτων. Συνδέονται μεταξύ τους μέσω ενός τυπικού δικτύου διασύνδεσης. Κόμβοι συστοιχίας: μεμονωμένες υπολογιστικές μονάδες που συνδέονται μεταξύ τους μέσω ενός δικτύου επικοινωνίας. Αποκαλούνται και υβριδικά συστήματα Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

75 Σύστημα κατανεμημένης μνήμης
Σχήμα 2.4 Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

76 Δίκτυα διασύνδεσης Επηρεάζουν σημαντικά τις επιδόσεις τόσο των συστημάτων κατανεμημένης μνήμης όσο και των συστημάτων κοινόχρηστης μνήμης. Δύο κατηγορίες: Διασυνδέσεις κοινόχρηστης μνήμης Διασυνδέσεις κατανεμημένης μνήμης Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

77 Διασυνδέσεις κοινόχρηστης μνήμης
Δίαυλος (bus) Ένα σύνολο παράλληλων αγωγών επικοινωνίας συνδυασμένο με κάποιο υλικό για τον έλεγχο της πρόσβασης στον δίαυλο. Οι αγωγοί επικοινωνίας χρησιμοποιούνται από κοινού από όλες τις συσκευές που είναι συνδεδεμένες στον δίαυλο. Όσο αυξάνεται το πλήθος των συνδεδεμένων συσκευών μεγαλώνει η πιθανότητα ανταγωνισμών για τη χρήση του διαύλου, ενώ η απόδοσή του μειώνεται. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

78 Διασυνδέσεις κοινόχρηστης μνήμης
Διασυνδέσεις μεταγωγής (switched) Χρησιμοποιούν διακόπτες (μεταγωγείς) για να ελέγχουν τη δρομολόγηση των δεδομένων μεταξύ των συνδεδεμένων συσκευών. Διαπλεγματικός μεταγωγέας (crossbar) Επιτρέπει την ταυτόχρονη επικοινωνία μεταξύ διαφορετικών συσκευών. Ταχύτεροι από τους διαύλους. Όμως, το κόστος των μεταγωγέων και των συνδέσεων είναι σχετικά υψηλό. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

79 (β) Διευθέτηση των εσωτερικών διακοπτών ενός διαπλεγματικού μεταγωγέα
Σχήμα 2.7 (α) Διαπλεγματικός μεταγωγέας που συνδέει τέσσερις επεξεργαστές (Pi) και τέσσερα πακέτα μνήμης (Mj) (β) Διευθέτηση των εσωτερικών διακοπτών ενός διαπλεγματικού μεταγωγέα (γ) Ταυτόχρονες προσπελάσεις μνήμης από τους επεξεργαστές Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

80 Διασυνδέσεις κατανεμημένης μνήμης
Δύο ομάδες Άμεση διασύνδεση Κάθε μεταγωγέας είναι συνδεδεμένος με ένα ζεύγος επεξεργαστή-μνήμης και οι μεταγωγείς συνδέονται μεταξύ τους. Έμμεση διασύνδεση Οι μεταγωγείς μπορεί να μη συνδέονται άμεσα με κάποιον επεξεργαστή. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

81 Άμεση διασύνδεση Σχήμα 2.8 δακτύλιος τοροειδές πλέγμα
Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

82 Εύρος διχοτόμησης Ένα μέτρο του «πλήθους των ταυτόχρονα ενεργών γραμμών επικοινωνίας» ή της «συνδετικότητας». Πόσες ταυτόχρονες γραμμές επικοινωνίας μπορεί να είναι ενεργές και να «διασχίζουν το χάσμα» ανάμεσα στα δύο μισά; Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

83 Δύο διχοτομήσεις ενός δακτυλίου
Σχήμα 2.9 Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

84 Διχοτόμηση τοροειδούς πλέγματος
Σχήμα 2.10 Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

85 Ορισμοί Εύρος ζώνης Εύρος ζώνης διχοτόμησης
Ο ρυθμός με τον οποίο μπορεί να μεταδίδει δεδομένα μια σύνδεση. Συνήθως δίνεται σε megabit ή megabyte ανά δευτερόλεπτο. Εύρος ζώνης διχοτόμησης Μέτρο της ποιότητας ενός δικτύου. Αντί για το πλήθος των συνδέσμων που ενώνουν τα δύο μισά, εκφράζει το συνολικό εύρος ζώνης των συνδέσμων. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

86 Πλήρως συνδεδεμένο δίκτυο
Κάθε μεταγωγέας είναι άμεσα συνδεδεμένος με κάθε έναν από τους υπόλοιπους μεταγωγείς. μη πρακτικό εύρος διχοτόμησης = p2/4 Σχήμα 2.11 Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

87 Υπερκύβος Άμεση διασύνδεση υψηλής συνδετικότητας.
Κατασκευάζονται με επαγωγικό τρόπο: Ένας μονοδιάστατος υπερκύβος είναι ένα πλήρως συνδεδεμένο σύστημα με δύο επεξεργαστές. Ένας διδιάστατος υπερκύβος κατασκευάζεται από δύο μονοδιάστατους με την ένωση των «αντίστοιχων» μεταγωγέων τους. Παρόμοια, ένας τριδιάστατος υπερκύβος κατασκευάζεται από δύο διδιάστατους. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

88 Υπερκύβοι μονοδιάστατος διδιάστατος τριδιάστατος Σχήμα 2.12
Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

89 Έμμεσης διασυνδέσεις Απλά παραδείγματα έμμεσων δικτύων:
Μεταγωγής Δίκτυο ωμέγα Συχνά αναπαρίστανται με μονόδρομες συνδέσεις και μια συλλογή επεξεργαστών, καθένας από τους οποίους έχει μια εξερχόμενη και μια εισερχόμενη σύνδεση με ένα δίκτυο μεταγωγής. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

90 Ένα γενικό έμμεσο δίκτυο
Σχήμα 2.13 Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

91 Δίκτυο διαπλεγματικής μεταγωγής για συστήματα κατ/νης μνήμης
Σχήμα 2.14 Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

92 Δίκτυο ωμέγα Σχήμα 2.15 Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

93 Μεταγωγέας δικτύου ωμέγα
Σχήμα 2.16 Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

94 Περισσότεροι ορισμοί Όποτε μεταδίδονται δεδομένα, μας ενδιαφέρει ο χρόνος που απαιτείται μέχρι να φτάσουν στον προορισμό τους. Λανθάνων χρόνος (latency) Ο χρόνος από τη στιγμή που η πηγή αρχίζει να μεταδίδει τα δεδομένα μέχρι τη στιγμή που ο προορισμός λαμβάνει το πρώτο byte. Εύρος ζώνης (bandwidth) Ο ρυθμός με τον οποίο ο προορισμός λαμβάνει δεδομένα μετά τη λήψη του πρώτου byte. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

95 Χρόνος μετάδοσης μηνύματος = l + n / b
λανθάνων χρόνος (δευτερόλεπτα) μήκος μηνύματος (byte) εύρος ζώνης (byte ανά δευτερόλεπτο) Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

96 The University of Adelaide, School of Computer Science
24 September 2017 Συνοχή κρυφής μνήμης Οι προγραμματιστές δεν έχουν άμεσο έλεγχο στον χρόνο ενημέρωσης των κρυφών μνημών Σχήμα 2.17 Σύστημα κοινόχρηστης μνήμης με δύο πυρήνες και δύο κρυφές μνήμες Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved. Chapter 2 — Instructions: Language of the Computer

97 Συνοχή κρυφής μνήμης Η y0 είναι ιδιωτική μεταβλητή και ανήκει στον Πυρήνα 0 Οι y1 και z1 είναι ιδιωτικές μεταβλητές του Πυρήνα 1 x = 2; /* κοινόχρηστη μεταβλητή */ η y0 παίρνει τελικά την τιμή = 2 η y1 παίρνει τελικά την τιμή = 6 z1 = ;;; Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

98 Συνοχή μέσω κατασκοπείας
Οι επεξεργαστές μοιράζονται έναν δίαυλο. Οποιοδήποτε σήμα μεταδίδεται στον δίαυλο είναι «ορατό» από όλους τους πυρήνες που είναι συνδεδεμένοι στον δίαυλο. Όταν ο πυρήνας 0 ενημερώνει το αντίγραφο της x στην κρυφή μνήμη του, εκπέμπει αυτή την πληροφορία μέσω του διαύλου. Αν ο πυρήνας 1 «κατασκοπεύει» τον δίαυλο, θα δει ότι η x άλλαξε και θα μπορεί να επισημάνει το δικό του αντίγραφο της x ως άκυρο. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

99 Συνοχή μέσω καταλόγου Μια δομή δεδομένων που ονομάζεται κατάλογος (directory) διατηρεί πληροφορίες για την κατάσταση κάθε γραμμής κρυφής μνήμης. Όταν ενημερώνεται μια μεταβλητή, ελέγχεται ο κατάλογος, και ακυρώνονται οι ελεγκτές κρυφής μνήμης των πυρήνων που έχουν τη γραμμή με τη συγκεκριμένη μεταβλητή στις κρυφές μνήμες τους. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

100 ΠΑΡΑΛΛΗΛΟ ΛΟΓΙΣΜΙΚΟ Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

101 Το βάρος είναι τώρα στην πλευρά του λογισμικού
The University of Adelaide, School of Computer Science Το βάρος είναι τώρα στην πλευρά του λογισμικού 24 September 2017 Το υλικό και οι μεταγλωττιστές είναι σε θέση να ανταπεξέλθουν. Από αυτό το σημείο κι έπειτα… Στα προγράμματα κοινόχρηστης μνήμης: Ξεκινάμε μία διεργασία από την οποία διακλαδίζονται πολλά νήματα (threads). Τα νήματα διεκπεραιώνουν τις εργασίες. Στα προγράμματα κατανεμημένης μνήμης: Ξεκινάμε πολλές διεργασίες. Οι διεργασίες διεκπεραιώνουν τις εργασίες. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved. Chapter 2 — Instructions: Language of the Computer

102 SPMD – ένα πρόγραμμα πολλά δεδομένα
if (Είμαι το νήμα/διεργασία i) κάνε αυτό; else κάνε το άλλο; Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

103 Γραφή παράλληλων προγραμμάτων
Μοιράζουμε το φορτίο εργασίας στις διεργασίες/νήματα έτσι ώστε (α) κάθε διεργασία/νήμα να έχει το ίδιο περίπου φορτίο, και (β) να ελαχιστοποιείται η απαιτούμενη επικοινωνία. Φροντίζουμε για τον συγχρονισμό διεργασιών/νημάτων. Φροντίζουμε για την επικοινωνία μεταξύ διεργασιών/νημάτων. double x[n], y[n]; for (i = 0; i < n; i++) x[i] += y[i]; Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

104 Κοινόχρηστη μνήμη Δυναμικά νήματα Στατικά νήματα
Το κύριο νήμα αναμένει για αιτήματα εργασίας και ξεκινάει (διακλαδίζει) νέα νήματα τα οποία, αφού τελειώσουν την εργασία, τερματίζονται. Αποδοτική χρήση πόρων, όμως η δημιουργία και ο τερματισμός νημάτων παίρνει χρόνο. Στατικά νήματα Δημιουργούνται πολλά νήματα στα οποία κατανέμεται η εργασία, τα οποία δεν τερματίζονται μέχρι το τέλος του προγράμματος. Καλύτερη απόδοση, με αντίτιμο μια κάποια πιθανή σπατάλη πόρων. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

105 Μη ντετερμινισμός . . . printf ( "Thread %d > my_val = %d\n" , my_rank , my_x ) ; Thread 0 > my_val = 7 Thread 1 > my_val = 19 Thread 1 > my_val = 19 Thread 0 > my_val = 7 Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

106 Μη ντετερμινισμός my_val = Compute_val ( my_rank ) ; x += my_val ;
Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

107 Μη ντετερμινισμός Συνθήκη ανταγωνισμού Κρίσιμο τμήμα
Αμοιβαία αποκλειστική πρόσβαση Κλείδωμα αμοιβαίου αποκλεισμού (mutex, ή απλώς κλείδωμα) my_val = Compute_val( my_rank ) ; Lock(&add_my_val_lock ) ; x += my_val ; Unlock(&add_my_val_lock ) ; Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

108 αναμονή σε εγρήγορση my_val = Compute_val(my_rank); if (my_rank == 1)
while (!ok_for_1); /* Βρόχος αναμονής σε εγρήγορση */ x += my_val; /* Κρίσιμο τμήμα */ if (my_rank == 0) ok_for_1 = true; /* Να επιτραπεί στο νήμα 1 */ /* να ενημερώσει την x */ Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

109 μεταβίβαση μηνυμάτων char message[100]; . . . my_rank = Get_rank();
if (my_rank == 1) { sprintf(message, "Χαιρετισμούς από τη διεργασία 1"); Send(message, MSG_CHAR, 100, 0); } else if (my_rank == 0) { Receive(message, MSG_CHAR, 100, 1); printf("Διεργασία 0 > Λήψη: %s\n", message); } Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

110 PGAS – Γλώσσες διαμερισμένου καθολικού χώρου διευθύνσεων
shared int n = ; shared double x[n], y[n]; private int i, my_first_element, my_last_element; my_first_element = ; my_last_element = ; /* Ανάθεση αρχικών τιμών στις x και y */ . . . for (i = my_first_element; i <= my_last_element; i++) x[i] += y[i]; Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

111 Είσοδος και έξοδος Στα προγράμματα κατανεμημένης μνήμης, μόνο η διεργασία 0 θα προσπελάζει το stdin. Στα πρόγραμμα κοινόχρηστης μνήμης μόνο το κύριο νήμα ή το νήμα 0 θα προσπελάζει το stdin. Τόσο στα προγράμματα κατανεμημένης μνήμης όσο και στα κοινόχρηστης μνήμης, όλες οι διεργασίες/νήματα μπορούν να προσπελάζουν τα stdout και stderr. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

112 Είσοδος και έξοδος Λόγω της μη ντετερμινιστικής διάταξης των δεδομένων εξόδου στο stdout, συνήθως θα χρησιμοποιείται μόνο μία διεργασία ή νήμα για όλες τις λειτουργίες εξόδου στο stdout, με εξαίρεση την έξοδο πληροφοριών αποσφαλμάτωσης. Τα δεδομένα εξόδου αποσφαλμάτωσης θα πρέπει πάντα να περιλαμβάνουν το αναγνωριστικό ή τον αριθμό κατάταξης της διεργασίας/νήματος που τα παρήγαγε. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

113 Είσοδος και έξοδος Μόνο μία μεμονωμένη διεργασία/νήμα θα επιχειρεί να προσπελάσει οποιοδήποτε μεμονωμένο αρχείο εκτός των stdin, stdout, ή stderr. Για παράδειγμα, κάθε διεργασία/νήμα θα μπορεί να ανοίξει το δικό της ιδιωτικό αρχείο για ανάγνωση ή εγγραφή, αλλά ποτέ δύο διεργασίες ή νήματα δεν θα ανοίγουν το ίδιο αρχείο. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

114 ΕΠΙΔΟΣΕΙΣ Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

115 Tπαράλληλο = Tσειριακό / p
Επιτάχυνση p: το πλήθος των πυρήνων Tσειριακό : ο χρόνος εκτέλεσης του σειριακού προγράμματος Tπαράλληλο : ο χρόνος εκτέλεσης του παράλληλου προγράμματος γραμμική επιτάχυνση Tπαράλληλο = Tσειριακό / p Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

116 Επιτάχυνση παράλληλου προγράμματος
Tσειριακό Tπαράλληλο S = Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

117 Αποδοτικότητα παράλληλου προγράμματος
Tσειριακό Tπαράλληλο S Tσειριακό p Tπαράλληλο . E = = = p p Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

118 Επιτάχυνση και αποδοτικότητα παράλληλου προγράμματος
Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

119 Επιτάχυνση & αποδοτικότητα παράλληλου προγράμματος σε προβλήματα διαφορετικού μεγέθους
Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

120 Επιτάχυνση Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

121 Αποδοτικότητα Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

122 Tπαράλληλο = Tσειριακό / p + Tεπιβάρυνση
Επίδραση επιβάρυνσης Tπαράλληλο = Tσειριακό / p + Tεπιβάρυνση Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

123 Νόμος του Amdahl Αν ένα σειριακό πρόγραμμα δεν παραλληλοποιηθεί σε όλη ουσιαστικά την έκτασή του, η επιτάχυνσή του θα είναι πολύ περιορισμένη –ανεξάρτητα από τους διαθέσιμους πυρήνες. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

124 Παράδειγμα 0,9 x Tσειριακό / p = 18 / p
Έστω ότι παραλληλοποιούμε το 90% ενός σειριακού προγράμματος. Έστω επίσης ότι η παραλληλοποίηση είναι «τέλεια»: η επιτάχυνση αυτού του τμήματος θα είναι ίση με το πλήθος p των πυρήνων. Tσειριακό = 20 δευτερόλεπτα Ο χρόνος εκτέλεσης του παραλληλοποιημένου τμήματος θα είναι 0,9 x Tσειριακό / p = 18 / p Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

125 Παράδειγμα (συνέχεια)
Ο χρόνος εκτέλεσης του «μη παραλληλοποιημένου» τμήματος θα είναι Ο συνολικός χρόνος εκτέλεσης θα είναι 0,1 x Tσειριακό = 2 Tπαράλληλο = 0,9 x Tσειριακό / p + 0,1 x Tσειριακό = 18 / p + 2 Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

126 Παράδειγμα (συνέχεια)
Επιτάχυνση 0,9 x Tσειριακό / p + 0,1 x Tσειριακό Tσειριακό = 18 / p + 2 20 S = Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

127 Επεκτασιμότητα Μια τεχνολογία είναι επεκτάσιμη όταν μπορεί να χειριστεί προβλήματα αυξανόμενου μεγέθους. Όταν, ενώ αυξάνουμε το πλήθος των διεργασιών ή νημάτων, η αποδοτικότητα διατηρείται σταθερή χωρίς αύξηση μεγέθους του προβλήματος, τότε το πρόγραμμα είναι ισχυρά επεκτάσιμο. Αν μπορούμε να διατηρήσουμε σταθερή την αποδοτικότητα αυξάνοντας το μέγεθος του προβλήματος κατά το ποσοστό αύξησης του πλήθους των διεργασιών ή νημάτων, τότε το πρόγραμμα είναι ασθενώς επεκτάσιμο. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

128 Χρονομετρήσεις Τι είναι χρόνος; Πότε αρχίζουμε και πότε σταματάμε;
Ποιο τμήμα τους προγράμματος μας ενδιαφέρει; Μας ενδιαφέρει ο χρόνος CPU… …ή ο χρόνος ρολογιού; Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

129 Χρονομετρήσεις υποθετική συνάρτηση double start, finish; . . .
start = Get_current_time(); /* Κώδικας που θέλουμε να χρονομετρήσουμε */ finish = Get_current_time(); printf("Χρόνος που πέρασε = %e δευτερόλεπτα\n", finish−start); omp_get_wtime MPI_Wtime Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

130 Χρονομετρήσεις private double start, finish; . . .
start = Get_current_time(); /* Κώδικας που θέλουμε να χρονομετρήσουμε */ finish = Get_current_time(); printf("Χρόνος που πέρασε = %e δευτερόλεπτα\n", finish−start); Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

131 Χρονομετρήσεις shared double global_elapsed;
private double my_start, my_finish, my_elapsed; . . . /* Συγχρονισμός όλων των διεργασιών/νημάτων */ Barrier(); my_start = Get_current_time(); /* Κώδικας που θέλουμε να χρονομετρήσουμε */ my_finish = Get_current_time(); my_elapsed = my_finish − my_start; /* Εύρεση μέγιστης τιμής από όλες τις διεργασίες/νήματα */ global_elapsed = Global_max(my_elapsed); if (my_rank == 0) printf("Χρόνος που πέρασε = %e δευτερόλεπτα\n", global_elapsed); Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

132 ΣΧΕΔΙΑΣΗ ΠΑΡΑΛΛΗΛΩΝ ΠΡΟΓΡΑΜΜΑΤΩΝ
Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

133 Μεθοδολογία Foster Διαμέριση: χωρίζουμε τους υπολογισμούς και τα δεδομένα πάνω στα οποία θα πραγματοποιηθούν αυτοί οι υπολογισμοί σε μικρές εργασίες. Η προσοχή μας εδώ πρέπει να είναι εστιασμένη στην αναγνώριση εργασιών που μπορούν να εκτελούνται παράλληλα. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

134 Μεθοδολογία Foster Επικοινωνία: προσδιορίζουμε τις απαραίτητες επικοινωνίες μεταξύ των εργασιών που καθορίσαμε στο προηγούμενο βήμα. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

135 Μεθοδολογία Foster Συσσώρευση ή συνάθροιση (agglomeration, aggregation): συνδυάζουμε εργασίες και επικοινωνίες που αναγνωρίσαμε προηγουμένως σε μεγαλύτερες εργασίες. Για παράδειγμα, αν η εργασία A πρέπει να εκτελείται πρώτη ώστε μετά να μπορεί να εκτελεστεί η εργασία B, ίσως έχει νόημα να τις ενώσουμε σε μία σύνθετη εργασία. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

136 Μεθοδολογία Foster Αντιστοίχιση: αναθέτουμε σε διεργασίες/νήματα τις σύνθετες εργασίες που καθορίσαμε στο προηγούμενο βήμα. Αυτό πρέπει να γίνεται έτσι ώστε οι επικοινωνίες να ελαχιστοποιούνται και κάθε διεργασία/νήμα να έχει περίπου τον ίδιο φόρτο εργασίας. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

137 Παράδειγμα – ιστόγραμμα
1,3, 2,9, 0,4, 0,3, 1,3, 4,4, 1,7, 0,4, 3,2, 0,3, 4,9, 2,4, 3,1, 4,4, 3,9, 0,4, 4,2, 4,5, 4,9, 0,9 Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

138 Σειριακό πρόγραμμα – είσοδος
Το πλήθος των μετρήσεων: data_count Μια συστοιχία data_count αριθμών κινητής υποδιαστολής: data Η ελάχιστη τιμή (αριστερό όριο) για τον κάδο (bin) που θα περιέχει τις μικρότερες τιμές: min_meas Η μέγιστη τιμή για τον κάδο που θα περιέχει τις μεγαλύτερες τιμές: max_meas Το πλήθος των κάδων: bin_count Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

139 Σειριακό πρόγραμμα – έξοδος
bin_maxes : μια συστοιχία που θα περιλαμβάνει bin_count αριθμούς κινητής υποδιαστολής bin_counts : μια συστοιχία που θα περιλαμβάνει bin_count ακεραίους Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

140 Τα πρώτα δύο στάδια της μεθοδολογίας Foster
Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

141 Εναλλακτικός ορισμός εργασιών και επικοινωνιών
Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

142 Άθροιση τοπικών συστοιχιών
Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

143 Συμπερασματικά σχόλια (1)
Σειριακά συστήματα Το καθιερωμένο μοντέλο για το υλικό των υπολογιστών η αρχιτεκτονική von Neumann. Παράλληλο υλικό Ταξινόμηση Flynn. Παράλληλο λογισμικό Εστιαζόμαστε στο λογισμικό για ομογενή συστήματα MIMD: ένα μεμονωμένο πρόγραμμα που επιτυγχάνει την παραλληλία μέσω διακλάδωσης. Προγράμματα SPMD. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

144 Συμπερασματικά σχόλια (2)
Είσοδος και έξοδος Στα προγράμματά μας, μόνο μία διεργασία ή ένα νήμα θα επιτρέπεται να προσπελάζει το ρεύμα εισόδου stdin και όλες οι διεργασίες θα μπορούν να προσπελάζουν τα ρεύματα εξόδου stdout και stderr. Για να αποφύγουμε όμως το πρόβλημα του μη ντετερμινισμού, συνήθως θα έχουμε μία μόνο διεργασία να προσπελάζει το stdout. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

145 Συμπερασματικά σχόλια (3)
Επιδόσεις Επιτάχυνση Αποδοτικότητα Νόμος του Amdahl Επεκτασιμότητα Σχεδίαση παράλληλων προγραμμάτων Μεθοδολογία Foster Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.


Κατέβασμα ppt "The University of Adelaide, School of Computer Science"

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google