Κατανεμημένος και Παράλληλος Προγραμματισμός Ηλίας Κ. Σάββας Αναπληρωτής Καθηγητής Τμήμα Μηχανικών Πληροφορικής ΤΕ, ΤΕΙ Θεσσαλίας Email: savvas@teilar.gr Ύλη μαθήματος. Εισαγωγή στον κατανεμημένο προγραμματισμό. Παράλληλοι αλγόριθμοι. Παράλληλος προγραμματισμός (MPI). Κατανεμημένος προγραμματισμός (HDFS, MapReduce, ). Μελλοντικές τάσεις. 2 Βιβλιογραφία Μαθήματος Peter S. Pacheco, Εισαγωγή στον Παράλληλο Προγραμματισμό", Εκδόσεις Κλειδάριθμος, 2015 Γραμματή Πάντζιου, Βασίλειος Μάμαλης, Αλέξανδρος Τομαράς,, ΕΚΔΟΣΕΙΣ ΝΕΩΝ ΤΕΧΝΟΛΟΓΙΩΝ ΜΟΝ. Gropp, E.Lusk, A. Skjellum, Using MPI: Portable Parallel Programming with the Message-Passing Interface, 1999, The MIT Press MPICH documentation, https://www.mpich.org/documentation/guides/ Eclass: https://e-class.teilar.gr/courses/mcs1100/ World Wide Web!!! 3 1
Εξέταση μαθήματος Ένα τεστ (8 η εβδομάδα) Μία τεχνική αναφορά / εργασία (5 η εβδομάδα, διάρκεια 4 εβδομάδες, 6-10 σελίδες): 25 μονάδες η τεχνική αναφορά 5 μονάδες η παρουσίαση 20 μονάδες το τεστ Τελική εξέταση: 50 μόρια Σύνολο: 100 μόρια Εισαγωγή στον παράλληλο προγραμματισμό 4 Ενότητα # 01 - ύλη Η ανάγκη για παραλληλία. Ο νόμος του Moore. Ο νόμος του Amdahl. DAG και Gant chart. Η ταξινόμηση κατά Flynn. Ορολογία. Παράλληλες αρχιτεκτονικές βασισμένες στην μνήμη. 5 Παραλληλία Η δυνατότητα εκτέλεσης τμημάτων ενός προγράμματος παράλληλα. Στόχος η ελαχιστοποίηση του χρόνου εκτέλεσης (όλων των εργασιών που υποβλήθηκαν στο σύστημα). Σημαντική ερώτηση: Πόσο μεγάλα πρέπει να είναι τα τμήματα του προγράμματος; Μεγάλα (coarse grain): Μεγάλος υπολογιστικός χρόνος / μικρός χρόνος επικοινωνίας. Μικρά (fine grain): Μικρός υπολογιστικός χρόνος / μεγάλος χρόνος επικοινωνίας. 6 2
Προβλήματα / Μειονεκτήματα Δύσκολη ανάπτυξη αλγορίθμων (ο εγκέφαλος μας σκέφτεται σειριακά): Δύσκολος προσδιορισμός και αλληλεπίδραση των παράλληλων τμημάτων. Δύσκολη ανάπτυξη λογισμικού: Έλλειψη προτύπων, προγραμματιστικών μοντέλων, και εργαλείων ανάπτυξης λογισμικού. Προβλήματα υλικού: Οι σημερινοί παράλληλοι αλγόριθμοι μπορεί να μην είναι χρήσιμοι στα μελλοντικά παράλληλα συστήματα. Η επικοινωνία και συγχρονισμός μεταξύ των παράλληλων τμημάτων αποτελούν το μεγαλύτερο εμπόδιο στην επίτευξη καλής επίδοσης ενός παράλληλου προγράμματος. 7 Η ανάγκη για ταχύτητα Πολύ σύνθετα προβλήματα: Επιστήμη (πρόβλεψη τυφώνων και κλίματος, αντίληψη βιοχημικών διαδικασιών σε ζώντες οργανισμούς, ). Μηχανική (μοντελοποίηση σεισμών, μοριακή νανοτεχνολογία, μοντελοποίηση μόλυνσης περιβάλλοντος και αποκατάστασής της, ). Επιχειρήσεις (εξόρυξη γνώσης, ανάκτηση πληροφορίας,..). Άμυνα (κρυπτογραφία, κυβερνοπόλεμος, ). Και πολλά άλλα. 8 Ο νόμος του Moore Gordon Moore, συνιδρυτής της Intel Corporation: 1965: από τότε που εφευρέθηκε το ολοκληρωμένο κύκλωμα ο αριθμός των transistors/inch 2 σε αυτά τα κυκλώματα σχεδόν διπλασιάζονταν κάθε χρόνο. Αυτή η τάση θα μπορούσε να συνεχιστεί και στο μέλλον. Αλλά από το 1975 ο παραπάνω νόμος άλλαξε (πάλι από τον Moore) καθώς ο διπλασιασμός γίνεται περίπου κάθε 18 μήνες. 9 3
Εκατομμύρια 2/27/2016 Ο νόμος του Moore στην αυτοκινητοβιομηχανία Κατανάλωση: >1,000,000 km / lt βενζίνης Ταχύτητα: >1,000,000 km/h Κόστος: εάν βγαίναμε για ψώνια ή διασκέδαση με το αυτοκίνητό μας θα ήταν προτιμότερο να πετάξουμε την Porsche ή την Rolls Royse μας παρά να την παρκάρουμε 10 Η άνοδος της παραλληλίας Η άφιξη των petascale συστημάτων (Petaflops=10 15 floating points λειτουργιών το δευτερόλεπτο). LANL RoadRunner: υβριδική αρχιτεκτονική (6.562 dual-core AMD Opteron processors και 12,240 Cell B.E. processors). Υψηλότερη απόδοση (peak performance) ~ 1.4 petaflop (http://en.wikipedia.org/wiki/ibm_roadr unner). ORNL Jaguar system: 6-core 2.6GHz AMD Opteron processors με πάνω από 224K processor cores. Υψηλότερη απόδοση (peak performance) ~ 2.3 petaflop (http://en.wikipedia.org/wiki/jaguar_%28 supercomputer%29). 11 Είναι η επιτάχυνση των παράλληλων προγραμμάτων γραμμική; Δηλαδή, εάν διπλασιασθούν οι διαθέσιμοι υπολογιστικοί πόροι θα υποδιπλασιασθεί και ο χρόνος εκτέλεσης; ΌΧΙ! Αυτό θα ήταν το βέλτιστο. Επιτάχυνση 120 100 80 60 40 20 0 Χρόνος Εκτέλεσης 1 2 4 8 16 32 64 128 # of CPUs 12 4
Ο νόμος του Amdahl (1 από 2) Ακόμη και ένα μικρό τμήμα ενός προγράμματος το οποίο δεν μπορεί να παραλληλισθεί θα μειώσει την συνολική επιτάχυνση λόγω του μη παραλληλισμού του όλου προγράμματος. Σχεδόν όλα τα προβλήματα εμπεριέχουν τμήματα που μπορούν να παραλληλισθούν αλλά και τμήματα που δεν μπορούν. Αυτή η παρατήρηση δίνεται από τον ακόλουθο τύπο: 13 Ο νόμος του Amdahl (2 από 2) S 1 1 P S: η επιτάχυνση του προγράμματος (σε σχέση με το σειριακό αντίστοιχο πρόγραμμα) P: το τμήμα του προγράμματος που μπορεί να παραλληλιστεί. Παράδειγμα: Εάν το τμήμα του προγράμματος που δεν μπορεί να παραλληλιστεί είναι 20% του συνολικού προγράμματος: 1 S 1 0.8 1 0.2 5 Επομένως ότι και να γίνει δεν μπορεί να επιταχυνθεί πάνω από 5 φορές! 14 Προσανατολισμένος άκυκλος γράφος Ένας προσανατολισμένος άκυκλος γράφος (Directed Acyclic Graph DAG) μπορεί να αναπαραστήσει τις σχέσεις προτεραιότητας μεταξύ των τμημάτων ενός προγράμματος. Παράδειγμα: έστω ότι το πρόγραμμα t αποτελείται από 10 τμήματα, t={t1,t2,,t10} (DAG δεξιό σχήμα). Επομένως μπορούν να χρησιμοποιηθούν το πολύ 3 επεξεργαστικές μονάδες. t 7 t 1 t 2 t 3 t 4 t 5 t 6 t 8 t 10 Τα τμήματα t 4, t 5, t 6 μπορούν να εκτελεσθούν παράλληλα; t 9 15 5
Διάγραμμα Gantt (1) Το διάγραμμα Gantt είναι ένα οριζόντιο ιστόγραμμα που αναπτύχθηκε ως εργαλείο ελέγχου παραγωγής το 1917 Pαρέχει μια γραφική απεικόνιση ενός έργου που βοηθά το σχεδιασμό, τον συντονισμό και την εξειδίκευση των εργασιών σε ένα έργο. Kατασκευάζεται με έναν οριζόντιο άξονα που αντιπροσωπεύει τη συνολική χρονική έκταση του έργου, που χωρίζεται σε διαστήματα (π.χ., ημέρες, εβδομάδες, ή μήνες) και ένα κάθετο άξονα που αντιπροσωπεύει τις εργασίες που αποτελούν το έργο. (πηγή: Wikipedia) 16 Διάγραμμα Gantt (2) 17 Προσανατολισμένος άκυκλος γράφος Ένας προσανατολισμένος άκυκλος γράφος (Directed Acyclic Graph DAG) μπορεί να αναπαραστήσει τις σχέσεις προτεραιότητας μεταξύ των τμημάτων ενός προγράμματος. Παράδειγμα: έστω ότι το πρόγραμμα t αποτελείται από 10 τμήματα, t={t1,t2,,t10} (DAG δεξιό σχήμα). Επομένως μπορούν να χρησιμοποιηθούν το πολύ 3 επεξεργαστικές μονάδες. t 7 t 1 t 2 t 3 t 4 t 5 t 6 t 8 t 10 Τα τμήματα t 4, t 5, t 6 μπορούν να εκτελεσθούν παράλληλα; t 9 18 6
t 4, t 5, t 6 : και ναι και όχι τμήματα t 10 t 1 3 2 1 4 t2 t3 6 5 9 8 7 10 Gantt Chart χρόνος 19 Αρχιτεκτονικές (ταξινόμηση κατά Flynn) Κατά τον Michael Flynn (Stanford university) ορίστηκαν 4 κατηγορίες παράλληλων συστημάτων σε σχέση με το πλήθος των παράλληλων τμημάτων ενός προγράμματος αλλά και σε σχέση με τα δεδομένα που πρόκειται να χρησιμοποιήσει ένα πρόγραμμα. 20 SISD SISD: Single Instruction stream Single Data stream (ένα σύνολο οδηγιών εντολών οι οποίες επιδρούν σε ένα σύνολο δεδομένων). Αποτελεί τον τυπικό υπολογιστή. Παράδειγμα: for (i=0; i<n; i++) C[i] = A[i] + B[i]; Οδηγίες: ο βρόγχος του for και η πρόσθεση. Δεδομένα: τα στοιχεία των πινάκων Α και Β. Ένας επεξεργαστής θα εκτελέσει όλες τις οδηγίες και θα χειρισθεί όλα τα δεδομένα. Οδηγίες Επεξεργαστής Δεδομένα 21 7
SIMD (1 από 3) SIMD: Single Instruction stream Multiple Data stream (ένα σύνολο οδηγιών εντολών οι οποίες επιδρούν σε πολλά διαφορετικά σύνολα δεδομένων). Πολλές υπολογιστικές μονάδες οι οποίες όμως χρησιμοποιούν το ίδιο σύνολο οδηγιών αλλά επιδρούν σε διαφορετικά σύνολα δεδομένων ο καθένας. Ίσως το πιο πολύ χρησιμοποιημένο μοντέλο. 22 SIMD (2 από 3) Επεξ/στής 1 Δεδομένα 1 Οδηγίες Επεξ/στής k Δεδομένα k Επεξ/στής N Δεδομένα N 23 SIMD (3 από 3) Παράδειγμα: Do in parallel: Proc. 0: for (i=0; i<n/2; i++) C[i] = A[i] + B[i]; Proc. 1: for (i=n/2; i<n; i++) C[i] = A[i] + B[i]; Οδηγίες: ο βρόγχος του for και η πρόσθεση. Δεδομένα: τα στοιχεία των πινάκων Α και Β (τα μισά ανά επεξεργαστή). Δύο επεξεργαστές εκτελούν όλες τις οδηγίες αλλά σε διαφορετικά δεδομένα 24 8
MISD (1 από 3) ΜISD: Multiple Instruction stream Single Data stream (πολλαπλά σύνολα οδηγιών εντολών οι οποίες επιδρούν σε ένα σύνολο δεδομένων). Πολλές υπολογιστικές μονάδες οι οποίες όμως χρησιμοποιούν το ίδιο σύνολο δεδομένων. 25 MISD (2 από 3) Επεξ/στής 1 Οδηγίες 1 Δεδομένα Επεξ/στής k Οδηγίες k Επεξ/στής N Οδηγίες N Πολλοί επεξεργαστές με διαφορετικό σύνολο οδηγιών ο καθένας τους οι οποίοι χρησιμοποιούν το ίδιο σύνολο δεδομένων. 26 MISD (3 από 3) Παράδειγμα: Do in parallel: Proc. 0: for (i=0; i<n; i++) C[i] = A[i] + B[i]; Proc. 1: for (i=0; i<n; i++) D[i] = A[i] * B[i]; Οδηγίες: ο βρόγχος του for και η πρόσθεση (proc. 0) και πολλαπλασιασμός (proc. 1). Δεδομένα: τα στοιχεία των πινάκων Α και Β. Δύο επεξεργαστές εκτελούν διαφορετικές οδηγίες αλλά στα ίδια δεδομένα 27 9
MIΜD (1 από 3) ΜIΜD: Multiple Instruction stream Multiple Data stream (πολλαπλά σύνολα οδηγιών εντολών οι οποίες επιδρούν και σε διαφορετικά σύνολο δεδομένων). Πολλές υπολογιστικές μονάδες οι οποίες όμως χρησιμοποιούν διαφορετικά σύνολα δεδομένων η καθεμία τους. 28 MIΜD (2 από 3) Οδηγίες 1 Επεξ/στής 1 Δεδομένα 1 Οδηγίες k Επεξ/στής k Δεδομένα k Οδηγίες N Επεξ/στής N Δεδομένα N Πολλοί επεξεργαστές οι οποίοι εκτελούν διαφορετικές οδηγίες και επιδρούν σε διαφορετικά δεδομένα. Ο πλέον χαρακτηριστικός τύπος παράλληλου υπολογιστή. 29 MIΜD (3 από 3) Παράδειγμα: Do in parallel: Proc. 0: for (i=0; i<n/2; i++) C[i] = A[i] + B[i]; Proc. 1: for (i=ν/2; i<ν; i++) D[i] = A[i] * B[i]; Οδηγίες: ο βρόγχος του for και η πρόθεση (proc. 0) και πολλαπλασιασμός (proc. 1). Δεδομένα: τα στοιχεία των πινάκων Α και Β (διαφορετικά τμήματα ανά επεξεργαστή). Δύο επεξεργαστές εκτελούν διαφορετικές οδηγίες σε διαφορετικά δεδομένα 30 10
Παράδειγμα: SISD Ένας τυπικός σειριακός (μη παράλληλος) υπολογιστής. Εκτελεί ένα σύνολο οδηγιών. Επιδρά σε ένα σύνολο δεδομένων. Ντετερμινιστική εκτέλεση. Το παλαιότερο και ακόμη και σήμερα το πιο τυπικό υπολογιστικό σύστημα. 31 Παράδειγμα: SIMD Ένα σύνολο οδηγιών το οποίο όμως εκτελείται από πολλούς επεξεργαστές. Όλοι οι επεξεργαστές επιδρούν σε διαφορετικά σύνολα δεδομένων. Στους σύγχρονους υπολογιστές, ειδικά σε αυτούς με επεξεργαστές γραφικών (graphic processors units GPUs) χρησιμοποιούν το μοντέλο SIMD. 32 Παράδειγμα: MISD Κάθε επεξεργαστής εκτελεί διαφορετικά σύνολα οδηγιών. Όλοι οι επεξεργαστές επιδρούν στο ίδιο σύνολο δεδομένων. Παράδειγμα: πολλοί και διαφορετικοί κρυπτογραφικοί αλγόριθμοι οι οποίοι προσπαθούν να αποκρυπτογραφήσουν το ίδιο κρυπτογραφημένο μήνυμα. 33 11
Παράδειγμα: MIMD Κάθε επεξεργαστής εκτελεί διαφορετικά σύνολα οδηγιών. Όλοι οι επεξεργαστές επιδρούν σε διαφορετικά σύνολα δεδομένων. Η εκτέλεση μπορεί να είναι σύγχρονη ή ασύγχρονη, ντετερμινιστική η μη ντετερμινιστική. 34 Ορολογία (1 από 3) Τμήμα task: Ένα λογικό και διακριτό τμήμα μίας υπολογιστικής εργασίας. Παράλληλο τμήμα - parallel task: Υπολογιστικό τμήμα το οποίο μπορεί να εκτελεστεί από πολλούς επεξεργαστές με ασφάλεια. Επικοινωνίες communications: Δεδομένα που ανταλλάσσονται μεταξύ των παράλληλων τμημάτων. Συγχρονισμός synchronization: ο συντονισμός των παράλληλων τμημάτων σε πραγματικό χρόνο. 35 Ορολογία (2 από 3) Παράλληλη ανάλυση - granularity: Η σχέση υπολογισμοί προς επικοινωνίες: Μεγάλα τμήματα coarse grain: μεγάλος όγκος υπολογισμών μικρός όγκος επικοινωνιών. Μικρά τμήματα - fine grain: μικρός όγκος υπολογισμών μεγάλος όγκος επικοινωνιών. Καθυστέρηση λόγω παραλληλίας - parallel overhead: Συγχρονισμοί. Μεταφορές δεδομένων. Καθυστερήσεις που οφείλονται σε μεταγλωττιστές, βιβλιοθήκες, λειτουργικά συστήματα, εργαλεία λογισμικών κ.α. 36 12
Ορολογία (3 από 3) Πρόγραμμα (t): σύνολο εργασιών T={t 0,t 1,,t L-1 } Υπολογιστικοί Κόμβοι (ή πυρήνες, η επεξεργαστές, ή αυτόνομοι υπολογιστές): V={v 0,v 1,,v N-1 } Δίκτυο που συνδέει τους κόμβους: Μη προσανατολισμένος γράφος G Υπολογιστική συστοιχία (computational cluster): C = {G, V) 37 Παράλληλες αρχιτεκτονικές βασισμένες στην μνήμη Κοινής μνήμης shared memory: Συμμετρικοί σύστημα πολλών επεξεργαστών (Symmetric MultiProcessor system SMP) Κατανεμημένης μνήμης distributed memory: Κατανεμημένο σύστημα πολλών επεξεργαστών (Distributed MoultiProcessor system DMP) Υβριδικής μνήμης hybrid memory. 38 Αρχιτεκτονική κοινής μνήμης (SMP) Οι παράλληλοι υπολογιστές κοινής μνήμης αν και διαφέρουν μεταξύ τους γενικά έχουν την δυνατότητα όλοι οι επεξεργαστές να έχουν προσπέλαση στην ίδια μνήμη. Αν και ο κάθε επεξεργαστής μπορεί να λειτουργεί αυτόνομα διαμοιράζεται όμως την ίδια μνήμη με όλους τους υπόλοιπους. Η όποια αλλαγή στην μνήμη επέλθει από κάποιον επεξεργαστή είναι ορατή και από όλους τους άλλους. 39 13
Πλεονεκτήματα και μειονεκτήματα αρχιτεκτονικής κοινής μνήμης +Η καθολικά κοινή μνήμη παρέχει ένα αρκετά φιλικό προς τον χρήστη προγραμματιστικό περιβάλλον. +Η κοινή μνήμη μεταξύ των παράλληλων τμημάτων ενός προγράμματος είναι ταχύτατη λόγω της εγγύτητας της μνήμης προς τους επεξεργαστές. -Πρόβλημα κλιμάκωσης μεταξύ μνήμης και επεξεργαστών. Αύξηση του πλήθους των επεξεργαστών αυξάνει την κίνηση μεταξύ CPUs και μνήμης. -Ο συγχρονισμός γίνεται με ευθύνη του προγραμματιστή ώστε να είναι σίγουρη η ορθή χρήση της κοινής μνήμης. -Είναι εξαιρετικά δύσκολη και ακριβή η σχεδίαση και παραγωγή τέτοιου τύπου συστημάτων με τον ολοένα αυξανόμενο αριθμό επεξεργαστών. 40 Αρχιτεκτονική κατανεμημένης μνήμης (DMP) Κάθε επεξεργαστής διαθέτει την δική του αποκλειστική μνήμη. Κάθε επεξεργαστής λειτουργεί αυτόνομα. Όταν κάποιος επεξεργαστής χρειαστεί να προσπελάσει μνήμη άλλου επεξεργαστή είναι ευθύνη του προγραμματιστή για το πώς και πότε (συγχρονισμός, επικοινωνία). Απαιτείται κάποιο δίκτυο για να είναι εφικτή η επικοινωνία (μπορεί να είναι για παράδειγμα το ethernet) 41 Πλεονεκτήματα και μειονεκτήματα αρχιτεκτονικής κατανεμημένης μνήμης +Η μνήμη κλιμακώνεται ανάλογα με τον αριθμό των επεξεργαστών. Αύξηση του αριθμού των επεξεργαστών συνεπάγεται αύξηση και της συνολικής μνήμης. +Ο κάθε επεξεργαστής έχει ταχύτατη προσπέλαση στην δική του μνήμη. +Αποτελεί φθηνή λύση καθώς ο κάθε επεξεργαστής μπορεί να είναι ένας απλός και φθηνός υπολογιστής του εμπορίου. -Ο προγραμματιστής είναι ο υπεύθυνος για πολλές λεπτομέρειες που συσχετίζονται με την μεταφορά δεδομένων μεταξύ των υπολογιστικών κόμβων. -Μη ομοιόμορφος χρόνος προσπέλαση μνήμης καθώς εξαρτάται από το δίκτυο και την φυσική θέση της μνήμης που πρέπει να προσπελασθεί (Non-Uniform Memory Access time NUMA). 42 14
Αρχιτεκτονική υβριδικής (κοινής και κατανεμημένης) μνήμης Το τμήμα τη κοινής μνήμης αποτελεί μία SMP μηχανή. Όλοι οι επεξεργαστές μίας SMP μηχανής έχουν προσπέλαση στην ίδια μνήμη. Πολλαπλές SMP μηχανές οι οποίες επικοινωνούν μεταξύ τους μέσω κάποιου δικτύου αποτελούν το τμήμα του συστήματος με την κατανεμημένη μνήμη. Οι ταχύτεροι και μεγαλύτεροι υπολογιστές σήμερα χρησιμοποιούν αυτό το μοντέλο. +/-: ότι είναι κοινό και στις δύο αρχιτεκτονικές. 43 Συμπεράσματα Ο παράλληλος προγραμματισμός επιταχύνει δραματικά τον χρόνο εκτέλεσης προγραμμάτων. Υπάρχουν πολλές διαφορετικές προσεγγίσεις αλλά και μοντέλα παράλληλων συστημάτων και προγραμματισμού. Ο παράλληλος προγραμματισμός είναι το μέλλον του προγραμματισμού. 44 Ερωτήσεις; Τέλος της # 01 διάλεξης Χρησιμοποιείστε το email για όποιες επιπλέον απορίες / ερωτήσεις: savvas@teilar.gr Σημειώσεις μαθήματος (και όχι μόνο): https://e-class.teilar.gr/courses/cs386/ 45 15