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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Minimum Spanning Tree: Prim's Algorithm

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

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

Message Passing Interface (MPI)

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

Message Passing Interface (MPI)


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

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

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

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

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

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

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

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

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

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

MPI: Message Passing Interface

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

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

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

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

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

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

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

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

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

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

Φροντιςτήριο. Linked-List

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

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

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

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

ΤΕΜ-101 Εισαγωγή στους Η/Υ Εξεταστική Ιανουαρίου 2011 Θέματα Β

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ II. Υφαντόπουλος Νικόλαος Υποψήφιος Διδάκτορας Contact:

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

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

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

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

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

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

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

«Συγχρονισμός ρολογιών υπό την παρουσία σφαλμάτων»

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

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

Message Passing Interface (MPI)

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

Lab 1: C/C++ Pointers and time.h. Panayiotis Charalambous 1

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

που θα δώσει αποτέλεσµα 48, λόγω της αριστερής προσεταιριστικότητας των τελεστών / και *, ενώ η επιθυµητή αντικατάσταση θα ήταν η

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

Message Passing Interface (MPI)

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

Lab 1: C/C++ Pointers and time.h. Panayiotis Charalambous 1

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

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

Δείκτες (Pointers) Ένας δείκτης είναι μια μεταβλητή με τιμή μια διεύθυνση μνήμης. 9.8

Επιμερισμός δεδομένων

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

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

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

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

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

Στόχοι και αντικείμενο ενότητας. Πέρασμα Πίνακα σε Συνάρτηση (συν.) Πέρασμα Πίνακα σε Συνάρτηση. #8.. Ειδικά Θέματα Αλγορίθμων

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

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

Η πολυνηματική γλώσσα προγραμματισμού Cilk

Διάλεξη 16: Πρόβλημα Συμφωνίας. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

Σημειώσεις όγδοης εβδομάδας

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. Ασκήσεις Επανάληψης

Εργαστηριακή Άσκηση 1

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

Ο πιο κάτω πίνακας περιγράφει σε ποιες περιπτώσεις χρησιμοποιούμε τους τρεις πιο πάνω τρόπους:

Δομή Επανάληψης. Κεφάλαιο 7 Mike Trimos

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

Απλά Προγράμματα. Βήματα: 1. Καθορισμός παράστασης δεδομένων στη μνήμη 2. Αλγόριθμος βήματα που περιγράφουν την επεξεργασία των δεδομένων

Οδηγίες Αγοράς Ηλεκτρονικού Βιβλίου Instructions for Buying an ebook

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

Βήματα: μνήμη 2. Αλγόριθμος βήματα που περιγράφουν την επεξεργασία των δεδομένων. Δομές Δεδομένων + Αλγόριθμοι = Προγράμματα

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

Transcript:

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

CONTENTS ΕΙΣΑΓΩΓΗ ΣΤΑ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ... 2 Το πρωτόκολλο ECHO... 2 Εισαγωγή... 2 Το πρωτόκολλο ECHO... 2 Περιγραφή Πρωτοκόλλου... 2 Εργαστηριακή Άσκηση Το πρωτόκολλο ECHO... 4 Βήμα 1:... 4 Δραστηριότητες... 7 Βιβλιογραφία... 10 ΑΠΡΙΛΙΟΣ, 2018 ΕΙΣΑΓΩΓΗ ΣΤΑ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ 1

Παραδοχές ΕΙΣΑΓΩΓΗ ΣΤΑ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΕΙΣΑΓΩΓΗ Τα πρωτόκολλα της οικογένειας του ECHO μπορούν να χρησιμοποιηθούν για να μεταδώσουν αποδοτικά πληροφορία σε ένα δίκτυο, ενώ ταυτόχρονα μπορούν να μας επιτρέψουν ένα δένδρο σύνδεσης μεταξύ των κόμβων. Το πρωτόκολλο ECHO χρησιμοποιείται σε δίκτυο τοπολογίας γενικού γράφου δηλαδή σε αυθαίρετη (οποιαδήποτε) τοπολογία. Είναι κεντρικοποιημένο πρωτόκολλο γιατί αρχικοποιείται από έναν κόμβο, και χρησιμοποιείται συχνά ως δομικό μέρος άλλων προβλημάτων με σκοπό τη μετάδοση πληροφορίας και το συγχρονισμό. Παραδοχές H τοπολογία είναι γενικός γράφος. Υπάρχει μόνο ένας κόμβος που θα αναλάβει τον ρόλο του αρχικοποιητή. Ο χρονισμός είναι ασύγχρονος. Γενική προσέγγιση πρωτοκόλλου: Ο αρχικοποιητής μεταδίδει τη πληροφορία σε όλους τους άλλους κόμβους. Στη συνέχεια όλοι οι μη αρχικοποιητές θα ενημερώσουν τον αρχικοποιητή πως έλαβαν την πληροφορία. ΠΕΡΙΓΡΑΦΗ ΠΡΩΤΟΚΟΛΛΟΥ 1. Ο αρχικοποιητής: a. Στέλνει σε όλους τους γείτονες το μήνυμα token. b. Περιμένει να λάβει από όλους τους γείτονες το μήνυμα token. c. Αποφασίζει. 2. Οι μη-αρχικοποιητές: a. Όταν λάβουν το πρώτο token «σημειώνουν» τον αποστολέα ως πατέρα τους. b. Αναμεταδίδουν το token σε όλους τους γείτονες, εκτός του πατέρα τους. c. Όταν λάβουν από όλους τους γείτονες ένα token το στέλνουν στον πατέρα τους. ΑΠΡΙΛΙΟΣ, 2018 ΕΙΣΑΓΩΓΗ ΣΤΑ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ 2

Σε ψευδογλώσσα, το πρωτόκολλο ECHO εμφανίζεται στον παρακάτω πίνακα initiator var recp: integer init 0; /* μετράει τον αριθμό των γειτόνων του p από τους οποίους έχει παραληφθεί το token */ fatherp : δείκτης σε κόμβο init udef; begin forall q Neighp do send <tok> to q; while recp < # Neighp do begin receive <tok>; recp:=recp+1; decide end non-initiator begin receive <tok> from neighbor q; fatherp=q; recp:=recp+1; forall q Neighp, q fatherp do send <tok> to q; while recp < # Neighp do begin receive <tok>; recp:=recp+1; end; send <tok> to fatherp end ΑΠΡΙΛΙΟΣ, 2018 ΕΙΣΑΓΩΓΗ ΣΤΑ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ 3

ΕΡΓΑΣΤΗΡΙΑΚΗ ΆΣΚΗΣΗ Σε αυτό το τμήμα της εργαστηριακής άσκησης θα δοκιμάσουμε να υλοποιήσουμε το πρωτόκολλο ECHO και να δοκιμάσουμε την επίδοσή του. Κατά την διάρκεια εκτέλεσης του εργαστηριακού οδηγού θα πρέπει να συμπληρώνετε παράλληλα και την εργαστηριακή σας αναφορά, πρότυπο της οποίας μπορείτε να βρείτε στο openclass του μαθήματος. Η εργαστηριακή αναφορά θα πρέπει να έχει παραδοθεί την ημέρα πριν το επόμενο εργαστήριο, σύμφωνα με τις οδηγίες. Βήμα 1: Στο πρώτο βήμα της εργαστηριακής άσκησης θα προσπαθήσουμε να υλοποιήσουμε το πρωτόκολλο ECHO και να μελετήσουμε την συμπεριφορά τους. Για αυτό το λόγο: 1. Συνδεθείτε σε ένα λειτουργικό Linux (Ubuntu ή LUbuntu). 2. Ανοίξτε ένα terminal 3. Δημιουργήστε έναν φάκελο MPI_ABCD, όπου ABCD το μητρώο σας. Για να το πετύχετε αυτό, εκτελέστε την εντολή mkdir MPI_ABCD. Στην συνέχεια μπείτε στον φάκελο εκτελώντας την εντολή cd MPI_ABCD. 4. Δημιουργήστε το αρχείο echo.c εκτελώντας την εντολή gedit echo.c 5. Αντιγράψτε το παρακάτω πρόγραμμα στο αρχείο σας #include "mpi.h" #include <stdio.h> #include <stdlib.h> int main( int argc, char *argv[] ) { int errs = 0, i, k, neighbournumber,token; int wsize = 5; int father; int *index, *edges, *outindex, *outedges,*neighbours; int nnodes, nedges; MPI_Comm comm1, comm2; MPI_Request request[5]; MPI_Status status, status2; MPI_Init( &argc, &argv ); //preparation of environment of MPI MPI_Comm_size( MPI_COMM_WORLD, &wsize ); // Get the number of Processors int rank; MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (wsize >= 3) { // If Processor number is more than 3 we can make a graph. index = (int*)malloc(wsize * sizeof(int) ); edges = (int*)malloc(wsize * 2 * sizeof(int) ); neighbours = (int*)malloc(wsize * 10 * sizeof(int) ); // allocate memory for arrays if (!index!edges) { printf( "Unable to allocate %d words for index or edges\n", 3 * wsize ); //Error Control if we cannot allocate memory fflush(stdout); MPI_Abort( MPI_COMM_WORLD, 1 ); ΑΠΡΙΛΙΟΣ, 2018 ΕΙΣΑΓΩΓΗ ΣΤΑ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ 4

index[0]=2; // We are filling index values of the graph index[1]=5; index[2]=6; index[3]=8; index[4]=10; edges[0]=1; // We are filling edge values of the graph edges[1]=4; edges[2]=0; edges[3]=2; edges[4]=3; edges[5]=1; edges[6]=1; edges[7]=4; edges[8]=0; edges[9]=3; &comm1 ); MPI_Graph_create( MPI_COMM_WORLD, wsize, index, edges, 0, if (rank == 0) //Initiator { MPI_Graph_neighbors_count(comm1,rank,&neighbourNumber); MPI_Graph_neighbors(comm1,rank,neighbourNumber,neighbours); printf( "My node no is = %d and I have %d neighbours\n", rank, neighbournumber); printf( "My neıghbours are: "); for(i=0;i<neighbournumber;i++) { printf("%d,",neighbours[i]); printf( "\n-------------------------------------\n"); //Send tokens to every neighbour MPI_Send(&token, 1, MPI_INT, neighbours[k], 0, MPI_COMM_WORLD); //wait for a response from evey child, in order to finilize MPI_Irecv(&token, 1, MPI_INT, neighbours[k], 0, MPI_COMM_WORLD, &request[k]); else { MPI_Wait(&request[k], &status); printf("echo finised\n"); MPI_Recv(&token, 1, MPI_INT, MPI_ANY_SOURCE, 0, MPI_COMM_WORLD, &status2); father = status2.mpi_source; MPI_Graph_neighbors_count(comm1,rank,&neighbourNumber); ΑΠΡΙΛΙΟΣ, 2018 ΕΙΣΑΓΩΓΗ ΣΤΑ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ 5

MPI_Graph_neighbors(comm1,rank,neighbourNumber,neighbours); //send token to all neighbours except father if (neighbours[k]!= father) MPI_Send(&token, 1, MPI_INT, neighbours[k], 0, MPI_COMM_WORLD); //wait for token from all neighbours if (neighbours[k]!= father) MPI_Irecv(&token, 1, MPI_INT, neighbours[k], 0, MPI_COMM_WORLD, &request[k]); if (neighbours[k]!= father) MPI_Wait(&request[k], &status); MPI_Send(&token, 1, MPI_INT, father, 0, MPI_COMM_WORLD); printf("node %d has node %d as father\n", rank, father); MPI_Comm_free( &comm1 ); //Empty comm1 and give to system. MPI_Finalize(); //Finish MPI return 0; 6. Σχεδιάστε τον γράφο που δηλώνεται στο παραπάνω πρόγραμμα. 7. Αφού αποθηκεύσετε και κλείσετε το αρχείο, μεταγλωττίστε το εκτελώντας την εντολή mpicc echo.c o echo 8. Εάν δεν έγινε κάποιο λάθος, ο μεταγλωττιστής δεν θα πρέπει να βγάλει κανένα μήνυμα. Τότε, μπορείτε να εκτελέσετε το πρόγραμμα, τρέχοντας την εντολή mpirun np 5./echo. Σε αυτή την εντολή, η παράμετρος np καθορίζει το πλήθος των διεργασιών που θα δημιουργηθούν στον «κόσμο» μας. 9. Αντιγράψτε την έξοδο του προγράμματος στην εργαστηριακή αναφορά σας. Τι παρατηρείτε; ΑΠΡΙΛΙΟΣ, 2018 ΕΙΣΑΓΩΓΗ ΣΤΑ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ 6

ΔΡΑΣΤΗΡΙΟΤΗΤΕΣ Προσπαθήστε να λύσετε τις παρακάτω δραστηριότητες. Οι απαντήσεις κάθε δραστηριότητας θα πρέπει να εμφανίζονται στην εργαστηριακή σας αναφορά. 1. Μετατρέψτε το παράδειγμα του βήματος 1, έτσι ώστε το πρωτόκολλο να τρέξει πάνω στον παρακάτω γράφο index[0]=4; index[1]=6; index[2]=7; index[3]=8; index[4]=10; edges[0]=1; edges[1]=2; edges[2]=3; edges[3]=4; edges[4]=0; edges[5]=4; edges[6]=0; edges[7]=0; edges[8]=0; edges[9]=1; 2. Μετατρέψτε το παράδειγμα του βήματος 1, έτσι ώστε κάθε κόμβος να τυπώνει το πλήθος των φορών που κατείχαν το token. 3. Μετατρέψτε το παράδειγμα του βήματος 1, έτσι ώστε ο αρχικοποιητής να υπολογίζει το χρονικό διάστημα που απαιτήθηκε να εκτελεστεί το πρωτόκολλο. 4. Εκτελέστε το πρωτόκολλο ECHO για τον παρακάτω γράφο. 5. Μετατρέψτε το πρόγραμμα του βήματος 1 έτσι ώστε ο αρχικοποιητής να μπορεί να είναι οποιοσδήποτε κόμβος, ο οποίος θα δίνεται ως είσοδος του προγράμματος. 6. Μετατρέψτε το πρόγραμμα του βήματος 1, έτσι ώστε: a. Κάθε κόμβος μη αρχικοποιητής να παράγει έναν τυχαίο αριθμό R στο διάστημα 1-50 ΑΠΡΙΛΙΟΣ, 2018 ΕΙΣΑΓΩΓΗ ΣΤΑ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ 7

b. Κατά την φάση σύγκλισης του αλγορίθμου, τα παιδιά να στέλνουν στον πατέρα τους τον R, ο οποίος θα πρέπει να υπολογίζει το άθροισμά τους και να το προσθέτει στον δικό του τυχαίο αριθμό. Στο τέλος του αλγορίθμου θα πρέπει ο αρχικοποιητής να έχει υπολογίσει το άθροισμα όλων των τυχαίων αριθμών R. 7. Μετατρέψτε το πρόγραμμα του βήματος 1, έτσι ώστε: a. Κάθε κόμβος μη αρχικοποιητής να παράγει έναν τυχαίο αριθμό R στο διάστημα 1-50 b. Κατά την φάση σύγκλισης του αλγορίθμου, τα παιδιά να στέλνουν στον πατέρα τους τον R, ο οποίος θα πρέπει να υπολογίζει το μικρότερο από τα R που έλαβε (συμπεριλαμβανομένου του δικού του) και να ανανεώνει τον δικό του αριθμό. Στο τέλος του αλγορίθμου θα πρέπει ο αρχικοποιητής να έχει υπολογίσει τον μικρότερο από όλους τους τυχαίους αριθμούς R. ΑΠΡΙΛΙΟΣ, 2018 ΕΙΣΑΓΩΓΗ ΣΤΑ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ 8

ΑΠΡΙΛΙΟΣ, 2018 ΕΙΣΑΓΩΓΗ ΣΤΑ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ 9

ΒΙΒΛΙΟΓΡΑΦΙΑ "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 ΕΙΣΑΓΩΓΗ ΣΤΑ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ 10