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

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

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 31 October 2017 Κεφάλαιο 1 Γιατί παράλληλη υπολογιστική; 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
31 October 2017 Περίγραμμα κεφαλαίου Γιατί χρειαζόμαστε συνεχή αύξηση της απόδοσης. Γιατί κατασκευάζουμε παράλληλα συστήματα. Γιατί χρειάζεται να γράφουμε παράλληλα προγράμματα. Πώς γράφουμε παράλληλα προγράμματα; Τι θα κάνουμε εμείς. Ταυτόχρονος, παράλληλος, κατανεμημένος προγραμματισμός. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved. Chapter 2 — Instructions: Language of the Computer

3 Οι καιροί αλλάζουν Στην περίοδο1986–2002, οι μικροεπεξεργαστές βελτιώνονταν με ιλιγγιώδη ταχύτητα, παρουσιάζοντας αύξηση επιδόσεων γύρω στο 50% κάθε χρόνο. Από το 2002 και μετά, αυτό το ποσοστό βελτίωσης έχει μειωθεί σχεδόν στο 20% ανά έτος. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

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

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

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

7 Μοντελοποίηση κλίματος
Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

8 Αναδίπλωση πρωτεϊνών Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

9 Ανακάλυψη φαρμάκων Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

10 Έρευνα σε θέματα ενέργειας
Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

11 Ανάλυση δεδομένων Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

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

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

14 Η λύση Στρεφόμαστε στους πολυπύρηνους επεξεργαστές.
«πυρήνας» = κεντρική μονάδα επεξεργασίας (CPU) Περνάμε στην παράλληλη υπολογιστική!!! Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

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

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

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

18 The University of Adelaide, School of Computer Science
31 October 2017 Παράδειγμα Υπολογίστε n τιμές και βρείτε το άθροισμά τους. Σειριακή λύση: Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved. Chapter 2 — Instructions: Language of the Computer

19 Παράδειγμα (συνέχεια)
The University of Adelaide, School of Computer Science 31 October 2017 Παράδειγμα (συνέχεια) Διαθέτουμε p πυρήνες, όπου το p είναι πολύ μικρότερο του n. Κάθε πυρήνας υπολογίζει ένα μερικό άθροισμα περίπου n/p τιμών. Κάθε πυρήνας χρησιμοποιεί τις δικές του τοπικές μεταβλητές και εκτελεί αυτό το μπλοκ κώδικα ανεξάρτητα από τους άλλους πυρήνες. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved. Chapter 2 — Instructions: Language of the Computer

20 Παράδειγμα (συνέχεια)
Αφού κάθε πυρήνας εκτελέσει τον κώδικά του, το άθροισμα των τιμών που προέκυψαν από τις κλήσεις της Compute_next_value θα περιέχεται στην τοπική μεταβλητή my_sum. Π.χ., για 8 πυρήνες, n = 24, και τις κλήσεις της Compute_next_value να επιστρέφουν τις τιμές: 1,4,3, 9,2,8, 5,1,1, 5,2,7, 2,5,0, 4,1,8, 6,5,1, 2,3,9 Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

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

22 Παράδειγμα (συνέχεια)
The University of Adelaide, School of Computer Science 31 October 2017 Παράδειγμα (συνέχεια) Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved. Chapter 2 — Instructions: Language of the Computer

23 Παράδειγμα (συνέχεια)
Πυρήνας 1 2 3 4 5 6 7 my_sum 8 19 15 13 12 14 Καθολικό άθροισμα = 95 Πυρήνας 1 2 3 4 5 6 7 my_sum 95 19 15 13 12 14 Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

24 Για μια στιγμή! Υπάρχει πολύ καλύτερος τρόπος για τον υπολογισμό του καθολικού αθροίσματος. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

25 Ένας καλύτερος παράλληλος αλγόριθμος
Μοιράζουμε το φορτίο υπολογισμού του τελικού αθροίσματος στους πυρήνες. Συνδυάζουμε τους πυρήνες ανά ζεύγη, ώστε ο πυρήνας 0 να προσθέτει το αποτέλεσμά του με αυτό του πυρήνα 1. Ο πυρήνας 2 προσθέτει το αποτέλεσμά του με αυτό του πυρήνα 3, κ.λπ. Συνδυάζουμε πυρήνες με ζυγούς και περιττούς αριθμούς. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

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

27 Υπολογισμός καθολικού αθροίσματος με πολλούς πυρήνες
Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

28 Ανάλυση Στο πρώτο παράδειγμα, ο κύριος πυρήνας πραγματοποιεί 7 λήψεις και 7 προσθέσεις. Στο δεύτερο παράδειγμα, ο κύριος πυρήνας πραγματοποιεί 3 λήψεις και 3 προσθέσεις. Έχουμε λοιπόν μια βελτίωση κατά συντελεστή μεγαλύτερο του 2! Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

29 Ανάλυση (συνέχεια) Η διαφορά είναι ακόμα σημαντικότερη με περισσότερους πυρήνες. Αν έχουμε 1000 πυρήνες: Στο πρώτο παράδειγμα, ο κύριος πυρήνας θα εκτελούσε 999 λήψεις και 999 προσθέσεις. Στο δεύτερο παράδειγμα θα εκτελούσε μόνο 10 λήψεις και 10 προσθέσεις. Βελτίωση κατά συντελεστή σχεδόν 100! Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

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

31 Ο καθηγητής Κ 15 ερωτήσεις 300 γραπτά
Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

32 Οι βοηθοί του καθηγητή Κ
Β#1 Β#3 Β#2 Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

33 Διαίρεση της εργασίας – παραλληλία δεδομένων
Διαίρεση της εργασίας – παραλληλία δεδομένων Β#1 Β#3 100 γραπτά 100 γραπτά Β#2 100 γραπτά Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

34 Διαίρεση της εργασίας – παραλληλία εργασιών
Διαίρεση της εργασίας – παραλληλία εργασιών Β#1 Β#3 Ερωτήματα Ερωτήματα 1 - 5 Β#2 Ερωτήματα Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

35 Διαίρεση της εργασίας – παραλληλία δεδομένων
Διαίρεση της εργασίας – παραλληλία δεδομένων Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

36 Διαίρεση εργασίας – παραλληλία εργασιών
Διαίρεση εργασίας – παραλληλία εργασιών Εργασίες Λήψη Πρόσθεση Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

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

38 Τι θα κάνουμε εμείς Θα μάθουμε να γράφουμε ρητώς παράλληλα προγράμματα. Θα χρησιμοποιήσουμε τη γλώσσα προγραμματισμού C. Θα μελετήσουμε τρεις διαφορετικές επεκτάσεις της C. Διασύνδεση Μεταβίβασης Μηνυμάτων (Message-Passing Interface, MPI) Νήματα Posix (Pthreads) OpenMP Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

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

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

41 Ορολογία Ταυτόχρονη (concurrent) υπολογιστική – στο πρόγραμμα είναι σε εξέλιξη πολλές εργασίες κάθε στιγμή. Παράλληλη (parallel) υπολογιστική – στο πρόγραμμα, πολλές εργασίες συνεργάζονται στενά για την επίλυση ενός προβλήματος. Κατανεμημένη (distributed) υπολογιστική – το πρόγραμμα ίσως χρειάζεται να συνεργαστεί με άλλα προγράμματα για την επίλυση ενός προβλήματος. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.

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

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


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

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


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