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

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

Κεφάλαιο VIΙΙ Β. Δημακόπουλος

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Μεταβίβαση μηνυμάτων. Κεφάλαιο 5 (νέο βιβλίο) Κεφάλαιο 8 (παλιές σημειώσεις)

Non-blocking Επικοινωνίεσ και Buffering. Κώςτασ Διαμαντάρασ ΤΕΙ Θεςςαλονίκθσ 2011

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

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

ΘΕΜΑ Α /25 (A1)Χαρακτηρίςτε τισ παρακάτω προτάςεισ ωσ (Σ)ωςτζσ ή (Λ)άθοσ

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

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

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

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

ύο μηχανισμοί απαιτούνται: 1. Μία μέθοδος για τη δημιουργία διεργασιών

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

MPI: Βαςικζσ Εντολζσ Επικοινωνίασ. Κώςτασ Διαμαντάρασ Τμιμα Πλθροφορικισ ΤΕΙ Θεςςαλονίκθσ 2011

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

Πολυπλέκτες. 0 x 0 F = S x 0 + Sx 1 1 x 1

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

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

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

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

Message Passing Interface MPI. Κϊςτασ Διαμαντάρασ Τμιμα Πλθροφορικισ ΤΕΙ Θεςςαλονίκθσ

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

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

Προγραμματισμός με Μεταβίβαση Μηνυμάτων

Γράφοι. Δομζσ Δεδομζνων Διάλεξθ 9

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

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

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

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

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

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

Message Passing Interface (MPI)

Modem/Router IP, ADSL, ADSL2, ADSL2+, VDSL, VDSL2

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

Πολυεπεξεργαστές Κατανεμημένης Μνήμης. Κεφάλαιο 3

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

Message Passing Interface (MPI)

Visual C Express - Οδηγός Χρήσης

Κεφάλαιο ΙΙΙ Β. Δημακόπουλος

Υ07 Παράλληλα Συστήματα /5/2016 Προγραμματισμός με μεταβίβαση μηνυμάτων

Δίκτυα Μεταγωγισ Δεδομζνων

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


Δίκτυα Μεταγωγήσ. Εκπαιδεφτρια :Μαρία Πολίτθ

ΕΚΔΟΣΗ 1.1 ΜΑΙΟΣ, 2018 ΕΙΣΑΓΩΓΗ ΣΤΑ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΑΛΓΟΡΙΘΜΟΣ POLLING ΚΥΜΑΤΙΚΟΣ ΑΛΓΟΡΙΘΜΟΣ ΕΠΙΜΕΛΕΙΑ: Β. ΤΣΑΚΑΝΙΚΑΣ, Β.

ΕΚΔΟΣΗ 1.1 ΜΑΙΟΣ, 2018 ΕΙΣΑΓΩΓΗ ΣΤΑ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΕΚΛΟΓΗ ΑΡΧΗΓΟΥ ΕΠΙΜΕΛΕΙΑ: Β. ΤΣΑΚΑΝΙΚΑΣ, Β. ΤΑΜΠΑΚΑΣ

Εγχειρίδιο Χρήςησ Προςωποποιημζνων Υπηρεςιών Γ.Ε.ΜΗ. (Εθνικό Τυπογραφείο)

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

Ανταλλαγι Μθνυμάτων. Κϊςτασ Διαμαντάρασ Τμιμα Πλθροφορικισ ΤΕΙ Θεςςαλονίκθσ

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

Λ10 Παράλληλος & Κατανεμημένος Προγραμματισμός Μάθημα 8 ο & 9 ο 1 & 8/12/2009

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

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

Εισαγωγή. E-03: Λειτουργικά Συστήµατα ΙΙ 6. Εαρινό Εξάµηνο SUN RPC. Κλήση Αποµακρυσµένων ιαδικασιών (RPC) Σύνδεση: Port Mapper.

Εγχειρίδιο Χρήςησ Προςωποποιημζνων Υπηρεςιών Γ.Ε.ΜΗ. (Περιφέρειες)

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

Διδάςκων: Κωνςταντίνοσ τεφανίδθσ

Εγχειρίδιο Χρήςησ Προςωποποιημζνων Υπηρεςιών Γ.Ε.ΜΗ. (Εθνικό Τυπογραφείο)

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

ΘΕΜΑΣΑ ΕΡΓΑΙΩΝ ΓΙΑ ΣΟ ΜΑΘΗΜΑ ΠΡΟΟΜΟΙΩΗ

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

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

ΕΚΔΟΣΗ 1.0 ΟΚΤΩΒΡΙΟΣ, 2017 ΕΙΣΑΓΩΓΗ ΣΤΑ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΕΙΣΑΓΩΓΗ ΣΤO MESSAGE PASSING INTERFACE - MPI ΕΠΙΜΕΛΕΙΑ: Β. ΤΣΑΚΑΝΙΚΑΣ, Β.

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

Οργάνωση Κατανεμημένης Μνήμης

HY437 Αλγόριθμοι CAD

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

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

Τφποι δεδομζνων MPI. Κώςτασ Διαμαντάρασ Τμιμα Πλθροφορικισ ΤΕΙ Θεςςαλονίκθσ

Ιςτορία του Παγκόςμιου ιςτοφ

Αςκιςεισ ςε (i) Δομζσ Ευρετθρίων και Οργάνωςθ Αρχείων (ii) Κανονικοποίθςθ

P, τότε: P και το μζςο πλικοσ των εμφανίςεων του γεγονότοσ ςτθ μονάδα του. X t το πλικοσ των εμφανίςεων του γεγονότοσ ςτο διάςτθμα. 0, t.

HY437 Αλγόριθμοι CAD

Δζντρα. Δομζσ Δεδομζνων

Κάνουμε κλικ ςτθν επιλογι του οριηόντιου μενοφ «Get Skype»για να κατεβάςουμε ςτον υπολογιςτι μασ το πρόγραμμα του Skype.

ΕΚΔΟΣΗ 1.1 ΑΠΡΙΛΙΟΣ, 2018 ΕΙΣΑΓΩΓΗ ΣΤΑ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΤΟ ΠΡΩΤΟΚΟΛΛΟ ECHO ΕΠΙΜΕΛΕΙΑ: Β. ΤΣΑΚΑΝΙΚΑΣ, Β. ΤΑΜΠΑΚΑΣ

Εργαςτιριο Πικανοτιτων Σθμειϊςεισ προγραμματιςμοφ: βαςικζσ γνϊςεισ ανάπτυξθσ εφαρμογϊν. Κϊςτασ Αρβανιτάκθσ

ΕΚΔΟΣΗ 1.0 ΟΚΤΩΒΡΙΟΣ, 2017 ΕΙΣΑΓΩΓΗ ΣΤΑ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΤΟ ΠΡΩΤΟΚΟΛΛΟ TARRY ΕΠΙΜΕΛΕΙΑ: Β. ΤΣΑΚΑΝΙΚΑΣ, Β. ΤΑΜΠΑΚΑΣ

groupsms Interface: Εργαλείο μαζικών αποζηολών SMS

Υπολογισμοί Μεταβίβασης Μηνυμάτων

Πολυεπεξεργαστές Κατανεμημένης Μνήμης. Κεφάλαιο ΙΙΙ

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

Δίκτυα Διασύνδεσης

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

x n D 2 ENCODER m - σε n (m 2 n ) x 1 Παραδείγματα κωδικοποιθτϊν είναι ο κωδικοποιθτισ οκταδικοφ ςε δυαδικό και ο κωδικοποιθτισ BCD ςε δυαδικό.

Ιςοηυγιςμζνα δζντρα και Β- δζντρα. Δομζσ Δεδομζνων

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

HY437 Αλγόριθμοι CAD

Ζρευνα ικανοποίθςθσ τουριςτϊν

Πνομα Ομάδασ: Προγραμματιςμόσ ενόσ κινοφμενου ρομπότ

Κατανεμημένος και Παράλληλος Προγραμματισμός MPI. MPI Απλές εντολές 03/13/2016. Οδηγίες αποστολής / παραλαβής μηνυμάτων, Υπολογισμός του π (

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

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

ΑΤΣΟΝΟΜΟΙ ΠΡΑΚΣΟΡΕ ΕΡΓΑΙΑ ΕΞΑΜΗΝΟΤ HEARTSTONE ΑΛΕΞΑΝΔΡΟ ΛΟΤΚΟΠΟΤΛΟ ΑΜ:

Ερωτιςεισ & απαντιςεισ για τα ξφλινα πνευςτά

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

Εισαγωγικές έννοιες. Αντώνησ Κ Μαώργιώτησ

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

Δίκτυα Διασύνδεσης

Συστήµατα Παράλληλης Επεξεργασίας. Message Passing Interface (MPI)

Transcript:

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

multicomputers, MPPs, clusters

Πολυεπεξεργαςτζσ κατανεμθμζνθσ μνιμθσ Ανεξάρτθτοι επεξεργαςτζσ, ο κακζνασ με τθν ιδιωτικι του μνιμθ (κόμβοσ = CPU + μνιμθ) P 1 P 2 P Ν ΔΙΚΣΤΟ ΔΙΑΤΝΔΕΗ ΕΠΕΞΕΡΓΑΣΩΝ Δίκτυο διαςφνδεςθσ επεξεργαςτϊν (interconnection network) δίαυλοσ δίκτυο διακοπτϊν point-to-point, ςτατικό, άμεςο δίκτυο (0,0) (0,1) (0,2) (0,3) (1,0) (1,1) (1,2) (1,3) #3

Βαςικι οργάνωςθ Επικοινωνία επεξεργαςτών μζςω ανταλλαγήσ μηνυμάτων, επάνω από το δίκτυο διαςφνδεςησ Λόγω του ότι κάκε κόμβοσ είναι ουςιαςτικά ζνασ (ςχεδόν) ολοκλθρωμζνοσ και αυτόνομοσ υπολογιςτισ, οι ΠΚΜ είναι γνωςτοί και ωσ πολυχπολογιςτζσ (multicomputers) Η οργάνωςθ μοιάηει με δίκτυο υπολογιςτϊν Διαφορζσ: ταχφτθτα τοπολογία λειτουργικό ςφςτθμα... #4

Massively Parallel Processors (MPPs) #5

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 Στο τμιμα μασ: Γενικότερο δίκτυο ςτακμϊν εργαςίασ (100Mbps ethernet, αργό με πολφ κίνθςθ) Αυτόνομο cluster (http://gatepc73.cs.uoi.gr:8880) 16 κόμβοι, κάκε κόμβοσ 2 CPUS, κάκε CPU διπφρθνθ gigabit Ethernet #6

Το δίκτυο διασύμδεσης

Τι κζλουμε από ζναν δίκτυο διαςφνδεςθσ για MPPs Το δίκτυο διαςφνδεςθσ κα πρζπει να μεταφζρει όςο το δυνατόν περιςςότερα μθνφματα, όςο το δυνατόν γρηγορότερα με ελάχιςτο κόςτοσ και μζγιςτη αξιοπιςτία. Αυτά είναι αλλθλοςυγκρουόμενα, όμωσ. Μικρι διάμετροσ, μικρι μζςθ απόςταςθ μικρή καθυςτζρηςη ςε packet-switching, μικρή contention ςε wormhole switching Μικρόσ και ςτακερόσ βακμόσ απλοί και οικονομικοί routers, μικρότερη και ςταθερή καλωδίωςη Χαμηλότερη connectivity, μεγαλφτερεσ αποςτάςεισ Στην ΚΑΛΥΤΕΡΗ περίπτωςη ζχουν λογαριθμική διάμετρο #8

και άλλα που κζλουμε Μεγάλο bisection width Ταχφτητα για αλγορίθμουσ με μεγάλο ςυλλογικό επικοινωνιακό φόρτο Δυςκολία ςτην υλοποίηςη (π.χ. ςτο VLSI πολλά καλώδια και διαςταυρώςεισ) Υψθλό connectivity Ταχφτητα (πολλαπλά μονοπάτια) και αξιοπιςτία (fault tolerance) Μεγάλοσ βαθμόσ κορυφών Συμμετρία Απλότητα ςτο ςχεδιαςμό, δυνατότητα ανάπτυξησ απλών και γρήγορων επικοινωνιακών αλγορίθμων, ευκολία ςτην ανάλυςη Εφκολθ ενςωμάτωςθ άλλων γράφων και ςε άλλουσ γράφουσ Πολλοί καλοί αλγόρικμοι δουλεφουν ςε ςυγκεκριμζνθ τοπολογία Εφαρμογή αλγορίθμων αυτοφςιων ςε άλλη τοπολογία #9

Η βάςθ: πλιρθσ γράφοσ, γραμμικόσ γράφοσ και δακτφλιοσ 0 1 Ν 1 0 1 Ν 1 #10

Η πράξθ: πλζγματα, tori, κφβοι (0,0) (0,1) (0,2) (0,Μ 1) (0,0) (1,0) (1,1) (1,Μ 1) (Μ 1,Μ 1) (Μ 1,Μ 1) Πλέγμα Μ Μ Πλέγμα 4 3 2 Torus Μ Μ 1 0/00 1/01 0/000 1/001 4/100 5/101 0 Δισδιάστατξς κύβξς (Q 2 ) Μξνξδιάστατξς κύβξς (Q 1 ) 2/10 3/11 2/010 3/011 6/110 7/111 Τριςδιάςσασξφ κύβξφ #11

Παράδειγμα: διαδρόμθςθ ςτον κφβο Σχθματίηονται «διορκϊνοντασ» τα bit ζνα προσ ζνα Γνωρίηουμε ότι οι γειτονικοί κόμβοι διαφζρουν ςε ακριβϊσ 1 bit Σε κάκε βιμα, ο τρζχον κόμβοσ επιλζγει ζναν γείτονά του ϊςτε να διαφζρει ςε ζνα bit λιγότερο από αυτά του προοριςμοφ Ζτςι με κάκε βιμα «διορκϊνεται» και 1 bit, μζχρι να καταλιξουμε τελικά ςτον προοριςμό Διΰρτυςη σξψ 1 ξψ bit (ακμή ςσην 1 η διάςσαςη) 1/001 5/101 0/000 4/100 Διΰρτυςη σξψ 2 ξψ bit (ακμή ςση 2 η διάςσαςη) 3/011 7/111 2/010 6/110 #12

Τα υπόλοιπα χαρακτηριστικά του δικτύου

Ζνα δίκτυο διαςφνδεςθσ χαρακτθρίηεται από: Τθν τοπολογία του Ποίοσ κόμβοσ ςυνδζεται με ποιον Το είδαμε πριν Τθ διαδρόμηςή του (routing) Ποιο από όλα τα δυνατά μονοπάτια κα επιλεχκεί Πολλζσ επιλογζσ πολιτικϊν Τον ζλεγχο ροήσ του (flow control) Πϊσ διανζμονται οι πόροι του δικτφου (κανάλια, buffers κλπ), τι ςυμβαίνει ςε περίπτωςθ ςυγκροφςεων Αρχιτεκτονικι του διαδρομθτι Τθ μεταγωγή του (switching) Πϊσ μεταφζρεται εςωτερικά ςε ζναν διαδρομθτι το μινυμα από μία είςοδο ςε μία ζξοδό του Κυκλϊματοσ (circuit switching) Πακζτου / μθνφματοσ / SAF (Store-and-Forward) Virtual Cut-Through (VCT) Wormhole Virtual channels Pipelined circuit switching #14

Μεταγωγι κυκλϊματοσ Τρεισ φάςεισ: ςχθματιςμόσ (και δζςμευςθ) του μονοπατιοφ από το probe μεταφορά του μθνφματοσ αποδζςμευςθ του μονοπατιοφ Μήνυμα ACK #15

Μεταγωγι SAF Πακζτου / μθνφματοσ / SAF (Store-and-Forward) Το μινυμα χωρίηεται ςε πακζτα ςτακεροφ μικουσ Κάκε πακζτο προωκείται ανεξάρτθτα. Οι κόμβοι (α) το λαμβάνουν και το αποκθκεφουν ςε buffer και (β) το προωκοφν ςτον επόμενο κόμβο #16

Μεταγωγι VCT Σαν το SAF αλλά: Αν το κανάλι εξόδου είναι ελεφκερο, κακϊσ λαμβάνονται τα bits τθσ επικεφαλίδασ, αποφαςίηεται το κανάλι εξόδου και όλο το μινυμα διοχετεφεται κατευκείαν εκεί (άρα ελάχιςτθ κακυςτζρθςθ). Αν όχι, buffering όπωσ ςτο SAF. Ταχφτθτα αν δεν υπάρξει εμπόδιο Όμωσ, δεν εξαλείφεται θ ανάγκθ για buffers που ζχει και το SAF. #17

Μεταγωγι wormhole Ανάμεςα ςε VCT και circuit switching. Το μινυμα χωρίηεται ςε ΠΟΛΥ μικρά πακζτα, τα flits (1-4 bytes). To πρϊτο αποτελεί τθν επικεφαλίδα Η επικεφαλίδα προχωρά με VCT αλλά τα υπόλοιπα flits ακολουκοφν (και δεςμεφουν) τουσ προθγοφμενουσ κόμβουσ, χωρίσ κενά, ςαν ςε pipeline. Αν θ επικεφαλίδα μπλοκάρει κάπου, τα flits αποκθκεφονται εκεί που βρίςκονται (άρα πολφ μικροί buffers απαιτοφνται). #18

Χρονιςμόσ Κΰμβξφ (α) μεταγωγή SAF v 0 v 1 v 2 εοικεζαλίδα δεδξμένα v 3 χρΰνξφ Κΰμβξφ Κΰμβξφ header flit flit δεδξμένυν v 0 v 0 v 1 v 1 v 2 v 2 v 3 χρΰνξφ v 3 χρΰνξφ ςχημασιςμΰφ κψκλπμασξφ μεσαζξρά δεδξμέυν (β) μεταγωγή κυκλώματξς (γ) μεταγωγή wormhole #19

Σφγχρονα δίκτυα υψθλϊν ταχυτιτων Το wormhole switching ζχει επικρατιςει διότι Ταχφτθτα ακόμα και ςε δίκτυα μεγάλθσ διαμζτρου Ελάχιςτο buffering Οπότε γίνεται δυνατι θ υλοποίηςη routers ςε ανεξάρτητο chip και όχι μζςω τησ μνήμησ του κόμβου High-speed (low latency) routers and networks Δίκτυα χαμθλισ κακυςτζρθςθσ Π.χ. Myrinet, Infiniband κλπ. Πολφ ακριβότερα #20

Προγραμματίζομτας

«Κατθγορίεσ» κατανεμθμζνου προγραμματιςμοφ Message passing (μεταβίβαςθ μθνυμάτων) με αυτό κα αςχολθκοφμε πιο «χαμθλό» επίπεδο από τα παρακάτω (αλλά και πιο βολικό για τισ περιςςότερεσ εφαρμογζσ ςτθρίηεται ςε 2 ςυναρτιςεισ: μία για αποςτολι μθνφματοσ και μία για λιψθ μθνφματοσ (μεταξφ διεργαςιϊν) Remote procedure calls (RPC) όχι μθνφματα εκτζλεςθ ςυναρτιςεων ςε απομακρυςμζνο κόμβο Rendezvous «ςφγχρονο» PRC #22

RPC Στον server πρζπει να ζχουν δθλωκεί όλεσ οι ςυναρτιςεισ που μποροφν να εκτελεςτοφν από τον client. Ο client 1. καλεί τθν απομακρυςμζνθ ρουτίνα (όπου μαηί ςτζλνει και τα δεδομζνα παραμζτρουσ τθσ ρουτίνασ) 2. μπλοκάρει περιμζνοντασ τα αποτελζςματα 3. παραλαμβάνει τα αποτελζςματα και ςυνεχίηει Ο προγραμματιςτισ δεν εμπλζκεται καθόλου ςτισ αποςτολζσ των δεδομζνων απλά καλεί τθν απομακρυςμζνθ ρουτίνα ςαν να ιταν μια τοπικι ςυνάρτθςθ. #23

RPC Κλαςςικι υλοποίθςθ: SUN RPC (rpcgen) Ο προγραμματιςτισ «χωρίηει» τον κϊδικά του ςε 2 κομμάτια (client και server) με ςφνεςθ.. Γράφει τα 2 κομμάτια Οι ςυναρτιςεισ του server δεν μποροφν να εκτελεςτοφν αυτόματα πρζπει το ςφςτθμα να τισ γνωρίηει για να υλοποιιςει το PRC. Χρθςιμοποιoφνται ειδικά εργαλεία τα οποία «παράγουν» ειδικό κϊδικα ςε C για τθν διεπαφι μεταξφ server και client. Java RMI #24

Rendezvous O PRC server φτιάχνει ζνα νζο thread για να εξυπθρετιςει τισ αιτιςεισ που ζρχονται για κλιςθ των ςυναρτιςεϊν του (αςφγχρονθ εξυπθρζτθςθ) αυτό απαιτεί π.χ. αμοιβαίο αποκλειςμό αν ςτον server τροποποιοφνται κοινά δεδομζνα Στο rendezvous, o server «μπλοκάρει» μζχρι να του ζρκει μία αίτθςθ επομζνωσ μπορεί να εξυπθρετεί μόνο ζναν client τθ φορά και άρα δεν χρειάηεται αμοιβαίοσ αποκλειςμόσ πουκενά οι κλιςεισ μεταξφ client / server πρζπει να είναι προκακοριςμζνεσ και με δεδομζνθ ςειρά #25

Μεταβίβαςθ μθνυμάτων: μόνο 2 ςυναρτιςεισ είναι αρκετζσ Αποςτολι μθνφματοσ send() Παραλαβι μθνφματοσ receive() Θζματα που μπαίνουν: Ταχφτθτα επικοινωνιϊν Εξαρτάται από το δίκτυο και τα χαρακτθριςτικά του Εξαρτάται και από τθ βιβλιοκικθ που υλοποιεί τισ send() και receive() buffering copying OS traps / user-level access «Στυλ» επικοινωνιϊν Συγχρονιςμζνο ι τφπου rendezvous (το send() δεν ολοκλθρϊνεται αν ο παραλιπτθσ δεν ζχει ξεκινιςει το receive()) Αςφγχρονο ι buffered Blocking / non-blocking Private / collective #26

Σφγχρονθ επικοινωνία (τφπου rendezvous) Συγχρονιςμζνο ι τφπου rendezvous (το send() δεν ολοκλθρϊνεται αν ο παραλιπτθσ δεν ζχει ξεκινιςει το receive()) #27

«Κανονικι» (αςφγχρονθ) επικοινωνία Το send() ολοκλθρϊνεται άςχετα με το πότε κα γίνει το receive() και θ διεργαςία που ςτζλνει το μινυμα ςυνεχίηει αμζςωσ. Η πιο ςυχνι ςτθν πράξθ Απαιτεί buffering είτε αυτόματα από τθ βιβλιοκικθ ( standard mode ςτο MPI) είτε από τον προγραμματιςτι ( buffered mode ςτο MPI) #28

MPI

Προγραμματίηοντασ με μεταβίβαςθ μθνυμάτων Δεν υπάρχουν κοινζσ μεταβλθτζσ διεργαςίεσ και μθνφματα Θεωρείται το πιο δφςκολο Μπορεί, όμωσ, να γίνει πιο αποδοτικό Κατάλλθλο για cluster computing Παράλλθλοσ υπολογιςτισ του «φτωχοφ» Πολλζσ επιλογζσ (sockets? pvm??) θ εξισ μία: MPI #30

Βαςικζσ δομζσ Διεργαςίεσ... εξαρτάται από το ςφςτθμα, όχι fork/join ςυνικωσ Η πιο κοινι περίπτωςθ είναι να δθμιουργοφνται εξωτερικά mpirun np 10 a.out «SPMD» Για διαφοροποίθςθ των διεργαςιϊν: MPI_Comm_rank(MPI_COMM_WORLD, &myid); Ακολουκιακι αρίκμθςθ (0, 1, 2, ) MPI_Comm_size(MPI_COMM_WORLD, &nproc); Πλικοσ διεργαςιϊν ςυνολικά (το -np που δόκθκε παραπάνω) #31

Βαςικζσ λειτουργίεσ Αποςτολι μθνυμάτων MPI_Send(buf, n, dtype, torank, tag, MPI_COMM_WORLD); buf: διεφκυνςθ του send buffer n: το πλικοσ των ςτοιχείων του buffer dtype: ο τφποσ των ςτοιχείων του buffer (MPI_CHAR/SHORT/INT/LONG/FLOAT/DOUBLE) torank: id τθσ διεργαςίασ που κα λάβει το μινυμα tag: ετικζτα (ότι κζλει βάηει ο προγραμματιςτισ) Λιψθ μθνυμάτων MPI_Recv(buf, n, dtype, fromrank, tag, MPI_COMM_WORLD, status); buf: διεφκυνςθ του receive buffer fromrank: id τθσ διεργαςίασ που κα ςτείλει το μινυμα status: διεφκυνςθ buffer για πλθροφορίεσ ςε ςχζςθ με το παραλθφκζν μινυμα Παραλαβι ΜΟΝΟ ΕΦΟΣΟΝ: το μινυμα όντωσ ιρκε από τθ διεργαςία fromrank το μινυμα είχε όντωσ τθν ετικζτα tag #32

«Τυφλι» λιψθ Πολλζσ φορζσ χριςιμο να παραλάβουμε όποιο μινυμα μασ ζρκει πρϊτο, άςχετα ποιοσ το ζςτειλε και με τι ετικζτα: MPI_Recv(buf, n, dtype, MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, status); Ποιοσ το ζςτειλε το μινυμα και ποια είναι θ ετικζτα του; status->mpi_tag status->mpi_source #33

Βαςικι τεχνικι Οι διεργαςίεσ κακορίηονται (και μοιράηονται τθ δουλειά) όπωσ και ςτο μοντζλο κοινοφ χϊρου διευκφνςεων π.χ. μπορϊ να κάνω διάςπαςθ βρόχου, διαχωριςμό ςκακιζρασ, αυτοδρομολόγθςθ κλπ. Επειδι, όμωσ, δεν υπάρχει τίποτε κοινό ανάμεςα ςτισ διεργαςίεσ, κα υπάρχει αναγκαςτικά μία διεργαςία θ οποία: αρχικοποιεί τισ δομζσ μοιράηει τα δεδομζνα ςε άλλεσ ςυλλζγει τα επιμζρουσ αποτελζςματα και ίςωσ τα δείχνει ςτον χριςτθ #34

Παράδειγμα: υπολογιςμόσ του π #include <mpi.h> main(int argc, char *argv[]) { float W, result = 0.0, temp; int N, i, myid, nproc; MPI_status status; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &myid); MPI_Comm_size(MPI_COMM_WORLD, &nproc); /* Αρχικοποίηςη διαμοίραςη */ if (myid == 0) { printf( Enter number of divisions: ); scanf( %d\n, &N); for (i = 1; i < nproc; i++) MPI_Send(&N, 1, MPI_INT, i, 0, MPI_COMM_WORLD); } else MPI_Recv(&N, 1, MPI_INT, 0, 0, MPI_COMM_WORLD, &status); /* Συλλογή αποτελεςμάτων */ if (myid == 0) { for (i = 1; i < nproc; i++) { MPI_Recv(&temp, 1, MPI_FLOAT, i, 0, MPI_COMM_WORLD, &status); result += temp; } printf( pi = %f\n, result); } else MPI_Send(&temp, 1, MPI_FLOAT, 0, 0, MPI_COMM_WORLD); MPI_Finalize(); } /* Ο υπολογιςμόσ τησ κάθε διεργαςίασ */ W = 1.0 / N; for (i = myid; i < N; i += nproc) result += 4*W / (1 + (i+0.5)*(i+0.5)*w*w); #35

Υπολογιςμόσ του π Βελτίωςθ: Παραλαβι μθνυμάτων όπωσ καταφκάνουν Βελτίωςθ ςτθν ταχφτθτα, μείωςθ ανάγκθσ για buffering κλπ., αρκεί να το επιτρζπει ο αλγόριθμοσ. /* Συλλογή αποτελεςμάτων */ if (myid == 0) { for (i = 1; i < nproc; i++) { MPI_Recv(&temp, 1, MPI_FLOAT, i, 0, MPI_COMM_WORLD, &status); result += temp; } printf( pi = %f\n, result); } /* Συλλογή αποτελεςμάτων */ if (myid == 0) { for (i = 1; i < nproc; i++) { MPI_Recv(&temp, 1, MPI_FLOAT, MPI_ANY_SOURCE, 0, MPI_COMM_WORLD, &status); result += temp; } printf( pi = %f\n, result); } #36