Λ10 Παράλληλος & Καταμεμημέμος Προγραμματισμός 2009

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

Υ07 Παράλληλα Συστήματα /10/2013

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

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

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

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

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

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

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

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

Λ10 Παράλληλος & Κατανεμημένος Προγραμματισμός 2009

ΘΥ101: Ειςαγωγι ςτθν Πλθροφορικι

Δείκτεσ Διαχείριςθ Μνιμθσ. Βαγγζλθσ Οικονόμου Διάλεξθ 8

ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ. 2 ο Εργαςτιριο Διαχείριςθ Διεργαςιϊν

ΕΝΟΣΗΣΑ 1: ΓΝΩΡIΖΩ ΣΟΝ ΤΠΟΛΟΓΙΣΗ. ΚΕΦΑΛΑΙΟ 2: Σο Τλικό του Τπολογιςτι

17. Πολυδιάςτατοι πίνακεσ

ΕΝΟΤΗΤΑ 2: ΤΟ ΛΟΓΙΣΜΙΚΟ ΤΟΥ ΥΠΟΛΟΓΙΣΤΗ. ΚΕΦΑΛΑΙΟ 5: Γνωριμία με το λογιςμικό του υπολογιςτι

Τμήματα Μνήμησ Υπολογιςμόσ Φυςικών διευθύνςεων. Εκπαιδεφτρια: Μαρία Πολίτθ

Παράςταςη ακεραίων ςτο ςυςτημα ςυμπλήρωμα ωσ προσ 2

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

Μάθημα 9 ο ΤΕΧΝΙΚΕΣ ΔΙΑΧΕΙΡΙΣΗΣ ΕΙΚΟΝΙΚΗΣ ΜΝΗΜΗΣ

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

ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ. 3 ο Εργαςτιριο υγχρονιςμόσ Διεργαςιϊν

ΕΝΟΤΗΤΑ 2: ΕΠΙΚΟΙΝΩΝΩ ΜΕ ΤΟΝ ΥΠΟΛΟΓΙΣΤΗ. ΚΕΦΑΛΑΙΟ 5: Αρχεία - Φάκελοι

ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ. 7 θ Διάλεξθ Διαχείριςθ Μνιμθσ Μζροσ Γ

Οδηγίεσ προσ τουσ εκπαιδευτικοφσ για το μοντζλο τησ Αριθμογραμμήσ

Υ07 Παράλληλα Συστήματα /11/2013 Οργάμωση κοιμής μμήμης (ΙΙ)

ΛΕΙΤΟΥΓΙΚΆ ΣΥΣΤΉΜΑΤΑ. 5 ο Εργαςτιριο Ειςαγωγι ςτθ Γραμμι Εντολϊν

Οδηγίεσ προσ τουσ εκπαιδευτικοφσ για το μοντζλο του Άβακα

Virtualization. Στο ςυγκεκριμζνο οδηγό, θα παρουςιαςτεί η ικανότητα δοκιμήσ τησ διανομήσ Ubuntu 9.04, χωρίσ την ανάγκη του format.

Τυπικζσ Γλϊςςεσ Περιγραφισ Υλικοφ Εργαςτιριο 1

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

Παράςταςη ςυμπλήρωμα ωσ προσ 1

ΕΦΑΡΜΟΓΕ ΒΑΕΩΝ ΔΕΔΟΜΕΝΩΝ ΣΗ ΝΟΗΛΕΤΣΙΚΗ. Φιλιοποφλου Ειρινθ

Πόςο εκτατό μπορεί να είναι ζνα μη εκτατό νήμα και πόςο φυςικό. μπορεί να είναι ζνα μηχανικό ςτερεό. Συνιςταμζνη δφναμη versus «κατανεμημζνησ» δφναμησ

ΑΣΚΗΣΕΙΣ ΧΑΜΗΛΩΝ ΕΡΑΝΑΛΗΨΕΩΝ: ΕΡΙΛΕΞΤΕ ΜΙΑ ΑΝΤΙΣΤΑΣΗ, ΕΤΣΙ ΩΣΤΕ ΝΑ ΕΘΕΤΕ ΣΕ ΕΞΑΝΤΛΗΣΗ ΣΕ 8-10 ΕΡΑΝΑΛΗΨΕΙΣ

ςυςτιματα γραμμικϊν εξιςϊςεων

3 θ διάλεξθ Επανάλθψθ, Επιςκόπθςθ των βαςικϊν γνϊςεων τθσ Ψθφιακισ Σχεδίαςθσ

Δίκτυα Υπολογιςτϊν 2-Rooftop Networking Project

Δομζσ Δεδομζνων Πίνακεσ

ΕΝΟΣΗΣΑ 1: ΓΝΩΡIΖΩ ΣΟΝ ΤΠΟΛΟΓΙΣΗ Ω ΕΝΙΑΙΟ ΤΣΗΜΑ. ΚΕΦΑΛΑΙΟ 2: Σο Εςωτερικό του Τπολογιςτι

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

ΕΝΟΣΗΣΑ 1: ΓΝΩΡIΖΩ ΣΟΝ ΤΠΟΛΟΓΙΣΗ. ΚΕΦΑΛΑΙΟ 3: Εργονομία

Ένα πρόβλθμα γραμμικοφ προγραμματιςμοφ βρίςκεται ςτθν κανονικι μορφι όταν:

Είδθ των Cache Misses: 3C s

ΚΥΠΡΙΑΚΗ ΜΑΘΗΜΑΤΙΚΗ ΕΤΑΙΡΕΙΑ

ΕΝΟΣΗΣΑ 3: ΧΡΗΗ ΕΡΓΑΛΕΙΩΝ ΕΚΦΡΑΗ ΚΑΙ ΔΗΜΙΟΤΡΓΙΑ

16. Πίνακεσ και Συναρτήςεισ

Μονάδες 6. Μονάδες ΓΑΨΕ Δεν υπάρχει ρίηα 2. ΑΝ Α>0 ΤΟΤΕ 3. ΤΕΛΟΣ_ΑΝ 4. ΑΛΛΙΩΣ 5. ίηα Τ_(Α)

Σ ΤΑΤ Ι Σ Τ Ι Κ Η. Statisticum collegium V

Ιδιότθτεσ πεδίων Γενικζσ.

ΛΕΙΤΟΥΓΙΚΆ ΣΥΣΤΉΜΑΤΑ. 6 θ Διάλεξθ Διαχείριςθ Μνιμθσ Μζροσ Β

Ειςαγωγι ςτο Δομθμζνο Προγραμματιςμό. Βαγγζλθσ Οικονόμου

ΡΟΓΑΜΜΑΤΙΣΤΙΚΟ ΡΕΙΒΑΛΛΟΝ MICRO WORLDS PRO

ΕΦΑΡΜΟΓΖσ ΒΆΕΩΝ ΔΕΔΟΜΖΝΩΝ ΚΑΙ ΔΙΑΔΙΚΣΥΟΤ. Ειρινθ Φιλιοποφλου

Δομζσ Αφαιρετικότθτα ςτα Δεδομζνα

Διαδικασία με βήματα. 1. Αλλάηω το χρϊμα ςκθνικοφ ςε γκρι(#3333).

ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ. 8 θ Διάλεξθ Ιδεατι Μνιμθ Μζροσ Α

Στα προθγοφμενα δφο εργαςτιρια είδαμε τθ δομι απόφαςθσ (ι επιλογισ ι ελζγχου ροισ). Ασ κυμθκοφμε:

ΒΙΟΛΟΓΟΙ ΓΙΑ ΦΥΣΙΚΟΥΣ

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

ΠΑΝΕΠΙΣΘΜΙΟ ΔΤΣΙΚΘ ΜΑΚΕΔΟΝΙΑ ΣΜΘΜΑ ΜΘΧΑΝΙΚΩΝ ΠΛΘΡΟΦΟΡΙΚΘ ΚΑΙ ΣΘΛΕΠΙΚΟΙΝΩΝΙΩΝ. Λειτουργικά υςτιματα, 4 ο Εξάμθνο Ψθφιακι χεδίαςθ ΙΙ, 4 ο Εξάμθνο

NH 2 R COOH. Σο R είναι το τμιμα του αμινοξζοσ που διαφζρει από αμινοξφ ςε αμινοξφ. 1 Πρωτεΐνες

MySchool Πρακτικζσ οδθγίεσ χριςθσ

Διορκώνω τισ εργαςίεσ των ςυμφοιτθτών μου

(Α3 1 ) Σασ δίνεται το παρακάτω αλγορικμικό τμιμα

Η γλώςςα προγραμματιςμού C

assessment.gr USER S MANUAL (users)

ΗΥ101: Ειςαγωγι ςτθν Πλθροφορικι

Νζεσ Τάςεισ ςτην εκπαιδευτική διαδικαςία: Gamification

Ειδικά Θζματα Βάςεων Δεδομζνων

Processor-Memory (DRAM) Διαφορά επίδοςθσ

Ειςαγωγι ςτθν Επιςτιμθ Υπολογιςτϊν. Ειςαγωγι ςτθν Python

ΠΡΟΦΟΡΑ ΖΗΣΗΗ ΚΡΑΣΘΚΗ ΠΑΡΕΜΒΑΗ

Συςκευζσ τθλεπικοινωνιϊν και δικτφωςθσ:

Εγχειρίδιο Χριςθσ τθσ διαδικτυακισ εφαρμογισ «Υποβολι και παρακολοφκθςθ τθσ ζγκριςθσ Εκπαιδευτικών Πακζτων»

Θεςιακά ςυςτιματα αρίκμθςθσ

10/12/2013 Συστήματα κατανεμημένης μνήμης (ΙΙ) + Μετρικές και επιδόσεις Β. Δημακόπουλοσ

Slide 1. Εισαγωγή στη ψυχρομετρία

Αυτόνομοι Πράκτορες. Αναφορά Εργασίας Εξαμήνου. Το αστέρι του Aibo και τα κόκαλα του

Πρόςβαςη και δήλωςη μαθημάτων ςτον Εφδοξο

ΕΡΓΑΣΗΡΙΑΚΗ ΑΚΗΗ 4.1

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

Βαςεις δεδομενων 1. Δρ. Αλζξανδροσ Βακαλουδθσ

ΠΡΟΓΡΑΜΜΑΣΙΜΌ ΤΠΟΛΟΓΙΣΏΝ. Κεφάλαιο 8 Η γλϊςςα Pascal

Ειδικά Θζματα Βάςεων Δεδομζνων

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

ΕΝΟΤΗΤΑ 2: ΤΟ ΛΟΓΙΣΜΙΚΟ ΤΟΥ ΥΠΟΛΟΓΙΣΤΗ. ΚΕΦΑΛΑΙΟ 6: Το γραφικό περιβάλλον Επικοινωνίασ (Γ.Π.Ε)

Ανάπτυξη Εφαρμογών Σε Προγραμματιςτικό Περιβάλλον

Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων. 15. Πίνακεσ ΙI. Ιωάννθσ Κατάκθσ. ΕΠΛ 032: Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων

Τεχνικζσ Ανάλυςησ Διοικητικών Αποφάςεων

ΥΡΟΝΣΙΣΗΡΙΟ Μ. Ε. ΚΑΙ ΚΕΝΣΡΟ ΙΔΙΑΙΣΕΡΩΝ ΜΑΘΗΜΑΣΩΝ «ΚΤΡΙΣΗ» ΔΙΑΓΩΝΙΜΑ ΘΕΜΑΣΑ Β ΛΤΚΕΙΟΤ ΥΕΒΡΟΤΑΡΙΟ 2018 ΑΕΠΠ

Γ' ΛΥΚΕΙΟΥ Η ΤΑΞΗ ΤΗΣ ΤΕΛΙΚΗΣ ΕΠΙΛΟΓΗΣ. Στθ ΓϋΛυκείου οι Ομάδεσ Προςανατολιςμοφ είναι τρεισ:

3 ΕΝΤΟΛΕΣ ΕΠΑΝΑΛΗΨΗΣ ( while, do while )

ΕΦΑΡΜΟΓΕ ΒΑΕΩΝ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΔΙΑΔΙΚΣΤΟΤ. Φιλιοποφλου Ειρινθ

Περιοριςμοί μιασ Β.Δ. ςτθν Access(1/3)

Ο ήχοσ ωσ φυςικό φαινόμενο

Μζρη διαςκζδαςησ παιδιών

Δομθμζνοσ Προγραμματιςμόσ. Βαγγζλθσ Οικονόμου Εργαςτιριο 9

Modellus 4.01 Συ ντομοσ Οδηγο σ

Transcript:

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

Από το 0 ο μάκθμα - Θζματα που κα καλφψουμε Ρρογραμματιςμόσ μθχανϊν κοινισ μνιμθσ (SMPs, multicores κλπ) Βαςικι οργάνωςθ των μθχανϊν αυτϊν & ηθτιματα που ζχουν άμεςθ επίπτωςθ ςτον προγραμματιςτι Διεργαςίεσ Νιματα (posix threads, kernel/user level threads) OpenMP Ρροβλιματα και τεχνικζσ για άντλθςθ επιδόςεων Ρρογραμματιςμόσ μθχανϊν κατανεμθμζνθσ μνιμθσ Βαςικι οργάνωςθ των μθχανϊν αυτϊν & ηθτιματα που ζχουν άμεςθ επίπτωςθ ςτον προγραμματιςτι Κυρίωσ εναςχόλθςθ με MPI & MPI2 DSM και sdsm Ρρογραμματιςμόσ «περίεργων» ςυςτθμάτων GPUs (CUDA) Cell (simulator) #2

Οργάνωςθ του μακιματοσ Διαλζξεισ Τρίτθ 10:00 13:00 Δεν επιτρζπεται καμία απουςία, χωρίσ ςυνεννόθςθ μαηί μου ΑΡΠ ΡΙΝ Ρρογραμματιςτικζσ εργαςίεσ κάκε 2 εβδομάδεσ περίπου Μελζτθ papers, προετοιμαςία παρουςίαςθσ και ςυηιτθςθ ςτθν τάξθ Κάκε 2 εβδομάδεσ περίπου Μετράει θ ςυμμετοχι Project Μελζτθ + προγραμματιςμόσ Θα ποφμε παραπάνω πράγματα ςε λίγο καιρό #3

Οργάνωςθ του μακιματοσ Ρρόοδοσ / τελικζσ εξετάςεισ (???) Θα εξαρτθκοφν από τον αρικμό των φοιτθτϊν Ρολλοί: εξετάςεισ και (αναγκαςτικά) ομαδικά project Αρκετοί: πρόοδοσ και projects, όχι τελικζσ εξετάςεισ Λίγοι: project και παραπάνω αςκιςεισ για αποφυγι εξετάςεων Εξαρτάται βζβαια και από το πϊσ ορίηεται το «πολλοί», «αρκετοί» και «λίγοι» Βακμολογία Ράλι, κα εξαρτθκεί από τον αρικμό των φοιτθτϊν Σε 2 εβδομάδεσ κα κακοριςτοφν τα τελικά ποςοςτά των αςκιςεων, παρουςιάςεων, project και τυχόν εξετάςεων #4

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

Ο νόμοσ του Joy για τισ επιδόςεισ Based on integer SPEC benchmarks #6

Ρρόςφατο παρελκόν SMPs (symmetric multiprocessors) 2 4 επεξεργαςτζσ (μονοπφρθνοι) ςυνθκιςμζνοι, μζχρι 8 επεξεργαςτζσ ςε εμπορικά ςυςτιματα Ρανάκριβα ςυςτιματα με 12-16 επεξεργαςτζσ ελάχιςτα Κοινι μνιμθ Τμιμα Ρλθροφορικισ: Ρολλά Sun με 2 UltraSparc Ρολλά PC με 2 Pentium / Athlon atlantis με 4 Pentium III Xeon 700.000 δρχ/cpu! paraguay με 4 x Intel Xeon 7000 Paxville @ 3GHz 2 cores per CPU / 2 threads per core (hyperthreaded) Δωρεά τθσ Intel USA ςτο PARAGROUP (2008) #7

Dual core / Quad core / Multicore / Manycore? Ρλζον και τα φτθνότερα PC ζχουν 1 επεξεργαςτι τουλάχιςτον διπφρθνο Διπφρθνοι αρχικά, τϊρα τετραπφρθνοι (Intel, AMD) Τ1 (Sun Niagara): 8πφρθνοι (με 4-way multithreaded πυρινεσ) από τον 12/2005! Ρολλαπλϊν πυρινων (multicore) γενικά Manycore (πολλϊν πυρινων)?? Μιλάμε για πολλοφσ πυρήνεσ Τριψιφιο νοφμερο (> 64) Ρότε? Τϊρα! Intel 80-πφρθνο πρωτότυπο είναι 2,5 ετϊν! Φεβ. 2007 80 απλά cores 2 floating point engines /core "network-on-a-chip τφπου πλζγματοσ 100 million transistors, >1 Teraflop peak! #8

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) #9

Clusters Ρανεπιςτιμιο Ιωαννίνων Κζντρο προςομοιϊςεων: 200 κόμβοι (κάκε κόμβοσ pc με 2 επεξεργαςτζσ) Τμιμα Ρλθροφορικισ: 16 κόμβοι, κάκε κόμβοσ 2 CPUS, κάκε CPU διπφρθνθ Και τα δφο με gigabit ethernet Βελτιωμζνεσ επιδόςεισ με δίκτυα χαμθλισ κακυςτζρθςθσ Ρ.χ. Myrinet Ρολφ ακριβότερα όμωσ Κάρτα δικτφο gigabit: 10-20 ευρϊ Cluster τμιματοσ Υλικϊν (Myrinet, πριν 6 χρόνια περίπου) Ρερίπου 100.000 ευρϊ για τα PC και άλλεσ 100.000 ευρϊ για τισ κάρτεσ δικτφου τουσ! Το μζλλον: Clusters από πολυπφρθνουσ κόμβουσ #10

GPUs, GPGPUs, Cells, κλπ. Ράρα πολλά και πολφ απλά επεξεργαςτικά ςτοιχεία, κατάλλθλα είτε για ςυγκεκριμζνου τφπου υπολογιςμοφσ (GPUs) είτε και για γενικότερουσ υπολογιςμοφσ (GPGPUs, Cell). Ρολφ τθσ μόδασ Ρολφ γριγορα Ιδιαίτεροσ προγραμματιςμόσ Με μία λζξθ: Ετερογζνεια Κλαςικόσ ιςχυρόσ πυρινασ/πυρινεσ + «ειδικοί» (γριγοροι, πολφ αλλά απλοί/ανίςχυροι) πυρινεσ Ετερογζνεια και ςτον τρόπο προγραμματιςμοφ #11

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 Ρρζπει θ εφαρμογή να ζχει προγραμματιςτεί παράλληλα ώςτε να χρηςιμοποιεί τουσ πολλαπλοφσ επεξεργαςτεσ #12

Οργάμωση κοιμής μμήμης Shared memory

1 ο Μάκθμα «Οντότθτεσ» εκτζλεςθσ κϊδικα Σειριακό πρόγραμμα για υπολογιςμό του π = 3.141592 #define N 512 float pi = 0.0, W = 1.0/Ν; main() { int i; for (i = 0; i < N; i++) pi += 4*W / (1 + (i+0.5)*(i+0.5)*w*w); printf( π = %f\n, pi); } Πταν φορτωκεί και εκτελείται το πρόγραμμα γίνεται διεργαςία (process). Κάκε διεργαςία εκτελείται ςε ζναν επεξεργαςτι Το λειτουργικό ςφςτθμα φροντίηει για αυτό #14

Διεργαςίεσ & νιματα Μία διεργαςία αποτελείται (κατ ελάχιςτο) από δεδομζνα, κϊδικα (εντολζσ), μία ςτοίβα (stack) και ζναν μετρθτι προγράμματοσ (program counter) #define N 512 Ο μετρθτισ προγράμματοσ (PC): δείχνει ςτθν επόμενθ εντολι του κϊδικα που κα εκτελεςτεί Η ςτοίβα χρειάηεται για: αποκικευςθ των τοπικϊν μεταβλθτϊν (τα «δεδομζνα» τθσ διεργαςίασ που είπαμε παραπάνω είναι οι global μεταβλθτζσ) float pi = 0.0, W = 1.0/Ν; main() { } int i; for (i = 0; i < N; i++) pi += 4*W / (1 + (i+0.5)*(i+0.5)*w*w); printf( π = %f\n, pi); Ο ςυνδυαςμόσ PC + ςτοίβα λζγεται νήμα εκτζλεςησ (thread) Δθλαδι θ διεργαςία αποτελείται από (global) δεδομζνα, από κϊδικα και από ζνα νιμα εκτζλεςθσ που περνάει από τισ εντολζσ του κϊδικα Το νιμα είναι αυτό που εκτελείται όταν λζμε ότι εκτελείται θ διεργαςία! Το νιμα αυτό λζγεται αρχικό νήμα τθσ διεργαςίασ #15

Διεργαςίεσ & νιματα Μία διεργαςία μπορεί να δθμιουργιςει κι άλλα πολλά νιματα εκτζλεςθσ: Δθμιουργϊντασ τίποτε άλλο εκτόσ από πολλζσ ςτοίβεσ και PCs Πλα κα τρζχουν εντολζσ από τον ίδιο κϊδικα (δεν δθμιουργείται άλλο αντίγραφό του) και τζλοσ Πλα κα ζχουν τα ίδια global δεδομζνα! Δθλαδι οι κακολικζσ μεταβλθτζσ τθσ διεργαςίασ είναι ΑΥΤΟΜΑΤΩΣ ΚΟΙΝΕΣ μεταξφ των νθμάτων τθσ. Στθν κάκε ςτοίβα το κάκε νιμα κα ζχει τισ δικζσ του τοπικζσ μεταβλθτζσ Κάκε νιμα εκτελείται ςε ζναν επεξεργαςτι Το λειτουργικό ςφςτθμα φροντίηει για αυτό (εκτόσ από μερικζσ περιπτϊςεισ) #16

Ραράλλθλα προγράμματα Επομζνωσ, για να εκμεταλλευτοφμε πολλαπλοφσ επεξεργαςτζσ, ζχουμε δφο βαςικζσ τεχνικζσ: Πολλαπλζσ διεργαςίεσ Η διεργαςία μασ «γεννά» κι άλλεσ διεργαςίεσ και κάκε μία εκτελείται ςτον δικό τθσ επεξεργαςτι (π.χ. fork()) Πολλαπλά νήματα ςε μία διεργαςία Το αρχικό νιμα εκτζλεςθσ «γεννά» κι άλλα νιματα και κάκε ζνα εκτελείται ςτον δικό του επεξεργαςτι Υπάρχουν διαφορζσ ςε ταχφτθτα δθμιουργίασ, απαιτιςεισ ςε πόρουσ (π.χ. μνιμθ) κλπ αλλά θ πιο ςθμαντικι διαφορά είναι ότι: Ανάμεςα ςτισ πολλαπλζσ διεργαςίεσ ΔΕΝ ΥΠΑΡΧΕΙ καμία κοινή μεταβλητή. Ρρζπει να δθμιουργθκοφν «με το χζρι», ενϊ μεταξφ των πολλαπλϊν νθμάτων όλεσ οι global μεταβλθτζσ είναι κοινζσ είτε το κζλουμε είτε όχι. #17

Υλικό που κα εκτελζςει το παράλλθλο πρόγραμμα Κάκε οντότθτα εκτζλεςθσ (νιμα ι διεργαςία) κα εκτελείται ςε ζναν επεξεργαςτι, όπου «επεξεργαςτισ» είναι ότι το λειτουργικό ςφςτθμα κεωρεί επεξεργαςτι! Ρριν 3-4 χρόνια, ιταν μια CPU (μονοπφρθνθ) Ρλζον είναι 1 πυρινασ από τθν CPU (γενικά, ζνα αυτόνομο επεξεργαςτικό ςτοιχείο) Σε πολυνθματικοφσ επεξεργαςτζσ (π.χ. Intel hyperthreading), κάκε ζνα από τα hardware threads παρουςιάηεται ςτο λειτουργικό ςφςτθμα ότι είναι διαφορετικόσ «επεξεργαςτισ» Οι πολυνθματικοί επεξεργαςτζσ εκτελοφν 1 διεργαςία (ι νιμα) τθ φορά αλλά όταν βρίςκουν ελεφκερο χρόνο μποροφν να εκτελζςουν για λίγο εντολζσ από άλλθ διεργαςία (ι νιμα). Εκμεταλλεφονται κενοφσ κφκλουσ, αλλά αν υποςτθρίηουν Ν hardware threads, δεν ζχουν προφανϊσ τισ επιδόςεισ Ν ανεξάρτθτων cores. #18

Οργάνωςθ των επεξεργαςτϊν - SMPs SMPs Symmetric Multiprocessors Bus-based με όλουσ τουσ επεξεργαςτζσ επάνω ςε ζναν δίαυλο ςτον οποίο βρίςκεται και θ κφρια μνιμθ Πλοι προςπελαφνουν τθν ίδια μνιμθ (κοινόχρθςτθ) #19

SMPs Οικονομικι λφςθ, επιτυχθμζνα εμπορικά Λίγοι επεξεργαςτζσ (ζωσ 10+, το πολφ) Ο δίαυλοσ είναι το bottleneck Γενικά, οι επεξεργαςτζσ όλοι βλζπουν και απευκφνονται ςτθ κφρια μνιμθ ςαν να είναι ενιαία και εξ ολοκλιρου προςπελάςιμθ UMA (= Uniform Memory Access) Πλοι αντιλαμβάνονται τθν ίδια κακυςτζρθςθ ςτθν προςπζλαςθ οποιουδιποτε δεδομζνου #20

Switch-based διαςφνδεςθ Αντί για δίαυλοσ, διακοπτικό δίκτυο crossbar (Sun Enterprise E10000, Earth Simulator) Άλλα δίκτυα (π.χ. πεταλοφδασ, clos κλπ) UMA Καλφτερθ κλιμακωςιμότθτα, ακριβό #21

Ανομοιόμορφθ προςπζλαςθ Για μεγάλθ κλιμακωςιμότθτα: ιδιωτική μνήμη ςε κάθε επεξεργαςτή Θα πρζπει οι επεξεργαςτζσ να ςυνδζονται μεταξφ τουσ για να μποροφν να προςπελάςουν ο ζνασ τθ μνιμθ του άλλου Ρϊσ κα νομίςουν όλοι ότι θ μνιμθ είναι ενιαία, ενϊ ο κακζνασ ζχει μόνο ζνα κομμάτι τθσ; Χρειάηεται ειδικόσ ελεγκτισ ο οποίοσ ξεχωρίηει τισ προςπελάςεισ για τα τοπικά δεδομζνα και τα απομακρυςμζνα. Στθ δεφτερθ περίπτωςθ πάει και τα φζρνει από τθν μνιμθ άλλου επεξεργαςτι. Επομζνωσ, υπάρχει ανομοιόμορφη προςπζλαςη τησ μνήμησ Ταχφτατα για δεδομζνα που τυχαίνουν να είναι ςτθν τοπικι μνιμθ Με κακυςτζρθςθ αν βρίςκονται ςτθ μνιμθ κάποιου άλλου NUMA (= Non-Uniform Memory Access) #22

Ραράδειγμα: AMD Opterons και hypertransport NUMA factor: Ρόςο (κατά μζςο όρο) πιο αργι είναι θ προςπζλαςθ μνιμθσ άλλου επεξεργαςτι απ ότι τθσ τοπικισ μνιμθσ Σε ςυςτιματα με opterons είναι περίπου 1.3 1.5. Opteron 8347HE (1,9GHz) #23

Τα multicore τι είναι; Μζχρι τϊρα είναι παρόμοια με τα SMP μιασ και είναι πολλαπλά cores που προςπελαφνουν μία κοινι μνιμθ Αν και κυμίηουν SMPs, ανάλογα με το πϊσ διαμοιράηονται τισ caches, πάνε όλο και πιο πολφ προσ NUMA! Ρ.χ. Intel Xeon 5450 (quad core) Ανά δφο οι πυρινεσ ζχουν κοινι cache δευτζρου επιπζδου Άρα αν κάτι το πετφχουν εκεί, το παίρνουν πολφ γριγορα Αλλιϊσ πάνε ςτθν κφρια μνιμθ (που είναι πολφ αργι) Τα manycore κα είναι ΝUMA 99,999% «Βακιζσ» ιεραρχίεσ cache Συνολικι cache μικρότερθ από SMPs (υπάρχει μοίραςμα ανάμεςα ςτα cores) Θα ςτοιχίηει πολφ το cache miss #24

Θζματα που ζχουν επίπτωςθ ςτισ επιδόςεισ των προγραμμάτων SMPs & caches Coherency (ςυνοχι) False sharing NUMA & caches ccnuma & directory-based coherency (ςυνοχι με καταλόγουσ) Ρωσ το NUMA factor επθρεάηει τισ επιδόςεισ #25

Cache Απαραίτητη μιασ και εξοικονομεί πολφ χρόνο Ρολφ γρθγορότερθ από τθν κφρια μνιμθ Ρολφ μικρότερθ από τθν κφρια μνιμθ Πτι δεδομζνο χρθςιμοποιιςει θ διεργαςία μασ (δθλαδι ο επεξεργαςτισ), Το φζρνει και το φυλάει Φζρνει και τα γειτονικά του δεδομζνα (φζρνει ζνα ολόκλθρο μπλοκ μνιμθσ) Εφόςον το πρόγραμμα ζχει τοπικότητα (δθλαδι χρθςιμοποιεί ςχετικά λίγα και γειτονικά δεδομζνα για αρκετι ϊρα), ζχουμε πολφ μεγάλθ βελτίωςθ ςτθν ταχφτθτα προςπζλαςθσ των δεδομζνων. #26

Ρϊσ να καταςτρζψετε τθν cache for (i = 0; i < 10000; i++) for (j = 0; j < 10000; j++) a[i][j] = 2*b[i][j]; for (j = 0; j < 10000; j++) for (i = 0; i < 10000; i++) a[i][j] = 2*b[i][j]; Χρόνοσ εκτέλεςησ ςτο φορητό μου: 1.2 sec Χρόνοσ εκτέλεςησ ςτο φορητό μου: 14 sec #27

Cache coherency ΕΠ 1 ΕΠ 2 ΕΠ Ν cache Υ cache Υ cache X = global μεταβλθτι και δφο νιματα τθσ διεργαςίασ εκτελοφνται ςτουσ επεξεργαςτζσ 1 και 2 Τι γίνεται αν το νιμα 1 αλλάξει το Χ (π.χ. κάνει Χ = Χ+1); ΔΙΑΤΛΟ ΔΙΑΤΝΔΕΗ ΕΠΕΞΕΡΓΑΣΩΝ ΜΝΗΜΩΝ Υ Μ 1 Μ 2 Μ Μ #28

Cache coherency ΙΙ Αυτό είναι το πρόβλθμα τθσ ςυνοχισ τθσ cache Ρρζπει όλεσ οι caches και θ κφρια μνιμθ να είναι ενθμερωμζνεσ με τισ πιο πρόςφατεσ τιμζσ των δεομζνων που ζχουν Το πρόβλθμα ςτουσ SMPs λφνεται με ειδικά πρωτόκολλα ςτο hardware, π.χ. MESI (Intel), MOESI (AMD, Sparc). Τροποποιιςεισ ςε μία cache ακυρώνουν τυχόν αντίγραφο του δεδομζνου ςε μία άλλθ Οι τροποποιιςεισ και ακυρϊςεισ δθμιουργοφν αρκετι κίνθςθ ςτο δίαυλο Τα πρωτόκολλα λειτουργοφν παρακολουκϊντασ ΤΑ ΡΑΝΤΑ ΡΟΥ ΣΥΜΒΑΙΝΟΥΝ ΣΤΟΝ ΔΙΑΥΛΟ, ΑΡΟ ΟΡΟΙΟΝ ΕΡΕΞΕΓΑΣΤΗ ΚΑΙ ΝΑ ΡΟΕΧΟΝΤΑΙ. ΔΙΔΑΓΜΑ: οι κοινζσ μεταβλητζσ που τροποποιοφνται ςυχνά και από διαφορετικά νήματα προκαλοφν υψηλή κίνηςη ςτον δίαυλο και επιφζρουν μεγάλεσ καθυςτερήςεισ. Τα πρωτόκολλα προςπακοφν να μειϊςουν τθν κίνθςθ ςτο ελάχιςτο, όμωσ ζνα απρόςεκτο πρόγραμμα μπορεί να καταςτρζψει το όποιο όφελοσ. #29

False sharing Οι caches δεν αποκθκεφουν 1 λζξθ αλλά ζνα ολόκλθρο μπλοκ μνιμθσ ςε κάκε γραμμι τουσ. Ασ υποκζςουμε για παράδειγμα ότι ζχουμε το παρακάτω πρόγραμμα και ότι κάκε γραμμι τθσ cache χωράει 4 ςυνεχόμενεσ λζξεισ. Ζχουμε 4 νιματα (εκτελοφνται ςε 4 επεξεργαςτζσ) και το νιμα i (i = 0, 1, 2, 3) εκτελεί: 1. sum = a[0]+a[1]+a[2]+a[3]; /* Όλοσ ο a[] ςτην cache */ 2. a[i] = a[i] + i; Μετά τθν πρϊτθ εντολι, ςτισ cache των 4 επεξεργαςτϊν υπάρχει ολόκλθροσ ο πίνακασ a[]. #30

False sharing II #31

False sharing III Ραρότι τα νιματα αλλάηουν διαφορετικά ςτοιχεία, υπάρχει πρόβλθμα μιασ και οι caches κεωροφν ότι άλλαξε θ γραμμι που φυλάνε και εκκινοφν τουσ μθχανιςμοφσ ςυνζπειασ! ΔΙΔΑΓΜΑ: υπάρχει κίνδυνοσ καθυςτερήςεων ακόμα και όταν τα νήματα δεν τροποποιοφν κάτι κοινό Λφςη; Τα δεδομζνα να ζχουν μζγεκοσ όςο και θ γραμμι τθσ cache και Να είναι ςτοιχιςμζνα ςε κζςεισ μνιμθσ που είναι ακζραια πολλαπλάςια του μεγζκουσ τθσ γραμμισ. #32

NUMA & ςυνζπειεσ Πλοι οι επεξεργαςτζσ ζχουν caches. Τι γίνεται αν κάποια ςτιγμι ο επεξεργαςτισ φζρει ζνα δεδομζνο από ζναν άλλο επεξεργαςτι; Το δεδομζνο κα πάει ςτθν cache Το πρόβλθμα τθσ ςυνζπειασ πϊσ λφνεται ςε αυτι τθν περίπτωςθ (αφοφ δεν υπάρχει δίαυλοσ να «παρακολουκείται»); Δφο λφςεισ: ΑΡΑΓΟΕΥΕΤΑΙ τα απομακρυςμζνα δεδομζνα να μπαίνουν ςτθν cache (π.χ. Cray T3D) ι ΕΡΙΤΕΡΕΤΑΙ, αλλά επιπλζον χρθςιμοποιοφνται νζα πρωτόκολλα ςυνοχισ, βαςιςμζνα ςε καταλόγουσ (ccnuma cache coherent NUMA) Directory-based cache coherence #33

Τοποκζτθςθ δεδομζνων / νθμάτων Το false sharing ζχει ακόμα μεγαλφτερεσ επιπτϊςεισ Βαςικό μζλθμα το ποφ κα τοποκετθκοφν τα νιματα και ποφ τα δεδομζνα Αν τα δεδομζνα που χρθςιμοποιεί πιο ςυχνά ζνα νιμα πάνε ςε άλλον επεξεργαςτι από ότι το νιμα, τότε κα ζχουμε κακυςτεριςεισ (NUMA factor) Συνικθσ τακτικι ςτα λειτουργικά ςυςτιματα: First touch (όποιο νιμα προςπελάςει πρϊτο κάποιο δεδομζνο, τότε «τραβάει» το δεδομζνο αυτό ςτθν μνιμθ του επεξεργαςτι που το εκτελεί. Το δεδομζνο δεν μετακινείται από εκεί και πζρα). ΔΙΔΑΓΜΑ??? Θζλει προςοχι ςτισ αρχικοποιήςεισ. Δεν μπορεί τισ αρχικοποιιςεισ να τισ κάνει μόνο ζνα νιμα!! #34

Μζτρθςθ ρυκμοφ προςπζλαςθσ Πταν οι εφαρμογζσ επεξεργάηονται πολλά δεδομζνα, τότε ζνα ςθμαντικό ηθτοφμενο είναι να μποροφμε να προςπελαφνουμε πολφ γριγορα τθ μνιμθ. Ρολλοί επεξεργαςτζσ ι πολλοί πυρινεσ: Δυνατότθτα για μεγάλθ ταχφτθτα Είναι όμωσ ζτςι; Φτάνει να βάλω πολλά cores μόνο? Διπλαςιάηοντασ τα cores (διπλαςιάηοντασ και τα νιματα τθσ διεργαςίασ μου) διπλαςιάηεται και ο ρυκμόσ (bytes/sec) προςπζλαςθσ ςτα δεδομζνα; Δεν είναι πάντα ζτςι τα πράγματα! Μετράει θ οργάνωςθ των cores Μετράει θ τοποκζτθςθ των νθμάτων #35

8 cores είναι τα ίδια;; #36

Ταχφτθτα προςπζλαςθσ τθσ μνιμθσ Κάκε επανάλθψθ κάνει μία ανάγνωςθ (load) και μία εγγραφι (store) ςτθν μνιμθ Ραραλλθλοποίθςθ με πολλά νιματα, το κακζνα δοφλευε μόνο ςτα δικά του δεδομζνα (δθλαδι κάκε νιμα προςπελαφνει διαφορετικζσ διευκφνςεισ δεν υπάρχουν ςυγκροφςεισ) Δοκιμζσ με διαφορετικζσ τοποκετιςεισ των νθμάτων #37

1 νιμα εκτελείται ςτο κάκε ςφςτθμα #38

2 x 4core Intel Xeon Scalability #39

4 x 2core AMD Opteron Scalability προςεκτικά όμωσ #40

1 x 8core Niagara T2 (με 8-way CMT ανά πυρινα) Scalability Πμωσ αργόσ για 1 νιμα #41