Παρουσίαση 3ης Άσκησης Παράλληλος προγραμματισμός για αρχιτεκτονικές κατανεμημένης μνήμης με MPI Συστήματα Παράλληλης Επεξεργασίας 9ο Εξάμηνο, ΣΗΜΜΥ Εργ. Υπολογιστικών Συστημάτων Σχολή ΗΜΜΥ, Ε.Μ.Π. Νοέμβριος 2016
Αναδρομή στις Μερικές Διαϕορικές Εξισώσεις Εξίσωση Poisson: 2 u = f σε χωρίο Ω Γνωστή και ως κυματική εξίσωση Σε καρτεσιανές συντεταγμένες (2Δ): ( ϑ2 ϑx 2 + ϑ2 ϑy 2 )u(x, y) = f(x, y) Εξίσωση Laplace: ( ϑ2 + ϑ2 )u(x, y) = 0 ϑx 2 ϑy 2 Γνωστή και ως εξίσωση θερμότητας Ειδική περίπτωση της Poisson: f=0 2 11/2016 3η Άσκηση
Διάδοση θερμότητας σε δύο διαστάσεις Απλή εϕαρμογή - Διάδοση θερμότητας σε επιϕάνεια από το σύνορο στο εσωτερικό Επίλυση εξίσωσης θερμότητας με συνοριακές συνθήκες y 1 u(x,1) 0 y 1 Δx Δy u(0,y) 0 u xx + u yy =0 u(1,y) 0 u(x,0) 0 1 x 1 x 3 11/2016 3η Άσκηση
Υπολογιστικές μέθοδοι (I) - Μέθοδος Jacobi Επαναληπτική μέθοδος Jacobi u t+1 x,y = ut x 1,y+u t x,y 1+u t x+1,y+u t x,y+1 4 y 1 5-point stencil Κάθε στοιχείο υπολογίζεται από τα γειτονικά του 1 x 4 11/2016 3η Άσκηση
Υπολογιστικές μέθοδοι (I) - Μέθοδος Jacobi Επαναληπτική μέθοδος Jacobi u t+1 x,y = ut x 1,y+u t x,y 1+u t x+1,y+u t x,y+1 4 y 1 y 1 t t t t t+1 1 1 x x 5 11/2016 3η Άσκηση
Υπολογιστικές μέθοδοι (I) - Μέθοδος Jacobi Αλγόριθμος Jacobi for t = 0; t < T &&!converged; t++ do for i = 1; i < X 1; i++ do for j = 1; j < Y 1; j++ do u[t + 1][i][j] = (u[t][i 1][j] + u[t][i][j 1] + u[t][i + 1][j] + u[t][i][j + 1])/4 end end converged = checkconvergence(u[t], u[t + 1]) end Για τον υπολογισμό των τιμών της χρονικής στιγμής t+1, χρησιμοποιούνται οι τιμές της χρονικής στιγμής t Απαιτούνται τουλάχιστον δύο πίνακες, ένας για την τρέχουσα (t+1) κι ένας για την προηγούμενη (t) χρονική στιγμή Στο τέλος κάθε βήματος, πραγματοποιείται έλεγχος σύγκλισης 6 11/2016 3η Άσκηση
Εκτέλεση Jacobi (I) t=0 t=1 i=1 j=1 7 11/2016 3η Άσκηση
Εκτέλεση Jacobi (II) t=0 t=1 i=1 j=1 8 11/2016 3η Άσκηση
Εκτέλεση Jacobi (III) t=0 t=1 i=1 j=2 9 11/2016 3η Άσκηση
Εκτέλεση Jacobi (IV) t=0 t=1 i=3 j=4 10 11/2016 3η Άσκηση
Εκτέλεση Jacobi (V) t=1 t=2 i=1 j=1 11 11/2016 3η Άσκηση
Εκτέλεση Jacobi (VI) Σύγκλιση t=k t=k+1 i=4 j=6 Τα στοιχεία του πίνακα δε διαϕέρουν (ή διαϕέρουν ελάχιστα) στις χρονικές στιγμές t και t+1 Ο αλγόριθμος έχει συγκλίνει 12 11/2016 3η Άσκηση
Ζητήματα Υλοποίησης - MPI Διαμοιρασμός πίνακα Θεωρούμε δισδιάστατο πλέγμα επεξεργαστών P0 P1 P2 P3 P4 P5 P6 P7 P8 Πώς διαμοιράζουμε τον πίνακα στο MPI; Ποιες συναρτήσεις χρησιμοποιούμε; 13 11/2016 3η Άσκηση
Ζητήματα Υλοποίησης - MPI Υπολογιστικός πυρήνας Έχει κάθε διεργασία τα στοιχεία που χρειάζεται; P4? 14 11/2016 3η Άσκηση
Ζητήματα Υλοποίησης - MPI Υπολογιστικός πυρήνας P0 P1 P2 P3 P4 P5 P6 P7 P8 Ποια στοιχεία πρέπει να ανταλλάσουν οι επεξεργαστές; Πότε γίνεται η ανταλλαγή δεδομένων; Ποιες συναρτήσεις MPI χρησιμοποιούμε για την επικοινωνία; Πού αποθηκεύονται τα δεδομένα αυτά; 15 11/2016 3η Άσκηση
Ζητήματα Υλοποίησης - MPI Έλεγχος σύγκλισης Έλεγχος σύγκλισης for i = 1; i < X 1; i++ do for j = 1; j < Y 1; j++ do if u[t + 1][i][j] u[t][i][j] > ε then return 0 end end end return 1; Ο έλεγχος σύγκλισης γίνεται τοπικά σε κάθε διεργασία. Πώς θα ελέγξουμε τη σύγκλιση σε όλο το χωρίο; 16 11/2016 3η Άσκηση
Υπολογιστικές μέθοδοι (II) - Μέθοδος Gauss-Seidel Η μέθοδος Jacobi λύνει το πρόβλημα, αλλά έχει πολύ αργό ρυθμό σύγκλισης Παρατήρηση 1: Όταν υπολογίζω το σημείο u[t+1][i][j], έχω ήδη υπολογίσει τα σημεία u[t+1][i-1][j], u[t+1][i][j-1] t=0 t=1 17 11/2016 3η Άσκηση
Υπολογιστικές μέθοδοι (II) - Μέθοδος Gauss-Seidel Η μέθοδος Jacobi λύνει το πρόβλημα, αλλά έχει πολύ αργό ρυθμό σύγκλισης Παρατήρηση 2: Τα σημεία u[t+1][i-1][j], u[t+1][i][j-1] έχουν updated τιμές σε σχέση με τα u[t][i-1][j], u[t][i][j-1] Επαναληπτική μέθοδος Gauss-Seidel u t+1 x,y = ut+1 x 1,y +ut+1 x,y 1 +ut x+1,y+u t x,y+1 4 y y 1 1 t+1 t+1 t+1 t t 1 x 1 x 18 11/2016 3η Άσκηση
Υπολογιστικές μέθοδοι (II) - Μέθοδος Gauss-Seidel με SOR Successive Over-Relaxation (SOR): Ένας τρόπος για ταχύτερη σύγκλιση Αρχική επαναληπτική μέθοδος: u t+1 = f(u t ) Επαναληπτική μέθοδος με SOR: u t+1 = (1 ω)u t + ωf(u t ) Επαναληπτική μέθοδος Gauss-Seidel-SOR u t+1 x,y = u t x,y + ω ut+1 x 1,y +ut+1 x,y 1 +ut x+1,y+u t x,y+1 4u t x,y 4, ω (0, 2) 19 11/2016 3η Άσκηση
Εκτέλεση Gauss-Seidel-SOR (I) t=0 t=1 i=1 j=1 20 11/2016 3η Άσκηση
Εκτέλεση Gauss-Seidel-SOR (II) t=0 t=1 i=1 j=1 21 11/2016 3η Άσκηση
Εκτέλεση Gauss-Seidel-SOR (III) t=0 t=1 i=1 j=2 22 11/2016 3η Άσκηση
Ζητήματα Υλοποίησης - MPI Υπολογιστικός πυρήνας Τι αλλάζει στην επικοινωνία της Gauss-Seidel σε σχέση με τη Jacobi; Πότε γίνεται η ανταλλαγή των δεδομένων μεταξύ των διεργασιών; Για τον υπολογισμό κάθε στοιχείου, απαιτούνται στοιχεία από την προηγούμενη και την τρέχουσα χρονική στιγμή Ποιος υπολογιστικός πυρήνας θα είναι πιο γρήγορος, αυτός της Jacobi ή αυτός της Gauss-Seidel; Γιατί; 23 11/2016 3η Άσκηση
Υπολογιστικές μέθοδοι (III) - Μέθοδος Red-Black SOR To Red-Black ordering επιτυγχάνει καλύτερο ρυθμό σύγκλισης Red-Black ordering: 1. Στοιχεία σε άρτιες θέσεις (i + j)%2 = 0 Red 2. Στοιχεία σε περιττές θέσεις (i + j)%2 = 1 Black Υπολογισμός σε δύο ϕάσεις 24 11/2016 3η Άσκηση
Υπολογιστικές μέθοδοι (III) - Μέθοδος Red-Black SOR Red-Black SOR - Φάση 1η - Update Red u t+1 x,y = u t x,y + ω ut x 1,y+u t x,y 1+u t x+1,y+u t x,y+1 4u t x,y 4, when (x + y)%2 == 0 Στη red ϕάση υπολογίζονται τα red στοιχεία από τα black Red-Black SOR - Φάση 2η - Update Black u t+1 x,y = u t x,y + ω ut+1 x 1,y +ut+1 x,y 1 +ut+1 x+1,y +ut+1 x,y+1 4ut x,y 4, when (x + y)%2 == 1 Στη black ϕάση υπολογίζονται τα black στοιχεία από τα red 25 11/2016 3η Άσκηση
Εκτέλεση Red-Black-SOR - 1η ϕάση (I) t=k t=k+1 i=1 j=1 26 11/2016 3η Άσκηση
Εκτέλεση Red-Black-SOR - 1η ϕάση (II) t=k t=k+1 i=1 j=3 27 11/2016 3η Άσκηση
Εκτέλεση Red-Black-SOR - 1η ϕάση (III) t=k t=k+1 i=4 j=6 28 11/2016 3η Άσκηση
Εκτέλεση Red-Black-SOR - 2η ϕάση (I) t=k t=k+1 i=1 j=2
Εκτέλεση Red-Black-SOR - 2η ϕάση (II) t=k t=k+1 i=4 j=5
Ζητήματα Υλοποίησης - MPI Υπολογιστικός πυρήνας Ο υπολογιστικός πυρήνας της Red-Black SOR περιλαμβάνει δύο ϕάσεις. Πώς αλλάζει αυτό την επικοινωνία; Τι όϕελος/κόστος μπορεί να έχει; 31 11/2016 3η Άσκηση
Ζητούμενα Υποχρεωτικά για τις μεθόδους Jacobi και Gauss-Seidel Προαιρετικά για τη μέθοδο Red-Black SOR Αναπτύξτε παράλληλα προγράμματα στο μοντέλο ανταλλαγής μηνυμάτων με τη βοήθεια της βιβλιοθήκης MPI Σειριακές υλοποιήσεις στα αρχεία Jacobi_serial.c, GaussSeidelSOR_serial.c και RedBlackSOR_serial.c Σκελετός υλοποίησης σε MPI στο αρχείο mpi_skeleton.c Επίδειξη παράλληλων προγραμμάτων στις 6 Δεκεμβρίου Πραγματοποιείστε μετρήσεις επίδοσης με βάση συγκεκριμένο σενάριο που θα σας δοθεί στο εργαστήριο Συγκεντρώστε τα αποτελέσματα, τις συγκρίσεις και τα σχόλιά σας στην τελική αναϕορά Παράδοση τελικής αναϕοράς στις 13 Δεκεμβρίου 32 11/2016 3η Άσκηση