Παρουσίαση 2 ης Άσκησης:

Σχετικά έγγραφα
Παρουσίαση 2 ης Άσκησης:

Παρουσίαση 1 ης Άσκησης:

Linear Equations Direct Methods

Παράλληλος προγραμματισμός: Σχεδίαση και υλοποίηση παράλληλων προγραμμάτων

Παρουςίαςθ 2 θσ Άςκθςθσ:

Παράλληλος προγραμματισμός: Σχεδίαση και υλοποίηση παράλληλων προγραμμάτων

Matrix Algorithms. Παρουσίαση στα πλαίσια του μαθήματος «Παράλληλοι Αλγόριθμοι» Γ. Καούρη Β. Μήτσου

Επίλυση ενός τριδιαγώνιου γραµµικού συστήµατος Ax = d µε τη µέθοδο απαλοιφής του Gauss (µέθοδος του Thomas)

Matrix Algorithms. Παρουσίαση στα πλαίσια του μαθήματος «Παράλληλοι. Αλγόριθμοι» Γ. Καούρη Β. Μήτσου

Παράλληλος προγραμματισμός: Σχεδίαση παράλληλων προγραμμάτων

Δυναµικός Προγραµµατισµός (ΔΠ)

Διάλεξη 04: Παραδείγματα Ανάλυσης

Διάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων

Merge Sort (Ταξινόμηση με συγχώνευση) 6/14/2007 3:04 AM Merge Sort 1

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 4. Παραδείγματα Ανάλυσης Πολυπλοκότητας Ανάλυση Αναδρομικών Αλγόριθμων

Αναδρομή Ανάλυση Αλγορίθμων

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

Διδάσκων: Παναγιώτης Ανδρέου

Προγραμματιστικές Τεχνικές

Αλγόριθµοι και Πολυπλοκότητα

ΜΥΥ105: Εισαγωγή στον Προγραµµατισµό. Αναδροµικές Συναρτήσεις Χειµερινό Εξάµηνο 2014

Quicksort. Επιμέλεια διαφανειών: Δ. Φωτάκης Μικροαλλαγές: Α. Παγουρτζής. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Αναδρομή (Recursion) Πώς να λύσουμε ένα πρόβλημα κάνοντας λίγη δουλειά και ανάγοντας το υπόλοιπο να λυθεί με τον ίδιο τρόπο.

Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

Σχεδίαση Αλγορίθμων - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1

Συστήματα Αναμονής (Queuing Systems)

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

ΑΛΓΟΡΙΘΜΟΙ Άνοιξη I. ΜΗΛΗΣ

υναμικός Προγραμματισμός

Διδάσκων: Παναγιώτης Ανδρέου

All Pairs Shortest Path

Δυναμικός Προγραμματισμός

Quicksort. ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Μεταγλωττιστές Βελτιστοποίηση

Σημειωματάριο μαθήματος 1ης Νοε. 2017

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ Π ΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ Π ΕΡΙΒΑΛΛΟΝ

Διωνυµικοί Συντελεστές. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Δυναµικός Προγραµµατισµός 1

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

Quicksort. ημήτρης Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Εθνικό Μετσόβιο Πολυτεχνείο


Προγραμματισμός Αναδρομή

Αναδροµή (Recursion) ύο παρεξηγήσεις. Σκέψου Αναδροµικά. Τρίγωνο Sierpinski Μη αναδροµικός ορισµός;

Quicksort. Πρόβλημα Ταξινόμησης. Μέθοδοι Ταξινόμησης. Συγκριτικοί Αλγόριθμοι

Προγραμματισμός Αναδρομή

Παράλληλος προγραμματισμός: παράλληλες λ υπολογιστικές πλατφόρμες και ανάλυση προγραμμάτων

Δυναμικός Προγραμματισμός

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

Εφαρµογές µε ανάγκες για υψηλές επιδόσεις Αξιολόγηση επίδοσης Παραλληλοποίηση εφαρµογών

Υπολογιστική Νοημοσύνη. Μάθημα 13: Αναδρομικά Δίκτυα - Recurrent Networks

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ.

Βελτιστοποίηση και Παραλληλοποίηση Κώδικα για Αλγορίθμους Γράφων ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ

υναμικός Προγραμματισμός

Αλγόριθµοι και Πολυπλοκότητα

Θέματα Εφαρμογών Βάσεων Δεδομένων: Ιδιωτικότητα Δεδομένων

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Παρουσίαση 3ης Άσκησης

Πανεπιστήμιο Ιωαννίνων Τμήμα Πληροφορικής Δομές Δεδομένων [ΠΛΥ302] Χειμερινό Εξάμηνο 2012

Προγραμματιστικές Τεχνικές

Εισαγωγή στην πληροφορική

Εισαγωγικές Έννοιες. ημήτρης Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Εθνικό Μετσόβιο Πολυτεχνείο

Εισαγωγή στην πληροφορική

Προγραμματισμός Ι (ΗΥ120)

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Διάλεξη 2η: Αλγόριθμοι και Προγράμματα

Μάθημα Επιλογής 8 ου εξαμήνου

Αλγόριθμοι Αναζήτησης

2x 1 + x 2 x 3 + x 4 = 1. 3x 1 x 2 x 3 +2x 4 = 3 x 1 +2x 2 +6x 3 x 4 = 4

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 1 η

FORTRAN και Αντικειμενοστραφής Προγραμματισμός

ΑΡΙΘΜΗΤΙΚΕΣ ΜΕΘΟΔΟΙ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

Έστω συμβολοσειρά Το σύνολο FIRST περιέχει τα τερματικά σύμβολα από τα οποία αρχίζουν οι συμβολοσειρές που παράγονται από την

ΔΙΑΜΕΡΙΣΜΟΣ ΜΗ_ΔΟΜΗΜΕΝΩΝ ΠΛΕΓΜΑΤΩΝ

Επιλογή. Επιμέλεια διαφανειών: Δ. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Εθνικό Μετσόβιο Πολυτεχνείο

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. Τρίτη (3 η ) δίωρη διάλεξη. Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

Τεχνικές Σχεδιασμού Αλγορίθμων

Προγραµµατισµός. Αναδροµή (1/2)

Αλγόριθμοι και Πολυπλοκότητα

Εργαστήριο 8: Αναδρομική διεργασία εισαγωγής καινούριου κόμβου σε ΔΔΑ

Συστήµατα Παράλληλης Επεξεργασίας. Παράλληλος προγραµµατισµός: Σχεδιασµός παράλληλων προγραµµάτων

Παράλληλος προγραμματισμός: Σχεδίαση και υλοποίηση παράλληλων προγραμμάτων

ΜΕΘΟΔΟΙ ΑΕΡΟΔΥΝΑΜΙΚΗΣ

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 1 η

υναμικός Προγραμματισμός

Επιλογή. Πρόβλημα Επιλογής. Μέγιστο / Ελάχιστο. Εφαρμογές

Αριθμητικές Μέθοδοι σε Προγραμματιστικό Περιβάλλον

ΠΛΗ111. Ανοιξη Μάθηµα 10 ο. Γράφοι. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

Χαρακτηριστικά αναδροµής

add $t0,$zero, $zero I_LOOP: beq $t0,$s3, END add $t1, $zero,$zero J_LOOP: sub $t2, $s3, $t0 add $t2, $t2, $s1 int i, j, tmp; int *arr, n;

Θεωρητικό Μέρος. int rec(int n) { int n1, n2; if (n <= 5) then return n; else { n1 = rec(n-5); n2 = rec(n-3); return (n1+n2); } }

Εργαστήριο 2 - Απαντήσεις. Επίλυση Γραμμικών Συστημάτων

Δομές Δεδομένων & Αλγόριθμοι

Επιστημονικοί Υπολογισμοί - Μέρος ΙΙΙ: Παράλληλοι Υπολογισμοί

Ο Σ ο β ι ε τ ι κ ό ς Κ ρ υ π τ α λ γ ό ρ ι θ μ ο ς G O S T

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 1 η

1 η ΑΣΚΗΣΗ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ. Ακ. έτος , 5ο Εξάμηνο, Σχολή ΗΜ&ΜΥ

ΣΤΟΧΑΣΤΙΚΕΣ ΔΙΕΡΓΑΣΙΕΣ & ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ Αίθουσα Νέα Κτίρια ΣΗΜΜΥ Ε.Μ.Π.

Transcript:

Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων Παρουσίαση 2 ης Άσκησης: Ανάπτυξη παράλληλου κώδικα και μελέτη της επίδοσης του αλγορίθμου LU Decomposition σε μοντέρνες πολυπύρηνες αρχιτεκτονικές 9 ο Εξάμηνο

Σκοπός άσκησης Εξοικείωση με παράλληλα προγραμματιστικά μοντέλα / εργαλεία για πολυπύρηνες αρχιτεκτονικές Υλοποίηση / βελτιστοποίηση παράλληλων προγραμμάτων Μελέτη επίδοσης Αξιολόγηση προγραμματιστικής ευκολίας (productivity /programmability) Όπως στην Άσκηση 1, δουλεύουμε με τον αλγόριθμο LU Decomposition 2

Αλγόριθμος LU Decomposition Εύρεση ενός κάτω τριγωνικού πίνακα L και ενός άνω τριγωνικού πίνακα U ώστε Α=LU for (k=0;k<n-1;k++) { for (i=k+1;i<n;i++) { l=a[i][k]=a[i][k]/a[k][k]; for (j=k+1;j<n;j++) A[i][j]=A[i][j]-l*A[k][j]; } } A: NxN πίνακας προς παραγοντοποίηση Οι πίνακες L και U αποθηκεύονται in place στον Α Πολυπλοκότητα: O(n 3 ) 3

LU Decomposition A00 A01 A02 1 0 0 U00 U01 U02 A10 A11 A12 A20 A21 A22 L10 1 0 = * L20 L21 1 0 U11 U12 0 0 U22 Τελικά ο Α γίνεται. A00 A01 A02 U00 U01 U02 A10 A11 A12 A20 A21 A22 L10 U11 U12 L20 U21 U22 4

Για μεγάλα N, ο πίνακας δε χωράει στην cache Μemory-bound αλγόριθμος Μη ευνοϊκό access pattern για data reuse Πρόσβαση στη μνήμη Ο πίνακας πρέπει να μεταφέρεται από την κύρια μνήμη σε κάθε επανάληψη Ο αλγόριθμος δεν κλιμακώνει σε αρχιτεκτονικές κοινής μνήμης 5

Recursive LU Decomposition lu_recursive(a) if (base case) lu_kernel(a) else lu_recursive(a 00 ) lower_solve(a 01,A 00 ) upper_solve(a 10,A 00 ) schur(a 11,A 10,A 01 ) lu_recursive(a 11 ) Forward Substitution: L 00 A 01 = A 01 A 01 Forward Substitution: A 10 U 00 = A 10 A 10 Matrix Multiplication: A 11 = A 11 - A 10 A 01 6

Recursive LU Decomposition lu_recursive(a 00 ) A 00 A 01 A 10 A 11 7

Recursive LU Decomposition L 00 A 01 lu_recursive(a 00 ) lower_solve(a 01,A 00 ) upper_solve(a 10,A 00 ) U 00 A 10 A 11 8

Recursive LU Decomposition L 00 A 01 lu_recursive(a 00 ) lower_solve(a 01,A 00 ) upper_solve(a 10,A 00 ) U 00 schur(a 11,A 10,A 01 ) A 10 A 11 9

Recursive LU Decomposition L 00 A 01 lu_recursive(a 00 ) lower_solve(a 01,A 00 ) upper_solve(a 10,A 00 ) U 00 schur(a 11,A 10,A 01 ) lu_recursive(a 11 ) A 10 A 11 10

Recursive LU Decomposition Περισσότερη αναδρομή lower_solve(a,l) : αναδρομική επίλυση του συστήματος LA =A, για την εύρεση του Α lower_solve(a,l) if (base case) block_lower_solve(a,l) else aux_lower_solve(a 00,A 10,L) aux_lower_solve(a 01,A 11,L) A 00 A 01 A 10 A 11 Δεν υπάρχει εξάρτηση στα δεδομένα των δύο κλήσεων της aux_lower_solve παράλληλη εκτέλεση Tasks και για την aux_lower_solve! Ομοίως για την upper_solve 11

Recursive LU Decomposition Κι άλλη αναδρομή schur(a,v,w) : A =A-V*W schur(a,v,w) if (base case) block_schur(a,v,w) else schur(a 00,V 00,W 00 ) schur(a 01,V 00,W 01 ) schur(a 10,V 10,W 00 ) schur(a 11,V 10,W 01 ) schur(a 00,V 01,W 10 ) schur(a 01,V 01,W 11 ) schur(a 10,V 11,W 10 ) schur(a 11,V 11,W 11 ) Πίνακας εγγραφής : Α schur(a 00,V 00,W 00 ) schur(a 01,V 00,W 01 ) schur(a 10,V 10,W 00 ) schur(a 11,V 10,W 01 ) schur(a 00,V 01,W 10 ) schur(a 01,V 01,W 11 ) schur(a 10,V 11,W 10 ) schur(a 11,V 11,W 11 ) 12

Tiled LU decomposition lu_tiled(a) range=n/b for (k=0;k<range-1;k++) { lu_kernel(a kk ) l_inv=get_inv_l(a kk ) u_inv=get_inv_u(a kk ) for (i=k+1;i<range;i++) { mm_lower(l_inv, A ki, A ki ) mm_upper(a ik, u_inv, A ik ) } for (i=k+1;i<range;i++) for (j=k+1;j<range;j++) mm(a ik,a ki,a ij ) } lu_kernel(a range-1,range-1 ) Upper diagonal tile - LU Υπολογισμός L kk -1, U kk -1 A ki =L kk -1 A ki - upper horizontal frame A ik =A ik U kk -1 - left vertical frame Update trailing tiles A ij =A ij -A ik A kj LU decomposition-final diagonal tile 13

Tiled LU Decomposition k=0, N, B, N/B=4 lu_kernel(a 00 ) A 00 A 01 A 02 A 03 A 10 A 11 A 12 A 13 A 20 A 21 A 22 A 23 A 30 A 31 A 32 A 33 14

Tiled LU Decomposition U 00 k=0, N, B, N/B=4 L 00 A 01 A 02 A 03 lu_kernel(a 00 ) l_inv=get_inv_l(a 00 ) u_inv=get_inv_u(a 00 ) A 10 A 11 A 12 A 13 A 20 A 21 A 22 A 23 U 00-1 A 30 A 31 A 32 A 33 L 00-1 15

Tiled LU Decomposition U 00 k=0, N, B, N/B=4 A 01 A 02 A 03 A 10 A 11 A 12 A 13 lu_kernel(a 00 ) l_inv=get_inv_l(a 00 ) u_inv=get_inv_u(a 00 ) for (i=1;i<range;i++) { mm_lower(l_inv, A 0i, A 0i ) mm_upper(a i0, u_inv, A i0 ) } A 20 A 21 A 22 A 23 A 30 A 31 A 32 A 33 16

Tiled LU Decomposition k=0, N, B, N/B=4 A 00 A 01 A 02 A 03 A 10 A 11 A 12 A 13 A 20 A 21 A 22 A 23 lu_kernel(a 00 ) l_inv=get_inv_l(a 00 ) u_inv=get_inv_u(a 00 ) for (i=1;i<4;i++) { mm_lower(l_inv, A 0i, A 0i ) mm_upper(a i0, u_inv, A i0 ) } for (i=1;i<4;i++) for (j=1;j<4;j++) mm(a i0,a 0i,A ij ) A 30 A 31 A 32 A 33 17

k=0 Εναλλακτικές Υλοποιήσεις: Tiled LU decomposition-scheduling 1 1 2 2 2 2 3 3 3 2 3 3 3 2 3 3 3 k=1 4 5 5 5 6 6 k=2 5 6 6 7 8 8 9 10 18

Tiled LU decomposition-task Graph k=0 A 00 A 01 A 02 A 03 A 10 A 11 A 12 A 13 A 20 A 21 A 22 A 23 A 30 A 31 A 32 A 33 19

Tiled LU decomposition-task Graph k=1 A 00 A 01 A 02 A 03 A 10 A 11 A 12 A 13 A 20 A 21 A 22 A 23 A 30 A 31 A 32 A 33 20

Tiled LU decomposition-task Graph k=2 A 00 A 01 A 02 A 03 A 10 A 11 A 12 A 13 A 20 A 21 A 22 A 23 A 30 A 31 A 32 A 33 21

Tiled LU decomposition-task Graph k=2 A 00 A 01 A 02 A 03 A 10 A 11 A 12 A 13 A 20 A 21 A 22 A 23 A 30 A 31 A 32 A 33 22

k=0 1 2 3 4 k=1 Εναλλακτικές Υλοποιήσεις: Tiled LU decomposition-scheduling 2 2 3 4 5 3 4 5 6 4 5 6 7 4 5 6 5 6 7 k=2 6 7 8 7 8 8 9 10 23

Βήματα υλοποίησης Ομάδες των 5 ή 6 ατόμων Κάθε ομάδα δουλεύει σε ένα εργαλείο Επιλέξτε εργαλείο με το οποίο θα δουλέψετε έως 18 Δεκ Οι ομάδες θα καταρτιστούν επιτόπου στο μάθημα 18 Δεκ. Φάση 1: Υλοποιήσεις / βελτιστοποιήσεις παράλληλων εκδόσεων Standard / recursive / tiled Parallel for / tasks Υβριδικές προσεγγίσεις Scheduling 1 / Scheduling 2 (βλ. διαφάνειες 18, 23) Φάση 2: Επιλογή των πιο ενδεικτικών υλοποιήσεων και λήψη μετρήσεων Φάση 3: Παρουσίαση (μεθοδολογία, αποτελέσματα, συμπεράσματα) από κάθε ομάδα Φάση 4: Συγγραφή αναφοράς (ανά ομάδα) Φάση 5: Συγγραφή research paper (από όλους) 24