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

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

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

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

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

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

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

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

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

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

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

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

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

Message Passing Interface (MPI)

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

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

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

Message Passing Interface (MPI)

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

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

Αποµακρυσµένη κλήση διαδικασιών

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

Η Υλοποίηση της Επικοινωνίας. Κατανεµηµένα Συστήµατα

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

Πληροφορίες. E-03: Λειτουργικά Συστήµατα ΙΙ 6. Εαρινό Εξάµηνο Ζητήµατα Επικοινωνίας Πελάτη-Εξυπηρετητή. Εξυπηρετητής

Επικοινωνία Client/Server Απομακρυσμένη Κλήση Διαδικασιών

Περίληψη. Υπερυπολογιστές. Υπολογιστικά προβλήµατα. TOP 500 (Ιούνιος 2007) TOP 500 (Ιούνιος 2009) Ε-85: Ειδικά Θέµατα Λογισµικού


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

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

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

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

MPI: Message Passing Interface

Message Passing Interface (MPI)

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

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

MPI: Message Passing Interface

Message Passing Interface (MPI)

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

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

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

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

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

Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

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

ιεργασίες και νήµατα Προγραµµατισµός ΙΙΙ 1 lalis@inf.uth.gr

Κατανεµηµένασυστήµατα αρχείων

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

Δομημένος Προγραμματισμός

Τεχνολογικά Επιτεύγµατα. Πλεονεκτήµατα. Ορισµός Κατανεµηµένου Συστήµατος. Μειονεκτήµατα. E-03: Λειτουργικά Συστήµατα ΙΙ 6. Εαρινό Εξάµηνο

Παράλληλος προγραµµατισµός

Ενδεικτικές λύσεις και στατιστικά

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

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

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

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

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

Νήµατα. ιεργασίες και νήµατα Υλοποίηση νηµάτων Ελαφριές διεργασίες Αξιοποίηση νηµάτων. Κατανεµηµένα Συστήµατα 10-1

MPI: Message Passing Interface

είκτες και Πίνακες (2)

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

Κεφάλαιο 3.1, : Συναρτήσεις I. ( ιάλεξη 11) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Δημιουργία & Τερματισμός Διεργασιών. Προγραμματισμός II 1

Μάθημα 4: Πρότυπα, Πρωτόκολλα & Υπηρεσίες

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

Προγραμματισμός Η/Υ (ΤΛ2007 )

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

Ντίρλης Νικόλαος- ΕΤΥ 3ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 25 ΟΚΤΩΒΡΙΟΥ 2013 ΑΙΘΟΥΣΑ Β4

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος

Επεξεργασία Αρχείων Κειµένου

Επικοινωνία με μηνύματα. Κατανεμημένα Συστήματα 1

Εισαγωγή. Κατανεµηµένα Συστήµατα 01-1

Εργαστήριο ΔΙΕΡΓΑΣΙΕΣ - ΔΙΑΧΕΙΡΙΣΗ

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]

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

Δυναμική δέσμευση και αποδέσμευση μνήμης. Προγραμματισμός II 1

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος

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

Μεθόδων Επίλυσης Προβλημάτων

Προγραμματισμός Η/Υ (ΤΛ2007 )

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

ιεργασίες και Επεξεργαστές στα Κατανεµηµένων Συστηµάτων

Ανάπτυξη και Σχεδίαση Λογισμικού

Κατηγορίες Νηµάτων. Νήµατα Επιπέδου Πυρήνα. Νήµατα Επιπέδου Χρήστη. «Νήµατα Επιπέδου Χρήστη» Ε-85: Ειδικά Θέµατα Λογισµικού

Εισαγωγή στον Προγραμματισμό

lab13grades Άσκηση 2 -Σωστά απελευθερώνετε ολόκληρη τη λίστα και την κεφαλή

Εγχειρίδιο Συναρτήσεων. Socket *sopen(const int type, const int protocol, const char *host, const char *service)

Προγραμματισμός Η/Υ (ΤΛ2007 )

Κλήση Συναρτήσεων ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ. Γεώργιος Παπαϊωάννου ( )

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Πίνακες: μια σύντομη εισαγωγή. Πίνακες χαρακτήρων: τα "Αλφαριθμητικά"

Εισαγωγή. E-03: Λειτουργικά Συστήµατα ΙΙ 6. Εαρινό Εξάµηνο Κατανεµηµένα συστήµατα αρχείων. Μέρη κατανεµηµένου συστήµατος αρχείων

Δομημένος Προγραμματισμός (ΤΛ1006)

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

7.4 Πρωτόκολλο UDP. 3. Στη περίπτωση που ένα μήνυμα χωράει σε ένα τμήμα, χρησιμοποιούμε το πρωτόκολλο TCP.

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Διεργασίες και Νήματα Εργαστηριακές Ασκήσεις

Περίληψη Φροντιστηρίου. Κατανεμημένα Συστήματα Ι. Το περιβάλλον DAP - Χαρακτηριστικά. Το περιβάλλον DAP Τι είναι.

lab13grades 449 PASS 451 PASS PASS FAIL 1900 FAIL Page 1

Κατανεμημένα Συστήματα. Ενότητα # 4: Μηχανισμοί Επικοινωνίας Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Transcript:

Εισαγωγή Ε-03: Λειτουργικά Συστήµατα ΙΙ Εαρινό Εξάµηνο 2005-06 Sun RPC MPI «Sun RPC & MPI» ρ. Παναγιώτης Χατζηδούκας (Π..407/80) E-03: Λειτουργικά Συστήµατα ΙΙ 1 E-03: Λειτουργικά Συστήµατα ΙΙ 2 Κλήση Αποµακρυσµένων ιαδικασιών (RPC) Με τις RPCs οι κατανεµηµένοι υπολογισµοί εµφανίζονται ως τοπικοί Ζητήµατα: Μεταβίβαση παραµέτρων Σύνδεση πελάτη εξυπηρετητή Χειρισµός βλαβών Μελέτη: Sun RPC SUN RPC Ένα από τα πιο διαδεδοµένα συστήµατα RPC Αναπτύχθηκε για χρήση µε το NFS Υλοποιηµένο µε τα πρωτόκολλα UDP ή TCP TCP: τα δεδοµένα χωρίζονται σε εγγραφές UDP: µέγιστο µέγεθος πακέτου < 8912 bytes UDP: timeout και περιορισµένος αριθµός επαναµεταδόσεων TCP: επιστροφή λάθους εφόσον η σύνδεση τερµατίζεται από τον εξυπηρετητή Πολλαπλά ορίσµατα οργανώνονται σε µια ενιαία δοµή E-03: Λειτουργικά Συστήµατα ΙΙ 3 E-03: Λειτουργικά Συστήµατα ΙΙ 4 Sun RPC Σύνδεση: Port Mapper Αντιµετώπιση βλαβών At-least-once: αν µια απάντηση έχει παραληφθεί Αt-least-zero: αν δεν υπάρχει απάντηση. Με UDP προσπαθεί για το πολύ µια φορά (at-most-once) Χρήση του προτύπου external Data Representation (XDR) της SUN ιάταξη big endian για ακέραιους 32 bit Χειρισµός αυθαίρετα µεγάλων δοµών δεδοµένων Εκκίνηση Εξυπηρετητή: δηµιουργία port Η ψευδορουτίνα του εξυπηρετητή καλεί svc_register για να καταχωρήσει στον τοπικό port mapper: αριθµό προγράµµατος και έκδοση Ο port mapper αποθηκεύει την παραπάνω πληροφορία και το port Εκκίνηση πελάτη: καλεί clnt_create γιαναεντοπίσειτοport του εξυπηρετητή Στην συνέχεια, ο πελάτης µπορεί να καλεί διαδικασίες του εξυπηρετητή E-03: Λειτουργικά Συστήµατα ΙΙ 5 E-03: Λειτουργικά Συστήµατα ΙΙ 6 1

ηµιουργία ψευδορουτίνων (rpcgen) Ελαφριές RPCs Q_xdr.c: κώδικας για τη µετατροπή των ορισµάτων σύµφωνα µε το πρότυπο XDR Πολλές RPCs πραγµατοποιούνται µεταξύ πελάτη και εξυπηρετητή στο ίδιο σύστηµα Ανάγκη βελτιστοποίησης της συγκεκριµένης περίπτωσης χρησιµοποιώντας έναν πιο ελαφρύ µηχανισµό RPC (Lightweight RPC) Ο εξυπηρετητής εξάγει µια διεπαφή προς τις αποµακρυσµένες διαδικασίες Ο πελάτης στο ίδιο σύστηµα εισάγει την παραπάνω διεπαφή Ο πυρήνα του λειτουργικού συστήµατος δηµιουργεί κατάλληλες δοµές δεδοµένων που περιλαµβάνουν µια στοίβα ορισµάτων που διαµοιράζονται ο εξυπηρετητής και ο πελάτης E-03: Λειτουργικά Συστήµατα ΙΙ 7 E-03: Λειτουργικά Συστήµατα ΙΙ 8 Ελαφριές RPCs Doors Εκτέλεση RPC Ώθηση των παραµέτρων στη στοίβα Παγίδευση στον πυρήνα Ο πυρήνας απεικονίζει τη µνήµη του πελάτη στο πεδίο διευθύνσεων του εξυπηρετητή Ο πελάτης εκτελεί την διαδικασία Ο πελάτης µπλοκάρει στον πυρήνα µέχρι την ολοκλήρωση εκτέλεσης της διαδικασίας Ο εξυπηρετητής καλεί την διαδικασία Ο πυρήνας αλλάζει το πεδίο διευθύνσεων και επιστρέφει τον έλεγχο στον πελάτη Στο Solaris ο συγκεκριµένος µηχανισµός καλείται doors Η επιλογή µεταξύ κανονικής και ελαφριάς RPC πραγµατοποιείται από τη ψευδορουτίνα κατά το χρόνο εκτέλεσης E-03: Λειτουργικά Συστήµατα ΙΙ 9 E-03: Λειτουργικά Συστήµατα ΙΙ 10 Άλλα µοντέλα RPC Ασύγχρονη RPC Ασύγχρονη RPC Η συµπεριφορά αίτησης απάντησης δεν απαιτείται πάντα Ο εξυπηρετητής µπορεί να απαντήσει άµεσα µόλις λάβει την αίτηση και να εκτελέσει την ρουτίνα αργότερα Σύγχρονη RPC µε αναβολή Χρήση δύο ασύγχρονων RPCs Ο πελάτης απαιτεί µια απάντηση αλλά δεν µπορεί να περιµένει για αυτή. Ο εξυπηρετητής αποστέλλει την απάντηση µε µια ακόµα ασύγχρονη RPC. Μια κατεύθυνσης RPC Ο πελάτης δεν περιµένει ούτε για µια επιβεβαίωση από τον εξυπηρετητή Περιορισµός: δεν υπάρχει εγγύηση αξιοπιστίας αφού ο πελάτης δεν γνωρίζει αν η διαδικασία εκτελέστηκε από τον εξυπηρετητή. a) Παραδοσιακή κλήση αποµακρυσµένης διαδικασίας b) Η αλληλεπίδραση στην περίπτωση ασύγχρονης RPC E-03: Λειτουργικά Συστήµατα ΙΙ 11 E-03: Λειτουργικά Συστήµατα ΙΙ 12 2

Σύγχρονη RPC µε αναβολή Επικοινωνία Η αλληλεπίδραση πελάτη εξυπηρετητή πραγµατοποιείται µε δύο ασύγχρονες RPCs Πολλά κατανεµηµένα συστήµατα υλοποιούνται πάνω από ένα απλό µοντέλο µηνυµάτων επικοινωνίας, π.χ. Sockets E-03: Λειτουργικά Συστήµατα ΙΙ 13 E-03: Λειτουργικά Συστήµατα ΙΙ 14 Βασικές Κλήσεις για Sockets Message-Passing Interface (MPI) Κλήση Socket Bind Listen Accept Connect Send Receive Close Λειτουργία ηµιουργία νέου άκρου επικοινωνίας Σύνδεση τοπικής διεύθυνσης σε ένα socket Ανακοίνωση προθυµίας για αποδοχή συνδέσεων Αναστολή εκτέλεσης έως ότου φτάσει µια αίτηση σύνδεσης Ενεργή προσπάθεια δηµιουργίας µιας σύνδεσης Αποστολή δεδοµένων µέσω µιας σύνδεσης Λήψη δεδοµένων µέσω µιας σύνδεσης Τερµατισµός της σύνδεσης Τα Sockets έχουν σχεδιαστεί για δικτυακή επικοινωνία (TCP) Υποστηρίζουν απλές λειτουργίες αποστολής / λήψης Το επίπεδο αφαίρεσης που παρέχουν δεν είναι κατάλληλο για άλλα πρωτόκολλα σε συστάδες σταθµών εργασίας ή µεγάλα παράλληλα συστήµατα Ανάγκη µιας διεπαφής µε πιο προχωρηµένες λειτουργίες Μεγάλος αριθµός µη συµβατών βιβλιοθηκών και πρωτοκόλλων Ανάγκη για ύπαρξη ενός προτύπου Message-passing interface (MPI) Ανεξάρτητο από το υλικό Σχεδιασµένο για παράλληλες εφαρµογές Βασική ιδέα: επικοινωνία µεταξύ οµάδων διεργασιών Κάθε σύνδεση χαρακτηρίζεται από ένα ζευγάρι (groupid, processid) E-03: Λειτουργικά Συστήµατα ΙΙ 15 E-03: Λειτουργικά Συστήµατα ΙΙ 16 Μοντέλα Παράλληλου Υπολογισµού Μοντέλο Μεταβίβασης Μηνυµάτων Κοινή Μνήµη (Νήµατα) Posix Threads OpenMP: πρότυπο υψηλότερου επιπέδου Μεταβίβαση µηνυµάτων (MPI) Οι διεργασίες έχουν µόνο τοπική µνήµη αλλά µπορούν να επικοινωνήσουν µε άλλες µε ανταλλαγή µηνυµάτων Η µεταφορά δεδοµένων µεταξύ διεργασιών απαιτεί την εκτέλεση λειτουργιών και από τις δύο διεργασίες Το δίκτυο επικοινωνίας δεν αποτελεί τµήµα του µοντέλου υπολογισµού (υπερκύβος, πλέγµα, ) Λειτουργίες αποµακρυσµένης µνήµης Επικοινωνία µιας πλευράς ( One-sided ) MPI-2, IBM s LAPI Μια διεργασία µπορεί να προσπελάσει τη µνήµη µιας άλλης χωρίς τη συµµετοχή της τελευταίας Η προσπέλαση όµως γίνεται ρητά και χωρίς διαφάνεια Η µεταβίβαση µηνυµάτων χρησιµοποιείται για επικοινωνία µεταξύ διεργασιών µε διαφορετικά πεδία διευθύνσεων Η ανταλλαγή δεδοµένων γίνεται µε συνεργασία και ρητή αποστολή λήψη µεταξύ των διεργασιών. Οποιαδήποτε αλλαγή στη µνήµη της ληφθείσας διεργασίας πραγµατοποιείται µε σαφή συµµετοχή της τελευταίας Η διαδιεργασιακή επικοινωνία περιλαµβάνει Συγχρονισµό εκτέλεσης Μετακίνηση δεδοµένων µεταξύ των δύο πεδίων διευθύνσεων Συνδυάζονται επικοινωνία και συγχρονισµός, αντίθετα µε ότι συµβαίνει στην περίπτωση των λειτουργιών αποµακρυσµένης µνήµης E-03: Λειτουργικά Συστήµατα ΙΙ 17 E-03: Λειτουργικά Συστήµατα ΙΙ 18 3

Τι είναι το MPI Παράδειγµα Προσδιορισµός µιας βιβλιοθήκη µεταβίβασης µηνυµάτων Επεκταµένο µοντέλο µεταβίβασης µηνυµάτων εν είναι γλώσσα προγραµµατισµού ή προδιαγραφές µεταγλωττιστή εν αποτελεί µια συγκεκριµένη υλοποίηση Υποστηρίζει παράλληλα και κατανεµηµένα συστήµατα και ετερογενή δίκτυα επικοινωνίας Έχει σχεδιαστεί για να παρέχει πρόσβαση σε υλικό παράλληλης επεξεργασίας σε χρήστες, συγγραφείς βιβλιοθηκών και σχεδιαστές εργαλείων Παρέχει έναν ευέλικτο, αποδοτικό και µεταφέρσιµο τρόπο για την ανάπτυξη παράλληλων προγραµµάτων ιευκολύνει την ανάπτυξη βιβλιοθηκών που µπορούν να αποτρέπουν την ανάγκη εκµάθησής του από τους απλούς χρήστες #include "mpi.h" #include <stdio.h> int main( int argc, char *argv[] ) { MPI_Init( &argc, &argv ); printf( "Hello, world!\n" ); MPI_Finalize(); return 0; E-03: Λειτουργικά Συστήµατα ΙΙ 19 E-03: Λειτουργικά Συστήµατα ΙΙ 20 Περιβάλλον εκτέλεσης Παράδειγµα υο βασικά στοιχεία ενός παράλληλου προγράµµατος: Πόσες διεργασίες συµµετέχουν στον υπολογισµό; Ποια διεργασία είµαι; Το MPI παρέχει συναρτήσεις για τις παραπάνω ερωτήσεις: MPI_Comm_size: επιστρέφει τον αριθµό των διεργασιών MPI_Comm_rank: επιστρέφει το rank, έναν αριθµό µεταξύ 0 και size-1, που προσδιορίζει την τρέχουσα διεργασία #include "mpi.h" #include <stdio.h> int main( 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( "I am %d of %d\n", rank, size ); MPI_Finalize(); return 0; E-03: Λειτουργικά Συστήµατα ΙΙ 21 E-03: Λειτουργικά Συστήµατα ΙΙ 22 Αποστολή και λήψη δεδοµένων Περιγραφή δεδοµένων Πρέπει να προσδιοριστούν κάποια στοιχεία που είναι απαραίτητα για την επικοινωνία: Περιγραφή δεδοµένων Προσδιορισµός διεργασιών Αναγνώριση λήψη µηνυµάτων από τον αποδέκτη Σηµασία ολοκλήρωσης αποστολής λήψης δεδοµένων Οι διεργασίες οργανώνονται σε οµάδες (groups). Κάθε µήνυµα αποστέλλεται σε ένα περιβάλλον επικοινωνίας (context) και πρέπει να ληφθεί µέσα από το ίδιο περιβάλλον. Ο συνδυασµός group και context ορίζουν έναν communicator. Μια διεργασία αναγνωρίζεται από τον αριθµό της (rank) στο group που σχετίζεται µε έναν communicator. MPI_COMM_WORLD: Ο βασικός communicator του οποίου το group περιλαµβάνει όλες τις διεργασίες της εφαρµογής Τα δεδοµένα ενός µηνύµατος που αποστέλλεται ή λαµβάνεται περιγράφονται µε τρία στοιχεία: (address, count, datatype) Ένας τύπος δεδοµένων (datatype) του MPI µπορεί να είναι: Προκαθορισµένος, σύµφωνα µε τους τύπους δεδοµένων της γλώσσας προγραµµατισµού (π.χ., MPI_INT, MPI_DOUBLE_PRECISION) Ένας πίνακας τύπων δεδοµένων του MPI Ένα υποσύνολο ενός πίνακα Μια αυθαίρετη δοµή από τύπους δεδοµένων Ο χρήστης µπορεί να ορίσει δικούς του τύπους δεδοµένων E-03: Λειτουργικά Συστήµατα ΙΙ 23 E-03: Λειτουργικά Συστήµατα ΙΙ 24 4

Ετικέτες µηνυµάτων Βασική κλήση αποστολής Τα µηνύµατα αποστέλλονται µαζί µε µια κατάλληλη ετικέτα (ακέραιο αριθµό) που ορίζει ο χρήστης, διευκολύνοντας της διεργασία που θα λάβει το µήνυµα να προσδιορίσει το µήνυµα Τα µηνύµατα µπορούν εποµένως να επιλέγονται κατά την λήψη τους µε βάση την ετικέτα τους Η τιµή ετικέτας MPI_ANY_TAG επιτρέπει τη λήψη µηνυµάτων οποιασδήποτε ετικέτας MPI_SEND (address, count, datatype, dest, tag, comm) Το µήνυµα περιγράφεται από τα (address, count, datatype). Η διεργασία αποδέκτης καθορίζεται από το όρισµα dest, που είναι ο αριθµός (rank) της διεργασίας αυτής στον communicator που ορίζεται από το όρισµα comm. Όταν η συνάρτηση επιστρέψει, τα δεδοµένα έχουν παραδοθεί στο σύστηµα και ο buffer του µηνύµατος (address) µπορεί να χρησιµοποιηθεί πάλι. Το µήνυµα µπορεί να µην έχει παραληφθεί από την διεργασία αποδέκτη. E-03: Λειτουργικά Συστήµατα ΙΙ 25 E-03: Λειτουργικά Συστήµατα ΙΙ 26 Βασική κλήση λήψης Πληροφορίες MPI_RECV(start, count, datatype, source, tag, comm, status) Περιµένει µέχρι το κατάλληλο µήνυµα (όσον αφορά τα ορίσµατα source & tag) παραληφθεί από το σύστηµα. Το όρισµα source είναι ο αριθµός (rank) της διεργασίας αποστολέας στον communicator που ορίζεται από το όρισµα comm, ή MPI_ANY_SOURCE. Το όρισµα status περιέχει επιπλέον πληροφορίες Επιτρέπεται η λήψη λιγότερων στοιχείων από count του τύπου datatype, µα περισσότερων αποτελεί σφάλµα Το όρισµα status είναι µια δοµή δεδοµένων στο πρόγραµµα του χρήστη Παράδειγµα: int recvd_tag, recvd_from, recvd_count; MPI_Status status; MPI_Recv(..,MPI_ANY_SOURCE,MPI_ANY_TAG,..,&status); recvd_tag = status.mpi_tag; recvd_from = status.mpi_source; E-03: Λειτουργικά Συστήµατα ΙΙ 27 E-03: Λειτουργικά Συστήµατα ΙΙ 28 Παράδειγµα (1/3) Παράδειγµα (2/3) #include "mpi.h" #define BUFLEN 512 if (myid == 0) { printf("%d sending '%s' \n",myid,buffer); int main(int argc, char *argv[]) { int i, myid, numprocs, next, rc; char buffer[buflen]; MPI_Status status; MPI_Init(&argc,&argv); MPI_Comm_size(MPI_COMM_WORLD,&numprocs); MPI_Comm_rank(MPI_COMM_WORLD,&myid); strcpy(buffer,"hello there"); next = (myid + 1) %numprocs; MPI_Send(buffer, strlen(buffer)+1, MPI_CHAR, next, 99, MPI_COMM_WORLD); printf("%d receiving \n",myid); MPI_Recv(buffer, BUFLEN, MPI_CHAR, MPI_ANY_SOURCE, 99, MPI_COMM_WORLD, &status); printf("%d received '%s' \n",myid,buffer); E-03: Λειτουργικά Συστήµατα ΙΙ 29 E-03: Λειτουργικά Συστήµατα ΙΙ 30 5

Παράδειγµα (3/3) Βασικές κλήσεις else { /* myid!= 0 */ printf("%d receiving \n",myid); MPI_Recv(buffer, BUFLEN, MPI_CHAR, MPI_ANY_SOURCE, 99, MPI_COMM_WORLD, &status); printf("%d received '%s' \n", myid, buffer); MPI_Send(buffer, strlen(buffer)+1, MPI_CHAR, next, 99, MPI_COMM_WORLD); printf("%d sent '%s' \n",myid,buffer); Οι περισσότερες παράλληλες εφαρµογές µπορούν να γραφτούν χρησιµοποιώντας µόνο τις ακόλουθες έξι ρουτίνες: MPI_INIT MPI_FINALIZE MPI_COMM_SIZE MPI_COMM_RANK MPI_SEND MPI_RECV MPI_Barrier(MPI_COMM_WORLD); MPI_Finalize(); E-03: Λειτουργικά Συστήµατα ΙΙ 31 E-03: Λειτουργικά Συστήµατα ΙΙ 32 Κλήσεις επικοινωνίας MPI Πλεονεκτήµατα Κλήση MPI_bsend MPI_send MPI_ssend MPI_sendrecv MPI_isend MPI_issend MPI_recv Λειτουργία Τοποθέτησε ένα εξερχόµενο µήνυµα σε ένα τοπικό buffer αποστολής Στείλε ένα µήνυµα και περίµενε µέχρι να αντιγραφεί σε έναν τοπικό ή αποµακρυσµένο buffer Στείλε ένα µήνυµα και περίµενε µέχρι να ξεκινήσει η λήψη του Στείλε ένα µήνυµα και περίµενε για µια απάντηση Πέρνα µια αναφορά στο εξερχόµενο µήνυµα και συνέχισε την εκτέλεση του προγράµµατος Πέρνα µια αναφορά στο εξερχόµενο µήνυµα και περίµενε µέχρι να ξεκινήσει η λήψη του Παρέλαβε ένα µήνυµα, µπλοκάροντας αν δεν υπάρχει κάποιο Το MPI περιλαµβάνει ρητό παραλληλισµό που συνήθως παρέχει καλύτερη απόδοση. Περιλαµβάνει έναν µεγάλο αριθµό βελτιστοποιηµένων κλήσεων επικοινωνίας. Γενικά, υπάρχει επικάλυψη επικοινωνίας και υπολογισµών Προβλήµατα από την τοποθέτηση των δεδοµένων εµφανίζονται σπάνια. Ο συνδυασµός επικοινωνίας και συγχρονισµού µειώνει τις επιβαρύνσεις. MPI_irecv Έλεγξε αν υπάρχει εισερχόµενο µήνυµα αλλά χωρίς µπλοκάρισµα E-03: Λειτουργικά Συστήµατα ΙΙ 33 E-03: Λειτουργικά Συστήµατα ΙΙ 34 Μειονεκτήµατα Η παραλληλοποίηση, ανάπτυξη και το debugging των εφαρµογών µπορεί να είναι αρκετά δύσκολο. Τα κόστη επικοινωνίας µπορεί να είναι σηµαντικές. Οι υπολογισµοί πρέπει να είναι σηµαντικοί σε µέγεθος ώστε να υπερκαλύπτουν τα κόστη επικοινωνίας. Οι καθολικές λειτουργίες µπορεί να είναι πολύ ακριβές. Απαιτούνται σηµαντικές αλλαγές στον αρχικό ακολουθιακό κώδικα. Είναι δύσκολο να επιτευχθεί δυναµική εξισορρόπηση φόρτου. E-03: Λειτουργικά Συστήµατα ΙΙ 35 6