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

Σχετικά έγγραφα
ΕΚΔΟΣΗ 1.1 ΜΑΙΟΣ, 2018 ΕΙΣΑΓΩΓΗ ΣΤΑ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΑΛΓΟΡΙΘΜΟΣ POLLING ΚΥΜΑΤΙΚΟΣ ΑΛΓΟΡΙΘΜΟΣ ΕΠΙΜΕΛΕΙΑ: Β. ΤΣΑΚΑΝΙΚΑΣ, Β.

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

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

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

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

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

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

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

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

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

Εκλογήαρχηγού. Εισαγωγή Ισχυρά συνδεδεµένος γράφος ακτύλιος µίας κατεύθυνσης Τοπολογία δένδρου. Κατανεµηµένα Συστήµατα 06-1

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

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

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

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

Εκλογή αρχηγού σε σύγχρονο δακτύλιο: Οι αλγόριθμοι LCR και HS. 1 Ο αλγόριθμος LCR (Le Lann, Chang, and Roberts)

Ενδεικτικές Λύσεις 1ου Σετ Ασκήσεων

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

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

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

Κατανεμημένα Συστήματα Ι

Κατανεμημένα Συστήματα. Javascript LCR example

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

Κατανεμημένα Συστήματα Ι

Κατανεμημένα Συστήματα Ι

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

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

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

Minimum Spanning Tree: Prim's Algorithm

Κατανεμημένα Συστήματα Ι

Network Algorithms and Complexity Παραλληλοποίηση του αλγορίθμου του Prim. Αικατερίνη Κούκιου

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

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

Message Passing Interface (MPI)

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

Διάλεξη 10: Αλγόριθμοι Αμοιβαίου Αποκλεισμού σε περιβάλλον ανταλλαγής μηνυμάτων. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

Προηγούµενο Μάθηµα. Κατανεµηµένα Συστήµατα Ι Μάθηµα Βασικής Επιλογής, Χειµερινού Εξαµήνου Τοµέας Εφαρµογών και Θεµελιώσεων

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

ΣΕΤ ΑΣΚΗΣΕΩΝ 2. Προθεσμία: Τετάρτη 23/11/2016, 21:00

Message Passing Interface (MPI)

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

Εκφωνήσεις ασκήσεων εργαστηρίου 1

Αµοιβαίοςαποκλεισµός. Κατανεµηµένα Συστήµατα 03-1

Κατανεμημένα Συστήματα Ι

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

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

ΑΣΚΗΣΗ 1: TO ΠΕΡΙΒΑΛΛΟΝ ΕΡΓΑΣΙΑΣ DEV-C++

Προηγούµενο Μάθηµα. Κατανεµηµένα Συστήµατα Ι Μάθηµα Βασικής Επιλογής, Χειµερινού Εξαµήνου Τοµέας Εφαρµογών και Θεµελιώσεων. Υποστήριξη Φοιτητών

ΗΥ486 - Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο Δεύτερη Προγραμματιστική Εργασία

Προηγούµενο Μάθηµα. Κατανεµηµένα Συστήµατα Ι Μάθηµα Βασικής Επιλογής, Χειµερινού Εξαµήνου Τοµέας Εφαρµογών και Θεµελιώσεων. Υποστήριξη Φοιτητών

Κατανεμημένα Συστήματα Ι

Κατανεμημένα Συστήματα Ι

Προγραµµατισµός Ι Εργαστήριο 6ο Ακαδ. Έτος ΕΡΓΑΣΤΗΡΙΟ 6 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

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

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

Προγραµµατισµός Ι Εργαστήριο 6ο Ακαδ. Έτος ΕΡΓΑΣΤΗΡΙΟ 6 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο

Τμήμα Μηχανικών Πληροφορικής Τ.Ε. Σχολή Τεχνολογικών Εφαρμογών Ακαδημαϊκό έτος

Προγραμματισμός Ι (HY120)

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

Κατανεμημένα Συστήματα Ι

Εξοικείωση με το πρόγραμμα DEV C++ Επικοινωνία Χρήστη - Υπολογιστή

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

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

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

Εργαστήριο 5 fork(), exec(), signals

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

MPI: Message Passing Interface

Master Mind εφαρμογή στη γλώσσα προγραμματισμού C

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

ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής

Εκφωνήσεις ασκήσεων εργαστηρίου 2 (pthreads)

Διάλεξη 12: Διάχυση Μηνυμάτων. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

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

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

Κατανεμημένα Συστήματα Ι

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

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

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

Κατανεμημένα Συστήματα Ι

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

Κατανεμημένος και Παράλληλος Προγραμματισμός

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

Προγραμματισμός I (Θ)

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

ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής

HY380 Αλγόριθμοι και πολυπλοκότητα Hard Problems

Κατανεμημένος και Παράλληλος Προγραμματισμός

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

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

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

Κατανεμημένα και Παράλληλα Συστήματα (εργαστήριο) Παραδείγματα με openmp

Διάλεξη 6: Εκλογή Προέδρου σε Σύγχρονους Δακτύλιους. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

Κατανεμημένος και. Ηλίας Κ. Σάββας Αναπληρωτής Καθηγητής Τμήμα Μηχανικών Πληροφορικής ΤΕ, ΤΕΙ Θεσσαλίας

Κεφάλαιο , 3.2: Συναρτήσεις II. (Διάλεξη 12)

Προγραµµατισµός Ι Εργαστήριο 13ο Ακαδ. Έτος ΕΡΓΑΣΤΗΡΙΟ 13 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

Βασικές έννοιες. Κατανεμημένα Συστήματα 1

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

Εργαστήριο 3 Εντολή for while, do while

Transcript:

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

CONTENTS ΕΙΣΑΓΩΓΗ ΣΤΑ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ... 2 Εκλογή αρχηγού... 2 Εισαγωγή... 2 Ο Αλγόριθμος του LaLann... 3 Περιγραφή του πρωτοκόλλου του LeLann... 3 Το πρωτόκολλο των Chang & Roberts... 4 Περιγραφή του πρωτοκόλλου... 4 Εργαστηριακή Άσκηση Εκλογή Αρχηγού... 5 Βήμα 1: Ο αλγόριθμος LaLann... 5 Βήμα 2: Ο αλγόριθμος Chang & Roberts... 7 Δραστηριότητες... 10 ΜΑΙΟΣ, 2018 ΕΙΣΑΓΩΓΗ ΣΤΑ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ 1

ΕΙΣΑΓΩΓΗ ΣΤΑ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΕΚΛΟΓΗ ΑΡΧΗΓΟΥ ΕΙΣΑΓΩΓΗ Το πρόβλημα αυτό εμφανίζεται σε περιπτώσεις όπου μια διεργασία πρέπει να επιλεγεί για να "αναλάβει" κάποιον υπολογισμό σε επίπεδο δικτύου. Ένας τέτοιος υπολογισμός μπορεί να είναι για παράδειγμα η εκτέλεση μιας σειράς ενεργειών για την αρχικοποίηση κάποιων διεργασιών, για την έναρξη εκτέλεσης ενός κατανεμημένου υπολογισμού ή για την αρχικοποίηση του δικτύου μετά από κάποια αποτυχία (πχ δημιουργία του token σε δίκτυα token ring). Άλλωστε, στις προηγούμενες εργαστηριακές μας ασκήσεις έχουμε χρησιμοποιήσει κόμβους με ειδικούς ρόλους (π.χ. timeserver), οι οποίοι θα μπορούσαν να είχαν προκύψει μέσα από έναν αλγόριθμο εκλογής αρχηγού. Πολλοί κατανεμημένοι αλγόριθμοι (πχ BFS-Breadth First Search, MST- Minimum Spanning Tree, MIS- Maximal Independed Set) προϋποθέτουν την ύπαρξη μιας τέτοιας διεργασίας αρχηγού. Επειδή δεν είναι γνωστό από την αρχή πόσες και ποιες διεργασίες συμμετέχουν σε ένα δίκτυο, δεν μπορεί να οριστεί μια τέτοια διεργασία εκ των προτέρων, επομένως απαιτείται η ύπαρξη ενός κατάλληλου αλγορίθμου για την επιλογή μιας τέτοιας διεργασίας - αρχηγού. Το πρόβλημα αυτό πρώτος το έθεσε ο LeLann (1977), ο οποίος πρότεινε και την πρώτη λύση. Το πρόβλημα εκλογής αρχηγού αποτυπώνει τα βασικά χαρακτηριστικά μιας μεγάλης ομάδας προβλημάτων που αντιμετωπίζουν τα πραγματικά κατανεμημένα συστήματα και εμφανίζεται σε πολλές παραλλαγές. Η εκλογή αρχηγού σε ένα δίκτυο απαιτεί την επιλογή μιας μοναδικής διεργασίας που θα βρεθεί στην κατάσταση "αρχηγός" (ή "εκλεγμένη") ενώ όλες οι άλλες διεργασίες βρίσκονται στην κατάσταση "μηαρχηγός" (ή "μη εκλεγμένη"). Πιο συγκεκριμένα, θεωρούμε ότι κάθε διεργασία έχει μια μοναδική ταυτότητα (ID), επιλεγμένη από ένα αυστηρά διατεταγμένο σύνολο. Το πρόβλημα εκλογής αρχηγού απαιτεί ξεκινώντας από μια διαμόρφωση του δικτύου όπου όλες οι διεργασίες βρίσκονται στην ίδια κατάσταση να καταλήξουμε σε μία διαμόρφωση του δικτύου όπου μόνο μια διεργασία βρίσκεται στη κατάσταση "αρχηγός". Μερικές παραλλαγές του προβλήματος προκύπτουν ανάλογα με το αν οι υπόλοιπες διεργασίες χρειάζεται να γνωρίζουν ότι δεν είναι στην κατάσταση αρχηγός ή να γνωρίζουν την ταυτότητα της διεργασίας-αρχηγού. ΜΑΙΟΣ, 2018 ΕΙΣΑΓΩΓΗ ΣΤΑ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ 2

Ένας αλγόριθμος επιλύει το πρόβλημα εκλογής αρχηγού όταν ικανοποιεί τις παρακάτω προδιαγραφές: Όλες οι διεργασίες εκτελούν τον ίδιο τοπικό αλγόριθμο. Ο αλγόριθμος είναι αποκεντρωτικός, δηλαδή ο υπολογισμός μπορεί να ξεκινήσει από ένα αυθαίρετο, μη κενό υποσύνολο των διεργασιών. Ο αλγόριθμος φτάνει σε μια τερματική διαμόρφωση σε κάθε υπολογισμό, και σε αυτή τη διαμόρφωση υπάρχει ακριβώς μια διεργασία που βρίσκεται στην κατάσταση αρχηγός και όλες οι υπόλοιπες βρίσκονται στην κατάσταση "μη-αρχηγός". Ο ΑΛΓΟΡΙΘΜΟΣ ΤΟΥ LALANN Υποθέσεις του αλγορίθμου: Η τοπολογία του δικτύου είναι δακτύλιος ή υπάρχει ένας γεννητικός δακτύλιος στο δίκτυο. Κάθε κόμβος είναι αξιόπιστος και διαθέτει μια μοναδική ταυτότητα (επώνυμο δίκτυο). Ο χρονισμός είναι ασύγχρονος. Ο αριθμός των κόμβων είναι Ν (δεν είναι απαραίτητο να είναι γνωστό το Ν στο δίκτυο). Τα κανάλια είναι αξιόπιστα και είναι FIFO. Υπάρχει η αίσθηση του προσανατολισμού στο δακτύλιο. Nextp είναι ο επόμενος γείτονας του κόμβου p (αριστερόστροφα ή δεξιόστροφα) ΠΕΡΙΓΡΑΦΗ ΤΟΥ ΠΡΩΤΟΚΟΛΛΟΥ ΤΟΥ LELANN Το πρωτόκολλο μπορεί να το ξεκινήσουν ένας ή περισσότεροι αρχικοποιητές. Κάθε αρχικοποιητής στέλνει ένα μήνυμα που περιέχει την ταυτότητά του. Το μήνυμα του αρχικοποιητή p καταλήγει στο ίδιο κόμβο αφού κάνει μια πλήρη περιστροφή. Στο τέλος του πρωτοκόλλου ο κάθε αρχικοποιητής κόμβος έχει σχηματίσει και γνωρίζει το σύνολο των ταυτοτήτων των αρχικοποιητών του δικτύου και μπορεί να επιλέξει με ένα κοινό κριτήριο (π.χ. τη μεγαλύτερη ή τη μικρότερη ταυτότητα) τον αρχηγό. Οι μη αρχικοποιητές δεν συμμετέχουν ενεργά στη διαδικασία εκλογής και απλώς προωθούν στον επόμενο κόμβο τα μηνύματα που λαμβάνουν. ΜΑΙΟΣ, 2018 ΕΙΣΑΓΩΓΗ ΣΤΑ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ 3

ΤΟ ΠΡΩΤΟΚΟΛΛΟ ΤΩΝ CHANG & ROBERTS Το μοντέλο του δικτύου: Η επικοινωνία είναι ασύγχρονη. Τα κανάλια επικοινωνίας και οι επεξεργαστές είναι αξιόπιστοι. Κάθε επεξεργαστής έχει ένα μοναδικό id (υποθέτουμε πως οι ταυτότητες βρίσκονται στο διάστημα 0.. Ν-1). Η τοπολογία είναι δακτύλιος μιας κατεύθυνσης. εν είναι απαραίτητο να είναι γνωστό το Ν στους επεξεργαστές. ΠΕΡΙΓΡΑΦΉ ΤΟΥ ΠΡΩΤΟΚΌΛΛΟΥ Το πρωτόκολλο εκλέγει ως αρχηγό τον κόμβο με το μεγαλύτερο id. Θεωρούμε πως υπάρχουν ένας ή περισσότεροι αρχικοποιητές του πρωτοκόλλου. Κάθε αρχικοποιητής μεταπίπτει σε κατάσταση candidate. Κάθε candidate στέλνει την ταυτότητά του στον δακτύλιο. Ένας κόμβος candidate που λαμβάνει ένα μήνυμα, συγκρίνει την ληφθείσα ταυτότητα με τη δικιά του. Αν η ληφθείσα ταυτότητα είναι μεγαλύτερη, τότε ο κόμβος μεταπίπτει σε κατάσταση defeated και στέλνει στο δίκτυο το μήνυμα με τη μεγαλύτερη ταυτότητα. Ένας μη αρχικοποιητής απλώς μεταδίδει τα μηνύματα που λαμβάνει. Αρχικά, μετά το πρώτο μήνυμα που έλαβε μεταπίπτει σε κατάσταση defeated. ΜΑΙΟΣ, 2018 ΕΙΣΑΓΩΓΗ ΣΤΑ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ 4

ΕΡΓΑΣΤΗΡΙΑΚΗ ΆΣΚΗΣΗ ΕΚΛΟΓΗ ΑΡΧΗΓΟΥ Σε αυτό το τμήμα της εργαστηριακής άσκησης θα δοκιμάσουμε να υλοποιήσουμε κάποιες εκδόσεις των αλγορίθμου εκλογής αρχηγού και να δοκιμάσουμε την επίδοσή τους. Κατά την διάρκεια εκτέλεσης του εργαστηριακού οδηγού θα πρέπει να συμπληρώνετε παράλληλα και την εργαστηριακή σας αναφορά, πρότυπο της οποίας μπορείτε να βρείτε στο openclass του μαθήματος. Η εργαστηριακή αναφορά θα πρέπει να έχει παραδοθεί την ημέρα πριν το επόμενο εργαστήριο, σύμφωνα με τις οδηγίες. Βήμα 1: Ο αλγόριθμος LaLann Σε αυτό το βήμα θα υλοποιήσουμε τον αλγόριθμο του Lalann σε δακτύλιο. Υποθέστε πως ο αριθμός των ενεργών διεργασιών χρηστών σε κάθε διεργασία δεν μεταβάλλεται κατά την ώρα εκτέλεσης του πρωτοκόλλου υπολογισμού. 1. Ανοίξτε ένα terminal 2. Μπείτε στον φάκελο MPI_ABCD. 3. Δημιουργήστε το αρχείο wave3.c εκτελώντας την εντολή gedit wave3.c 4. Αντιγράψτε το παρακάτω πρόγραμμα στο αρχείο σας #include <mpi.h> ΜΑΙΟΣ, 2018 ΕΙΣΑΓΩΓΗ ΣΤΑ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ 5

#include <stdio.h> #include <stdlib.h> #include <time.h> #include <limits.h> #include <unistd.h> int main(int argc, char** argv) int i; MPI_Init(NULL, NULL); //Arxikopoioume to MPI int rank; MPI_Comm_rank(MPI_COMM_WORLD, &rank); int world_size; int *w; MPI_Comm_size(MPI_COMM_WORLD, &world_size); int ack = 0; int maxweight, tmp, np, leader, OK_W, tmpw, tmpi, flag; MPI_Status status; int myweight[2], RSCV[2]; // printf("process %d has weight %d\n", world_rank, myweight); leader = -1; srand(time(null) + rank);//initialize random function. Use world_rank to get different seeds! int previous = rank - 1; // Node before, in the ring int next = rank + 1; // Node after, in the ring if (previous == -1) previous = world_size - 1; if (next >= world_size) next = 0; w = (int*)malloc(world_size * 10 * sizeof(int) ); //Starting LaLann printf("-------starting LaLann-------\n"); myweight[0] = rank; myweight[1] = rand()%100000 + 1; MPI_Send(&myweight, 2, MPI_INT, next, 0, MPI_COMM_WORLD); w[rank] = myweight[1]; MPI_Recv(&RSCV, 2, MPI_INT, previous, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE); while (RSCV[0]!= rank) w[rscv[0]] = RSCV[1]; MPI_Send(&RSCV, 2, MPI_INT, next, 0, MPI_COMM_WORLD); MPI_Recv(&RSCV, 2, MPI_INT, previous, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE); printf("-------elections finished-------\n"); sleep(1); maxweight = -1; for (i=0;i<world_size;i++) ΜΑΙΟΣ, 2018 ΕΙΣΑΓΩΓΗ ΣΤΑ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ 6

if(w[i] > maxweight) maxweight = w[i]; leader = i; printf("i am node %d and the leader is %d\n", rank, leader); MPI_Finalize(); Βήμα 2: Ο αλγόριθμος Chang & Roberts Σε αυτό το βήμα θα υλοποιήσουμε τον αλγόριθμο των Chang & Roberts. Στο δακτύλιο δεν υπάρχει ένας μοναδικός κόμβος που μπορεί να παίξει το ρόλο του αρχικοποιητή. Υποθέστε πως κάθε κόμβος του κατανεμημένου συστήματος υποστηρίζει κάθε χρονική στιγμή έναν αριθμό ενεργών διεργασιών χρηστών. Ο αριθμός αυτός ανήκει στο διάστημα 1..30. Έτσι, αρχικά ο αλγόριθμος θα αποφασίσει για τον αρχηγό και στην συνέχεια θα υπολογίζει το σύνολο των ενεργών διεργασιών χρηστών του δικτύου, μια ορισμένη χρονική στιγμή. Υποθέστε πως ο αριθμός των ενεργών διεργασιών χρηστών σε κάθε διεργασία δεν μεταβάλλεται κατά την ώρα εκτέλεσης του πρωτοκόλλου υπολογισμού. 1. Ανοίξτε ένα terminal 2. Μπείτε στον φάκελο MPI_ABCD. 3. Δημιουργήστε το αρχείο wave3.c εκτελώντας την εντολή gedit wave3.c 4. Αντιγράψτε το παρακάτω πρόγραμμα στο αρχείο σας #include <mpi.h> #include <stdio.h> #include <stdlib.h> #include <time.h> #include <limits.h> int main(int argc, char** argv) int i; MPI_Init(NULL, NULL); //Arxikopoioume to MPI int world_rank; MPI_Comm_rank(MPI_COMM_WORLD, &world_rank); int world_size; MPI_Comm_size(MPI_COMM_WORLD, &world_size); int ack = 0; int nproc = rand()%30 + 1; ΜΑΙΟΣ, 2018 ΕΙΣΑΓΩΓΗ ΣΤΑ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ 7

int maxweight, tmp, np, OK_INIT, OK_W, tmpw, tmpi, flag; MPI_Status status; int myweight; // printf("process %d has weight %d\n", world_rank, myweight); int IAMINITIATOR = rand()%2; //While this node be part of the election game? srand(time(null) + world_rank);//initialize random function. Use world_rank to get different seeds! int previous = world_rank - 1; // Node before, in the ring int next = world_rank + 1; // Node after, in the ring if (previous == -1) previous = world_size - 1; if (next >= world_size) next = 0; //All nodes send their weight and status to node 0 and node 0 decides whether everything is OK if (world_rank!=0) MPI_Recv(&flag, 1, MPI_INT, 0, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE); while (flag == 0) myweight = rand()%100000 + 1;//Random weight IAMINITIATOR = rand()%2; MPI_Send(&myweight, 1, MPI_INT, 0, 0, MPI_COMM_WORLD); MPI_Send(&IAMINITIATOR, 1, MPI_INT, 0, 1, MPI_COMM_WORLD); printf("process %d sends the weight %d and the status %d\n", world_rank, myweight, IAMINITIATOR); MPI_Recv(&flag, 1, MPI_INT, 0, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE); if (IAMINITIATOR == 1) printf("process %d is waiting for elections\n", world_rank); if (world_rank == 0) printf("-------checking IF ALL NODES HAVE DIFFERENT WEIGHTS-------\n"); myweight = rand()%100000 + 1; while (flag == 0) OK_INIT = 0; OK_W = 1; for (i = 1; i < world_size; i++) MPI_Send(&flag, 1, MPI_INT, i, 0, MPI_COMM_WORLD); int max = -1; ΜΑΙΟΣ, 2018 ΕΙΣΑΓΩΓΗ ΣΤΑ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ 8

MPI_STATUS_IGNORE); MPI_STATUS_IGNORE); for (i = 1; i < world_size; i++) MPI_Recv(&tmpw, 1, MPI_INT, i, 0, MPI_COMM_WORLD, MPI_Recv(&tmpI, 1, MPI_INT, i, 1, MPI_COMM_WORLD, if (tmpi == 1) OK_INIT = 1; if (tmpw > max) max = tmpw; else if (tmpw == max) OK_W = 0; if ((OK_W == 1) && (OK_INIT == 1)) flag = 1; else flag = 0; for (i = 1; i < world_size; i++) MPI_Send(&flag, 1, MPI_INT, i, 0, MPI_COMM_WORLD); printf("-------end CHECKING-------\n\n"); //End of initialization phase //Starting Chang & Roberts printf("-------starting Chang & Roberts-------\n"); for (i = 0; i < world_size; i++) if (i == 0) maxweight = myweight; MPI_Send(&maxweight, 1, MPI_INT, next, 2, MPI_COMM_WORLD); // printf("process %d sends the weight %d\n", world_rank, myweight); MPI_Recv(&tmp, 1, MPI_INT, previous, 2, MPI_COMM_WORLD, MPI_STATUS_IGNORE); if (tmp > maxweight) maxweight = tmp; if (myweight == maxweight) printf("process %d is the leader with weight %d\n", world_rank, myweight); IAMINITIATOR = 1; printf("-------elections finished-------\n"); if (myweight == maxweight) int sum = 0; printf("-------polling PROTOCOL STARTING-------\n"); next = world_rank; for (next = 0; next < world_size; next++) if (next!= world_rank) MPI_Send(&ack, 1, MPI_INT, next, 2, MPI_COMM_WORLD); printf("leader %d awakes process %d\n", world_rank, next); ΜΑΙΟΣ, 2018 ΕΙΣΑΓΩΓΗ ΣΤΑ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ 9

MPI_Recv(&np, 1, MPI_INT, next, 2, MPI_COMM_WORLD, MPI_STATUS_IGNORE); sum = sum + np; printf("total PROCESSES are %d\n", sum); printf("-------polling PROTOCOL ENDING-------\n"); if (myweight!= maxweight) MPI_Recv(&ack, 1, MPI_INT, MPI_ANY_SOURCE, 2, MPI_COMM_WORLD, &status); MPI_Send(&nproc, 1, MPI_INT, status.mpi_source, 2, MPI_COMM_WORLD); MPI_Finalize(); 5. Προσπαθήστε να προβλέψετε την έξοδο του προγράμματος 6. Αφού αποθηκεύσετε και κλείσετε το αρχείο, μεταγλωττίστε το εκτελώντας την εντολή mpicc changroberts.c o changroberts 7. Εάν δεν έγινε κάποιο λάθος, ο μεταγλωττιστής δεν θα πρέπει να βγάλει κανένα μήνυμα. Τότε, μπορείτε να εκτελέσετε το πρόγραμμα, τρέχοντας την εντολή mpirun np 10./changroberts 8. Αντιγράψτε την έξοδο του προγράμματος στην εργαστηριακή αναφορά σας. ΔΡΑΣΤΗΡΙΟΤΗΤΕΣ Προσπαθήστε να λύσετε τις παρακάτω δραστηριότητες. Οι απαντήσεις κάθε δραστηριότητας θα πρέπει να εμφανίζονται στην εργαστηριακή σας αναφορά. 1. Μετατρέψτε το παράδειγμα του βήματος 1, έτσι ώστε ο αρχικοποιητής να εκκινεί την διαδικασία εκλογής αρχηγού κάθε 60 δευτερόλεπτα. 2. Προσθέστε σχόλια και στο πρόγραμμα του βήματος 1. 3. Προσθέστε σχόλια και στο πρόγραμμα του βήματος 2. 4. Μετατρέψτε το παράδειγμα του βήματος 2 έτσι ώστε να ο αρχικοποιητής να υπολογίζει το χρονικό διάστημα που απαιτείται για να ολοκληρωθεί ο αλγόριθμος. 5. Μετατρέψτε το πρόγραμμα του βήματος 2 έτσι ώστε ο δακτύλιος να έχει αριστερόστροφο προσανατολισμό. ΜΑΙΟΣ, 2018 ΕΙΣΑΓΩΓΗ ΣΤΑ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ 10

6. Βιβλιογραφία "MPI: The Complete Reference" by Snir, Otto, Huss-Lederman, Walker, and Dongarra, MIT Press (also in Postscript and html) "Using MPI: Portable Parallel Programming with the Message-Passing Interface, " by Gropp, Lusk and Skjellum, MIT Press Designing and Building Parallel Programs, by Ian Foster, Addison-Wesley, 1995. Parallel Programming with MPI, by Peter Pacheco, Morgan-Kaufmann, 1997. MPI θεωρία και Εφαρμογές, A. Μάργαρης, Εκδόσεις Τζιόλα, 2008. Homepage: http:// www.mcs.anl.gov/mpi ΜΑΙΟΣ, 2018 ΕΙΣΑΓΩΓΗ ΣΤΑ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ 11