Κατέβασμα παρουσίασης
Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε
ΔημοσίευσεΚλεισθένης Ηλιόπουλος Τροποποιήθηκε πριν 7 χρόνια
1
The University of Adelaide, School of Computer Science
Εισαγωγή στον παράλληλο προγραμματισμό Peter Pacheco The University of Adelaide, School of Computer Science 8 October 2017 Κεφάλαιο 3 Προγραμματισμός συστημάτων κατανεμημένης μνήμης με την MPI 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
8 October 2017 Περίγραμμα κεφαλαίου Γραφή του πρώτου σας προγράμματος MPI. Χρήση συνήθων συναρτήσεων MPI. Ο κανόνας του τραπεζίου στην MPI. Συλλογική επικοινωνία. Παράγωγοι τύποι δεδομένων της MPI. Αξιολόγηση απόδοσης των προγραμμάτων MPI. Παράλληλη ταξινόμηση. Ασφάλεια στα προγράμματα MPI. 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
Hello World! (το γνωστό κλασικό παράδειγμα)
Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
6
Προσδιορισμός διεργασιών MPI
Η καθιερωμένη πρακτική είναι να προσδιορίζουμε τις διεργασίες μέσω μη αρνητικών ακεραίων αριθμών κατάταξης (ranks). Έτσι, αν έχουμε p διεργασίες αυτές θα αριθμούνται ως 0, 1, 2, .. p-1 Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
7
Το πρώτο μας πρόγραμμα MPI
Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
8
Μεταγλώττιση mpicc -g -Wall -o mpi_hello mpi_hello.c
σενάριο-περίβλημα για τη μεταγλώττιση αρχείο πηγαίου κώδικα mpicc -g -Wall -o mpi_hello mpi_hello.c παραγωγή πληροφοριών αποσφαλμάτωσης δημιουργία εκτελέσιμου αρχείου με το συγκεκριμένο όνομα (αντί για το προεπιλεγμένο a.out) ενεργοποίηση όλων των ειδοποιήσεων Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
9
Εκτέλεση mpiexec -n <πλήθος διεργασιών> <εκτελέσιμο>
mpiexec -n 1 ./mpi_hello εκτέλεση με 1 διεργασία mpiexec -n 4 ./mpi_hello εκτέλεση με 4 διεργασίες Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
10
Εκτέλεση mpiexec -n 1 ./mpi_hello
Χαιρετισμούς από τη διεργασία 0 από 1! mpiexec -n 4 ./mpi_hello Χαιρετισμούς από τη διεργασία 0 από 4! Χαιρετισμούς από τη διεργασία 1 από 4! Χαιρετισμούς από τη διεργασία 2 από 4! Χαιρετισμούς από τη διεργασία 3 από 4! Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
11
Προγράμματα MPI Τα γράφουμε σε γλώσσα C.
Έχουν συνάρτηση main(). Χρησιμοποιούν αρχεία κεφαλίδων stdio.h, string.h, κ.λπ. Χρειάζονται την προσθήκη του αρχείου κεφαλίδων mpi.h. Τα αναγνωριστικά που ορίζονται από την MPI ξεκινούν με τη συμβολοσειρά «MPI_». Το πρώτο γράμμα μετά τον χαρακτήρα υπογράμμισης είναι πάντα κεφαλαίο. Για ονόματα συναρτήσεων ή τύπων της MPI. Γίνεται ξεκάθαρο ποια στοιχεία ορίζονται από την MPI και ποια από το πρόγραμμα χρήστη. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
12
Στοιχεία της MPI MPI_Init MPI_Finalize
Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
13
Βασική διάρθρωση Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
14
Επικοινωνητές (communicators)
Μια συλλογή διεργασιών οι οποίες μπορούν να στέλνουν μηνύματα η μία στην άλλη Η MPI_Init ορίζει έναν επικοινωνητή ο οποίος αποτελείται από όλες τις διεργασίες που δημιουργήθηκαν με την έναρξη του προγράμματος. Αυτός ο επικοινωνητής ονομάζεται MPI_COMM_WORLD. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
15
Επικοινωνητές πλήθος διεργασιών στον επικοινωνητή
αριθμός κατάταξης (rank, της καλούσας διεργασίας) Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
16
SPMD Ένα πρόγραμμα-πολλά δεδομένα. Μεταγλωττίζουμε ένα πρόγραμμα.
Η διεργασία 0 κάνει κάτι τελείως διαφορετικό. Λαμβάνει μηνύματα και τα τυπώνει ενώ οι άλλες διεργασίες εκτελούν την ουσιαστική εργασία. Η δομή if-else είναι αυτή που κάνει το πρόγραμμά μας SPMD. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
17
Επικοινωνία Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
18
Τύποι δεδομένων Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
19
Επικοινωνία Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
20
Αντιστοίχιση μηνυμάτων
r MPI_Send src = q MPI_Recv dest = r q Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
21
Λήψη μηνυμάτων Η διεργασία-παραλήπτης μπορεί να λάβει ένα μήνυμα χωρίς να γνωρίζει: την ποσότητα των δεδομένων του μηνύματος, τον αποστολέα του μηνύματος, ή την ετικέτα (tag) του μηνύματος. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
22
Το όρισμα status_p MPI_Status* MPI_Status* status; status.MPI_SOURCE
MPI_TAG MPI_ERROR MPI_Status* status; status.MPI_SOURCE status.MPI_TAG Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
23
Πόσα δεδομένα λαμβάνω;
Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
24
Διάφορα ζητήματα με την αποστολή και τη λήψη
Η ακριβής συμπεριφορά εξαρτάται από την υλοποίηση της MPI. H MPI_Send ίσως συμπεριφέρεται διαφορετικά, όσον αφορά το μέγεθος της περιοχής προσωρινής αποθήκευσης (buffer), την αποκοπή και το μπλοκάρισμα. Η MPI_Recv προκαλεί πάντα μπλοκάρισμα μέχρι να ληφθεί ένα κατάλληλο μήνυμα. Εξοικειωθείτε με την υλοποίηση της MPI στο σύστημά σας· μην κάνετε υποθέσεις! Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
25
Ο ΚΑΝΟΝΑΣ ΤΟΥ ΤΡΑΠΕΖΙΟΥ ΣΤΗΝ MPI
Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
26
Ο κανόνας του τραπεζίου
Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
27
Ο κανόνας του τραπεζίου
Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
28
Ένα τραπέζιο Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
29
Ψευδοκώδικας σειριακού προγράμματος
/* Είσοδοι: a, b, n */ h = (b−a)/n; approx = (f(a) + f(b))/2.0; for (i = 1; i <= n−1; i++) { x_i = a + i*h; approx += f(x_i); } approx = h*approx; Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
30
Παραλληλοποίηση του κανόνα του τραπεζίου
Διαμέριση της λύσης του προβλήματος σε εργασίες. Αναγνώριση των καναλιών επικοινωνίας μεταξύ των εργασιών. Συνάθροιση των εργασιών σε σύνθετες εργασίες. Αντιστοίχιση των σύνθετων εργασιών σε πυρήνες. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
31
Παράλληλος ψευδοκώδικας
Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
32
Εργασίες και επικοινωνίες για τον κανόνα του τραπεζίου
Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
33
Πρώτη έκδοση (1) Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
34
Πρώτη έκδοση (2) Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
35
Πρώτη έκδοση (3) 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
Είσοδος Οι περισσότερες υλοποιήσεις της MPI επιτρέπουν την προσπέλαση της εισόδου (stdin) μόνο στη διεργασία 0 του MPI_COMM_WORLD. Η διεργασία 0 πρέπει να διαβάζει τα δεδομένα (scanf) και να τα στέλνει στις άλλες διεργασίες. 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
Επικοινωνία με δενδρική δομή
1. Στην πρώτη φάση: (α) οι διεργασίες 1, 3, 5, και 7 στέλνουν τις τιμές τους στις διεργασίες 0, 2, 4, και 6 αντίστοιχα. (β) οι διεργασίες 0, 2, 4, και 6 προσθέτουν τις τιμές που έλαβαν στις αρχικές τους. (γ) Οι διεργασίες 2 και 6 στέλνουν τις νέες τιμές τους στις διεργασίες 0 και 4, αντίστοιχα. (δ) Οι διεργασίες 0 και 4 προσθέτουν τις τιμές που έλαβαν στις νέες τους τιμές. 2. (α) Η διεργασία 4 στέλνει την ενημερωμένη τιμή της στη διεργασία 0. (β) Η διεργασία 0 προσθέτει την τιμή που έλαβε στην τελευταία τιμή της. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
42
Καθολική άθροιση δενδρικής δομής
Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
43
Καθολική άθροιση με διαφορετική δενδρική δομή
Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
44
MPI_Reduce Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
45
Προκαθορισμένοι τελεστές αναγωγής της MPI
Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
46
Επικοινωνίες συλλογικές και από σημείο προς σημείο
Όλες οι διεργασίες του επικοινωνητή πρέπει να καλούν την ίδια συλλογική συνάρτηση. Παράδειγμα: ένα πρόγραμμα που επιχειρεί να αντιστοιχίσει μια κλήση προς την MPI_Reduce από μια διεργασία με μια κλήση προς την MPI_Recv από μια άλλη διεργασία είναι εσφαλμένο και, κατά πάσα πιθανότητα, το πρόγραμμα είτε θα κρεμάσει είτε θα καταρρεύσει. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
47
Επικοινωνίες συλλογικές και από σημείο προς σημείο
Τα ορίσματα που μεταβιβάζονται από κάθε διεργασία σε μια συλλογική επικοινωνία MPI πρέπει να είναι «συμβατά». Παράδειγμα: αν μια διεργασία μεταβιβάσει την τιμή 0 για την παράμετρο dest_process και μια άλλη μεταβιβάσει την τιμή 1, το αποτέλεσμα μιας τέτοιας κλήσης προς την MPI_Reduce θα είναι λανθασμένο και το πρόγραμμα θα κρεμάσει ή θα καταρρεύσει. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
48
Επικοινωνίες συλλογικές και από σημείο προς σημείο
Το όρισμα output_data_p χρησιμοποιείται μόνο από τη διεργασία προορισμού που δηλώνεται στο όρισμα dest_process. Όμως, όλες οι διεργασίες οφείλουν να μεταβιβάζουν ένα πραγματικό όρισμα για το output_data_p, ακόμα και αν είναι απλώς η τιμή NULL. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
49
Επικοινωνίες συλλογικές και από σημείο προς σημείο
Οι επικοινωνίες από σημείο προς σημείο αντιστοιχίζονται με βάση τις ετικέτες και τους επικοινωνητές που καθορίζουν. Οι συλλογικές επικοινωνίες δεν χρησιμοποιούν ετικέτες. Αντιστοιχίζονται αποκλειστικά με βάση τον επικοινωνητή και τη σειρά με την οποία καλούνται. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
50
Παράδειγμα (1) Πολλαπλές κλήσεις της MPI_Reduce
Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
51
Παράδειγμα (2) Έστω ότι η κάθε διεργασία καλεί την MPI_Reduce με τον τελεστή MPI_SUM και διεργασία προορισμού τη 0. Με την πρώτη ματιά, ίσως νομίσουμε ότι μετά τις δύο κλήσεις της MPI_Reduce η τιμή της b θα είναι τρία και η τιμή της d θα είναι έξι. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
52
Παράδειγμα (3) Όμως, τα ονόματα των θέσεων μνήμης δεν επηρεάζουν την αντιστοίχιση των κλήσεων της MPI_Reduce. Η αντιστοίχιση καθορίζεται από τη σειρά των κλήσεων, γι’ αυτό η τιμή της b θα είναι 1 + 2 + 1 = 4 και η τιμή της d θα είναι 2 + 1 + 2 = 5. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
53
MPI_Allreduce Χρήσιμη σε περιπτώσεις όπου το συνολικό άθροισμα το χρειάζονται όλες οι διεργασίες για να ολοκληρώσουν κάποιον μεγαλύτερο υπολογισμό. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
54
Καθολική άθροιση ακολουθούμενη από διανομή του αποτελέσματος
Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
55
Καθολική άθροιση με δομή πεταλούδας
Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
56
Εκπομπή Δεδομένα τα οποία ανήκουν σε μία διεργασία στέλνονται σε όλες τις διεργασίες του επικοινωνητή. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
57
Εκπομπή δενδρικής δομής.
Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
58
Παραλλαγή της Get_input που χρησιμοποιεί την MPI_Bcast
Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
59
Διαμέριση/κατανομή δεδομένων
Υπολογισμός αθροίσματος διανυσμάτων. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
60
Σειριακή υλοποίηση άθροισης διανυσμάτων
Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
61
Διαφορετικές διαμερίσεις ενός διανύσματος 12 συνιστωσών μεταξύ τριών διεργασιών
Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
62
Τρόποι διαμέρισης Κατά μπλοκ Κυκλική Κυκλική κατά μπλοκ
Σε κάθε διεργασία αποδίδονται μπλοκ διαδοχικών συνιστωσών. Κυκλική Οι συνιστώσες αντιστοιχίζονται σε διεργασίες εκ περιτροπής. Κυκλική κατά μπλοκ Κυκλική κατανομή ολόκληρων μπλοκ συνιστωσών. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
63
Παράλληλη υλοποίηση άθροισης διανυσμάτων
Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
64
Διασπορά Η MPI_Scatter μπορεί να χρησιμοποιηθεί σε μια συνάρτηση που διαβάζει ένα ολόκληρο διάνυσμα στη διεργασία 0 αλλά στέλνει μόνο τις απαραίτητες συνιστώσες σε κάθε μια από τις άλλες διεργασίες. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
65
Ανάγνωση & κατανομή διανύσματος
Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
66
Συγκέντρωση Συλλογή όλων των συνιστωσών του διανύσματος στη διεργασία 0, η οποία θα αναλάβει έπειτα τον χειρισμό τους. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
67
Εκτύπωση κατανεμημένου διανύσματος (1)
Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
68
Εκτύπωση κατανεμημένου διανύσματος (2)
Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
69
Συγκέντρωση όλων (Allgather)
Συνενώνει τα περιεχόμενα των send_buf_p κάθε διεργασίας και τα αποθηκεύει στο όρισμα recv_buf_p κάθε διεργασίας. Το recv_count εκφράζει την ποσότητα των δεδομένων που λαμβάνονται από κάθε διεργασία. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
70
Πολλαπλασιασμός μήτρας με διάνυσμα
The University of Adelaide, School of Computer Science Πολλαπλασιασμός μήτρας με διάνυσμα 8 October 2017 A = (aij) είναι μια μήτρα m × n x είναι ένα διάνυσμα με n συνιστώσες y = Ax είναι ένα διάνυσμα με m συνιστώσες i-οστή συνιστώσα του y Εσωτερικό γινόμενο i-οστής γραμμής τής A επί το x. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved. Chapter 2 — Instructions: Language of the Computer
71
Πολλαπλασιασμός μήτρας με διάνυσμα
Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
72
Πολλαπλασιασμός μήτρας με διάνυσμα
Σειριακός ψευδοκώδικας Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
73
Συστοιχίες στο στυλ τής C
αποθηκεύεται στη μορφή Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
74
Σειριακός πολλαπλασιασμός μήτρας με διάνυσμα
Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
75
Συνάρτηση MPI για τον πολλ/μό μήτρας με διάνυσμα (1)
Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
76
Συνάρτηση MPI για τον πολλ/μό μήτρας με διάνυσμα (2)
Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
77
ΠΑΡΑΓΩΓΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΤΗΣ MPI
Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
78
Παράγωγοι τύποι δεδομένων
Χρησιμοποιούνται για την αναπαράσταση οποιασδήποτε συλλογής στοιχείων δεδομένων στη μνήμη, αποθηκεύοντας τόσο τους τύπους των στοιχείων όσο και τις σχετικές θέσεις Η βασική ιδέα είναι ότι αν μια συνάρτηση που στέλνει δεδομένα έχει αυτές τις πληροφορίες, τότε μπορεί να συλλέξει τα στοιχεία δεδομένων από τη μνήμη πριν την αποστολή τους. Αντίστοιχα, μια συνάρτηση που λαμβάνει δεδομένα, μπορεί να κατανείμει τα στοιχεία στους σωστούς προορισμούς τους στη μνήμη όταν τα λάβει. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
79
Παράγωγοι τύποι δεδομένων
Τυπικά, ένας τέτοιος τύπος αποτελείται από μια ακολουθία βασικών τύπων της MPI μαζί με μια μετατόπιση (ή σχετική θέση) για καθέναν από αυτούς τους τύπους. Παράδειγμα στον κανόνα του τραπεζίου: { (MPI_DOUBLE, 0), (MPI_DOUBLE, 16), (MPI_INT, 24) } Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
80
MPI_Type create_struct
Κατασκευάζει έναν παράγωγο τύπο δεδομένων αποτελούμενο από μεμονωμένα μέλη διαφορετικών βασικών τύπων. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
81
MPI_Get_address Επιστρέφει τη διεύθυνση της θέσης μνήμης στην οποία αναφέρεται το όρισμα location_p. Ο ειδικός τύπος MPI_Aint είναι ένας τύπος ακεραίων αρκετά μεγάλος ώστε να χωράει μια διεύθυνση του συστήματος. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
82
MPI_Type_commit Επιτρέπει στην υλοποίηση της MPI να ρυθμίσει την αναπαράσταση του τύπου δεδομένων στο εσωτερικό της ώστε να είναι βελτιστοποιημένος για χρήση σε συναρτήσεις επικοινωνίας. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
83
MPI_Type_free Όταν τελειώσουμε με τη χρήση του νέου τύπου, καλό είναι να αποδεσμεύσουμε όποιον πρόσθετο χώρο χρησιμοποιείται με μια κλήση στην Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
84
Η συνάρτηση Get_input με έναν παράγωγο τύπο δεδομένων (1)
Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
85
Η συνάρτηση Get_input με έναν παράγωγο τύπο δεδομένων (2)
Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
86
Η συνάρτηση Get_input με έναν παράγωγο τύπο δεδομένων (3)
Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
87
ΑΞΙΟΛΟΓΗΣΗ ΑΠΟΔΟΣΗΣ Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
88
Χρόνος παράλληλης εκτέλεσης
Επιστρέφει τον αριθμό των δευτερολέπτων που έχουν περάσει από κάποια προηγούμενη χρονική στιγμή. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
89
Χρόνος σειριακής εκτέλεσης
Για τη χρονομέτρηση σειριακού κώδικα δεν είναι απαραίτητη η σύνδεση με τις βιβλιοθήκες MPI. Επιστρέφει τον αριθμό των μικροδευτερολέπτων που έχουν περάσει από κάποια χρονική στιγμή στο παρελθόν. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
90
Χρόνος σειριακής εκτέλεσης
Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
91
MPI_Barrier Διασφαλίζει ότι καμία διεργασία δεν θα επιστρέφει από την κλήση της συνάρτησης πριν ξεκινήσει την κλήση και κάθε άλλη διεργασία που ανήκει στον ίδιο επικοινωνητή. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
92
MPI_Barrier Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
93
The University of Adelaide, School of Computer Science
8 October 2017 Χρόνοι εκτέλεσης σειριακού και παράλληλου πολλαπλασιασμού μήτρας-διανύσματος (Δευτερόλεπτα) Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved. Chapter 2 — Instructions: Language of the Computer
94
Επιτάχυνση Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
95
Αποδοτικότητα Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
96
Επιταχύνσεις παράλληλου πολλαπλασιασμού μήτρας-διανύσματος
Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
97
Αποδοτικότητες παράλληλου πολλαπλασιασμού μήτρας-διανύσματος
Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
98
Επεκτασιμότητα Ένα πρόγραμμα είναι επεκτάσιμο (scalable) αν το μέγεθος του προβλήματος μπορεί να αυξάνεται κατά τέτοιο ποσοστό έτσι ώστε η αποδοτικότητα του προγράμματος να μη μειώνεται καθώς αυξάνεται το πλήθος των διεργασιών. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
99
Επεκτασιμότητα Προγράμματα που διατηρούν σταθερή την αποδοτικότητά τους χωρίς να χρειάζεται αύξηση μεγέθους του προβλήματος συνήθως αποκαλούνται ισχυρά επεκτάσιμα. Προγράμματα που διατηρούν σταθερή αποδοτικότητα καθώς το μέγεθος του προβλήματος αυξάνεται κατά το ίδιο ποσοστό με το πλήθος των διεργασιών χαρακτηρίζονται ως ασθενώς επεκτάσιμα. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
100
ΑΛΓΟΡΙΘΜΟΣ ΠΑΡΑΛΛΗΛΗΣ ΤΑΞΙΝΟΜΗΣΗΣ
Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
101
Ταξινόμηση n κλειδιά για p = comm_sz διεργασίες.
Δεν υπάρχουν περιορισμοί σχετικά με το ποια κλειδιά αποδίδονται σε ποιες διεργασίες. Όταν ο αλγόριθμος τερματίζεται: Τα κλειδιά που έχουν ανατεθεί σε κάθε διεργασία θα πρέπει να είναι ταξινομημένα σε (ας υποθέσουμε) αύξουσα σειρά. Αν 0 ≤ q < r < p, κάθε κλειδί στη διεργασία q πρέπει να είναι μικρότερο από ή ίσο με οποιοδήποτε κλειδί έχει ανατεθεί στη διεργασία r. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
102
Σειριακή ταξινόμηση φυσαλίδας
Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
103
Ταξινόμηση με μετάθεση περιττού-αρτίου
Μια αλληλουχία φάσεων. Κατά τις άρτιες φάσεις πραγματοποιούνται συγκρίσεις-αντιμεταθέσεις στα ζεύγη : Κατά τις περιττές φάσεις γίνονται συγκρίσεις-αντιμεταθέσεις στα ζεύγη : Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
104
Παράδειγμα Αρχή: 5, 9, 4, 3 Άρτια φάση: Σύγκριση-αντιμετάθεση (5,9) και (4,3)· παίρνουμε τη λίστα 5, 9, 3, 4 Περιττή φάση: Σύγκριση-αντιμετάθεση (9,3)· παίρνουμε τη λίστα 5, 3, 9, 4 Άρτια φάση: Σύγκριση-αντιμετάθεση (5,3) και (9,4)· παίρνουμε τη λίστα 3, 5, 4, 9 Περιττή φάση: Σύγκριση-αντιμετάθεση (5,4)· παίρνουμε τη λίστα 3, 4, 5, 9 Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
105
Σειριακή ταξινόμηση με μετάθεση περιττού-αρτίου
Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
106
Επικοινωνίες μεταξύ εργασιών στην ταξ/ση με μετάθεση περιττού-αρτίου
Οι εργασίες για τον προσδιορισμό του στοιχείου a[i] επισημαίνονται με την ετικέτα a[i]. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
107
Παράλληλη ταξινόμηση με μετάθεση περιττού-αρτίου
Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
108
Ψευδοκώδικας Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
109
Compute_partner Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
110
Ασφάλεια στα προγράμματα MPI
Το πρότυπο της MPI επιτρέπει στην MPI_Send να συμπεριφέρεται με δύο διαφορετικούς τρόπους: μπορεί είτε να αντιγράφει απλώς το μήνυμα σε ένα buffer, δηλαδή σε μια περιοχή προσωρινής αποθήκευσης (της οποίας η διαχείριση γίνεται από την MPI), και να επιστρέφει αμέσως, είτε να μπλοκάρεται μέχρι να ξεκινήσει η αντίστοιχη κλήση προς την MPI_Recv. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
111
Ασφάλεια στα προγράμματα MPI
Πολλές υλοποιήσεις της MPI ορίζουν ένα όριο μεγέθους πέρα από το οποίο το σύστημα μεταβαίνει από τη χρήση buffer στο μπλοκάρισμα. Τα σχετικά μικρά μηνύματα αποθηκεύονται σε buffer από την MPI_Send. Για μεγαλύτερα μηνύματα, η κλήση της MPI_Send θα μπλοκάρει (ανασταλτική λειτουργία). Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
112
Ασφάλεια στα προγράμματα MPI
Αν η κλήση της MPI_Send που εκτελείται από κάθε διεργασία μπλοκάρεται, τότε καμία διεργασία δεν θα είναι σε θέση να ξεκινήσει την κλήση της MPI_Recv και το πρόγραμμα θα κρεμάσει ή θα οδηγηθεί σε αδιέξοδο (deadlock) Όλες οι διεργασίες θα μπλοκαριστούν, σε αναμονή ενός συμβάντος που δεν πρόκειται να πραγματοποιηθεί ποτέ. (δείτε τον ψευδοκώδικα) Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
113
Ασφάλεια στα προγράμματα MPI
Ένα πρόγραμμα το οποίο βασίζεται στην υποστήριξη χρήσης buffer, όπως αυτή παρέχεται από την MPI, χαρακτηρίζεται ως επισφαλές (unsafe). Ένα τέτοιο πρόγραμμα μπορεί να λειτουργεί χωρίς προβλήματα για κάποια δεδομένα εισόδου, αλλά να «κρεμάει» ή να καταρρέει όταν του δίνονται άλλα δεδομένα. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
114
MPI_Ssend Μια εναλλακτική τής MPI_Send που ορίζεται από το πρότυπο της MPI. Το επιπλέον «s» σημαίνει σύγχρονη· η MPI_Ssend μπλοκάρεται πάντα μέχρι να ξεκινήσει η αντίστοιχη συνάρτηση λήψης. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
115
Αναδόμηση επικοινωνιών
Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
116
MPI_Sendrecv Αντί να χρονοπρογραμματίσουμε τις επικοινωνίες μόνοι μας, μπορούμε να χρησιμοποιήσουμε αυτή την εναλλακτική λύση που μας παρέχει η MPI. Εκτελεί αποστολή με μπλοκάρισμα και λήψη σε μία μόνο κλήση. Τα ορίσματα dest (προορισμός) και source (προέλευση) μπορεί να είναι διαφορετικά ή ταυτόσημα. Εξαιρετικά χρήσιμη αφού η MPI χρονοπρογραμματίζει τις επικοινωνίες έτσι ώστε το πρόγραμμα να μην κρεμάσει ή καταρρεύσει Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
117
MPI_Sendrecv 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
Συμπερασματικά σχόλια (1)
Η MPI, δηλαδή η Διασύνδεση Μεταβίβασης Μηνυμάτων, είναι μια βιβλιοθήκη συναρτήσεων τις οποίες μπορείτε να καλείτε από προγράμματα C, C++, ή Fortran Επικοινωνητής (communicator) είναι μια συλλογή διεργασιών που μπορούν να στέλνουν μηνύματα η μία στην άλλη. Πολλά παράλληλα προγράμματα χρησιμοποιούν την προσέγγιση ένα πρόγραμμα-πολλά δεδομένα ή SPMD. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
122
Συμπερασματικά σχόλια (2)
Τα περισσότερα σειριακά προγράμματα είναι ντετερμινιστικά: κάθε φορά που εκτελούμε ένα πρόγραμμα με τα ίδια δεδομένα εισόδου παίρνουμε πάντα την ίδια έξοδο. Τα παράλληλα προγράμματα συχνά δεν διαθέτουν αυτή την ιδιότητα. Οι συλλογικές επικοινωνίες αφορούν όλες τις διεργασίες σε έναν επικοινωνητή. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
123
Συμπερασματικά σχόλια (3)
Όταν χρονομετρούμε παράλληλα προγράμματα, συνήθως ενδιαφερόμαστε για τον πραγματικό χρόνο εκτέλεσης (χρόνο ρολογιού). Επιτάχυνση είναι ο λόγος του χρόνου εκτέλεσης του σειριακού κώδικα προς τον αντίστοιχο χρόνο του παράλληλου κώδικα. Αποδοτικότητα είναι η επιτάχυνση διαιρεμένη με το πλήθος των παράλληλων διεργασιών. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
124
Συμπερασματικά σχόλια (4)
Αν είναι εφικτό να αυξηθεί το μέγεθος του προβλήματος (n) ώστε η αποδοτικότητα του παράλληλου προγράμματος να μη μειώνεται καθώς το p αυξάνεται, τότε λέμε ότι το πρόγραμμα είναι επεκτάσιμο. Ένα πρόγραμμα MPI θεωρείται επισφαλές όταν η ορθή συμπεριφορά του εξαρτάται από το γεγονός ότι η MPI_Send χρησιμοποιεί buffer για την είσοδό της. Copyright © 2010, 2015, Elsevier Inc., Klidarithmos Publications. All rights Reserved.
Παρόμοιες παρουσιάσεις
© 2024 SlidePlayer.gr Inc.
All rights reserved.