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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ρρογραμματιςμόσ Μεκόδων Επίλυςθσ Ρροβλθμάτων. 18. Αλφαριθμητικά. Ιωάννθσ Κατάκθσ. ΕΡΛ 032: Ρρογραμματιςμόσ Μεκόδων Επίλυςθσ Ρροβλθμάτων

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

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

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

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

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

Message Passing Interface (MPI)

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

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

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

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

ΕΝΟΤΘΤΑ 2: ΕΠΙΚΟΙΝΩΝΩ ΜΕ ΤΟΝ ΥΠΟΛΟΓΙΣΤΘ. ΚΕΦΑΛΑΙΟ 6: Θ «Βοικεια» ςτον Υπολογιςτι

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

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

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

TIM Εικονικό Περιβάλλον Συνεργασίας Οδθγίεσ Χριςθσ

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

Περιεχόμενα. χολι Χοροφ Αντιγόνθ Βοφτου - Πολιτικι Διαχείριςθσ Cookie 1

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

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

Message Passing Interface (MPI)

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

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

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

Οντοκεντρικόσ Προγραμματιςμόσ

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

Μετατροπι Αναλογικοφ Σιματοσ ςε Ψθφιακό. Διάλεξθ 10

Αςφάλεια και Προςταςία Δεδομζνων

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

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

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

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

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

Μία ελκυςτικι ειςαγωγι ςτον προγραμματιςμό

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

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

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

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

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

ΕΝΟΤΗΤΑ 3: Χριςθ εργαλείων ζκφραςθσ, επικοινωνίασ, ανακάλυψθσ και δθμιουργίασ. ΚΕΦΑΛΑΙΟ 7: Υπθρεςίεσ Αναηιτθςθσ ςτον Παγκόςμιο Ιςτό

Εγκατάσταση & Διαχείριση Joomla στο Π.Σ.Δ. ΣΥΜΒΟΥΛΟ ΡΛΗΟΦΟΙΚΗΣ Ν. ΣΕΩΝ & ΚΕ.ΡΛΗ.ΝΕ.Τ. Ν. ΣΕΩΝ

Οδηγίες Πρόζβαζης ζηο EndNote Web. Πρόζβαζη ζηο EndNote Web

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

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

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

ΛΕΙΤΟΥΓΙΚΆ ΣΥΣΤΉΜΑΤΑ. 2 θ Διάλεξθ - Διεργαςίεσ

Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων. Διαφάνειεσ: Βαςικζσ Αρχζσ Προγραμματιςμοφ Α.Π.Θ. Δθμιτρθσ Βράκασ

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

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

Οντοκεντρικόσ Προγραμματιςμόσ

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

Ηλεκτρονικι Επιχειρθςιακι Δράςθ Εργαςτιριο 1

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

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

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

Οντοκεντρικόσ Ρρογραμματιςμόσ

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

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

Multi Logo. Προγραμματιςμόσ Η/Υ με Multi Logo. Σχεδίαςη και ανάπτυξη εφαρμογήσ κίνηςησ αντικειμζνου

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

Οδηγός χρήσης Blackboard Learning System για φοιτητές

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

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

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

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

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

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

GNSS Solutions guide. 1. Create new Project

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

Α) Ενδεικτικϋσ απαντόςεισ των θεμϊτων

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

ΡΥΘΜΙΕΙ για περιοριςμένο χρήςτη (limited user)

Πωσ δημιουργώ μάθημα ςτο e-class του ΠΣΔ [επίπεδο 1]

MPI: Message Passing Interface

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

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

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

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

assessment.gr USER S MANUAL (users)

Κεφάλαιο 7: Μοντελοποίθςθ ςυμπεριφοράσ

Εργαςτιριο Βάςεων Δεδομζνων

Διαδικαςία Διαχείριςθσ Στθλϊν Βιβλίου Εςόδων - Εξόδων. (v.1.0.7)

Internet a jeho role v našem životě Το Διαδίκτυο και ο ρόλοσ του ςτθ ηωι μασ

Transcript:

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

Περίγραμμα Μακιματοσ Παράλλθλθ Επεξεργαςία Ειςαγωγι Βαςικά ςτοιχεία του MPI Μεςαίου επιπζδου ςτοιχεία MPI Εργαλεία για ςυγγραφι libraries Σχόλια 2

Υπόβακρο Παράλλθλθ Επεξεργαςία Επικοινωνία με άλλεσ διεργαςίεσ Συνεργατικζσ λειτουργίεσ Μονόπλευρεσ λειτουργίεσ Η διεργαςία MPI 3

Παράλλθλθ Επεξεργαςία Πολλαπλοί εργάτεσ (workers) ι διεργαςίεσ (processes) Αλλθλεπίδραςθ με ανταλλαγι πλθροφορίασ 4

Είδθ Παράλλθλθσ Επεξεργαςίασ Data-parallel : Κδιεσ λειτουργίεσ ςε διαφορετικά δεδομζνα (SIMD) SPMD : Κδιο πρόγραμμα, διαφορετικά δεδομζνα MIMD : Διαφορετικό πρόγραμμα, διαφορετικά δεδομζνα Τα SPMD και MIMD είναι ουςιαςτικά το ίδιο αφοφ κάκε MIMD μπορεί να γίνει SPMD Το SIMD είναι ειδικι περίπτωςθ, αλλά λιγότερο πρακτικό. Το MPI είναι κυρίωσ για SPMD/MIMD. 5

Επικοινωνία Διεργαςιϊν Τα δεδομζνα πρζπει να ανταλλάςςονται με άλλουσ εργάτεσ (επεξεργαςτζσ/κόμβουσ) Συνεργατικι επικοινωνία -- τα δφο (ι περιςςότερα) μζρθ ςυμφωνοφν ςτθν ανταλλαγι δεδομζνων Μονόπλευρθ επικοινωνία -- ζνασ εργάτθσ εκτελεί τθ μετακίνθςθ των δεδομζνων 6

Συνεργατικι Επικοινωνία 7

Συνεργατικι Επικοινωνία (2) Η ανταλλαγι μθνυμάτων (Message-passing) κάνει τθν ανταλλαγι δεδομζνων ςυνεργατικι Τα δεδομζνα πρζπει και να ςταλοφν και να λθφκοφν ρθτϊσ. Πλεονζκτθμα: κάκε αλλαγι ςτθ μνιμθ του δζκτθ (receiver) γίνεται με τθν ςυμμετοχι του δζκτθ. 8

Μονόπλευρθ Επικοινωνία 9

Μονόπλευρθ Επικοινωνία (2) Η μονόπλευρθ επικοινωνία περιλαμβάνει τισ λειτουργίεσ remote memory read και remote memory write. Πλεονζκτθμα: τα δεδομζνα μποροφν να διακινθκοφν χωρίσ αναμονι για τθν απάντθςθ τθσ άλλθσ διεργαςίασ 10

Μοντζλα Hardware Μοντζλα hardware για τθν ανταλλαγι δεδομζνων μεταξφ εργατϊν Κατανεμθμζνθ μνιμθ (Distributed memory) π.χ., Paragon, IBM SPx, workstation network Κοινι μνιμθ (Shared memory) π.χ., SGI Power Challenge, Cray T3D Και τα δφο είδθ μποροφν να χρθςιμοποιθκοφν με τα μοντζλα SIMD ι MIMD. 11

Τι είναι το MPI; Μια βιβλιοκικθ message-passing -- μοντζλο message-passing -- όχι compiler -- όχι ςυγκεκριμζνο προϊόν Για παράλλθλουσ υπολογιςτζσ, clusters, και ετερογενι δίκτυα Πλιρθ χαρακτθριςτικά Σχεδιάςτθκε για να βοθκιςει ςτθν ανάπτυξθ βιβλιοκθκϊν παράλλθλου λογιςμικοφ Σχεδιάςτθκε για να προςφζρει πρόςβαςθ ςε προθγμζνο παράλλθλο hardware ςε -- τελικοφσ χριςτεσ -- ςυγγραφείσ βιβλιοκθκών -- ςχεδιαςτζσ εργαλείων 12

Ιςτορία του MPI Αρχι ςτο Williamsburg Workshop, Απρίλιοσ 1992 Οργανϊκθκε ςτο Supercomputing '92 (Νοζμβριοσ 1992) Pre-final draft ςτο Supercomputing '93 Final draft Μάϊοσ 1994 Διακζςιμα public implementations ςτο Web: http://www.mcs.anl.gov/research/projects/mpich2/ 13

Ποιοσ ζγραψε το MPI Ευρεία ςυμμετοχι IBM, Intel, TMC, Meiko, Cray, Convex, Ncube Συγγραφείσ βιβλιοκθκών PVM, p4, Zipcode, TCGMSG, Chameleon, Express, Linda Ειδικοί ςε εφαρμογζσ και ςφμβουλοι 14

Χαρακτθριςτικά του MPI Γενικά Οι Communicators ςυνδυάηουν context και group για αςφάλεια των μθνυμάτων Αςφάλεια threads Επικοινωνία Point-to-point buffers και derived datatypes Τρόποι επικοινωνίασ: normal (blocking και non-blocking), synchronous, ready, buffered Συλλεκτικι επικοινωνία built-in και user-defined ςυλλεκτικζσ λειτουργίεσ Μεγάλο πλικοσ ρουτινών μετακίνθςθσ δεδομζνων Οριςμόσ υποομάδων 15

Χαρακτθριςτικά του MPI (2) Εφαρμογο-ςτρεφείσ τοπολογίεσ Built-in υποςτιριξθ για grids και γράφουσ Profiling Επιτρζπεται ςτο χριςτθ να ςυλλάβει τα MPI calls και να τα αντικαταςτιςει με δικά του Περιβάλλον προγραμματιςμοφ Inquiry ζλεγχοσ ςφαλμάτων 16

Τι δεν είναι το MPI Δεν υλοποιοφνται ιδζεσ ι ζννοιεσ μθ ςχετικζσ με message-passing: process management remote memory transfers active messages Threads virtual shared memory 17

Το MPI είναι μικρό ι μεγάλο; Το MPI είναι μεγάλο (125 ςυναρτιςεισ) Η εκτεταμζνθ λειτουργικότθτα του MPI απαιτεί πολλζσ ςυναρτιςεισ Το πλικοσ των ςυναρτιςεων δε ςθμαίνει πολυπλοκότθτα ι βραδφτθτα Το MPI είναι μικρό (6 ςυναρτιςεισ) Πολλά παράλλθλα προγράμματα μποροφν να γραφτοφν με 6 μόνο βαςικζσ ςυναρτιςεισ. Το MPI είναι το μζγεκοσ που κζλουμε Ζχει δυνατότθτα επιλογών και ευελιξία αν τθ χρειαηόμαςτε. Δε χρειάηεται να γνωρίηει κανείσ ΟΛΟ το MPI για να το χρθςιμοποιιςει. 18

Πότε να χρθςιμοποιϊ το MPI; Όταν κζλεισ ζνα φορθτό παράλλθλο πρόγραμμα Όταν γράφεισ μια παράλλθλθ βιβλιοκικθ Όταν ζχεισ ακανόνιςτεσ ι δυναμικζσ ςχζςεισ μεταξφ των δεδομζνων οι οποίεσ δεν ταιριάηουν ςε κάποιο μοντζλο παράλλθλθσ επεξεργαςίασ Πότε να μη χρηςιμοποιώ το MPI; Όταν μπορείσ να χρθςιμοποιιςεισ, πχ. παράλλθλθ Fortran 90 Αν δε χρειάηεςαι παραλλθλιςμό Όταν μπορείσ να χρθςιμοποιιςεισ ζτοιμεσ βιβλιοκικεσ (πικανϊσ γραμμζνεσ ςε MPI!) 19

Βαςικά Συγγραφι προγραμμάτων MPI. Compiling και linking. Εκτζλεςθ προγραμμάτων. Περιςςότερεσ πλθροφορίεσ. William Gropp, Ewing Lusk, and Anthony Skjellum Using MPI, Zdzislaw Meglicki The LAM companion to ``Using MPI Ian Foster Designing and Building Parallel Programs. Peter Pacheco A Tutorial/User's Guide for MPI ftp://math.usfca.edu/pub/mpi/mpi.guide.ps. http://www.mcs.anl.gov/mpi.

Συγγραφι προγραμμάτων MPI #include mpi.h #include <stdio.h> int main(argc, argv) int argc; char **argv; { MPI_Init(&argc, &argv); printf("hello world\n"); MPI_Finalize(); return 0; }

Σχόλια #include "mpi.h" : δίνει βαςικοφσ οριςμοφσ και τφπουσ του MPI MPI_Init : ξεκινάει το MPI MPI_Finalize : ζξοδοσ από το MPI Όλεσ οι μθ-mpi ρουτίνεσ εκτελοφνται τοπικά ςε κάκε διεργαςία. Ζτςι, πχ, το printf εκτελείται ςε κάκε διεργαςία

Εγκατάςταςθ υλοποίθςθσ ανοιχτοφ κϊδικα: MPICH2 Κατεβάηουμε τθν υλοποίθςθ MPICH2 (πθγι Argonne National Laboratory) http://www.mcs.anl.gov/research/projects/mpich2/ Πλατφόρμεσ UNIX, Windows (ΙΑ32 και ΕΜ64Τ/AMD64) Απαιτείται χριςθ C-compiler. Πχ., για Windows μπορεί να γίνει χριςθ του open-source πλατφόρμασ MinGW http://www.mingw.org/ Μπορεί να γίνει χριςθ οποιουδιποτε compiler (πχ Visual Studio)

Μετάφραςθ του κϊδικα Windows: Ζςτω ότι το MPI βρίςκεται ςτο φάκελο C:\Program Files\MPICH2 Κάνουμε compilation κάποιου προγράμματοσ mpicode.c παράγοντασ το εκτελζςιμο mpicode.exe χρθςιμοποιϊντασ κάποιο C-compiler, πχ. τον gcc compiler του πακζτου MinGW: gcc -o mpicode.exe -I "C:\Program Files\MPICH2\include" -L "C:\Program Files\MPICH2\lib" mpicode.c "C:\Program Files\MPICH2\lib\mpi.lib" Απαραίτθτθ θ χριςθ του κατάλλθλου include-path και library-path κακϊσ και τθσ βιβλιοκικθσ mpi.lib

Εκτζλεςθ προγραμμάτων MPI (1) Σε DOS command window, το οποίο τρζχει ςε administrator-mode, εκτελοφμε τθν εντολι mpiexec -n <πλήθος διεργαζιών> mpicode.exe Η παράμετροσ hosts μασ λζει ςε ποιοοφσ υπολογιςτζσ να τρζξουμε τισ διεργαςίεσ. Πχ. mpiexec -hosts 3 <μηχανή1> 3 <μηχανή2> 4 <μηχανή3> 1 mpicode.exe Εκτελεί το πρόγραμμα ςε τρεισ μθχανζσ: ςτθ «μθχανι1» κα τρζξουν 3 διεργαςίεσ, ςτθ «μθχανι2» κα τρζξουν 4 διεργαςίεσ και ςτθ «μθχανι3» 1 διεργαςία. Το MPI μπορεί να τρζξει ςε ζνα μόνο μθχάνθμα ΟΛΕΣ τισ διεργαςίεσ. Καταργεί ουςιαςτικά τον παραλλθλιςμό αλλά πολφ χριςιμο για debugging όταν δεν υπάρχει διακζςιμο cluster mpiexec localonly <πλήθος διεργαζιών> mpicode.exe

Εκτζλεςθ προγραμμάτων MPI (2) Το mpiexec κάνει χριςθ ενόσ Process Manager (PM): πρόγραμμα «πράκτορασ» που δθμιουργεί τισ παράλλθλεσ διεργαςίεσ και τισ διαχειρίηεται αποφαςίηοντασ ποιοσ επεξεργαςτισ κα τισ εκτελζςει και πότε. Ο βαςικόσ PM είναι o simple. Ωςτόςο μποροφμε να ορίςουμε και άλλον PMI όπωσ το smpd. Στο command window γράφουμε smpd start Καλι πθγι πλθροφοριϊν για τθν εκτζλεςθ προγραμμάτων και το MPI γενικότερα: http://www.mpi-forum.org

Περιβάλλον προγράμματοσ Δφο βαςικά χαρακτθριςτικά ενόσ παράλλθλου προγράμματοσ είναι (α) πόςεσ διεργαςίεσ υπάρχουν και (β) πϊσ βρίςκουμε τον αρικμό τθσ κάκε διεργαςίασ Η μεταβλθτι MPI_Comm_size δίνει το πλικοσ των διεργαςιϊν του προγράμματοσ Η ερϊτθςθ «Ποια διεργαςία είμαι εγϊ?» απαντάται από τθ μεταβλθτι MPI_Comm_rank. Το MPI_Comm_rank είναι ζνασ ακζραιοσ μεταξφ 0 και MPI_Comm_size-1

Ζνα απλό πρόγραμμα #include "mpi.h" #include <stdio.h> int main( argc, argv ) int argc; char **argv; { int rank, size; MPI_Init( &argc, &argv ); MPI_Comm_rank( MPI_COMM_WORLD, &rank ); MPI_Comm_size( MPI_COMM_WORLD, &size ); printf( "Hello world! I'm %d of %d\n", rank, size ); MPI_Finalize(); return 0; }