Τξ Message Passing Interface (MPI) και η σπξρςήοινή ςξσ ρςξ EGEE Grid. Vasileios Karakasis GRNET S.A., ICCS

Σχετικά έγγραφα
Παράλληλος προγραµµατισµός

Message Passing Interface (MPI)

Message Passing Interface (MPI)

Το Message Passing Interface (MPI) και η υποστήριξή του στο EGEE Grid

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

Message Passing Interface (MPI)

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

Το Message Passing Interface (MPI) και η υποστήριξή του στο EGEE Grid. Vangelis Koukis 01-GRNET and HG EKT admin team

Το Message Passing Interface (MPI) και η υποστήριξή του στο EGEE Grid

MPI: Message Passing Interface

Message Passing Interface (MPI)

MPI: Message Passing Interface

MPI: Message Passing Interface


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

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

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

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

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

Ε-85: Ειδικά Θέµατα Λογισµικού

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

Επικοινωνία. Message-Passing Interface (MPI) Βασικές Κλήσεις για Sockets. Μοντέλο Μεταβίβασης Μηνυµάτων. Μοντέλα Παράλληλου Υπολογισµού

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

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

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

Προγραµµατισµός µε ανταλλαγή µηνυµάτων Ι. Εισαγωγή στο MPI. Εφαρµογές Ανεξάρτητου Παραλληλισµού.

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ. Της φοιτήτριας Αριστέας Χρονοπούλου Αρ. Μητρώου: 01 / Επιβλέπων Καθηγητής Αθανάσιος Μάργαρης

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

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

ΔΙΑΒΗΣΗ -ΠΑΙΔΙ ΚΑΙ ΔΙΑΣΡΟΦΗ

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Κετάλαιξ 6. Τβοιδικέπ Δξμέπ Δεδξμέμχμ

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

Παράλληλα και Κατανεµηµένα Συστήµατα. Εισαγωγή

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

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

ΠΟΤΔΑΣΗΡΙΟ ΝΕΟΕΛΛΗΝΙΚΗ ΓΛΩΑ. Δραγάτςη 8, Πειραιάσ Ιερ. Πατριάρχου 45, Αμπελόκηποι

ΕΚΠΑΙΔΕΤΣΙΚΟ ΠΡΟΓΡΑΜΜΑ ΜΑΘΗΜΑΣΩΝ Γ.Ν. ΑΜΥΙΑ

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

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

ATTRACT MORE CLIENTS ΒΕ REMARKABLE ENJOY YOUR BUSINESS ΣΕΛ. 1

ΥΤΙΚΗ ΟΜΑΔΑ ΠΡΟΑΝΑΣΟΛΙΜΟΤ ΘΔΣΙΚΩΝ ΠΟΤΔΩΝ

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

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

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

Probleme de transmitere în modul standard. MPI - Message Passing Interface. Comunicarea punct la punct

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

3 η ΕΝΟΤΗΤΑ Ρύθμιση σήματος

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

ΤΕΙ Κεντρικής Μακεδονίας. Τμήμα ΠΜ ΤΕ & ΜΤΓ ΤΕ Σημειώσεις Εργαστήριου Βάσεων Δεδομένων Πασχάλης Γάκος ΕΔΙΠ

Πλξήγηρη ρςξ διαδίκςσξ

Επαμαληπτική Άσκηση Access

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

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

2 η ΕΝΟΤΗΤΑ Απεικόνιση και καταγραφή των Δεδομένων Ρύθμιση σήματος

Services SMART. Messaging. Bulk SMS. SMS messaging services THE + Services. IP Digital

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

ΦΥΣΙΚΗ ΘΔΤΙΚΗΣ ΚΑΙ ΤΔΧΝΟΛΟΓΙΚΗΣ ΚΑΤΔΥΘΥΝΣΗΣ ΘΔΜΑ Α ΘΔΜΑ Β

Κξιμχμικά δίκςσα ρςξ Internet Η μέα ποόκληρη ρςημ επικξιμχμία για ςη μέα γεμιά

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

Κατανεμημένος και Παράλληλος Προγραμματισμός. Εισαγωγή στο MPI. Εγκατάσταση MPICH σε ένα ΗΥ 10/3/2017

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

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

ΔΙΔΑΚΩΝ: ΠΑΡΙ ΜΑΣΟΡΟΚΩΣΑ

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

Διδακτική τωμ Μαθηματικώμ (Β Φάση ΔΙ.ΜΔ.Π.Α)

Φσζική Γ Λσκείοσ. Θεηικής & Τετμολογικής Καηεύθσμζης. Μηταμικά Κύμαηα Αρμομικό Κύμα - Φάζη. Οκτώβρης Διδάζκωμ: Καραδημηηρίοσ Μιτάλης

Ermis Design. Ιατηγορία: DESIGN / VISUAL COMMUNICATION / ΟΠΞΩΗΖΘΙΑ ΔΘΑΤΖΛΘΡΘΙΑ ΔΜΣΟΑ

ΥΤΙΚΗ ΟΜΑΔΑ ΠΡΟΑΝΑΣΟΛΙΜΟΤ ΘΔΣΙΚΩΝ ΠΟΤΔΩΝ

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

ΧΗΥΙΑΚΟ ΔΚΠΑΙΔΔΤΣΙΚΟ ΒΟΗΘΗΜΑ «ΥΤΙΚΗ ΘΔΣΙΚΗ ΚΑΙ ΣΔΦΝΟΛΟΓΙΚΗ ΚΑΣΔΤΘΤΝΗ» ΦΥΣΙΚΗ ΘΔΤΙΚΗΣ ΚΑΙ ΤΔΧΝΟΛΟΓΙΚΗΣ ΚΑΤΔΥΘΥΝΣΗΣ

ΔΙΔΑΚΩΝ: ΠΑΡΙ ΜΑΣΟΡΟΚΩΣΑ

ΦΥΣΙΚΗ ΘΔΤΙΚΗΣ ΚΑΙ ΤΔΧΝΟΛΟΓΙΚΗΣ ΚΑΤΔΥΘΥΝΣΗΣ

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

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

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

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

ΣΥΠΥΔΑ. ΣΥζηημα διασείπιζηρ ΠΥπκαγιών ζε ΔΑζη κωνοθόπων. www. sypyda.gr

Εμημεοχςική Επιρςξλή Νξ 65/2016

ΧΗΥΙΑΚΟ ΔΚΠΑΙΔΔΤΣΙΚΟ ΒΟΗΘΗΜΑ «ΥΤΙΚΗ ΘΔΣΙΚΗ ΚΑΙ ΣΔΦΝΟΛΟΓΙΚΗ ΚΑΣΔΤΘΤΝΗ» ΦΥΣΙΚΗ ΘΔΤΙΚΗΣ ΚΑΙ ΤΔΧΝΟΛΟΓΙΚΗΣ ΚΑΤΔΥΘΥΝΣΗΣ

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

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

ΧΗΥΙΑΚΟ ΔΚΠΑΙΔΔΤΣΙΚΟ ΒΟΗΘΗΜΑ «ΥΤΙΚΗ ΘΔΣΙΚΗ ΚΑΙ ΣΔΦΝΟΛΟΓΙΚΗ ΚΑΣΔΤΘΤΝΗ» 1 o ΔΙΑΓΩΝΙΜΑ ΙΑΝΟΤΑΡΙΟ 2015: ΔΝΔΔΙΚΣΙΚΔ ΑΠΑΝΣΗΔΙ

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

ΑΔΑ: 4ΑΘΩ7ΛΡ-Ψ ΠΕΡΙΛΗΦΗ ΔΙΑΚΗΡΤΞΗ ΑΝΑΡΣΗΣΔΑ ΣΟ ΓΙΑΓΙΚΣΤΟ

Κατανεμημένος και Παράλληλος Προγραμματισμός. Εισαγωγή στο MPI. Εγκατάσταση MPICH σε ένα ΗΥ 6/3/2016

Ermis Digital. Καςηγξοία: Web Campaigns Commercial Public Services. Τίςλξπ Σσμμεςξυήπ: Μέρα και ένω από ςξ ρπίςι

Σςη βιβλιξθήκη ρσμάμςηρα ςξμ Βιβλιξπόμςικα πξσ έφαυμε για δξσλειά. Μάοιξπ Σςασοίδηπ Β1 Έφαυμα έμα οξζ βιβλίξ με υοσρόρκξμη.

ΑΝΟΧΗ ΣΦΑΛΜΑΤΩΝ ΣΕ ΕΦΑΡΜΟΓΕΣ MPI ΠΟΥ ΑΚΟΛΟΥΘΟΥΝ ΤΟ ΜΟΝΤΕΛΟ MASTER-WORKER Η ΜΕΤΑΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΕΞΕΙΔΙΚΕΥΣΗΣ. Υποβάλλεται στην

Κατανεμημένος και Παράλληλος Προγραμματισμός MPI. Γρήγορος οδηγός αναφοράς 1/4/2017

ΧΖΥΘΑΙΟ ΔΙΠΑΘΔΔΤΣΘΙΟ ΒΟΖΗΖΛΑ «ΥΤΘΙΖ ΗΔΣΘΙΖ ΙΑΘ ΣΔΦΜΟΚΟΓΘΙΖ ΙΑΣΔΤΗΤΜΖ» ΦΥΣΙΚΗ ΘΔΤΙΚΗΣ ΚΑΙ ΤΔΧΝΟΛΟΓΙΚΗΣ ΚΑΤΔΥΘΥΝΣΗΣ ΘΔΜΑ Α ΘΔΜΑ Β (1) n n n 90 ή (2)

Η λειςξσογία ςξσ Βσζαμςιμξύ Νεοόμσλξσ

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

ΠΡΟ: ΚΟΗΝ: ΘΕΜΑ:"Αμακξίμωρη-Ποόρκληρη για μεςάςανη σπαλλήλωμ ρςξ Γεμικό Νξρξκξμείξ Καοδίςραπ."

Phishing s. Τι είναι και Τρόποι αντιμετώπιςησ τουσ. Ευςταθίου Κωνςταντίνοσ. Λαμπιδονίτη Χριςτίνα. Απρίλιοσ, Λευκωςία

Ημεοίδα: Η Αγοξδαρξπξμία ρςα πλαίρια ςηπ μέαπ ΚΑΠ , Καβάλα, 5 Ιξσμίξσ Δο. Άμμα Σιδηοξπξύλξσ

M z ιραπέυξσμ από ςα Α 4,0,Β 4,0

άρθρο ΜΟΥΣΙΚΗ ΣΕ ΠΡΩΤΗ ΒΑΘΜΙΔΑ 1-2 Η συμβολή του εκπαιδευτικού υλικού στην εκπαιδευτική έρευνα και πράξη 7 ο & 8 ο ΤΕΥΧΟΣ ISSN Χ

ΥΤΙΚΗ ΟΜΑΔΑ ΠΡΟΑΝΑΣΟΛΙΜΟΤ ΘΔΣΙΚΩΝ ΠΟΤΔΩΝ

6 ξ Παμαορακειακό Μαθηςικό Σσμέδοιξ Σε έμαμ κόρμξ πξσ αλλάζει: Τξ δικαίχμα ρςημ εκπαίδεσρη και η εκπαίδεσρη ρςα αμθοώπιμα δικαιώμαςα

ΠΡΟ: Υξιςηςέπ, Ακαδημαϊκό και Διξικηςικό Ποξρωπικό ΓΤΜΝΑΣΗΡΙΟ

Transcript:

Τξ Message Passing Interface (MPI) και η σπξρςήοινή ςξσ ρςξ EGEE Grid Vasileios Karakasis GRNET S.A., ICCS bkk@cslab.ece.ntua.gr Issues on Grid Technologies, Univ. of Patras, 15/3/2010

Σύμξφη παοξσρίαρηπ Παοάλληλξπ ποξγοαμμαςιρμόπ Παοάλληλεπ αουιςεκςξμικέπ Ποξγοαμμαςιρςικά μξμςέλα / MPI Υπηοερίεπ ςξσ ποξςύπξσ MPI Χοήρη MPI ρε dedicated cluster Υπξρςήοινη εογαριώμ MPI ρςξ EGEE Grid Υπξβξλή εογαρίαπ MPI ρςξ Grid Σσζήςηρη

Πξοεία μιαπ ρειοιακήπ εογαρίαπ ρςξ Grid UI RB/WMS CE LRMS (Torque / PBS) Αμάθερη ρε επενεογαρςή Worker Node

Αμάγκη για σπξρςήοινη MPI ρςξ Grid Μεγάλη εγκαςερςημέμη σπξλξγιρςική ιρυύπ: Πώπ ςημ εκμεςαλλεσόμαρςε; 1000άδεπ επενεογαρςώμ Πξλλέπ αμενάοςηςεπ (ρειοιακέπ) δξσλειέπ, για αμενάοςηςη επενεογαρία διατξοεςικξύ σπξρσμόλξσ ςχμ δεδξμέμχμ ειρόδξσ Και αμ σπάουξσμ εναοςήρειπ; Αμ ςξ ποόβλημα δεμ είμαι Embarassingly Parallel ;

Σύμξφη παοξσρίαρηπ Παοάλληλξπ ποξγοαμμαςιρμόπ Παοάλληλεπ αουιςεκςξμικέπ Ποξγοαμμαςιρςικά μξμςέλα / MPI Υπηοερίεπ ςξσ ποξςύπξσ MPI Χοήρη MPI ρε dedicated cluster Υπξρςήοινη εογαριώμ MPI ρςξ EGEE Grid Υπξβξλή εογαρίαπ MPI ρςξ Grid Σσζήςηρη

Παοάλληλεπ Αουιςεκςξμικέπ Αουιςεκςξμική καςαμεμημέμηπ μμήμηπ (distributed memory systems, π.υ. Cluster) Κόμβος 1 Κόμβος 2 Κόμβος Ν $ $ $ CPU CPU... CPU M M M Δίκησο Διαζύνδεζης (π.τ., Ethernet, Myrinet, SCI, Infiniband)

Παοάλληλεπ Αουιςεκςξμικέπ (2) Αουιςεκςξμική μξιοαζόμεμηπ μμήμηπ (shared memory systems, π.υ. SMP) $ $ $ CPU CPU... CPU Διάδρομος Μνήμης (memory bus) M

Παοάλληλεπ Αουιςεκςξμικέπ (3) Υβοιδική αουιςεκςξμική (π.υ. SMP cluster) SMP κόμβος 1 SMP κόμβος 2 SMP κόμβος Ν $ CPU 0 $ $... CPU Κ CPU 0 $ $... CPU Κ CPU 0...... $ CPU Κ M M M Δίκησο Διαζύνδεζης (π.τ. Ethernet, Myrinet, SCI, Infiniband)

Παοάλληλεπ Αουιςεκςξμικέπ (4) Διεργαζία 1 Διεργαζία 2 Κόμβος i $... MPI_Recv Κόμβος j $... MPI_Send CPU... CPU M M

Μξμςέλα παοάλληλξσ ποξγοαμμαςιρμξύ Αρχιτεκτομική Κοινής μνήμης Κατανεμημένης μνήμης (shared memory) (distributed memory) + Δσκξλία σλξπξίηρηπ + Ποξγοαμμαςιρςική εσκξλία Προγραμματιστικό μομτέλο Κοινός χώρος διευθύνσεων (shared address space) Ανταλλαγή μηνυμάτων (message-passing) + Ποξγοαμμαςιρςική εσκξλία + Υφηλή επίδξρη + Δσκξλία σλξπξίηρηπ + Υφηλή επίδξρη - Ποξγοαμμαςιρςική δσρκξλία - Δσρκξλία σλξπξίηρηπ - Χαμηλή επίδξρη + Δσκξλία σλξπξίηρηπ + Υφηλή επίδξρη - Ποξγοαμμαςιρςική δσρκξλία

Σύμξφη παοξσρίαρηπ Παοάλληλξπ ποξγοαμμαςιρμόπ Παοάλληλεπ αουιςεκςξμικέπ Ποξγοαμμαςιρςικά μξμςέλα / MPI Υπηοερίεπ ςξσ ποξςύπξσ MPI Χοήρη MPI ρε dedicated cluster Υπξρςήοινη εογαριώμ MPI ρςξ EGEE Grid Υπξβξλή εογαρίαπ MPI ρςξ Grid Σσζήςηρη

Τι είμαι ςξ MPI; Δίμαι ποόςσπξ, όυι ρσγκεκοιμέμη σλξπξίηρη Βιβλιξθήκη αμςαλλαγήπ μημσμάςχμ Συεδίαρη ρε ρςοώμαςα (layers) Σε σφηλό επίπεδξ, παοέυει ρσγκεκοιμέμη ποξγοαμμαςιρςική διεπατή (interface) Σε υαμηλό επίπεδξ, επικξιμχμεί με ςξ δίκςσξ διαρύμδερηπ Υπξρςηοίζει C, C++, Fortran 77 και F90

Υλξπξιήρειπ MPI MPICH http://www-unix.mcs.anl.gov/mpi/mpich MPICH2 http://www-unix.mcs.anl.gov/mpi/mpich2 MPICH-GM http://www.myri.com/scs LAM/MPI http://www.lam-mpi.org LA-MPI http://public.lanl.gov/lampi Open MPI http://www.open-mpi.org SCI-MPICH http://www.lfbs.rwth-aachen.de/users/joachim/sci-mpich MPI/Pro http://www.mpi-softtech.com MPICH-G2 http://www3.niu.edu/mpi

Single Program, Multiple Data (SPMD) Πξλλέπ διεογαρίεπ, όλεπ εκςελξύμ ςξ ίδιξ ποόγοαμμα Διακοίμξμςαι με βάρη ςξ βαθμό (rank) πξσ απξδίδεςαι ρε κάθε μία διεογαρία Δπενεογάζεςαι διατξοεςικό σπξρύμξλξ δεδξμέμχμ Διατξοξπξιεί ςη οξή εκςέλερήπ ςηπ Δπιδίχνη παοάλληλξσ ποξγοαμμαςιρμξύ Μεγιρςξπξίηρη παοαλληλίαπ Απξδξςική ανιξπξίηρη πόοχμ ρσρςήμαςξπ (π.υ. μμήμη) Δλαυιρςξπξίηρη όγκξσ δεδξμέμχμ επικξιμχμίαπ Δλαυιρςξπξίηρη αοιθμξύ μημσμάςχμ Δλαυιρςξπξίηρη ρσγυοξμιρμξύ

Διεογαρίεπ και Communicators Σε κάθε διεογαρία απξδίδεςαι έμα μξμαδικό rank ρςξ εύοξπ 0...P-1, όπξσ P ςξ ρσμξλικό πλήθξπ διεογαριώμ ρςξμ ρσγκεκοιμέμξ communicator Σε γεμικέπ γοαμμέπ, o communicator ξοίζει έμα ρύμξλξ από διεογαρίεπ πξσ μπξοξύμ μα επικξιμχμξύμ μεςανύ ςξσπ (π.υ. MPI_COMM_WORLD) Ποξρξυή: Αματεοόμαρςε πάμςα ρε διεογαρίεπ, όυι ρε επενεογαρςέπ

Τσπική δξμή κώδικα MPI #include <mpi.h> int main(int argc, char *argv[]) {... /* Πρώτη κλήση MPI */ MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size);... /* Τελεσταία κλήση MPI */ MPI_Finalize(); }

Βαρικέπ Σσμαοςήρειπ ρςξ MPI MPI_Init(argc,argv) Αουικξπξίηρη MPI_Comm_rank(comm,rank) Δύοερη ςξσ rank ςηπ διεογαρίαπ ρςξμ comm MPI_Comm_size(comm,size) Δύοερη πλήθξσπ διεογαριώμ size ρε comm MPI_Send(sndbuf,count,datatype,dest,tag,comm) Απξρςξλή μημύμαςξπ ρε διεογαρία dest MPI_Recv(rcvbuf,count,datatype,source,tag, comm,status) Λήφη μημύμαςξπ από διεογαρία source MPI_Finalize() Τεομαςιρμόπ

Βαρικέπ Σσμαοςήρειπ ρςξ MPI (2) int MPI_Init(int *argc, char ***argv); Αουικξπξίηρη πεοιβάλλξμςξπ MPI Παοάδειγμα: int main(int argc,char *argv[]) { MPI_Init(&argc,&argv); }

Βαρικέπ Σσμαοςήρειπ ρςξ MPI (3) int MPI_Comm_rank (MPI_Comm comm, int *rank); Καθξοιρμόπ rank καλξύραπ διεογαρίαπ πξσ αμήκει ρςξμ communicator comm Παοάδειγμα: int rank; MPI_Comm_rank(MPI_COMM_WORLD, &rank);

Βαρικέπ Σσμαοςήρειπ ρςξ MPI (4) int MPI_Comm_size (MPI_Comm comm, int *size); Καθξοιρμόπ πλήθξσπ διεογαριώμ size πξσ αμήκξσμ ρςξμ communicator comm Παοάδειγμα: int size; MPI_Comm_size(MPI_COMM_WORLD,&size);

Βαρικέπ Σσμαοςήρειπ ρςξ MPI (5) int MPI_Send(void *buf, int count, int dest, int tag, MPI_Datatype datatype, MPI_Comm comm); Απξρςξλή μημύμαςξπ buf από καλξύρα διεογαρία ρε διεογαρία με rank dest Ο πίμακαπ buf έυει count ρςξιυεία ςύπξσ datatype Παοάδειγμα: int message[50],dest=1,tag=55; MPI_Send(message, 50, dest, tag, MPI_INT, MPI_COMM_WORLD);

Βαρικέπ Σσμαοςήρειπ ρςξ MPI (6) int MPI_Recv(void *buf, int count, int source, int tag, MPI_Datatype datatype, MPI_Comm comm, MPI_Status *status); Λήφη μημύμαςξπ από διεογαρία με rank source και απξθήκεσρη ρςξμ buf Λαμβάμξμςαι ςξ πξλύ count δεδξμέμα ςύπξσ datatype (ακοιβήπ αοιθμόπ με MPI_Get_count) Wildcards MPI_ANY_SOURCE, MPI_ANY_TAG Παοάδειγμα: int message[50],source=0,tag=55; MPI_Status status; MPI_Recv(message, 50, source, tag, MPI_INT, MPI_COMM_WORLD, &status);

Βαρικέπ Σσμαοςήρειπ ρςξ MPI (7) MPI διεργαζία i MPI_Send(msg,3,j,...); virtual memory διεργαζίας i MPI διεργαζία j MPI_Recv(msg,3,i,...); virtual memory διεργαζίας i MPI buffer MPI buffer

Βαρικέπ Σσμαοςήρειπ ρςξ MPI (8) int MPI_Finalize(); Τεομαςιρμόπ πεοιβάλλξμςξπ MPI Ποέπει μα απξςελεί ςημ ςελεσςαία κλήρη MPI ςξσ ποξγοάμμαςξπ

Παοάδειγμα /* Παράλληλος σπολογισμός της παράστασης f(0)+f(1)*/ #include <mpi.h> int main(int argc,char **argv){ int v0,v1,sum,rank; MPI_Status stat; MPI_Init(&argc,&argv); MPI_Comm_rank(MPI_COMM_WORLD,&rank); if (rank == 1) { v1 = f(1); MPI_Send(&v1,1,0,50,MPI_INT,MPI_COMM_WORLD); } else if (rank == 0){ v0 = f(0); } MPI_Recv(&v1,1,1,50,MPI_INT,MPI_COMM_WORLD,&stat); sum = v0 + v1; } MPI_Finalize(); Διεργαζία 1 Διεργαζία 0

Δίδη Δπικξιμχμίαπ Point-to-point ή Σσλλξγική (Collective) Synchronous, buffered ή ready αμάλξγα με ςξ ςι θεχοείςαι χπ ρσμθήκη επιςσυίαπ Blocking ή non-blocking αμάλξγα με ςξ πόςε επιρςοέτει η ρσμάοςηρη επικξιμχμίαπ

Σσλλξγική Δπικξιμχμία Παοάδειγμα: Απξρςξλή ςξσ msg ρςιπ διεογαρίεπ 1-7 από ςη 0 if (rank == 0) for (dest = 1; dest < size; dest++) MPI_Send(msg,count,dest,tag,MPI_FLOAT,MPI_COMM_WORLD); Διεργαζίες MPI msg 0 1 2 3 4 5 6 7 Γεμικά: Για p διεογαρίεπ έυξσμε p - 1 βήμαςα επικξιμχμίαπ

Σσλλξγική Δπικξιμχμία (2) Παοάδειγμα: Απξρςξλή ςξσ msg ρςιπ διεογαρίεπ 1-7 από ςη 0 MPI_Bcast(msg,count,MPI_FLOAT,0,MPI_COMM_WORLD); Διεργαζίες MPI msg 0 1 2 3 4 5 6 7 Γεμικά: Για p διεογαρίεπ έυξσμε log 2 p βήμαςα επικξιμχμίαπ

Σσλλξγική Δπικξιμχμία (3) int MPI_Bcast(void *message, int count, MPI_Datatype datatype, int root, MPI_Comm comm); Απξρςξλή ςξσ message από ςη διεογαρία με rank root ποξπ όλεπ ςιπ διεογαρίεπ ςξσ communicator comm To message πεοιέυει count δεδξμέμα ςύπξσ datatype Καλείςαι από όλεπ ςιπ διεογαρίεπ ςξσ comm

Σσλλξγική Δπικξιμχμία (4) int MPI_Reduce(void *operand, void *result, int count, MPI_Datatype datatype, MPI_Op op, int root, MPI_Comm comm); Τα δεδξμέμα operand ρσμδσάζξμςαι με εταομξγή ςξσ ςελερςή op, και ςξ απξςέλερμα απξθηκεύεςαι ρςη διεογαρία root ρςξ result Ποέπει μα κληθεί από όλεπ ςιπ διεογαρίεπ ςξσ comm MPI_Op: MPI_MAX, MPI_MIN, MPI_SUM, MPI_PROD κλπ. Αμςίρςξιυα και MPI_Allreduce

Σσλλξγική Δπικξιμχμία (5) /* Παράλληλος σπολογισμός της παράστασης f(0)+f(1)*/ #include <mpi.h> int main(int argc, char *argv[]){ int sum,rank; MPI_Status stat; } MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); /* Υπολογισμός τιμών στον f[] */ MPI_Reduce(&f[rank], &sum, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD); MPI_Finalize();

Σσλλξγική Δπικξιμχμία (6) int MPI_Barrier(MPI_Comm comm); Σσγυοξμιρμόπ διεογαριώμ ςξσ communicator comm Η εκςέλερη ςξσπ ρσμευίζεςαι μόμξμ όςαμ όλες έυξσμ εκςελέρει ςημ κλήρη Πεοιξοίζει ςημ παοαλληλία

Σσλλξγική Δπικξιμχμία (7) int MPI_Gather(void *sendbuf, int sendcnt, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm); Σσμεμώμξμςαι ρςη διεογαρία root ξι πίμακεπ sendbuf ςχμ σπξλξιπώμ (καςά αύνξσρα ρειοά rank) Τξ απξςέλερμα απξθηκεύεςαι ρςξμ πίμακα recvbuf, ξ ξπξίξπ έυει μόημα μόμξ ρςη διεογαρία root Αμςίρςξιυα και MPI_Allgather Αμςίρςοξτη: MPI_Scatter

Synchronous Buffered Ready Αματέοξμςαι ρε λειςξσογία απξρςξλήπ, διατξοξπξιξύμςαι χπ ποξπ λειςξσογία λήφηπ Υπάουξσμ ςόρξ ρε blocking, όρξ και ρε non-blocking μξοτή Τξ απλό MPI_Send μπξοεί μα είμαι είςε synchronous είςε buffered: εναοςάςαι από σλξπξίηρη

Synchronous Buffered Ready (2) int MPI_Ssend(void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm); Δπιςσγυάμει μόμξ όςαμ πάοει επιβεβαίχρη λήφηπ από δέκςη - αρταλέπ int MPI_Bsend(void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm); Δπιςοέτει αμέρχπ, αμςιγοάτξμςαπ ςξ μήμσμα ρε system buffer για μελλξμςική μεςάδξρη ρτάλμα ρε έλλειφη πόοχμ int MPI_Rsend(void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm); Δπιρςοέτει αμέρχπ, αλλά επιςσγυάμει μόμξ αμ έυει ποξηγηθεί αμςίρςξιυξ receive από ςξ δέκςη - αβέβαιξ

Synchronous Buffered Ready (3) MPI_Bsend MPI_Ssend MPI_Rsend Τοπικό Μη ηοπικό Τοπικό 2 ανηιγραθές ζηη μνήμη Αποησγτάνει ελλείυει πόρφν Δεν αποησγτάνει αν δεν έτει προηγηθεί λήυη 1 ανηιγραθή ζηη μνήμη Δεν αποησγτάνει ελλείυει πόρφν Δεν αποησγτάνει αν δεν έτει προηγηθεί λήυη 1 ανηιγραθή ζηη μνήμη Δεν αποησγτάνει ελλείυει πόρφν Αποησγτάνει αν δεν έτει προηγηθεί λήυη

Non blocking Communication Άμερη επιρςοξτή Δεμ είμαι αρταλέπ μα επαμαυοηριμξπξιηθξύμ ξι buffers επικξιμχμίαπ ποιμ ελεγυθεί η επιςσυία Δύξ δσμαςόςηςεπ για έλεγυξ επιςσυίαπ ςηπ επικξιμχμίαπ int MPI_Test(MPI_Request *request, int *flag, MPI_Status* status); int MPI_Wait (MPI_Request *request, MPI_Status *status);

Non blocking Communication (2) Κάθε blocking ρσμάοςηρη έυει ςημ αμςίρςξιυη non-blocking: MPI_Isend (για MPI_Send) MPI_Issend (για MPI_Ssend) MPI_Ibsend (για MPI_Bsend) MPI_Irsend (για MPI_Rsend) MPI_Irecv (για MPI_Recv)

Non blocking Communication (3) Πξιξ είμαι ςξ ότελξπ; Δπικάλσφη σπξλξγιρμξύ επικξιμχμίαπ Blocking MPI_Recv(); MPI_Send(); Compute(); Non-blocking MPI_Irecv(); MPI_Isend(); Compute(); Waitall();

Non blocking Communication (4) Απξτσγή deadlocks Blocking (deadlock!) MPI_Send(); MPI_Send(); MPI_Recv(); MPI_Recv(); Compute(); Non-blocking (fine!) MPI_Isend(); MPI_Isend(); MPI_Irecv(); MPI_Irecv(); Waitall(); Compute();

Τύπξι Δεδξμέμχμ MPI MPI_CHAR: 8-bit υαοακςήοαπ MPI_DOUBLE: 64-bit κιμηςήπ σπξδιαρςξλήπ MPI_FLOAT: 32-bit κιμηςήπ σπξδιαρςξλήπ MPI_INT: 32-bit ακέοαιξπ MPI_LONG: 32-bit ακέοαιξπ MPI_LONG_DOUBLE: 64-bit κιμηςήπ σπξδιαρςξλήπ MPI_LONG_LONG: 64-bit ακέοαιξπ MPI_LONG_LONG_INT: 64-bit ακέοαιξπ MPI_SHORT: 16-bit ακέοαιξπ MPI_SIGNED_CHAR: 8-bit ποξρημαρμέμξπ υαοακςήοαπ MPI_UNSIGNED: 32-bit αποόρημξπ ακέοαιξπ MPI_UNSIGNED_CHAR: 8-bit αποόρημξπ υαοακςήοαπ MPI_UNSIGNED_LONG: 32-bit αποόρημξπ ακέοαιξπ MPI_UNSIGNED_LONG_LONG: 64-bit αποόρημξπ ακέοαιξπ MPI_UNSIGNED_SHORT: 16-bit αποόρημξπ ακέοαιξπ MPI_WCHAR: 16-bit αποόρημξπ υαοακςήοαπ

Τύπξι Δεδξμέμχμ MPI (2) Ομαδξπξίηρη δεδξμέμχμ επικξιμχμίαπ: Παοάμεςοξπ count (για ξμξιξγεμή δεδξμέμα ρε ρσμευόμεμεπ θέρειπ μμήμηπ) MPI_Type_struct (derived datatype) MPI_Pack(), MPI_Unpack() (για εςεοξγεμή δεδξμέμα)

Τξ ποόςσπξ MPI-2 Παοάλληλη είρξδξπ-ένξδξπ (Parallel I/O) Δσμαμική διαυείοιρη διεογαριώμ (dynamic process management) Απξμακοσρμέμεπ λειςξσογίεπ ποόρβαρη ρςη μμήμη (remote memory operations) One-sided operations

Η σλξπξίηρη MPICH MPI API MPIP profiling interface MPIR run-time βιβλιξθήκη MPID ρσρκεσή ADI-2 υοήρςηπ δίκςσξ διαρύμδερηπ Επικοιμωμία συστήματος (βιβλιξθήκεπ ρσρςήμαςξπ, δίκςσξ, μμήμη)

Η Υλξπξίηρη MPICH (2) Αμά διεογαρία, 1 send message queue, 2 receive queues posted + unexpected Δπιλξγή device βάρει ςξσ destination rank p4, shmem Δπιλξγή ποχςξκόλλξσ βάρει ςξσ message size Short < 1024 bytes, rendezvous > 128000 bytes, eager εμδιάμερα Έλεγυξπ οξήπ - Flow control 1MB buffer space για eager ποχςόκξλλξ αμά ζεύγξπ διεογαριώμ

Σύμξφη παοξσρίαρηπ Παοάλληλξπ ποξγοαμμαςιρμόπ Παοάλληλεπ αουιςεκςξμικέπ Ποξγοαμμαςιρςικά μξμςέλα / MPI Υπηοερίεπ ςξσ ποξςύπξσ MPI Χοήρη MPI ρε dedicated cluster Υπξρςήοινη εογαριώμ MPI ρςξ EGEE Grid Υπξβξλή εογαρίαπ MPI ρςξ Grid Σσζήςηρη

Δκςέλερη ποξγοάμμαςξπ MPI (1) Παοαδξριακόπ ςοόπξπ: απεσθείαπ εκςέλερη ρε cluster σπξλξγιρςώμ Linux cluster 32 quad-core κόμβχμ (clone1 clone32) Μεςαγλώςςιρη και εκςέλερη Καςάλληλξ PATH για ςημ σλξπξίηρη export PATH=/usr/local/bin/mpich-intel: :$PATH Μεςαγλώςςιρη με ςιπ καςάλληλεπ βιβλιξθήκεπ mpicc test.c o test O3 Δκςέλερη mpirun np 32 test

Δπίδεινη! Hello World με σπξβξλή εμόπ 16-process MPICH job ρε dedicated cluster (clones)

Δκςέλερη ποξγοάμμαςξπ MPI (2) Σε πξια μηυαμήμαςα εκςελξύμςαι ξι διεογαρίεπ; Machine file $ cat <<EOF >machines clone4 clone5 clone7 clone8 EOF $ mpicc test.cc o test O3 static Wall $ mpirun np 4 machinefile machines test

Δκςέλερη ποξγοάμμαςξπ MPI (3) Λεπςξμέοειεπ Υλξπξίηρηπ Πώπ δημιξσογξύμςαι ξι απαοαίςηςεπ διεογαρίεπ; Implementation-specific rsh/ssh υχοίπ password, ξι κόμβξι ςξσ cluster εμπιρςεύξμςαι ξ έμαπ ςξμ άλλξ (MPICH1) Με υοήρη daemons (lamboot, mpd) Τι γίμεςαι με ςξ file I/O; Shared storage αμάμερα ρςξσπ cluster nodes NFS ρςημ απλξύρςεοη πεοίπςχρη Κάπξιξ παοάλληλξ fs, πυ. PVFS, GFS, GPFS

Σύμξφη παοξσρίαρηπ Παοάλληλξπ ποξγοαμμαςιρμόπ Παοάλληλεπ αουιςεκςξμικέπ Ποξγοαμμαςιρςικά μξμςέλα / MPI Υπηοερίεπ ςξσ ποξςύπξσ MPI Χοήρη MPI ρε dedicated cluster Υπξρςήοινη εογαριώμ MPI ρςξ EGEE Grid Υπξβξλή εογαρίαπ MPI ρςξ Grid Σσζήςηρη

Έμςανη ρςξ πεοιβάλλξμ ςξσ Grid Υπξβξλή εογαριώμ ςύπξσ MPICH Type = "job"; JobType = "MPICH"; CpuNumber = 16; Executable = "mpihello"; StdOutput = "hello.out"; StdError = "hello.err"; InputSandbox = {"mpihello"}; OutputSandbox = {"hello.out","hello.err"}; Requirements = other.gluehostarchitectureplatformtype == "x86_64" && other.glueceuniqueid == "ce02.athena.hellasgrid.gr:2119/jobmanager-pbs-hgdemo";

Πξοεία ςηπ εογαρίαπ MPI ρςξ Grid UI RB CE LRMS (Torque / PBS) Δπιλξγή κόμβχμ ($PBS_NODEFILE) και mpirun Worker Nodes

Σύμξφη παοξσρίαρηπ Παοάλληλξπ ποξγοαμμαςιρμόπ Παοάλληλεπ αουιςεκςξμικέπ Ποξγοαμμαςιρςικά μξμςέλα / MPI Υπηοερίεπ ςξσ ποξςύπξσ MPI Χοήρη MPI ρε dedicated cluster Υπξρςήοινη εογαριώμ MPI ρςξ EGEE Grid Υπξβξλή εογαρίαπ MPI ρςξ Grid Σσζήςηρη

Δπίδεινη! Hello World με σπξβξλή εμόπ 16-process MPICH job ρςξ Grid.

EGEE MPI Working Group Σςξυεύει ρςημ ςσπξπξιημέμη/γεμικεσμέμη σπξρςήοινη διατξοεςικώμ σλξπξιήρεχμ http://egee-docs.web.cern.ch/egeedocs/uig/development/uc-mpi-jobs_2.html Καςεσθσμςήοιεπ γοαμμέπ για ςημ μεςαγλώςςιρη/εκςέλερη παοάλληλχμ δξσλειώμ

Δπιπλέξμ Θέμαςα Δπιλξγή επενεογαρςώμ αμάθερη ρε διεογαρίεπ Θέμαςα latency καςά ςημ αμςαλλαγή μημσμάςχμ Memory bandwidth Διαθέριμηπ μμήμηπ Υβοιδικέπ αουιςεκςξμικέπ Σσμδσαρμόπ MPI με Pthreads/OpenMP για καλύςεοη ποξραομξγή ρςημ στιρςάμεμη αουιςεκςξμική

Βιβλιξγοατία - Πηγέπ Writing Message-Passing Parallel Programs with MPI (Course Notes Edinburgh Parallel Computing Center) Using MPI-2: Advanced Features of the Message- Passing Interface (Gropp, Lusk, Thakur) http://www.mpi-forum.org (MPI standards 1.1 και 2.0) http://www.mcs.anl.gov/mpi (MPICH σλξπξίηρη) comp.parallel.mpi (newsgroup)

Σύμξφη παοξσρίαρηπ Παοάλληλξπ ποξγοαμμαςιρμόπ Παοάλληλεπ αουιςεκςξμικέπ Ποξγοαμμαςιρςικά μξμςέλα / MPI Υπηοερίεπ ςξσ ποξςύπξσ MPI Χοήρη MPI ρε dedicated cluster Υπξρςήοινη εογαριώμ MPI ρςξ EGEE Grid Υπξβξλή εογαρίαπ MPI ρςξ Grid Σσζήςηρη