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

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

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

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

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

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

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

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

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

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

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

Σύνοψη παρουσίασης. Παράλληλες υπολογιστικές πλατφόρμες. Ανάλυση παράλληλων προγραμμάτων. Σχεδίαση παράλληλων προγραμμάτων

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

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

2. Στοιχεία Αρχιτεκτονικής Παράλληλων Υπολογιστών... 45

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

Αρχιτεκτονική Υπολογιστών

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

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

Παράλληλος προγραμματισμός: Υλοποίηση παράλληλων προγραμμάτων

EM 361: Παράλληλοι Υπολογισμοί

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

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

13.2 Παράλληλος Προγραµµατισµός Γλωσσάρι, Σελ. 1

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

Μετρικές & Επιδόσεις. Κεφάλαιο V

Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική Υπολογιστών

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

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

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

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

Πολυπύρηνοι επεξεργαστές Multicore processors

Η πολυνηματική γλώσσα προγραμματισμού Cilk

Network Algorithms and Complexity Παραλληλοποίηση του αλγορίθμου του Prim. Αικατερίνη Κούκιου

Παράλληλα Συστήματα. Γιώργος Δημητρίου. Ενότητα 4 η : Παράλληλος Προγραμματισμός. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

Minimum Spanning Tree: Prim's Algorithm

Συστήματα μνήμης και υποστήριξη μεταφραστή για MPSoC

Διπλωματική Εργασία του φοιτητή του Τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών της Πολυτεχνικής Σχολής του Πανεπιστημίου Πατρών

Οργάνωση Υπολογιστών (ΙI)

Διεργασίες και Νήματα (2/2)

ΠΛΕ- 074 Αρχιτεκτονική Υπολογιστών 2

EM 361: Παράλληλοι Υπολογισμοί

Κύρια μνήμη. Μοντέλο λειτουργίας μνήμης. Ένα τυπικό υπολογιστικό σύστημα σήμερα. Οργάνωση Υπολογιστών (ΙI)

Παράλληλη Επεξεργασία Κεφάλαιο 1 Γιατί Παράλληλος Προγραμματισμός;

Αρχιτεκτονική Υπολογιστών

Μηχανοτρονική. Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο,

Οργάνωση επεξεργαστή (2 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

Εισαγωγή Θέματα H/W. Χάρης Μανιφάβας Τμήμα Εφ. Πληροφορικής & Πολυμέσων ΤΕΙ Κρήτης. Κατανεμημένα Συστήματα (Ε) Εισαγωγή: Θέματα H/W 1

Ένα αφαιρετικό πραγματικού χρόνου μοντέλο λειτουργικού συστήματος για MPSoC

Κεφάλαιο 7 Ιεραρχία Μνήμης (Memory Hierarchy)

ΠΛΕ- 074 Αρχιτεκτονική Υπολογιστών 2

ΠΕΡΙΕΧΟΜΕΝΑ Υλικό και Λογισμικό Αρχιτεκτονική Υπολογιστών Δομή, Οργάνωση και Λειτουργία Υπολογιστών 6

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

Κατανεμημένος και Παράλληλος Προγραμματισμός. Ύλη μαθήματος. Βιβλιογραφία Μαθήματος 2/27/2016

Τεχνολογίες Κύριας Μνήμης

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

Διαφορές single-processor αρχιτεκτονικών και SoCs

Chapter 4 ( ή 1 στο βιβλίο σας)

Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας

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

i Στα σύγχρονα συστήματα η κύρια μνήμη δεν συνδέεται απευθείας με τον επεξεργαστή

ΣΥΣΤΗΜΑΤΑ ΠΑΡΑΛΛΗΛΗΣ ΕΠΕΞΕΡΓΑΣΙΑΣ 9o εξάμηνο ΗΜΜΥ, ακαδημαϊκό έτος

Ατομική Διπλωματική Εργασία ΠΡΟΣΟΜΟΙΩΣΗ ΚΑΙ ΠΕΙΡΑΜΑΤΙΚΗ ΑΞΙΟΛΟΓΗΣΗ ΕΥΡΩΣΤΩΝ ΠΑΡΑΛΛΗΛΩΝ ΑΛΓΟΡΙΘΜΩΝ ΣΤΗΝ ΠΛΑΤΦΟΡΜΑ XMT.

ΠΛΕ- 074 Αρχιτεκτονική Υπολογιστών 2

Ασκήσεις στα Προηγμένα Θέματα Αρχιτεκτονικής Υπολογιστών

i Throughput: Ο ρυθμός ολοκλήρωσης έργου σε συγκεκριμένο χρόνο

Χρονοδρομολογητής Κυκλικής Επαναφοράς

Κεφάλαιο 3. Διδακτικοί Στόχοι

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1

Για τις λύσεις των προβλημάτων υπάρχει τρόπος εκτίμησης της επίδοσης (performance) και της αποδοτικότητας (efficiency). Ερωτήματα για την επίδοση

Κατανεμημένα Συστήματα

Υλοποίηση τεχνικών για την αποφυγή συμφόρησης σε τοπικά ασύρματα δίκτυα αισθητήρων

Chapter 4 (1) Αξιολόγηση και κατανόηση της απόδοσης

Λιβανός Γιώργος Εξάμηνο 2017Β

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών Απόδοση ΚΜΕ. (Μέτρηση και τεχνικές βελτίωσης απόδοσης)

ΠΑΡΑΛΛΗΛΗ ΕΠΕΞΕΡΓΑΣΙΑ

9. Συστολικές Συστοιχίες Επεξεργαστών

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

Παράλληλα Συστήματα. Γιώργος Δημητρίου. Ενότητα 3 η : Παράλληλη Επεξεργασία. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

Λειτουργικά Συστήματα (Λ/Σ)

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ << ΜΕΛΕΤΗ ΤΗΣ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ CUDA ΚΑΙ ΠΑΡΑΛΛΗΛΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΡΤΩΝ GPU ΤΗΣ NVIDIA >> Αρ. Μητρώου: 04/2519

Ανάλυση Επιδόσεων Συστημάτων Πραγματικού Χρόνου

Κεφάλαιο 5 Ανάλυση Αλγορίθμων

Προγραμματισμός Ι (HY120)

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών Κρυφές Μνήμες. (οργάνωση, λειτουργία και απόδοση)

Εικονική Μνήμη (1/2)

Προγραμματισμός συστημάτων UNIX/POSIX. Θέμα επιλεγμένο από τους φοιτητές: Προγραμματιστικές τεχνικές που στοχεύουν σε επιδόσεις

«Σχεδιασμός Ψηφιακών Συστημάτων σε FPGA» Εαρινό εξάμηνο

Πληροφορική Ι. Μάθημα 6 ο Εκτέλεση πράξεων, Αρχιτεκτονική Η/Υ. Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας

QuakeTM: Parallelizing a Complex Sequential Application Using Transactional Memory (Gajinov et al., 2009)

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΑΡΑΛΛΗΛΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΜΕ OpenMP (2 ο Μέρος)

Επιτεύγµατα των Λ.Σ.

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

Παράλληλοι Αλγόριθµοι

Ατομική Διπλωματική Εργασία ΠΡΟΣOΜΟΙΩΣΗ ΚΑΙ ΠΕΙΡΑΜΑΤΙΚΗ ΑΞΙΟΛΟΓΗΣΗ ΠΑΡΑΛΛΗΛΩΝ ΑΛΓΟΡΙΘΜΩΝ ΣΤΗΝ ΠΛΑΤΦΟΡΜΑ XMT. Άντρια Αναστασίου ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ

Μεθοδική Ανάπτυξη Δικτυακής Υποδομής. Παρουσίαση στην ημερίδα για Σύγχρονες τάσεις στις Τηλεπικοινωνίες και Τεχνολογίες Αιχμής

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1

Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας

Εισαγωγή στους Αλγόριθµους. Αλγόριθµοι. Ιστορικά Στοιχεία. Ο πρώτος Αλγόριθµος. Παραδείγµατα Αλγορίθµων. Τι είναι Αλγόριθµος

Παράλληλη Επεξεργασία Κεφάλαιο 7 ο Αρχιτεκτονική Συστημάτων Κατανεμημένης Μνήμης

Transcript:

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

Σύνοψη παρουσίασης Παράλληλες υπολογιστικές πλατφόρμες PRAM: Η ιδανική παράλληλη πλατφόρμα Η ταξινόμηση του Flynn Συστήματα κοινής μνήμης Συστήματα κατανεμημένης μνήμης Ανάλυση παράλληλων προγραμμάτων Μετρικές αξιολόγησης επίδοσης Ο νόμος του Amdahl Μοντελοποίηση παράλληλων προγραμμάτων Σχεδίαση παράλληλων προγραμμάτων Κατανομή υπολογισμών και δεδομένων Σχεδιασμός αλληλεπίδρασης ανάμεσα στα tasks Απεικόνιση των tasks σε διεργασίες (ή threads) Ενορχήστρωση της επικοινωνίας ή/και του συγχρονισμού 2

Σύνοψη παρουσίασης Παράλληλα προγραμματιστικά μοντέλα Κοινού χώρου διευθύνσεων Ανταλλαγής μηνυμάτων Παράλληλες προγραμματιστικές δομές SPMD fork / join task graphs parallel for Γλώσσες και εργαλεία POSIX threads, MPI, OpenMP, Cilk, Cuda, Γλώσσες PGAS Αλληλεπίδραση με το υλικό Συστήματα κοινής μνήμης Συστήματα κατανεμημένης μνήμης και υβριδικά 3

PRAM: Η ιδανική παράλληλη μηχανή Η θεωρητική ανάλυση και αξιολόγηση σειριακών αλγορίθμων βασίζεται στη χρήση ενός υπολογιστικού μοντέλου: Random Access Machine (RAM) Turing machine Γιατί να μην κάνουμε το ίδιο και για τους παράλληλους αλγόριθμους; Ας ορίσουμε μια παράλληλη υπολογιστική μηχανή που θα μας βοηθάει να αναλύουμε και να συγκρίνουμε παράλληλους αλγορίθμους: PRAM: Parallel Random Access Machine n υπολογιστικές μονάδες (n όσο μεγάλο απαιτεί το προς επίλυση πρόβλημα) Κοινή μνήμη απεριόριστου μεγέθους Ομοιόμορφη πρόσβαση στη μνήμη από όλους τους επεξεργαστές 4

PRAM: Ταυτόχρονη πρόσβαση σε δεδομένα Τι συμβαίνει όταν δύο επεξεργαστές αποπειρώνται να προσπελάσουν την ίδια θέση μνήμης ταυτόχρονα; 4 διαφορετικές προσεγγίσεις (διαφορετικά μοντέλα): Exclusive Read Exclusive Write (EREW): Κάθε θέση μνήμης μπορείς να αναγνωστεί/εγγραφεί από μόνο έναν επεξεργαστή (σε μια δεδομένη χρονική στιγμή) Αν συμβεί ταυτόχρονη πρόσβαση το πρόγραμμα τερματίζει Πρόκειται για πολύ περιοριστικό μοντέλο Concurrent Read Exclusive Write (CREW): Επιτρέπεται ταυτόχρονη ανάγνωση αλλά όχι εγγραφή Exclusive Read Concurrent Write (ERCW): Δεν παρουσιάζει θεωρητικό ή πρακτικό ενδιαφέρον Concurrent Read Concurrent Write (CRCW) Ισχυρή μηχανή που επιτρέπει ταυτόχρονες αναγνώσεις / εγγραφές Ταυτόχρονες εγγραφές: (common, arbitrary, priority, reduction) 5

PRAM: Προβλήματα Η πλατφόρμα PRAM κάνει κάποιες σοβαρές υπεραπλουστεύσεις που την απομακρύνουν από τις πραγματικές μηχανές: Απεριόριστος αριθμός επεξεργαστών (όσους έχει ανάγκη το πρόγραμμα) Απεριόριστο μέγεθος μνήμης Ομοιόμορφος χρόνος πρόσβασης στη μνήμη Για να συνδυαστούν τα παραπάνω απαιτείται ένα τεράστιας πολυπλοκότητας και κόστους δίκτυο διασύνδεσης με διακόπτες Τέτοια δίκτυα διασύνδεσης με την παρούσα τεχνολογία είναι ρεαλιστικά για λίγες δεκάδες επεξεργαστές Η θεωρητική ανάλυση σε ένα μοντέλο PRAM δεν μας δίνει ασφαλή συμπεράσματα για την εκτέλεση σε ένα πραγματικό παράλληλο σύστημα (π.χ. κοινής μνήμης) Το μοντέλο PRAM έχει θεωρητικό ενδιαφέρον και δεν χρησιμοποιείται στην πράξη 6

Flynn s taxonomy SISD Single Instruction Single Data SIMD Single Instruction Multiple Data MISD Multiple Instruction Single Data MIMD Multiple Instruction Multiple Data 7

Flynn s taxonomy 8

Κοινής μνήμης (shared memory) Παράλληλες αρχιτεκτονικές: Οργάνωση μνήμης UMA (Uniform memory access): Χρόνος προσπέλασης ανεξάρτητος του επεξεργαστή και της θέσης μνήμης NUMA (Non-uniform memory access): Χρόνος προσπέλασης εξαρτάται από τον επεξεργαστή και τη θέση μνήμης cc-numa (cache-coherent NUMA): NUMA με συνάφεια κρυφής μνήμης Κατανεμημένης μνήμης (distributed memory) Υβριδική 9

Αρχιτεκτονική κοινής μνήμης Οι επεξεργαστές έχουν κοινή μνήμη Κάθε επεξεργαστής διαθέτει τοπική ιεραρχία κρυφών μνημών Συνήθως η διασύνδεση γίνεται μέσω διαδρόμου μνήμης (memory bus) Αλλά και πιο εξελιγμένα δίκτυα διασύνδεσης Ομοιόμορφη ή μη-ομοιόμορφη προσπέλαση στη μνήμη (Uniform Memory Access UMA, Non-uniform Memory Access NUMA) Η κοινή μνήμη διευκολύνει τον παράλληλο προγραμματισμό Δύσκολα κλιμακώσιμη αρχιτεκτονική τυπικά μέχρι λίγες δεκάδες κόμβους (δεν κλιμακώνει το δίκτυο διασύνδεσης) $ CPU $ CPU... $ CPU Διάδρομος Μνήμης (memory bus) M 10

SMP vs NUMA Symmetric Multiprocessing (SMP) Uniform Memory Access (UMA) Non-Uniform Memory Access (NUMA) Images taken from: http://www.sqlskills.com/blogs/jonathan/understanding-non-uniform-memory-accessarchitectures-numa/ 11

Αρχιτεκτονική κατανεμημένης μνήμης Κάθε επεξεργαστής έχει τη δική του τοπική μνήμη και ιεραρχία τοπικών μνημών Διασυνδέεται με τους υπόλοιπους επεξεργαστές μέσω δικτύου διασύνδεσης Η κατανεμημένη μνήμη δυσκολεύει τον προγραμματισμό Η αρχιτεκτονική κλιμακώνει σε χιλιάδες υπολογιστικούς κόμβους Κόμβος 1 Κόμβος 2 Κόμβος Ν $ $ $ CPU CPU... CPU M M M Δίκτυο Διασύνδεσης (π.χ. Ethernet, Myrinet, SCI) 12

Υβριδική αρχιτεκτονική Συνδυάζει τις δύο παραπάνω αρχιτεκτονικές: κόμβοι με αρχιτεκτονική κοινής μνήμης διασυνδέονται με ένα δίκτυο διασύνδεσης σε αρχιτεκτονική κατανεμημένης μνήμης Τυπική αρχιτεκτονική των σύγχρονων συστοιχιών-υπερυπολογιστών, data centers και υποδομών cloud SMP κόμβος 1 SMP κόμβος 2 SMP κόμβος Ν $ CPU 0 $ $... CPU Κ CPU 0 $...... CPU Κ CPU 0 $... $ CPU Κ M M M Δίκτυο Διασύνδεσης (π.χ. Ethernet, Myrinet, SCI) 13

Χρόνος καλύτερου σειριακού αλγορίθμου: T s Χρόνος παράλληλου αλγορίθμου: T p Μετρικές αξιολόγησης επίδοσης: Επιτάχυνση (Speedup) Επιτάχυνση (speedup) S = T s / T p Δείχνει πόσες φορές πιο γρήγορο είναι το παράλληλο πρόγραμμα από το σειριακό linear (perfect) speedup σε p επεξεργαστές: p Τυπικά: S p Αν S > p superlinear speedup (πρέπει να το ερμηνεύσουμε προσεκτικά αν προκύψει στις μετρήσεις μας) 14

Αποδοτικότητα (efficiency) E = S / p Αποδοτικότητα (efficiency) και κλιμακωσιμότητα (scalability) Δείχνει πόσο επιτυχημένη είναι η παραλληλοποίηση τι ποσοστό του χρόνου κάθε επεξεργαστής κάνει χρήσιμη δουλειά Τυπικά Ε 1 H κλιμακωσιμότητα (scalability) εκφράζει ποιοτικά την ικανότητα ενός προγράμματος (συστήματος) να βελτιώνει την επίδοσή του με την προσθήκη επιπλέον επεξεργαστών (πόρων) Strong scaling: Κρατάμε το συνολικό μέγεθος του προβλήματος σταθερό Weak scaling: Κρατάμε το μέγεθος ανά επεξεργαστή σταθερό 15

Ο (αμείλικτος) νόμος του Amdahl Χρόνος καλύτερου σειριακού αλγορίθμου: T s f το κλάσμα του χρόνου ενός σειριακού προγράμματος που δεν παραλληλοποιείται Νόμος του Amdahl: T p S = = ft T T s p s = + f ( 1- f ) + 1 p T s ( 1- f ) p Έστω ότι ένα πρόγραμμα μπορεί να μοιραστεί σε 5 παράλληλες εργασίες εκ των οποίων η μία απαιτεί διπλάσιο χρόνο από τις υπόλοιπες 4 f = 1/6 Αν p = 5 (αναθέτουμε κάθε μία από τις παράλληλες εργασίες σε έναν επεξεργαστή) S = 3, E=0,6 Συνέπειες του νόμου του Amdahl: Παραλληλοποιούμε (και γενικά βελτιστοποιούμε) τμήματα του κώδικα που καταλαμβάνουν το μεγαλύτερο ποσοστό του χρόνου εκτέλεσης Αναζητούμε παραλληλία παντού! (π.χ. 1% σειριακός κώδικας μέγιστο speedup 100!) 16

Γιατί δεν κλιμακώνει το πρόγραμμά μου; 1. Δεν έχει παραλληλοποιήθεί το κατάλληλο τμήμα κώδικα (υπάρχει μεγάλο σειριακό κομμάτι, βλ. Νόμος του Amdahl) 2. Υπάρχει ανισοκατανομή φορτίου (load imbalance) 3. Κόστος συγχρονισμού / επικοινωνίας Μπορεί να οδηγήσει ακόμα και σε αύξηση του χρόνου εκτέλεσης 4. Συμφόρηση στο διάδρομο μνήμης (για αρχιτεκτονικές κοινής μνήμης) 17

1 st and 2 nd rule in code optimization Γενικοί κανόνες βελτιστοποίησης κώδικα 18

1 st and 2 nd rule in code optimization Γενικοί κανόνες βελτιστοποίησης κώδικα DON T DO IT! Because premature optimization is the root of all evil D. Knuth 19

Μοντελοποίηση επίδοσης Η μοντελοποίηση της επίδοσης είναι ιδιαίτερα δύσκολη σε ένα πολύπλοκο σύστημα όπως είναι η εκτέλεση μιας εφαρμογής σε μία παράλληλη πλατφόρμα Θέλουμε το μοντέλο να είναι απλό και ακριβές Συνήθως καθοδηγεί σχεδιαστικές επιλογές (π.χ. συγκρίνει διαφορετικές στρατηγικές) Συχνά αρκεί να έχουμε άνω και κάτω όρια στην επίδοση Ο παράλληλος χρόνος εκτέλεσης καταναλώνεται σε: Χρόνο υπολογισμού (T comp ) Χρόνο επικοινωνίας (T comm ) Άεργο χρόνο (Τ idle ) Παράλληλος χρόνος εκτέλεσης: Τ = T comp + T comm + T idle 20

Χρόνος υπολογισμών Κλασικό μοντέλο πρόβλεψης: Τ comp = ops * CPU speed (sec / op) Θεωρεί ότι η CPU μπορεί να τροφοδοτείται με δεδομένα από το υποσύστημα μνήμης Μοντέλο roofline Λαμβάνει υπόψη το bandwidth (bw σε byte/sec) του υποσυστήματος μνήμης Operational intensity (OI σε ops/byte) Τ comp = ops * max (CPU speed, 1/(ΟΙ * bw)) Συσχετίζει την εφαρμογή με την αρχιτεκτονική 21

Μοντέλο roofline Image taken from http://lorenabarba.com/news/new-paper-published-cise-journal 22

Χρόνος υπολογισμών Παράδειγμα: LU decomposition for(k = 0; k < N-1; k++) for(i = k+1; i < N; i++){ L[i] = A[i][k] / A[k][k]; for(j = k+1; j < N; j++) A[i][j] = A[i][j] - L[i]*A[j][i]; } Operations = N 3 / 3 πολλαπλασιασμοί, Ν 3 /3 προσθέσεις Μπορούμε να αγνοήσουμε τις προσθέσεις Operational intensity (ops/byte): Μας αφορούν δεδομένα που έρχονται από την κύρια μνήμη (όχι από την cache) Μπορούμε να αγνοήσουμε το διάνυσμα L Μέγεθος Α = 8*Ν 2 (θεωρούμε διπλή ακρίβεια, 8 bytes για κάθε στοιχείο του Α) Αν ο A χωράει στην cache: ΟΙ = (N 3 / 3) / (8*Ν 2 ) = Ν/24 muls/byte Αν ο Α >> cache size: Ας θεωρήσουμε ότι σε κάθε βήμα k ο Α φορτώνεται από τη μνήμη (γιατί δεν είναι τυπικά σωστό αυτό?). ΟΙ = 1/24 muls/byte 23

Χρόνος υπολογισμών Παράδειγμα: LU decomposition Έστω επεξεργαστής με: CPU speed 5*10 8 muls/sec ή 2*10-9 sec/mul (500MFlops) Bandwidth διαδρόμου μνήμης: 4GB/sec = 4*10 9 bytes /sec 4MB L2 cache N = 100 (ο Α χωράει στην cache, OI = 4,16 muls/byte) Παραδοσιακό μοντέλο: Τ comp = ops * CPU speed = 0.33*10 6 muls * 2*10-9 sec/mul = 0.66msec Μοντέλο roofline: T comp = ops * min (CPU speed, 1/(ΟΙ * memory bandwidth)) = 0.33*10 6 muls * max (2*10-9 sec/mul, (4,16 muls/byte * 4*10 9 bytes/sec) -1 )= 0.33*10 6 muls * max (2*10-9 sec/mul, 6*10-11 sec/mul) = 0.66msec N = 2000 (ο Α δεν χωράει στην cache, OI = 0,042 muls/byte) Παραδοσιακό μοντέλο: Τ comp = ops * CPU speed = 2.66*10 9 muls * 2 *10-9 sec/mul = 5.33sec Μοντέλο roofline: T comp = ops * max (CPU speed, 1/(ΟΙ * memory bandwidth)) = 2.66*10 9 muls * max (2 *10-9 sec/mul, (0,042 muls/byte* 4 *10 9 bytes /sec) -1 ) = 2.66*10 9 muls * max (2 *10-9 sec/mul, 5,95*10-9 ) = 15.9sec 24

Χρόνος επικοινωνίας Χρόνος επικοινωνίας (point to point): Startup time (t s ) Per-hop time (t h ) Per word transfer time (t w ) T comm = t s + lt h + mt w (l = number of hops, m = message size) Το lt h είναι συνήθως μικρό και μπορεί να ενσωματωθεί στο t s, άρα: T comm = t s + mt w Χρόνος επικοινωνίας (broadcast σε P κόμβους) P διαφορετικά μηνύματα T comm = P(t s + mt w ) Δενδρική υλοποίηση: T comm = log 2 P(t s + mt w ) 25

Παράδειγμα: Nearest-neighbor communication 2 διάστατο υπολογιστικό χωρίο L 1 * L 2 Κάθε επεξεργαστής επικοινωνεί με τους γειτονικούς του και ανταλλάζει τις οριακές επιφάνειες Ποια τοπολογία επεξεργαστών ελαχιστοποιεί το κόστος επικοινωνίας; 1D 2D 26

Παράδειγμα: Nearest-neighbor communication Αριθμός επεξεργαστών: P = 100 1D = 100*1 2D = 10*10 διπλή ακρίβεια (8 bytes) L 1 =10 4, L 2 = 10 3 t s = 6*10-6 sec bandwidth = 500MB/sec t w =1.9*10-9 sec/byte 1D 2D 2 γείτονες, 1 μήνυμα ανά γείτονα, 2 μηνύματα ανά διεργασία Μέγεθος μηνύματος: m=8l 2 = 8*10 3 bytes T comm = t s + mt w = 2 (6*10-6 sec + 8*10 3 bytes * 1.9*10-9 sec/byte) = 42.4usec 4 μηνύματα ανά διεργασία m 1 =8L 1 /10= 8*10 3 bytes, m 2 =8L 2 /10= 8*10 2 bytes T comm = t s + mt w = 4 (6*10-6 sec) + 2(8*10 3 bytes * 1.9*10-9 sec/byte) + 2(8*10 2 bytes * 1.9*10-9 sec/byte) = 24us + 30,4us + 3,04us = 57,4us 27

Χρόνος επικοινωνίας (στον πραγματικό κόσμο) Συστήματα μεγάλης κλίμακας με χιλιάδες κόμβους, δεκάδες πυρήνες ανά κόμβο Παράμετροι που επηρεάζουν την επικοινωνία: Μέγεθος μηνύματος Διαφορετικό bandwidth για μικρά/μεσαία/μεγάλα μηνύματα λόγω χρήσης διαφορετικού πρωτοκόλλου δικτύου Τοπικός ανταγωνισμός στο εσωτερικό του κόμβου για πρόσβαση στο δίκτυο Ανταγωνισμός στο δίκτυο κορμού Μπορεί να οφείλεται και σε άλλες εφαρμογές! Απόσταση μεταξύ των κόμβων που επικοινωνούν Εξαρτάται από τη διάθεση κόμβων από τον scheduler του συστήματος Αριθμός μηνυμάτων 28

Άεργος χρόνος Ο άεργος χρόνος μπορεί να μοντελοποιηθεί δύσκολα Προκύπτει συνήθως από ανισοκατανομή του φόρτου εργασίας (load imbalance) Μπορεί να οφείλεται σε αναμονή για δεδομένα Σε αυτή την περίπτωση μπορεί να μοντελοποιηθεί σας μέρος του t s στο χρόνο επικοινωνίας Συχνά δεν είναι απλό να διαχωριστεί από το χρόνο επικοινωνίας Π.χ. στην παρακάτω περίπτωση 2 διεργασιών που επικοινωνούν, δεν είναι ξεκάθαρο ποιο κομμάτι του χρόνου θα πρέπει να χαρακτηριστεί ως άεργος χρόνος και ποιο ως χρόνος επικοινωνίας 29

Σχεδιασμός παράλληλων προγραμμάτων Στόχος: Η μετατροπή ενός σειριακού αλγορίθμου σε παράλληλο Κατανομή υπολογισμών σε υπολογιστικές εργασίες (tasks) Διαμοιρασμός των δεδομένων Ορισμός ορθής σειράς εκτέλεσης (χρονοδρομολόγηση) Οργάνωση πρόσβασης στα δεδομένα (συγχρονισμός / επικοινωνία) Ανάθεση εργασιών (απεικόνιση) σε οντότητες εκτέλεσης (processes, threads) Δεν υπάρχει αυστηρά ορισμένη μεθοδολογία για το σχεδιασμό και την υλοποίηση παράλληλων προγραμμάτων It s more art than science Ιδανικά θα θέλαμε ο σχεδιασμός και η υλοποίηση να λαμβάνουν χώρα ανεξάρτητα. Στην πράξη υπάρχει αλληλεπίδραση, π.χ. τον σχεδιασμό επηρεάζουν: Η αρχιτεκτονική της πλατφόρμας εκτέλεσης Τα υποστηριζόμενα προγραμματιστικά μοντέλα Οι δυνατότητες του περιβάλλοντος υλοποίησης 30

Σχεδιασμός παράλληλων προγραμμάτων Μετρικές αξιολόγησης: Επίδοση του παραγόμενου κώδικα Επιτάχυνση Αποδοτικότητα Κλιμακωσιμότητα Παραγωγικότητα (code productivity) Χαμηλός χρόνος υλοποίησης Μεταφερσιμότητα (portability) Ευκολία στη συντήρηση (maintainability) Κατανάλωση ενέργειας / ισχύος 31

Στάδια σχεδιασμού Στάδιο 1: Κατανομή υπολογισμών και διαμοιρασμός δεδομένων Στάδιο 2: Ορισμός ορθής σειράς εκτέλεσης Στάδιο 3: Οργάνωση πρόσβασης στα δεδομένα Στάδιο 4: Ανάθεση εργασιών σε οντότητες εκτέλεσης 32

Στάδιο 1: Κατανομή υπολογισμών και διαμοιρασμός δεδομένων Στόχος: κατανομή και διαμοιρασμός σε υπολογιστικές εργασίες (tasks) Σε τι να εστιάσω πρώτα; Στους υπολογισμούς ή τα δεδομένα; 2 βασικές προσεγγίσεις: task centric: πρώτα μοιράζονται οι υπολογισμοί και στη συνέχεια τα δεδομένα data centric: πρώτα μοιράζονται τα δεδομένα και στη συνέχεια οι υπολογισμοί Και στις 2 περιπτώσεις θα προκύψουν εργασίες (tasks) και διαμοιρασμένα δεδομένα Παράδειγμα: Πολλαπλασιασμός πίνακα με διάνυσμα ( y = A * x ) task centric: π.χ. 1 task = υπολογισμός της τιμής του y i : Ποια δεδομένα χρειάζεται αυτό το task; data centric: π.χ. 1 task = 1 γραμμή του πίνακα Α Ποιοι υπολογισμοί εμπλέκουν τη συγκεκριμένη γραμμή; Ποια άλλα δεδομένα χρειάζεται το συγκεκριμένο task; Ειδική περίπτωση της task centric προσέγγισης είναι η function centric Η κατανομή γίνεται με βάση τις συναρτήσεις (διαφορετικές λειτουργίες/στάδια) Είναι κατάλληλη για εφαρμογές που αποτελούνται από διαδοχικά στάδια υπολογισμών που εφαρμόζονται σε ροές δεδομένων 33

Επιλογή στρατηγικής ανάλογα με τον αλγόριθμο Η task centric προσέγγιση είναι η πιο γενική Στάδιο 1: Κατανομή υπολογισμών και διαμοιρασμός δεδομένων Οι task centric και data centric μπορεί να οδηγήσουν σε ακριβώς την ίδια κατανομή Απαιτήσεις: Επίδοση Μεγιστοποίηση παραλληλίας Ελαχιστοποίηση επιβαρύνσεων λόγω διαχείρισης tasks, συγχρονισμού, επικοινωνίας Ισοκατανομή φορτίου Απλότητα Μικρός χρόνος υλοποίησης Ευκολία στην επέκταση και τη συντήρηση Ευελιξία (ανεξαρτησία από απαιτήσεις υλοποίησης) 34

Αναλογία: παρασκευή πίτσας Μάγειρας Processing element Υλικά (ζύμη, σάλτσα, τυρί, ) data Στόχος: παραλληλοποίηση της παρασκευής Ν ταψιών πίτσας Υπόθεση: Συνεργάζονται >1 μάγειρες task centric προσέγγιση: «μοιράζω τη δουλειά» 1 task = παρασκευή 1 ταψιού πίτσας data centric προσέγγιση: «μοιράζω τα δεδομένα (υλικά)» η κατανομή της δουλειάς προκύπτει σαν φυσικό επακόλουθο του διαμοιρασμού των δεδομένων μοιράζω τα υλικά σε τμήματα (π.χ. σε Κ μέρη, ή ανά μάγειρα, ή ανά πίτσα) function centric προσέγγιση: διαχωρίζω τις διαφορετικές δουλειές παρασκευή ζύμης, παρασκευή σάλτσας, προετοιμασία λοιπών υλικών, άπλωμα ζύμης, τοποθέτηση σάλτσας, 35

Rule of thumb Αλγόριθμοι σε κανονικές δομές δεδομένων (π.χ. regular computational grids, αλγεβρικοί πίνακες) ευνοούν τη data centric κατανομή: Πολλαπλασιασμός πινάκων (γενικά βασικές αλγεβρικές ρουτίνες) Επίλυση γραμμικών συστημάτων Stencil computations Όταν μπορεί να εφαρμοστεί, η data centric προσέγγιση οδηγεί σε κομψές λύσεις Δοκιμάζουμε πρώτα την data centric και αν δεν πετύχει, καταφεύγουμε στην task centric 36

Διαμοιρασμός κανονικών δομών 1-dimensional 2-dimensional + Απλή στην υλοποίηση - Περιοριστική (το task που προκύπτει εξαρτάται από το Ν του πίνακα) - Δυσκολότερη στην υλοποίηση + Πιο ευέλικτη (ο προγραμματιστής ελέγχει το μέγεθος του task) 37

Rule of thumb H task centric προσέγγιση αποτελεί λύση για πιο δυναμικούς αλγορίθμους σε ακανόνιστες δομές δεδομένων (irregular data structures) Αλγόριθμοι σε λίστες, δέντρα, γράφους, κλπ Αναδρομικοί αλγόριθμοι Event-based εφαρμογές 38

Rule of thumb H function centric προσέγγιση μπορεί να υιοθετηθεί όταν υπάρχουν διακριτές φάσεις και «ροή δεδομένων» Υπάρχει κάποιου είδους υποστήριξη στο υλικό για κάθε φάση Η παραλληλοποίηση σε κάθε φάση με την data centric προσέγγιση δεν οδηγεί σε ικανοποιητική αξιοποίηση των πόρων (π.χ. δεν κλιμακώνει στο διαθέσιμο αριθμό πυρήνων λόγω συμφόρησης στο διάδρομο μνήμης) 39

Rule of thumb H function centric προσέγγιση μπορεί να υιοθετηθεί όταν υπάρχουν διακριτές φάσεις και «ροή δεδομένων» Υπάρχει κάποιου είδους υποστήριξη στο υλικό για κάθε φάση Η παραλληλοποίηση σε κάθε φάση με την data centric προσέγγιση δεν οδηγεί σε ικανοποιητική αξιοποίηση των πόρων (π.χ. δεν κλιμακώνει στο διαθέσιμο αριθμό πυρήνων λόγω συμφόρησης στο διάδρομο μνήμης) data centric: π.χ. 32 threads ανά φάση load image scale image filter image display image 40

Rule of thumb H function centric προσέγγιση μπορεί να υιοθετηθεί όταν υπάρχουν διακριτές φάσεις και «ροή δεδομένων» Υπάρχει κάποιου είδους υποστήριξη στο υλικό για κάθε φάση Η παραλληλοποίηση σε κάθε φάση με την data centric προσέγγιση δεν οδηγεί σε ικανοποιητική αξιοποίηση των πόρων (π.χ. δεν κλιμακώνει στο διαθέσιμο αριθμό πυρήνων λόγω συμφόρησης στο διάδρομο μνήμης) data centric: π.χ. 32 threads ανά φάση load image scale image filter image Αν κάθε φάση κλιμακώνει μέχρι τα 8 threads, έχουμε προφανή σπατάλη πόρων display image 41

Rule of thumb H function centric προσέγγιση μπορεί να υιοθετηθεί όταν υπάρχουν διακριτές φάσεις και «ροή δεδομένων» Υπάρχει κάποιου είδους υποστήριξη στο υλικό για κάθε φάση Η παραλληλοποίηση σε κάθε φάση με την data centric προσέγγιση δεν οδηγεί σε ικανοποιητική αξιοποίηση των πόρων (π.χ. δεν κλιμακώνει στο διαθέσιμο αριθμό πυρήνων λόγω συμφόρησης στο διάδρομο μνήμης) load image (#4) 8 threads scale image (#3) 8 threads filter image (#2) 8 threads display image (#1) 8 threads 42

Παράδειγμα: Εξίσωση θερμότητας Αλγόριθμος του Jacobi (2-διάστατο πλέγμα Χ * Υ) A[step+1][i][j] = 1/5 (A[step][i][j] + A[step][i-1][j] + A[step][i+1][j] + A[step][i][j-1] + A[step][i][j+1]) Data centric Μοιράζουμε τα δεδομένα ανά σημείο / γραμμή / στήλη / μπλοκ Κάθε task αναλαμβάνει να υπολογίσει την τιμή σε κάθε διαμοιρασμένο δεδομένο Task centric 1 task = υπολογισμός θερμότητας για κάθε σημείο του χωρίου 1 task = υπολογισμός θερμότητας για κάθε χρονικό βήμα 1 task = υπολογισμός θερμότητας για μία γραμμή / στήλη / block του δισδιάστατου πλέγματος για όλες τις χρονικές στιγμές 1 task = υπολογισμός θερμότητας για μία γραμμή / στήλη / block του δισδιάστατου πλέγματος για μία χρονική στιγμή Κατανομή δεδομένων: Κάθε task κατέχει (owns) τα δεδομένα που γράφει 43

Χαρακτηρισμός δεδομένων Τα δεδομένα του προβλήματος μπορούν να ανατεθούν ως: Μοιραζόμενα δεδομένα (shared data): Μπορεί να υποστηριχθεί μόνο από προγραμματιστικά μοντέλα κοινού χώρου διευθύνσεων Αποτελεί ένα πολύ βολικό τρόπο «κατανομής» Χρειάζεται ιδιαίτερη προσοχή για τον εντοπισμό race conditions Κατανεμημένα δεδομένα (distributed data): Τα δεδομένα κατανέμονται ανάμεσα στα tasks Αποτελεί τη βασική προσέγγιση στα προγραμματιστικά μοντέλα ανταλλαγής μηνυμάτων Επιβάλλει επιπλέον προγραμματιστικό κόστος Αντιγραμμένα δεδομένα (replicated data): Για αντιγραφή μικρών read-only δομών δεδομένων Για αντιγραφή υπολογισμών 44

Στάδιο 2: Ορισμός ορθής σειράς εκτέλεσης Οι εργασίες που δημιουργήθηκαν στο προηγούμενο στάδιο πρέπει να μπουν στη σωστή σειρά ώστε να εξασφαλίζεται η ίδια σημασιολογία με το σειριακό πρόγραμμα Το στάδιο αυτό συχνά αναφέρεται και ως χρονοδρομολόγηση = ανάθεση εργασιών σε χρονικές στιγμές Απαιτείται εντοπισμός των εξαρτήσεων ανάμεσα στις εργασίες και κατάστρωση του γράφου των εξαρτήσεων (task dependence graph) 45

Εξαρτήσεις Εξαρτήσεις δεδομένων υπάρχουν ήδη από το σειριακό πρόγραμμα Εξάρτηση υπάρχει όταν 2 εντολές αναφέρονται στα ίδια δεδομένα (θέση μνήμης) 4 είδη εξαρτήσεων Read-After-Write (RAW) ή true dependence Write-After-Read (WAR) ή anti dependence Write-After-Write (WAW) ή output dependence Read-After-Read (not really a dependence) Η παράλληλη εκτέλεση πρέπει να σεβαστεί τις εξαρτήσεις του προβλήματος Η κατανομή των δεδομένων στα tasks δημιουργεί κατά κανόνα εξαρτήσεις ανάμεσα στα tasks (π.χ. το task1 πρέπει να διαβάσει δεδομένα που παράγει το task2) Διατήρηση των εξαρτήσεων: σειριοποίηση μεταξύ tasks 46

Γράφος εξαρτήσεων (task dependence graph) Ή απλά task graph Κορυφές: tasks Label κορυφής: κόστος υπολογισμού του task Ακμές: εξαρτήσεις ανάμεσα στα tasks Βάρος ακμής: όγκος δεδομένων που πρέπει να μεταφερθούν (στην περίπτωση της επικοινωνίας) 47

Task graphs: βασικές ιδιότητες Τ 1 : Συνολική εργασία (work), ο χρόνος που απαιτείται για την εκτέλεση σε 1 επεξεργαστή T p : Χρόνος εκτέλεσης σε p επεξεργαστές Κρίσιμο μονοπάτι (critical path): Το μέγιστο μονοπάτι ανάμεσα στην πηγή και τον προορισμό του γράφου T : Χρόνος εκτέλεσης σε επεξεργαστές (span) και χρόνος εκτέλεσης του κρίσιμου μονοπατιού Ισχύει: T p T 1 / p T p T Μέγιστο speedup T 1 / T 48

Εξαρτήσεις στην εξίσωση θερμότητας 1 task = υπολογισμός θερμότητας για κάθε σημείο του χωρίου A[step+1][i][j] = 1/5 (A[step][i][j] + A[step][i-1][j] + A[step][i+1][j] + A[step][i][j-1] + A[step][i][j+1]) 49

Εξαρτήσεις στην εξίσωση θερμότητας 1 task = υπολογισμός θερμότητας για κάθε χρονικό βήμα Δεν υπάρχουν ταυτόχρονα tasks! A[step+1][i][j] = 1/5 (A[step][i][j] + A[step][i-1][j] + A[step][i+1][j] + A[step][i][j-1] + A[step][i][j+1]) 50

Εξαρτήσεις στην εξίσωση θερμότητας 1 task = υπολογισμός θερμότητας για μία γραμμή του δισδιάστατου πλέγματος για όλες τις χρονικές στιγμές Δεν υπάρχει έγκυρη παράλληλη εκτέλεση! A[step+1][i][j] = 1/5 (A[step][i][j] + A[step][i-1][j] + A[step][i+1][j] + A[step][i][j-1] + A[step][i][j+1]) 51

Εξαρτήσεις στην εξίσωση θερμότητας 1 task = υπολογισμός θερμότητας για μία γραμμή του δισδιάστατου πλέγματος για μία χρονική στιγμή A[step+1][i][j] = 1/5 (A[step][i][j] + A[step][i-1][j] + A[step][i+1][j] + A[step][i][j-1] + A[step][i][j+1]) 52

Στάδιο 3: Οργάνωση πρόσβασης στα δεδομένα Η κατανομή των υπολογισμών και των δεδομένων καθώς και ο χαρακτηρισμός τους δημιουργεί ανάγκες για επικοινωνία και συγχρονισμό Επικοινωνία: Κατανεμημένα δεδομένα 1 task χρειάζεται να διαβάσει δεδομένα που κατέχει ένα άλλο task Είτε εξαιτίας του γράφου εξαρτήσεων (παράχθηκαν κατά την εκτέλεση σε άλλο task) Είτε επειδή βρίσκονται αποθηκευμένα σε άλλο task (π.χ. από την αρχική κατανομή) Σημείο-προς-σημείο και συλλογική Καθορισμός ποια δεδομένα πρέπει να αποσταλούν, σε ποιες εργασίες και πότε 53

Στάδιο 3: Οργάνωση πρόσβασης στα δεδομένα Η κατανομή των υπολογισμών και των δεδομένων καθώς και ο χαρακτηρισμός τους δημιουργεί ανάγκες για επικοινωνία και συγχρονισμό Συγχρονισμός: Απαιτείται είτε λόγω του γράφου εξαρτήσεων (σειριοποίηση) είτε λόγω καταστάσεων συναγωνισμού (race conditions) Σειριοποίηση: Barriers, condition variables, semaphores Εντοπισμός καταστάσεων συναγωνισμού και εισαγωγή κατάλληλου σχήματος ελέγχου ταυτόχρονης πρόσβασης (concurrency control) Αμοιβαίος αποκλεισμός: Critical section, Locks, readers-writers Lock-free προσεγγίσεις Transactional memory 54

Στάδιο 4: Ανάθεση εργασιών σε οντότητες εκτέλεσης Το στάδιο αυτό αναλαμβάνει να αναθέσει εργασίες (tasks) σε οντότητες εκτέλεσης (process, tasks, κλπ) O τρόπος με τον οποίο ανατίθενται τα tasks σε οντότητες εκτέλεσης μπορεί να επηρεάσει σημαντικά την εκτέλεση: Παραλληλισμός και ισοκατανομή φορτίου Τοπικότητα δεδομένων Κόστος συγχρονισμού και επικοινωνίας 55

56 Στάδιο 4: Ανάθεση εργασιών σε οντότητες εκτέλεσης

Στάδιο 4: Ανάθεση εργασιών σε οντότητες εκτέλεσης Επικοινωνία / συγχρονισμός που είχε προβλεφθεί στο προηγούμενο βήμα μπορεί να απαλειφτεί 57

Στατική vs. Δυναμική ανάθεση εργασιών Στατική απεικόνιση: Διαμοιρασμός των tasks σε threads πριν την έναρξη της εκτέλεσης Καλή πρακτική: Αν η εφαρμογή το επιτρέπει, συνηθίζουμε να έχουμε 1 task / thread (προσαρμόζοντας κατάλληλα το σχεδιασμό μας και στο Στάδιο 1) Κατάλληλη στρατηγική για εφαρμογές με: ομοιόμορφη και γνωστή εξαρχής κατανομή φορτίου (π.χ. regular task graph) ανομοιόμορφη αλλά προβλέψιμη κατανομή φορτίου Πλεονεκτήματα : Απλή στην υλοποίηση Καλή επίδοση για «κανονικές εφαρμογές» Μηδενικό overhead Μειονεκτήματα: Κακή επίδοση για δυναμικές και ακανόνιστες εφαρμογές 58

Στατική vs. Δυναμική απεικόνιση tasks Δυναμική απεικόνιση: Διαμοιρασμός των tasks σε threads κατά την εκτέλεση Κατάλληλη στρατηγική για εφαρμογές με: Ακανόνιστο γράφο εργασιών μη προβλέψιμο φορτίο δυναμικά δημιουργούμενα tasks Πλεονεκτήματα: Εξισορρόπηση φορτίου σε δυναμικές και ακανόνιστες εφαρμογές Μειονεκτήματα: Δύσκολη στην υλοποίηση (συνήθως το αναλαμβάνει το run-time σύστημα) Μπορεί να δημιουργήσει bottleneck σε περίπτωση υλοποίησης με ένα κεντρικό scheduling thread (απαιτούνται κατανεμημένοι αλγόριθμοι) 59

Σχετικά ζητήματα απεικόνισης (δρομολόγησης) Δρομολόγηση εργασιών σε ένα υπερυπολογιστικό σύστημα N κόμβοι, c πυρήνες ανά κόμβο Κ jobs, κάθε job i ζητάει Ν i κόμβους και c i πύρήνες Στατικές προσεγγίσεις Δρομολόγηση παράλληλων εφαρμογών σε επίπεδο λειτουργικού Πολυπύρηνο σύστημα Κ εφαρμογές με διαφορετικός αριθμό από threads η κάθε μία Οι τρέχουσες προσεγγίσεις δεν είναι ικανοποιητικές Δρομολόγηση των tasks μίας παράλληλης εφαρμογής σε ένα πολυπύρηνο σύστημα Επαναλήψεις ενός παράλληλου loop Tasks μίας παράλληλης εφαρμογής 60

data centric, στατική απεικόνιση 1-dim 2-dim (block) sequential cyclic sequential cyclic 61

Παράδειγμα: Επιλογή απεικόνισης για LU και stencil //LU decomposition kernel for(k=0; k<n-1; k++) for(i=k+1; i<n; i++){ L[i] = A[i][k] / A[k][k]; for(j=k+1; j<n; j++) A[i][j]=A[i][j]-L[i]*A[j][i]; } //stencil for (t=1; t<t; t++){ for (i=1; i<x; i++) for (j=1; j<y; j++) A[t][i][j] = 0.2*(A[t-1][i][j] + A[t-1][i-1][j] + A[t-1][i+1][j] + A[t-1][i][j-1] + A[t-1][i][j]); } 62

Σύνοψη σχεδιασμού παράλληλων προγραμμάτων Δεν υπάρχει ξεκάθαρη μεθοδολογία παραλληλοποίησης προγραμμάτων Δύο σημαντικά βήματα (συχνά όχι σειριακά): Σχεδιασμός (σκέψη) Στάδιο 1: Κατανομή υπολογισμών και διαμοιρασμός δεδομένων Στάδιο 2: Ορισμός ορθής σειράς εκτέλεσης Στάδιο 3: Οργάνωση πρόσβασης στα δεδομένα Στάδιο 4: Ανάθεση εργασιών σε οντότητες εκτέλεσης Στη συνέχεια: Υλοποίηση (ομιλία) Έκφραση παραλληλίας Επιλογή προγραμματιστικού μοντέλου και εργαλείων 63