ΠΛΕ-079. Διδάσκων: ΠΑΡΑΛΛΗΛΑ ΣΥΣΤΗΜΑΤΑ & ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Β. Δημακόπουλος. dimako@cs.uoi.gr

Σχετικά έγγραφα
ΠΛΕ-006 ΠΑΡΑΛΛΗΛΗ ΕΠΕΞΕΡΓΑΣΙΑ Διδάσκων: Β. Δημακόπουλος.

MYE-023. Διδάσκων: ΠΑΡΑΛΛΗΛΑ ΣΥΣΤΗΜΑΤΑ & ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Β. Δημακόπουλος.

MYE-023. Διδάσκων: ΠΑΡΑΛΛΗΛΑ ΣΥΣΤΗΜΑΤΑ & ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Β. Δημακόπουλος.

MYE-023. Διδάσκων: ΠΑΡΑΛΛΗΛΑ ΣΥΣΤΗΜΑΤΑ & ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Β. Δημακόπουλος.

5/3/2012. Εισαγωγή στα Παράλληλα Συστήµατα (Οργάνωση-Προγραµµατισµός) Β. Δημακόπουλος Α. Ευθυμίου

Υ07. Διδάσκων: ΠΑΡΑΛΛΗΛΑ ΣΥΣΤΗΜΑΤΑ. Β. Δημακόπουλος.

Λ10 Παράλληλος & Κατανεμημένος Προγραμματισμός Μάθημα 0 ο 13/10/2009. Β. Δημακόπουλος

1.1 Παράλληλοι υπολογιστές

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

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

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

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

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

Παράλληλοι υπολογιστές

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

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

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

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

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

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

***Computer Organization & Design the Hardware/Software Interface, David Patterson & John Hennessy, Morgan Kaufmann Publishers, 4thed

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

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

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

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

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

Συστήµατα Παράλληλης Επεξεργασίας

Οργάνωση και Σχεδίαση Υπολογιστών Η ιασύνδεση Υλικού και Λογισµικού, 4 η έκδοση. Κεφάλαιο 1. Αφηρηµένες έννοιες και τεχνολογία υπολογιστών

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

Η ΤΑΞΙΝΟΜΗΣΗ ΤΟΥ FLYNN!!! 1 ο ΕΠΑΛ ΡΟΔΟΥ ΤΟΜΕΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ!!!! Χατζηνικόλας Κώστας

Εισαγωγή στην Αρχιτεκτονική Η/Υ

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

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

Εισαγωγή. Λογισµικό & Προγραµµατισµός Συστηµάτων Υψηλής Επίδοσης

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

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

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

Το μάθημα συνοπτικά (1) Το μάθημα συνοπτικά (2) Τι είναι ένα υπολογιστικό σύστημα ;

tutorials/parallel_comp/

Εισαγωγή στην Επιστήμη των Υπολογιστών

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

Το εσωτερικό ενός PC. Τεχνολογία Η/Υ & Πληροφοριών - 05 Κεντρική μονάδα Χουρδάκης Μανόλης

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

ΤΕΧΝΙΚΕΣ ΑΥΞΗΣΗΣ ΤΗΣ ΑΠΟΔΟΣΗΣ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ I

Αρχιτεκτονική Η/Υ Το chipset ενός υπολογιστικού συστήματος. Δρ. Μηνάς Δασυγένης

ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Α Γενικού Λυκείου (Μάθημα Επιλογής)

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

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

ΕΠΙΣΤΗΜΟΝΙΚΟΙ ΥΠΟΛΟΓΙΣΜΟΙ: Μια ενδιαφέρουσα σταδιοδρομία

[ΚΑΤΑΓΡΑΦΗ ΗΛΕΚΤΡΟΝΙΚΟΥ ΥΛΙΚΟΥ ΚΑΙ ΔΙΑΥΛΩΝ ΕΠΙΚΟΙΝΩΝΙΑΣ]

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

Παράλληλη Επεξεργασία

Κεντρική Μονάδα Επεξεργασίας. Επανάληψη: Απόδοση ΚΜΕ. ΚΜΕ ενός κύκλου (single-cycle) Παραλληλισμός σε επίπεδο εντολών. Υπολογιστικό σύστημα

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

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

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

Δυναμική Θεώρηση και Συγχρονισμός των εξαρτήσεων των δεδομένων. Αλεξάνδρα Παπανδρεάδη (ΑΜ 362)

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

Παραλληλισμός σε επίπεδο εντολών

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

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

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

3/12/2013 Συστήματα κατανεμημένης μνήμης (Ι) Β. Δημακόπουλος

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

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

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

Κεφάλαιο 1.5: Τα βασικά μέρη ενός υπολογιστή

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

30/4/2012 Συστήματα κατανεμημένης μνήμης και ο προγραμματισμός τους (Ι) Β. Δημακόπουλος

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

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

Το μάθημα συνοπτικά (1) Το μάθημα συνοπτικά (2) Τι είναι ένα υπολογιστικό σύστημα ;

Υ07 Παράλληλα Συστήματα /4/2016 Συστήματα κατανεμημένης μνήμης (ΙΙ)

ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΑΡΧΕΣ ΤΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ Η/Υ

ΗΥ 134. Εισαγωγή στην Οργάνωση και στον Σχεδιασμό Υπολογιστών Ι. Διάλεξη 1. Εισαγωγή. Νίκος Μπέλλας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων

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

Περιεχόμενο μαθήματος

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

ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ. Σημειώσεις Θεωρίας

ΗΥ 232. Οργάνωση και Σχεδίαση Υπολογιστών. Διάλεξη 1. Εισαγωγή στο μάθημα. Νίκος Μπέλλας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων

Εισαγωγή στην Αρχιτεκτονική Η/Υ

Παράλληλη Επεξεργασία

Εισαγωγή Συμβόλαιο Μαθήματος

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

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

7. ΠΡΟΓΡΑΜΜΑ ΚΟΡΜΟΥ ο ΕΞΑΜΗΝΟ. Θεωρ. - Εργ.

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΥΠΟΛΟΓΙΣΤΕΣ

Αρχιτεκτονική Μνήμης

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

Κεφάλαιο 4 ο. Ο Προσωπικός Υπολογιστής

Ηλεκτρονικός Υπολογιστής

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

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

Ιστορία των επεξεργαστών (CPUs)

ΕΠΙΣΤΗΜΟΝΙΚΟΙ ΥΠΟΛΟΓΙΣΜΟΙ: Μια ενδιαφέρουσα σταδιοδρομία

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

ΤΜΗΜΑΤΑ ΗΛΕΚΤΡΟΝΙΚΟΥ ΥΠΟΛΟΓΙΣΤΗ

Λειτουργικά Συστήματα Ι. Καθηγήτρια Παπαδάκη Αναστασία

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

Transcript:

ΠΛΕ-079 ΠΑΡΑΛΛΗΛΑ ΣΥΣΤΗΜΑΤΑ & ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Διδάσκων: Β. Δημακόπουλος dimako@cs.uoi.gr

Στοιχεία για το μάθημα Αντικείμενο του μαθήματος: 1. Η δομή των παράλληλων υπολογιστών (πολυπύρηνα, smps, clusters, gpus κλπ) 2. Ο προγραμματισμός τους (threads, OpenMP, MPI κλπ) 2

Στοιχεία για το μάθημα Ημέρα/ώρα Παρασκευή, 09:00 12:00 Διδακτικό υλικό: Βιβλία «Στοιχεία παράλληλου υπολογισμού» - Πάντζιου & Τομαράς (2003) Νέα έκδοση 2013 «Προγραμματισμός και αρχιτεκτονική συστημάτων παράλληλης επεξεργασίας» Παπαδάκης & Διαμαντάρας (2012) «Προγραμματισμός μαζικά παράλληλων επεξεργαστών», D. B. Kirk, W-m. W. Hwu (2010) Σημειώσεις του διδάσκοντα («Εισαγωγή στην Παράλληλη Επεξεργασία», Παν/μιο Ιωαννίνων, 2009) συν προσθήκες (pdf/φωτοτυπίες) που έχουν γίνει αλλά δεν έχουν ενσωματωθεί στις εκτυπωμένες σημειώσεις Επίσης δωρεάν Κύριο σύγγραμμα Ιστοσελίδα μαθήματος http://www.cs.uoi.gr/~dimako/courses 3

Βαθμολόγηση μαθήματος Επιλογή τρόπου βαθμολόγησης από τον καθέναν: Εξαμηνιαίο project (60-70%) + τελικές εξετάσεις (30-40%) Ένα προγραμματιστικό project που θα το ξεκινήσουμε σε 1 2 εβδομάδες και θα τελειώσει στο τέλος του εξαμήνου. Θέλει άνεση (όχι απλά γνώση) στη C και γνώση / όρεξη για προγραμματισμό. Ενδιάμεσες συναντήσεις για σχεδιασμό και έλεγχο προόδου και τελική παρουσίαση / επίδειξη Πιθανός διαγωνισμός καλύτερου (κριτήρια??) project Μικρές προγραμματιστικές ασκήσεις (20-25%) + τελικές εξετάσεις (75-80%) Απλές ασκήσεις εκμάθησης παράλληλου προγραμματισμού Συνολικά 2-3 σε όλο το εξάμηνο Τελικές εξετάσεις (100%) Ως τελευταία (και με λιγότερη ουσία) επιλογή 4

Το σημερινό μάθημα Προ-εισαγωγικά

Τεχνολογία ο νόμος του Moore Moore s Law 2X transistors/chip Every 1.5 years Called Moore s Law Microprocessors have become smaller, denser, and more powerful. Τι σημαίνει αυτό; Απάντηση: πολυπλοκότητα! 6

Ο νόμος του Bill Joy τις επιδόσεις Τι έγινε εδώ;;; Επιδόσεις εκθετικά αυξανόμενες (integer SPEC bechmarks) 7

Παράλληλοι υπολογιστές γύρω μας

Πρόσφατο παρελθόν SMPs (symmetric multiprocessors) 2 4 επεξεργαστές (μονοπύρηνοι) συνηθισμένοι, μέχρι 8 επεξεργαστές σε εμπορικά συστήματα Πανάκριβα συστήματα με 12-16 επεξεργαστές ελάχιστα Κοινή μνήμη Τμήμα Πληροφορικής: Πολλά Sun με 2 UltraSparc Πολλά PC με 2 Pentium / Athlon και με διπύρηνους επεξεργαστές atlantis με 4 Pentium III Xeon (700MHz) 700.000 δρχ/cpu! paraguay με 4 x Intel Xeon 7000 Paxville @ 3GHz 2 cores per CPU / 2 threads per core (hyperthreaded) Δωρεά της Intel USA στο PARAGROUP (2008) paragon με 2 x AMD Opteron 6128 @ 2GHz 8 cores per CPU Custom-made by the 9

Dual core / Quad core / Multicore / Manycore? Πλέον και τα φτηνότερα PC έχουν 1 επεξεργαστή τουλάχιστον διπύρηνο Το κινητό μου είναι 4πήρυνο Διπύρηνοι αρχικά, τώρα 8πύρηνοι, 12πύρηνοι (Intel, AMD) Τ1 (Sun Niagara): 8πύρηνοι (με 4-way multithreaded πυρήνες) από τον 12/2005! Σεπτ. 2010: «Τ3»: 16πύρηνος, 8-way multithreaded Πολλαπλών πυρήνων (multicore) γενικά Manycore (πολλών πυρήνων)?? Μιλάμε για πολλούς πυρήνες Τριψήφιο νούμερο (> 64) Πότε? Ήδη! Intel 80-πύρηνο πρωτότυπο Φεβ. 2007 80 απλά cores 2 floating point engines /core network-on-a-chip τύπου πλέγματος 100 million transistors, >1 Teraflop peak! Intel Xeon Phi 51xx / 71xxx(60 cores) 10

Clusters Παντού κι αυτά! Συλλογή από διασυνδεδεμένους «κόμβους» Φτηνοί / ευρέως διαθέσιμοι επεξεργαστές (π.χ. clusters από PCs) Ο μόνος τρόπος να φτιάξουμε «οικονομικούς» υπερ-υπολογιστές (πολλά Teraflops) Sandia Laboratories Red Storm (Cray, 2004) 13000 AMD Opterons (basically PC nodes), 75 Terabytes of memory > 100 Teraflops (peak) Linux Κόστος: $90.000.000 Σε αντιδιαστολή με τον Earth Simulator ( NEC, Ιαπωνία, 2002) Διανυσματικός υπερυπολογιστής 5120 διανυσματικοί επεξεργαστές, 10 Terabytes of memory 35 Teraflops (sustained) Κόστος: $400.000.000 (2002, most expensive computer ever built) 11

Clusters Πανεπιστήμιο Ιωαννίνων Κέντρο προσομοιώσεων: 200 κόμβοι (κάθε κόμβος pc με 2 επεξεργαστές) Τμήμα Πληροφορικής: 16 κόμβοι, κάθε κόμβος 2 CPUS, κάθε CPU διπύρηνη Και τα δύο με δίκτυο gigabit Ethernet Βελτιωμένες επιδόσεις με δίκτυα χαμηλής καθυστέρησης Π.χ. Myrinet Πολύ ακριβότερα όμως Κάρτα δικτύου gigabit: 10-20 ευρώ Cluster τμήματος Υλικών (Myrinet, πριν 8 χρόνια περίπου) Περίπου 100.000 ευρώ για τα PC και άλλες 100.000 ευρώ για τις κάρτες δικτύου τους! Το μέλλον: Clusters από πολυπύρηνους κόμβους 12

GPUs, GPGPUs, Cells, κλπ. Πάρα πολλά και πολύ απλά επεξεργαστικά στοιχεία, κατάλληλα είτε για συγκεκριμένου τύπου υπολογισμούς (GPUs) είτε και για γενικότερους υπολογισμούς (GPGPUs, Cell). Πολύ «της μόδας» Πολύ γρήγορα «Ιδιαίτερος» προγραμματισμός Διαχείριση μνήμης με το «χέρι» Με μία λέξη: Ετερογένεια Κλασικός ισχυρός πυρήνας/πυρήνες + «ειδικοί» (γρήγοροι, πολύ αλλά απλοί/ανίσχυροι) πυρήνες Ετερογένεια και στον τρόπο προγραμματισμού 13

Mobile Πολυπύρηνες είναι πλέον ακόμα και οι μικρότερες συσκευές. Π.χ. κινητά τηλέφωνα (10/2014): Dual core (60 ) Quad core (130 ) Octa core (275 ) 14

Embedded Και συσκευές για ενσωματωμένα συστήματα. Π.χ. parallella: SDcard HDMI 16-core (Epiphany, mesh) 2-core (ARM, Linux) USB Ethernet 100!! (δωρεά στο ppg) Εν αναμονή του 64-core!!! 15

3 απλές ερωτήσεις Το excel θα τρέξει γρηγορότερα σε αυτά τα μηχανήματα; Όχι! Αν είχα ένα από αυτά τα μηχανήματα σπίτι μου (ως PC), θα έβλεπα μεγαλύτερη ταχύτητα; Ναι, κάποια (μικρή σχετικά) βελτίωση στην ταχύτητα θα υπήρχε Γιατί όμως; ManyCore refers to many processors/chip 64? 128? Hard to say exact boundary How to program these? Use 2 CPUs for video/audio Use 1 for word processor, 1 for browser 76 for virus checking??? Parallelism must be exploited at all levels Πρέπει η εφαρμογή να έχει προγραμματιστεί παράλληλα ώστε να χρησιμοποιεί τους πολλαπλούς επεξεργαστες 16

Γιατί να παρακολουθήσει κανείς αυτό το μάθημα; Το μάθημα μιλάει για παράλληλους υπολογιστές Οι παράλληλοι υπολογιστές ΔΕΝ είναι πλέον κάτι μακρινό / σπάνιο / κλπ Τους χρησιμοποιούμε ΟΛΟΙ (multicore επεξεργαστές) Όμως παρότι τους έχουμε, ΔΕΝ ξέρουμε πως να τους προγραμματίζουμε Ακόμα και multicore επεξεργαστή να έχετε, αν γράψετε ένα πρόγραμμα όπως τα γράφετε μέχρι τώρα, ΜΟΝΟ το ένα core θα δουλεύει. Περιζήτητη γνώση ο παράλληλος προγραμματισμός Ερευνητικές & εμπορικές ευκαιρίες Τα πάντα πλέον γίνονται παράλληλα. 17

Ύλη του μαθήματος Εισαγωγή στους παράλληλους υπολογιστές και τον τρόπο χρήσης τους: Οργάνωση Προγραμματισμός (έμφαση) Ενότητες: Εισαγωγή Κλάδος οργάνωσης: Πολυεπεξεργαστές κοινής μνήμης Πολυεπεξεργαστές κατανεμημένης μνήμης Επικοινωνίες Κλάδος προγραμματισμού: Κοινές μεταβλητές (διεργασίες, νήματα) Μεταβίβαση μηνυμάτων (MPI) Μετρικές και ανάλυση 18

Ανακοίνωση ΤΟ ΜΑΘΗΜΑ ΤΗΣ ΕΠΟΜΕΝΗΣ ΠΑΡΑΣΚΕΥΗΣ (10/10/2014) ΑΝΑΒΑΛΛΕΤΑΙ 19

Εισαγωγή Κεφάλαιο Ι

Η τεχνολογία βελτιώνεται συνεχώς ENIAC (1945) Φτηνό netbook (2009) Βάρος (kg). 30.000 1 Όγκος (m 3 ). 70 0.001 Κατανάλωση (Watt). 140.000 15 Μνήμη (bytes). 200 1.073.741.824 Ρολόι (MHz). 0.005 1.700... και δεν χωράει σύγκριση! 21

Άρα, είναι και θα γίνουν ακόμα πιο γρήγοροι οι υπολογιστές... Ναι, είναι και θα είναι, για πολλές εφαρμογές. Όχι για όλες, όμως. Υπάρχουν εφαρμογές που δεν μπορούν να λυθούν ικανοποιητικά ακόμα και με τον πιο πρόσφατο και εξελιγμένο επεξεργαστή. Κλασσικό παράδειγμα εφαρμογής με μη ικανοποιητική λύση: πρόγνωση καιρού (μήπως χαλάνε μερικές φορές τα μηχανήματα της ΕΜΥ; ) Ικανοποιητική (δηλ. με καλή ακρίβεια) πρόγνωση καιρού μπορεί να γίνει αλλά απαιτεί την επίλυση ασύλληπτα μεγάλων συστημάτων εξισώσεων. Και τεράστιες ποσότητες μνήμης αλλά και τεράστιες υπολογιστικές ταχύτητες είναι αναγκαίες. Τόσες που δεν υπάρχει τυπικό υπολογιστικό σύστημα να τις καλύψει.... και άρα χρησιμοποιούμε λιγότερες εξισώσεις λιγότερο ακριβές μοντέλο λιγότερο ακριβής πρόβλεψη γίνεται της ΕΜΥ! 22

Παράδειγμα με αριθμούς Εφαρμογή: μελέτη της εξέλιξης της κλίματος της γης Το μοντέλο για 10 χρόνια μετά, περιλαμβάνει 10 16 flops (θέλουμε 10 ημέρες με CPU των 10 Gflops) Παράγει 100 Gbytes δεδομένων Για καλύτερη μελέτη: Τρέχον μοντέλο Καλύτερο Κόστος x Ανάλυση 100km 10km x 100 1000 Περίοδος υπό μελέτη 10 χρόνια 100 χρόνια x 10 100 Θέλουμε x 10 3 10 5 flops, δηλαδή x 10 3 10 5 ημέρες ή περίπου 10.000 1.000.000 ημέρες (10.000 = 30 χρόνια!) Χωρίς να υπολογίσουμε τον ρυθμό δεδομένων... 23

Και τι πρέπει να γίνει; Πρώτη λύση: Βελτίωση της τεχνολογίας. Άρα γρηγορότερα κυκλώματα. Άρα γρηγορότεροι επεξεργαστές. Αυτή είναι ίσως η σημαντικότερη λύση μέχρι τώρα. Η τεχνολογία έχει προχωρήσει με ιλιγγιώδεις ρυθμούς, πέρα από κάθε πρόβλεψη. Θα συνεχίσει έτσι, όμως, και του χρόνου; Όχι - βλ. multicores! Η πιο σωστή απάντηση είναι ότι δεν ξέρουμε ακριβώς τις λεπτομέρειες, αλλά τελικά θα σταματήσει αυτή η εξέλιξη, τουλάχιστον με αυτούς τους ρυθμούς. Ή θα αλλάξει ο τρόπος με τον οποίο φτιάχνουμε υπολογιστές (π.χ. κβαντικοί, βιολογικοί) 24

Το πρόβλημα: σειριακό μοντέλο (κλασικός Η/Υ) ΜΝΗΜΗ (Δεδομένα + Πρόγραμμα) ΕΠΕΞΕΡΓΑΣΤΗΣ 25

Γιατί τέτοια απαισιοδοξία; Φυσικοί νόμοι: με βάση την ειδική θεωρία της σχετικότητας του Αϊνστάιν, η ταχύτητα των ηλεκτρικών σημάτων είναι μικρότερη ή ίση αυτής του φωτός. Η ταχύτητα του φωτός είναι περίπου 0,3 m/nsec στο κενό, και αρκετά μικρότερη σε χάλκινα καλώδια. Άρα, αν η απόσταση μεταξύ CPU και μνήμης είναι 30 cm, θα χρειαστεί (τουλάχιστον) 1 nsec για να πάει η διεύθυνση στη μνήμη και άλλο 1 nsec για να φτάσει το δεδομένο στη CPU (υποθέτοντας ότι η μνήμη έχει ΜΗΔΕΝΙΚΗ καθυστέρηση). Άρα η μόνη λύση για να κάνουμε ταχύτερους υπολογιστές είναι να τους κάνουμε εξαιρετικά μικροσκοπικούς! 26

Μικρότεροι επεξεργαστές Ήδη τα μεγέθη των τρανζίστορ και οι αποστάσεις μέσα στα chip είναι πολύ μικρές (2-3 μόρια απαρτίζουν κάποια τμήματα των τρανσίστορ). Περαιτέρω σμίκρυνση θα συνοδευτεί από μοριακά / ατομικά / πυρηνικά φαινόμενα που δεν ξέρουμε ακόμα πώς να τα χειριστούμε. Μικρά μεγέθη + αύξηση συχνότητας λειτουργίας (για ταχύτητα) οδηγεί σε αύξηση της κατανάλωσης. Από τα 4Ghz περίπου πριν 8 χρόνια, οι συχνότητες έπεσαν στα 1.5-2GHz και έγιναν πολυπύρηνοι (multicore) 27

Υπάρχει άλλη λύση; Δεύτερη (και μοναδική) λύση: Παραλληλισμός. Πολλαπλές εντολές εκτελούνται παράλληλη (ταυτόχρονα). Άρα γρηγορότερη ολοκλήρωση των προγραμμάτων. Παραλληλισμός σε επίπεδο εντολών (ILP: διοχέτευση, υπερβαθμωτές αρχιτεκτονικές κλπ) καλός αλλά λίγος (αύξηση ταχύτητας x10, το πολύ) Μοναδική λύση είναι η χρήση καθαρά παράλληλων υπολογιστών: υπολογιστές που διαθέτουν πολλούς επεξεργαστές, διασυνδεδεμένους μεταξύ τους, που συνεργάζονται για την ταυτόχρονη εκτέλεση τμημάτων μίας εφαρμογής. Π.χ. σύστημα με 1000 επεξεργαστές έχει τη δυνατότητα να εκτελέσει ένα πρόγραμμα 1000 φορές πιο γρήγορα (από ότι ένα σύστημα με 1 επεξεργαστή). 28

Παράλληλος υπολογιστής ΜΝΗΜΕΣ ΕΠΕΞΕΡΓΑΣΤΗΣ 1 ΕΠΕΞΕΡΓΑΣΤΗΣ 2 ΕΠΕΞΕΡΓΑΣΤΗΣ Ν 29

Βασικά ερωτήματα Πόσοι επεξεργαστές; λίγοι (2 10) πολλοί (εκατοντάδες έως δεκάδες χιλιάδες) Πώς συνδέονται / επικοινωνούν / συνεργάζονται; κοινής μνήμης (πολυεπεξεργαστές) κατανεμημένης μνήμης (πολυϋπολογιστές) Πως «σπάει» ένα πρόβλημα για να μοιραστεί στους επεξεργαστές; λεπτόκκοκος / χονδρόκοκκος παραλληλισμός (fine/coarse grain) ισοκατανομή φόρτου (load balancing) Πόσο διαφορετικός είναι ο προγραμματισμός τους; τρία βασικά μοντέλα... 30

Που υπάρχει παραλληλισμός for (i = 0; i < k; i = i+1) c[i] = a[i]+b[i]; Εφαρμογές (grand challenges) συμπεριφορά σωματιδίων (π.χ. δυναμική των μορίων) μελέτη των κυμάτων των ωκεανών και πρόβλεψη καιρού σεισμικά μοντέλα σχεδιασμός VLSI κυκλωμάτων με τη βοήθεια του υπολογιστή (CAD) εξέλιξη των γαλαξιών. 31

Παράδειγμα: το πρόβλημα των N σωμάτων N-body problem Συλλογή από N σώματα (ηλεκτρόνια, μόρια, πλανήτες, σύνεφα, κλπ) Δυνάμεις μεταξύ τους (βαρυτικές, ηλεκτρικές, μαγνητικές, κλπ) που τους αλλάζουν την κατάσταση (π.χ. τη θέση τους στο χώρο) Μελέτη (προσομοιώσεις) για να δούμε σε ποια κατάσταση θα είναι μετά από κάποιο χρονικό διάστημα Παράδειγμα: εξέλιξη γαλαξιών (σώματα = πλανήτες / αστέρια κλπ., δυνάμεις = βαρυτικές, κατάσταση = η θέση των ουρανίων σωμάτων) 32

Εξέλιξη γαλαξιών f ij Gm m i x i j ( x x i 3 j x j ) N j 1 F i f ij. F i m i 2 d x 2 dt i. 33

Σειριακό πρόγραμμα /* [0.. ΜΑΧ_ΤΙΜΕ]: είναι το χρονικό διάστημα που μας ενδιαφέρει * calc_fij(i,j): υπολογίζει τη δύναμη μεταξύ των σωμάτων i και j * calc_xi(i,f[i]): υπολογίζει τη νέα θέση του k-οστού σώματος από την * Ο παρακάτω βρόχος διανύει το χρόνο με βήματα Δt: */ for (t = 0; t < MAX_TIME; t = t + Δt) { for (i = 1; i <= N; i = i+1) { /* Υπολογισμός του αθροίσματος των δυνάμεων στο σώμα i */ F[i] = 0; for (j = 1; j <= N; j = j+1) F[i] = F[i]+calc_fij(i,j); } for (k = 1; k <= N; k = k+1) calc_xi(k,f[k]); /* Υπολογισμός νέων θέσεων */ } 34

Οι υπολογισμοί των F[] ανεξάρτητοι /* [0.. ΜΑΧ_ΤΙΜΕ]: είναι το χρονικό διάστημα που μας ενδιαφέρει * calc_fij(i,j): υπολογίζει τη δύναμη μεταξύ των σωμάτων i και j * calc_xi(i,f[i]): υπολογίζει τη νέα θέση του k-οστού σώματος από την * Ο παρακάτω βρόχος διανύει το χρόνο με βήματα Δt: */ for (t = 0; t < MAX_TIME; t = t + Δt) { } DO EACH i-iteration IN PARALLEL: for (i = 1; i <= N; i = i+1) { /* Υπολογισμός του αθροίσματος των δυνάμεων στο σώμα i */ F[i] = 0; for (j = 1; j <= N; j = j+1) F[i] = F[i]+calc_fij(i,j); } for (k = 1; k <= N; k = k+1) calc_xi(k,f[k]); /* Υπολογισμός νέων θέσεων */ 35

Οι υπολογισμοί των x[] ανεξάρτητοι /* [0.. ΜΑΧ_ΤΙΜΕ]: είναι το χρονικό διάστημα που μας ενδιαφέρει * calc_fij(i,j): υπολογίζει τη δύναμη μεταξύ των σωμάτων i και j * calc_xi(i,f[i]): υπολογίζει τη νέα θέση του k-οστού σώματος από την * Ο παρακάτω βρόχος διανύει το χρόνο με βήματα Δt: */ for (t = 0; t < MAX_TIME; t = t + Δt) { } DO EACH i-iteration IN PARALLEL: for (i = 1; i <= N; i = i+1) { /* Υπολογισμός του αθροίσματος των δυνάμεων στο σώμα i */ F[i] = 0; for (j = 1; j <= N; j = j+1) F[i] = F[i]+calc_fij(i,j); } DO EACH k-iteration IN PARALLEL: for (k = 1; k <= N; k = k+1) calc_xi(k,f[k]); /* Υπολογισμός νέων θέσεων */ 36

Οι υπολογισμοί των x[] εξαρτώνται από τα F[]!! /* [0.. ΜΑΧ_ΤΙΜΕ]: είναι το χρονικό διάστημα που μας ενδιαφέρει * calc_fij(i,j): υπολογίζει τη δύναμη μεταξύ των σωμάτων i και j * calc_xi(i,f[i]): υπολογίζει τη νέα θέση του k-οστού σώματος από την * Ο παρακάτω βρόχος διανύει το χρόνο με βήματα Δt: */ for (t = 0; t < MAX_TIME; t = t + Δt) { DO EACH i-iteration IN PARALLEL: for (i = 1; i <= N; i = i+1) { /* Υπολογισμός του αθροίσματος των δυνάμεων στο σώμα i */ F[i] = 0; for (j = 1; j <= N; j = j+1) F[i] = F[i]+calc_fij(i,j); } WAIT TILL ALL F[] HAVE BEEN CALCULATED } DO EACH k-iteration IN PARALLEL: for (k = 1; k <= N; k = k+1) calc_xi(k,f[k]); /* Υπολογισμός νέων θέσεων */ 37

Μεγάλη προσοχή!! /* [0.. ΜΑΧ_ΤΙΜΕ]: είναι το χρονικό διάστημα που μας ενδιαφέρει * calc_fij(i,j): υπολογίζει τη δύναμη μεταξύ των σωμάτων i και j * calc_xi(i,f[i]): υπολογίζει τη νέα θέση του k-οστού σώματος από την * Ο παρακάτω βρόχος διανύει το χρόνο με βήματα Δt: */ for (t = 0; t < MAX_TIME; t = t + Δt) { DO EACH i-iteration IN PARALLEL: for (i = 1; i <= N; i = i+1) { /* Υπολογισμός του αθροίσματος των δυνάμεων στο σώμα i */ F[i] = 0; for (j = 1; j <= N; j = j+1) F[i] = F[i]+calc_fij(i,j); } WAIT TILL ALL F[] HAVE BEEN CALCULATED DO EACH k-iteration IN PARALLEL: for (k = 1; k <= N; k = k+1) calc_xi(k,f[k]); /* Υπολογισμός νέων θέσεων */ WAIT TILL ALL x[] HAVE BEEN CALCULATED } 38

Καλύτερος βρόχος j Λόγω συμμετρίας των δυνάμεων: for (j = 1; j <= i-1; j = j+1) { f = calc_fij(i,j); F[i] = F[i] + f; F[j] = F[j] + (-f); } Προβλήματα, πλέον! Εξαρτήσεις μεταξύ επαναλήψεων Ανισοκατανομή φόρτου 39

Παράλληλες αρχιτεκτονικές Κατά Flynn (1972) SISD (Single-Instruction, Single-Data) SIMD (Single-Instruction, Multiple-Data) MIMD (Multiple-Instruction, Multiple-Data) 40

(α) SISD CU Ροή Εντολών PU Ροή MNHMH Δεδομένων Ροή Εντολών (β) SIΜD PU Ροή Δεδομένων CU Ροή Εντολών PU Ροή Δεδομένων ΜΝΗΜΕΣ PU Ροή Δεδομένων Ροή Εντολών (γ) ΜΙΜD CU Ροή Εντολών PU Ροή Δεδομένων CU Ροή Εντολών PU Ροή Δεδομένων ΜΝΗΜΕΣ CU Ροή Εντολών PU Ροή Δεδομένων Ροή Εντολών Ροή Εντολών Ροή Εντολών 41

Υπολογιστές SIMD Πρωτοπόρα συστήματα ( 70 & 80) Ακριβοί οι αυτόνομοι επεξεργαστές Κυρίως ερευνητικά, εξειδικευμένα μηχανήματα Illiac IV Επηρέασαν τα κατοπινά συστήματα «επεξεργαστές πίνακα» (array processors) Πλέον μόνο για ειδικού σκοπού συστήματα (π.χ. systolic arrays) Επανεμφάνιση ως: SWAR (SIMD-Within-A-Register: MMX, SSE, κλπ) GPUs! 42

Πολυεπεξεργαστές κοινής & κατανεμημένης μνήμης (MIMD) Επ. 1 Επ. 2 Επ. Ν ΔΙΑΣΥΝΔΕΣΗ ΕΠΕΞΕΡΓΑΣΤΩΝ- ΜΝΗΜΩΝ Μν. 1 Μν. 2 Μν. Ν Επ. 1 Επ. 2 Επ. Ν ΚΟΙΝΕΣ ΜΝΗΜΕΣ ΔΙΚΤΥΟ ΔΙΑΣΥΝΔΕΣΗΣ ΕΠΕΞΕΡΓΑΣΤΩΝ Επ. 1 Επ. K ΔΙΑΣΥΝΔΕΣΗ ΕΠΕΞΕΡΓΑΣΤΩΝ-ΜΝΗΜΩΝ Κόμβος 1 Κόμβος 2 Κόμβος Ν ΚΟΙΝΕΣ ΜΝΗΜΕΣ ΔΙΚΤΥΟ ΔΙΑΣΥΝΔΕΣΗΣ ΚΟΜΒΩΝ 43

0 0 0 3 K 2 Πλήρεις γράφοι 0 1 Ν 1 1 1 2 1 2 Γραμμικός γράφος K 3 K 4 (0,0) (0,1) (0,2) (0,Μ 1) (1,0) (1,1) (1,Μ 1) (Μ 1,Μ 1) Πλέγμα Μ Μ Πλέγμα 4 3 2 (0,0) 1/001 5/101 0/000 4/100 3/011 7/111 2/010 6/110 (Μ 1,Μ 1) Torus Μ Μ Τρισδιάστατος κύβος 44

Παράλληλος προγραμματισμός (έμμεσος / άμεσος) Ο έμμεσος δεν δίνει καλά αποτελέσματα «Παραλληλοποιητικοί» μεταφραστές που από σειριακό πρόγραμμα παράγουν αυτόματα (ή με κάποια βοήθεια από τον προγραμματιστή) ένα ισοδύναμο παράλληλο πρόγραμμα. Ο άμεσος είναι που μας ενδιαφέρει, αλλά πιο «δύσκολος»: Εξάρτηση από αρχιτεκτονική Ασυμβατότητα μηχανών Πολλά προγραμματιστικά μοντέλα Παραλληλισμού δεδομένων (data parallelism) Κοινού χώρου διευθύνσεων (shared address space) Μεταβίβασης μηνυμάτων (message passing) 45

Βασική μεθοδολογία παραλληλοποίησης Διαχωρισμός (διάσπαση + ανάθεση) + τοποθέτηση (ενορχήστρωση + αντιστοίχηση) Διαχωρισμός (partitioning) Διάσπαση (decomposition) σε εργασίες (tasks) κόκκος παραλληλίας Ανάθεση (assignment) σε διεργασίες (processes) ισοκατανομή φόρου, μείωση επικοινωνιών Τοποθέτηση (placement) Ενορχήστρωση διεργασιών καθορισμός σειράς εκτέλεσης, προγραμματιστικό μοντέλο Αντιστοίχηση (mapping) σε επεξεργαστές στατική, δυναμική 46

Διάσπαση και ανάθεση Διάσπαση: 1. F[i] = F[i]+calculate_fij(i,j); 2. for (j = 1; j <= N; j = j+1) F[i] = F[i]+calculate_fij(i,j); Ανάθεση σε διεργασία: Process-k() { for (i = (k-1)*n/p; i <= k*n/p-1; i = i+1) { F[i] = 0; for (j = 1; j <= N; j = j+1) F[i] = F[i]+calculate_fij(i,j); } } 47