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

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

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

Transcript

1 Μεταβίβαση μηνυμάτων Κεφάλαιο VIΙΙ Β. Δημακόπουλος

2 Προγραμματίζοντας με μεταβίβαση μηνυμάτων Δεν υπάρχουν κοινές μεταβλητές διεργασίες και μηνύματα Θεωρείται το πιο δύσκολο Μπορεί, όμως, να γίνει πιο αποδοτικό Κατάλληλο για cluster computing Παράλληλος υπολογιστής του «φτωχού» Πολλές επιλογές (sockets? pvm??) η εξής μία: MPI #2

3 Μεταβίβαση μηνυμάτων: μόνο 2 συναρτήσεις είναι αρκετές Αποστολή μηνύματος send() Παραλαβή μηνύματος receive() Θέματα που μπαίνουν: Ταχύτητα επικοινωνιών Εξαρτάται από το δίκτυο και τα χαρακτηριστικά του Εξαρτάται και από τη βιβλιοθήκη που υλοποιεί τις send() και receive() buffering copying os traps / user-level access «Στυλ» επικοινωνιών Συγχρονισμένο ή τυπου rendezvous (το send() δεν ολοκληρώνεται αν ο παραλήπτης δεν έχει ξεκινήσει το receive()) Ασύγχρονο ή buffered Blocking / non-blocking Private / collective #3

4 Σύγχρονη επικοινωνία (τύπου rendezvous) Συγχρονισμένο ή τυπου rendezvous (το send() δεν ολοκληρώνεται αν ο παραλήπτης δεν έχει ξεκινήσει το receive()) #4

5 «Κανονική» (ασύγχρονη) επικοινωνία Το send() ολοκληρώνεται άσχετα με το πότε θα γίνει το receive() και η διεργασία που στέλνει το μήνυμα συνεχίζει αμέσως. Η πιο συχνή στην πράξη Απαιτεί buffering είτε αυτόματα από τη βιβλιοθήκη ( standard mode στο MPI) είτε από τον προγραμματιστή ( buffered mode στο MPI) #5

6 MPI - Βασικές δομές Διεργασίες... εξαρτάται από το σύστημα, όχι fork/join συνήθως Η πιο κοινή περίπτωση είναι να δημιουργούνται εξωτερικά mpirun np 10 a.out «SPMD» Για διαφοροποίηση των διεργασιών: MPI_Comm_rank(MPI_COMM_WORLD, &myid); Ακολουθιακή αρίθμηση (0, 1, 2, ) MPI_Comm_size(MPI_COMM_WORLD, &nproc); Πλήθος διεργασιών συνολικά (το -np που δόθηκε παραπάνω) #6

7 Βασικές λειτουργίες Αποστολή μηνυμάτων MPI_Send(buf, n, dtype, torank, tag, MPI_COMM_WORLD); buf: διεύθυνση του send buffer n: το πλήθος των στοιχείων του buffer dtype: ο τύπος των στοιχείων του buffer (MPI_CHAR/SHORT/INT/LONG/FLOAT/DOUBLE) torank: id της διεργασίας που θα λάβει το μήνυμα tag: ετικέτα (ότι θέλει βάζει ο προγραμματιστής) Λήψη μηνυμάτων MPI_Recv(buf, n, dtype, fromrank, tag, MPI_COMM_WORLD, status); buf: διεύθυνση του receive buffer fromrank: id της διεργασίας που θα στείλει το μήνυμα status: διεύθυνση buffer για πληροφορίες σε σχέση με το παραληφθέν μήνυμα Παραλαβή ΜΟΝΟ ΕΦΟΣΟΝ: το μήνυμα όντως ήρθε από τη διεργασία fromrank το μήνυμα είχε όντως την ετικέτα tag #7

8 «Τυφλή» λήψη Πολλές φορές χρήσιμο να παραλάβουμε όποιο μήνυμα μας έρθει πρώτο, άσχετα ποιος το έστειλε και με τι ετικέτα: MPI_Recv(buf, n, dtype, MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, status); Ποιος το έστειλε το μήνυμα και ποια είναι η ετικέτα του; status->mpi_tag status->mpi_source #8

9 Βασική τεχνική Οι διεργασίες καθορίζονται (και μοιράζονται τη δουλειά) όπως και στο μοντέλο κοινού χώρου διευθύνσεων π.χ. μπορώ να κάνω διάσπαση βρόχου, διαχωρισμό σκακιέρας, αυτοδρομολόγηση κλπ. Επειδή, όμως, δεν υπάρχει τίποτε κοινό ανάμεσα στις διεργασίες, θα υπάρχει αναγκαστικά μία διεργασία η οποία: αρχικοποιεί τις δομές μοιράζει τα δεδομένα σε άλλες συλλέγει τα επιμέρους αποτελέσματα και ίσως τα δείχνει στον χρήστη #9

10 Υπολογισμός του π = 3,14 Αριθμητική ολοκλήρωση π x 2 4 3,5 3 2,5 2 1,5 1,5 1 0,5 0, ,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 1 διάστημα i (π λάτος διαστημάτων x W = 0,1) N 1 i 0 1 (i 4W 1 2) W 2 #10

11 Υπολογισμός του π = 3,14... (Ι) Σειριακό πρόγραμμα int i, N = 512; /* Ορισμός μεταβλητών */ float pi = 0.0, W = 1.0/Ν; for (i = 0; i < N; i++) /* Ο υπολογισμός */ pi += 4*W / (1 + (i+0.5)*(i+0.5)*w*w); Παραλληλοποίηση Ι: μία διεργασία ανά επανάληψη (very fine grain) Η διεργασία i θα υπολογίσει τον i-οστό όρο του αθροίσματος: 4*W / (1 + (i+0.5)*(i+0.5)*w*w); Παράλληλοποίηση ΙΙ: μία διεργασία ανά μπλοκ επαναλήψεων (courser grain) Κάθε διεργασία myid θα υπολογίσει WORK συνεχόμενους όρους του αθροίσματος #define N 512 /* Όροι του αθροίσματος */ #define NPROC 32 /* Αριθμός επεξεργαστών/διεργασιών */ #define WORK N/NPROC /* Όροι ανά διεργασία */ for (i = 0; i < WORK; i++) /* Οι υπολογισμοί της διεργασίας */ mysum += 4*W / (1 + ((myid*work+i)+0.5)* ((myid*work+i)+0.5)*w*w); #11

12 Παράδειγμα: υπολογισμός του π με MPI #include <mpi.h> main(int argc, char *argv[]) float W, result = 0.0, temp; int N, i, myid, nproc; MPI_status status; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &myid); MPI_Comm_size(MPI_COMM_WORLD, &nproc); /* Αρχικοποίηση διαμοίραση */ if (myid == 0) printf( Enter number of divisions: ); scanf( %d\n, &N); for (i = 1; i < nproc; i++) MPI_Send(&N, 1, MPI_INT, i, 0, MPI_COMM_WORLD); else MPI_Recv(&N, 1, MPI_INT, 0, 0, MPI_COMM_WORLD, &status); /* Ο υπολογισμός της κάθε διεργασίας */ W = 1.0 / N; for (i = myid; i < N; i += nproc) result += 4*W / (1 + (i+0.5)*(i+0.5)*w*w); /* Συλλογή αποτελεσμάτων */ if (myid == 0) for (i = 1; i < nproc; i++) MPI_Recv(&temp, 1, MPI_FLOAT, i, 0, MPI_COMM_WORLD, &status); result += temp; printf( pi = %f\n, result); else MPI_Send(&result, 1, MPI_FLOAT, 0, 0, MPI_COMM_WORLD); MPI_Finalize(); #12

13 Υπολογισμός του π Βελτίωση: Παραλαβή μηνυμάτων όπως καταφθάνουν Βελτίωση στην ταχύτητα, μείωση ανάγκης για buffering κλπ., αρκεί να το επιτρέπει ο αλγόριθμος. /* Συλλογή αποτελεσμάτων */ if (myid == 0) for (i = 1; i < nproc; i++) MPI_Recv(&temp, 1, MPI_FLOAT, i, 0, MPI_COMM_WORLD, &status); result += temp; printf( pi = %f\n, result); /* Συλλογή αποτελεσμάτων */ if (myid == 0) for (i = 1; i < nproc; i++) MPI_Recv(&temp, 1, MPI_FLOAT, MPI_ANY_SOURCE, 0, MPI_COMM_WORLD, &status); result += temp; printf( pi = %f\n, result); #13

14 Παράδειγμα: πίνακας επί διάνυσμα Σειριακά: float A[N][N], v[n], res; for (i = 0; i < Ν; i++) sum = 0.0; for (j = 0; j < Ν; j++) sum += Α[i][j]*v[j]; res[i] = sum; Θα χρησιμοποιήσουμε τμηματική δρομολόγηση στον βρόχο του i Όπως και στο μοντέλο κοινού χώρου διευθύνσεων, η κάθε διεργασία θα εκτελέσει το παρακάτω: WORK = N / nprocs; /* Στοιχεία ανά διεργασία */ sum = 0.0; for (i = 0; i < WORK; i++) for (j = 0; j < Ν; j++) sum += Α[myid*WORK+i][j]*v[j]; #14

15 Πίνακας επί διάνυσμα, συνέχεια Επίσης η διεργασία 0 θα «συλλέξει» όλα τα επιμέρους στοιχεία του αποτελέσματος από τις άλλες διεργασίες για να σχηματίσει την τελική απάντηση. Επομένως, κάθε διεργασία θα πρέπει στο τέλος να κάνει: /* Το sum έχει το (myid*work+i)-οστό στοιχείο του αποτελέσματος */ MPI_Send(&sum, 1, MPI_FLOAT, 0, myid*work+i, MPI_COMM_WORLD); Τέλος, η διεργασία 0 θα πρέπει να κάνει την αρχικοποίηση, δηλαδή: να αρχικοποιήσει (π.χ. να διαβάσει από το πληκτρολόγιο, από αρχείο) τα Α[][] και v[]. Να τα στείλει σε όλες τις άλλες διεργασίες (υπενθύμιση: δεν υπάρχουν κοινές μεταβλητές!) #15

16 Τελικός κώδικας: πίνακας επί διάνυσμα (Ι) #define N 100 /* Η διάσταση του πίνακα */ matrix_times_vector() int i, j; int WORK = N / nprocs; /* Στοιχεία ανά διεργασία */ float sum, v[ν]; MPI_Status status; if (myid == 0) /* Διεργασία 0 */ float A[N][N], res[n]; else /* του if (myid == 0) */ /* Υπόλοιπες διεργασίες */ float B[WORK][N]; initialize_elements(a, v); /* Κάποια αρχικοποίηση */ for (i = 1; i < numprocs(); i++) MPI_Send(A[i*WORK], WORK*N, MPI_FLOAT, i, 0, MPI_COMM_WORLD); MPI_Send(v, N, MPI_FLOAT, i, 0, MPI_COMM_WORLD); for (i = 0; i < WORK; i++) for (sum = 0.0, j = 0; j < Ν; j++) sum += Α[i][j]*v[j]; res[i] = sum; /* Συλλογή των στοιχείων του αποτελέσματος */ for (i = WORK; i < WORK*nprocs; i++) MPI_Recv(&sum, 1, MPI_FLOAT, MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, &status); res[ status.mpi_tag ] = sum; /* Εξαγωγή της ετικέτας */ show_result(res); /* Παρουσίαση αποτελέσματος */ MPI_Recv(B, WORK*N, MPI_FLOAT, 0, 0, MPI_COMM_WORLD, &status); MPI_Recv(v, N, MPI_FLOAT, 0, 0, MPI_COMM_WORLD, &status); for (i = 0; i < WORK; i++) for (j = 0; j < Ν; j++) sum += B[i][j]*v[j]; /* Το sum έχει το (myid*work+i)-οστό στοιχείο του αποτελ. */ MPI_Send(&sum, 1, MPI_FLOAT, 0, myid*work+i, MPI_COMM_WORLD); #16

17 Βελτιστοποίηση Οι επικοινωνίες είναι ο εχθρός της ταχύτητας! Κοιτάμε να τις αποφεύγουμε όσο γίνεται. Καλύτερα λίγα και μεγάλα μηνύματα, παρά πολλά και μικρά. Ομαδοποίηση μηνυμάτων όσο γίνεται. Διεργασίες εκτός της 0: float B[WORK][N], mypart[n]; MPI_Recv(B, WORK*N, MPI_FLOAT, 0, 0, MPI_COMM_WORLD, &status); MPI_Recv(v, N, MPI_FLOAT, 0, 0, MPI_COMM_WORLD, status); for (i = 0; i < WORK; i++) for (j = 0; j < Ν; j++) sum += B[i][j]*v[j]; mypart[i] = sum; /* Το mypart περιέχει WORK στοιχεία, αρχίζοντας από το (myid*work)-οστό */ MPI_Send(mypart, WORK, MPI_FLOAT, 0, myid*work, MPI_COMM_WORLD); Διεργασία 0: if (myid == 0)... /* Συλλογή στοιχείων του αποτελέσματος */ for (i = 1; i < nprocs; i++) /* Παραλαβή και εξαγωγή WORK στοιχείων */ MPI_Recv(v, WORK, MPI_FLOAT, MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, &status); for (j = 0; j < WORK; j++) res[ j + status.mpi_tag ] = v[j]; show_result(res); #17

18 Συλλογικές επικοινωνίες

19 Συλλογικές επικοινωνίες (collective communications) Εκτός από την επικοινωνία ενός ζεύγους διεργασιών ( unicast communication ), υπάρχει πολύ συχνά ανάγκη για επικοινωνία μεταξύ όλων των διεργασιών μαζί. collective communications διάφορων ειδών Εκπομπή (broadcasting, one-to-all) ίδιο μήνυμα από μία διεργασία προς όλες τις άλλες #19

20 Συλλογικές επικοινωνίες Διασκόρπιση (scattering, personalized one-to-all) διαφορετικά μηνύματα από μία διεργασία προς όλες τις άλλες Συλλογή (gathering, personalized all-to-one) ( αντίθετο της διασκόρπισης ) μία διεργασία λαμβάνει ένα μήνυμα από κάθε μία από τις υπόλοιπες #20

21 Συλλογικές επικοινωνίες??? Πολλά πιθανά ονόματα: πολλαπλή εκπομπή (multinode ή all-to-all broadcasting) Όλες εκτελούν εκπομπή (ή όλες εκτελούν το ίδιο gather) Στο MPI λέγεται allgather #21

22 Συλλογικές επικοινωνίες??? Πιθανά ονόματα: ολική ανταλλαγή (multinode gather/scatter ή all-to-all personalized ή total exchange) ( όλες οι διεργασίες εκτελούν τη δική τους διασκόρπιση ) κάθε διεργασία έχει διαφορετικό μήνυμα για κάθε άλλη Στο MPI λέγεται alltoall #22

23 Παράδειγμα Σε πολλές εφαρμογές απαιτείται η λύση ενός συστήματος εξισώσεων και η συνήθης τακτική για τη λύση του είναι οι λεγόμενες «επαναληπτικές μέθοδοι». Αυτέ πολύ απλά προσεγγίζουν σταδιακά τη λύση x(), μέσω επαναλήψεων της μορφής: x(t+1) = A x(t) ξεκινώντας από μία αρχική εκτίμηση x(0). To x() είναι διάνυσμα με Ν στοιχεία και το Α είναι πίνακας ΝxΝ. Άρα σε κάθε επανάληψη απαιτείται πολλαπλασιασμός πίνακα επί διάνυσμα. #23

24 Παράδειγμα, συνέχεια Μία στρατηγική αποθήκευσης των Α και x(): Κατά γραμμές ο Α (π.χ. η διεργασία i έχει τη γραμμή i του Α) Κάθε διεργασία έχει όλο το τρέχον x() Αρχικά, κάποια διεργασία πρέπει: να στείλει σε όλες τις άλλες την αρχική εκτίμηση (το x(0)). (εκπομπή) να στείλει στην διεργασία i την i-οστή γραμμή του Α (για κάθε i). (διασκόρπιση) #24

25 Παράδειγμα, συνέχεια Σε κάθε επανάληψη: Η διεργασία i πολλαπλασιάζει τη γραμμή του A που έχει με το x(t) που επίσης έχει και υπολογίζει το i-οστό στοιχείο του νέου x, δηλαδή το x i (t+1). Θα πρέπει να σχηματίσει ολόκληρο το x(t), προφανώς από τα στοιχεία που υπολόγισαν οι άλλες διεργασίες (πολλαπλή εκπομπή ή allgather) Αν απαιτηθεί αναστροφή του Α (οι γραμμές να γίνουν στήλες και οι στήλες γραμμές), τότε η διεργασία i θα έχει μόνο το στοιχείο A ii. Το Α 0i το έχει η διεργασία 0, το Α 1i το έχει η διεργασία 1, το Α ki το έχει η διεργασία k. Πρέπει να συλλέξει αυτά τα στοιχεία από όλες τις άλλες διεργασίες Το ίδιο κάνουν, όμως, όλες, για τις δικές τους στήλες (ολική ανταλλαγή ή alltoall) #25

26 Άλλες συλλογικές επικοινωνίες/υπολογισμοί Λειτουργίες υποβίβασης (reduction operations) Από ένα μέγεθος μεγαλύτερης διάστασης (π.χ. διάνυσμα) «υποβιβαζόμαστε» σε μέγεθος μικρότερης διάστασης (π.χ. βαθμωτό) global sum, product, εύρεση max, min κλπ Κλήσης φραγής (barrier calls) Μερική εμπομπή (multicast) Εκπομπή μόνο σε μερικές διεργασίες, όχι σε όλες Είναι πιο «δύσκολη» επικοινωνία από την ολική εκπομπή (!) και άλλες... #26

27 Κλήσεις Την ίδια κλήση κάνουν όλες οι διεργασίες MPI_Bcast(buf, n, dtype, rootrank,mpi_comm_world); το rootrank δηλώνει ποιος κάνει την εκπομπή MPI_Scatter(sbuf, sn, stype, rbuf, rn, rtype, rootrank, MPI_COMM_WORLD); Μόνο για την πηγή μετράνε τα 3 πρώτα ορίσματα Το sn είναι ο # στοιχείων που θα σταλεί σε κάθε διεργασία (περιλαμβανομένης και της πηγής) και πρέπει να είναι ίδιος με το rn. Άρα αν υπάρχουν Ν διεργασίες, το sbuf πρέπει να έχει Ν*sn στοιχεία. Κάθε διεργασία παραλαμβάνει τα στοιχεία της στο rbuf MPI_Gather(sbuf, sn, stype, rbuf, rn, rtype, targetrank, MPI_COMM_WORLD); Μόνο για τη διεργασία-αποδέκτη μετράνε τα ορίσματα 4-6 Το sn είναι ο # στοιχείων που θα σταλεί η κάθε διεργασία (περιλαμβανομένης και του αποδέκτη). MPI_Allgather(sbuf, sn, stype, rbuf, rn, rtype, MPI_COMM_WORLD); Ίδια με MPI_Gather() μόνο που όλες οι διεργασίες πρέπει να έχουν receive buffer #27

28 Κλήσεις, συνέχεια MPI_Alltoall(sbuf, sn, stype, rbuf, rn, rtype, MPI_COMM_WORLD); Παρόμοιες παράμετροι με με MPI_Allgather() MPI_Reduce(sbuf, rbuf, n, dtype, op, targetrank, MPI_COMM_WORLD); το op είναι MPI_MAX/MIN/SUM/PROD/LAND/BAND/LOR/BOR/LXOR/BXOR (αν και μπορεί κανείς να ορίσει και δικά του) τέλος υπάρχουν και τα MPI_MINLOC και MPI_MAXLOC που μαζί με το min/max επιστρέφουν το rank της διεργασίας που το διαθέτει Όλες οι διεργασίες πρέπει να διαθέτουν send & receive buffer (sbuf & rbuf) Η λειτουργία, αν το n είναι > 1, γίνεται σε κάθε στοιχείο ξεχωριστά MPI_Allreduce(sbuf, rbuf, n, dtype, op, MPI_COMM_WORLD); Ίδια με MPI_Reduce() μόνο που όλες οι διεργασίες παίρνουν το αποτέλεσμα και άλλες #28

29 Παράδειγμα: «κυριλέ» υπολογισμός του π #include <mpi.h> /* Μετάφραση με mpicc */ main(int argc, char *argv[]) float W, result = 0.0, temp; int N, i, myid, nproc; MPI_status status; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &myid); MPI_Comm_size(MPI_COMM_WORLD, &nproc); /* Αρχικοποίηση διαμοίραση */ if (myid == 0) printf( Enter number of divisions: ); scanf( %d\n, &N); for (i = 1; i < nproc; i++) MPI_Send(&N, 1, MPI_INT, i, 0, MPI_COMM_WORLD); else MPI_Recv(&N, 1, MPI_INT, 0, 0, MPI_COMM_WORLD, &status); /* Ο υπολογισμός της κάθε διεργασίας */ W = 1.0 / N; for (i = myid; i < N; i += nproc) result += 4*W / (1 + (i+0.5)*(i+0.5)*w*w); /* Συλλογή αποτελεσμάτων */ if (myid == 0) for (i = 1; i < nproc; i++) MPI_Recv(&temp, 1, MPI_FLOAT, i, 0, MPI_COMM_WORLD, &status); result += temp; printf( pi = %f\n, result); else MPI_Send(&result, 1, MPI_FLOAT, 0, 0, MPI_COMM_WORLD); MPI_Finalize(); #29

30 Παράδειγμα: «κυριλέ» υπολογισμός του π #include <mpi.h> /* Μετάφραση με mpicc */ main(int argc, char *argv[]) float W, result = 0.0, temp; int N, i, myid, nproc; MPI_status status; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &myid); MPI_Comm_size(MPI_COMM_WORLD, &nproc); /* Αρχικοποίηση διαμοίραση */ if (myid == 0) printf( Enter number of divisions: ); scanf( %d\n, &N); MPI_Bcast(&N, 1, MPI_INT, 0, MPI_COMM_WORLD); /* Ο υπολογισμός της κάθε διεργασίας */ W = 1.0 / N; for (i = myid; i < N; i += nproc) result += 4*W / (1 + (i+0.5)*(i+0.5)*w*w); /* Συλλογή αποτελεσμάτων */ if (myid == 0) for (i = 1; i < nproc; i++) MPI_Recv(&temp, 1, MPI_FLOAT, i, 0, MPI_COMM_WORLD, &status); result += temp; printf( pi = %f\n, result); else MPI_Send(&result, 1, MPI_FLOAT, 0, 0, MPI_COMM_WORLD); MPI_Finalize(); #30

31 Παράδειγμα: «κυριλέ» υπολογισμός του π #include <mpi.h> /* Μετάφραση με mpicc */ main(int argc, char *argv[]) float W, result = 0.0; 0.0, temp; int N, i, myid, nproc; MPI_status status; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &myid); MPI_Comm_size(MPI_COMM_WORLD, &nproc); /* Συλλογή αποτελεσμάτων */ MPI_Reduce(&result, &pi, 1, MPI_FLOAT, MPI_SUM, 0, MPI_COMM_WORLD); if (myid == 0) printf( pi = %f\n, result); MPI_Finalize(); /* Αρχικοποίηση διαμοίραση */ if (myid == 0) printf( Enter number of divisions: ); scanf( %d\n, &N); for (i = 1; i < nproc; i++) MPI_Bcast(&N, MPI_Send(&N, 1, MPI_INT, 1, MPI_INT, 0, MPI_COMM_WORLD); i, 0, MPI_COMM_WORLD); else /* Ο υπολογισμός της κάθε διεργασίας */ W MPI_Recv(&N, = 1.0 / N; 1, MPI_INT, 0, 0, MPI_COMM_WORLD, &status); for (i = myid; i < N; i += nproc) /* result Ο υπολογισμός += 4*W / της (1 κάθε + (i+0.5)*(i+0.5)*w*w); διεργασίας */ W = 1.0 / N; for (i = myid; i < N; i += nproc) result += 4*W / (1 + (i+0.5)*(i+0.5)*w*w); #31

32 Παράδειγμα: πίνακας επί διάνυσμα (ΙΙ) συλλογικά matrix_times_vector() int i, j; int WORK = N / nprocs; /* Στοιχεία ανά διεργασία */ float sum, v[ν], A[N][N], **B; if (myid == 0) initialize_elements(a, v, N); B = allocmatrix(work, N); mypart = allocvector(work); MPI_Scatter(Α, WORK*N, MPI_FLOAT, B, WORK*N, MPI_FLOAT, 0, MPI_COMM_WORLD); MPI_Bcast(v, N, MPI_FLOAT, 0, MPI_COMM_WORLD); for (i = 0; i < WORK; i++) for (sum = 0.0, j = 0; j < Ν; j++) sum += B[i][j]*v[j]; mypart[i] = sum; MPI_Gather(mypart, WORK, MPI_FLOAT, res, WORK, MPI_FLOAT, 0, MPI_COMM_WORLD); if (myid == 0) show_result(res); #32

33 Ασφαλείς επικοινωνίες

34 Προβλήματα; Δύο διεργασίες ανταλλάσουν δεδομένα: P0: MPI_Send(&a, 1, MPI_INT, 1, 0, MPI_COMM_WORLD); MPI_Recv(&b, 1, MPI_INT, 1, 0, MPI_COMM_WORLD, &status); P1: MPI_Recv(&a, 1, MPI_INT, 0, 0, MPI_COMM_WORLD, &status); MPI_Send(&b, 1, MPI_INT, 0, 0, MPI_COMM_WORLD); Μία χαρά! Το επόμενο; P0: MPI_Recv(&b, 1, MPI_INT, 1, 0, MPI_COMM_WORLD, &status); MPI_Send(&a, 1, MPI_INT, 1, 0, MPI_COMM_WORLD); P1: MPI_Recv(&a, 1, MPI_INT, 0, 0, MPI_COMM_WORLD, &status); MPI_Send(&b, 1, MPI_INT, 0, 0, MPI_COMM_WORLD); deadlock! #34

35 Ασφάλεια Αυτό; P0: MPI_Send(&a, 1, MPI_INT, 1, 0, MPI_COMM_WORLD); MPI_Recv(&b, 1, MPI_INT, 1, 0, MPI_COMM_WORLD, &status); P1: MPI_Send(&b, 1, MPI_INT, 0, 0, MPI_COMM_WORLD); MPI_Recv(&a, 1, MPI_INT, 0, 0, MPI_COMM_WORLD, &status); Είναι εντάξει ΜΟΝΟ εφόσον υπάρχουν αρκετοί buffers (στη μεριά του παραλήπτη) να φυλάνε τα μηνύματα που στάλθηκαν (μέχρι να την οριστική παραλαβή τους) Αν δεν υπάρχει χώρος, τότε το MPI «μπλοκάρει» μέχρι να βρεθεί χώρος στον παραλήπτη Αν οι buffers και των δύο διεργασιών είναι «γεμάτοι», τότε DEADLOCK! Άρα η ορθότητα / ασφάλεια του κώδικα εξαρτάται από το ποσό των διαθέσιμων buffers ΜΗ ΑΣΦΑΛΕΣ ΠΡΟΓΡΑΜΜΑ Παρόμοια περίπτωση είναι και όταν Ν διεργασίες ανταλλάσουν κυκλικά από ένα δεδομένο (η i στέλνει στην i+1 και λαμβάνει από την i-1). Ποιά είναι η ασφαλέστερη υλοποίηση; Οι άρτιες διεργασίες αρχικά λαμβάνουν και στη συνέχεια στέλνουν Οι περιττές κάνουν το ανάποδο odd-even rule #35

36 Συναρτήσεις που παρέχουν ασφάλεια Όταν κάθε διεργασία στέλνει & λαμβάνει, το MPI παρέχει μία συνάρτηση ώστε να μην τίθεται θέμα ασφάλειας: MPI_Sendrecv(sbuf, sn, sdtype, torank, stag, rbuf, rn, rdtype, fromrank, rtag, MPI_COMM_WORLD, status); Αυτή η συνάρτηση μπορεί επίσης να παραλάβει και μηνύματα που στάλθηκαν με απλό MPI_Send(), ενώ το μήνυμα που στέλνεται από αυτήν μπορεί να παραληφθεί και με απλό MPI_Recv() Αν θέλουμε ο buffer αποστολής & λήψης να είναι ο ίδιος, τότε: MPI_Sendrecv_replace(buf, n, dtype, torank, stag, fromrank, rtag, MPI_COMM_WORLD, status); #36

37 Μη εμποδιστικές (non-blocking) επικοινωνίες

38 Λήψη Μέχρι τώρα υποθέσαμε ότι μια διεργασία που κάνει MPI_Recv() διεργασία «κολλάει» και περιμένει μέχρι να έρθει το μήνυμα (blocking) Στην μη εμποδιστική λήψη: MPI_Irecv(buf, m, dtype, frank, tag, comm, &status, &req); Παραλαβή μόνο εάν έχει έρθει το μήνυμα Αλλιώς άμεση επιστροφή Πρέπει να γνωρίζουμε αν παραλήφθηκε μήνυμα ή όχι! MPI_Test(&req, &flag, &status); Στο flag επιστρέφεται 0 (false) αν όχι, αλλιώς 1. Προφανώς ο έλεγχος πρέπει να μπει σε κάποιο loop μέχρι να παραληφθεί το μήνυμα. Για αναμονή (block) μέχρι να έρθει το μήνυμα: MPI_Wait(&req, &status); #38

39 Αποστολή Υπάρχει και εδώ η έννοια της εμποδιστικότητας αλλά όχι τόσο εμφανώς (δεν μιλάμε για συγχρονισμένες επικοινωνίες τύπου rendezvous όπου ο αποστολέας περιμένει μέχρι ο παραλήπτης να κάνει receive) Η MPI_Send() επιστρέφει μόλις φύγει και το τελευταίο byte από τον κόμβο. Δηλαδή, περιμένει μέχρι να ολοκληρωθεί η εξής διαδικασία: Η βιβλιοθήκη MPI παίρνει το μήνυμα από τον χώρο του χρήστη (user space), το τοποθετεί πιθανώς σε δικούς της buffers Το λειτουργικό σύστημα αντιγράφει από τον χώρο της βιβλιοθήκης σε buffers στον χώρο του πυρήνα (kernel space) Από τους buffers της μνήμης του πυρήνα μεταφέρεται στους buffers του υποσυστήματος επικοινωνιών (π.χ. κάρτας δικτύου) Από τους buffers της κάρτας «βγαίνουν» όλα τα bytes στο καλώδιο και ταξιδεύουν προς τον προορισμό Στη μη εμποδιστική αποστολή: MPI_Isend(buf, n, dtype, trank, tag, comm, &req); Επιστρέφει αμέσως Επομένως, κάποια από τις μεταφορές στους διάφορους buffers του τοπικού κόμβου ίσως να μην έχει ολοκληρωθεί! Μία νέα MPI_Isend() «στο καπάκι» μπορεί να καταστρέψει το προηγούμενο μήνυμα που δεν έχει προλάβει ακόμα να φύγει Πρέπει να σιγουρευτούμε ότι το προηγούμενο μήνυμα έχει φύγει πριν στείλουμε το επόμενο: MPI_Test(&req, &flag, &status); MPI_Wait(&req, &status); #39

40 Γιατί μη εμποδιστικές επικοινωνίες; Κυρίως για βελτίωση επιδόσεων επικάλυψη υπολογισμών και επικοινωνιών εκκίνηση όσο πιο νωρίς γίνεται ξεκίνα το send μόλις έχεις τα δεδομένα, ξεκίνα το receive μόλις έχεις άδειο buffer και ολοκλήρωση όσο πιο αργά γίνεται ολοκλήρωση του send μόλις είναι να ξαναστείλεις κάτι, ολοκλήρωση του receive μόλις είναι να χρησιμοποιήσεις τα δεδομένα Δευτερευόντως λόγων μείωσης πιθανότητας deadlock P0: MPI_Irecv(&b, 1, MPI_INT, 1, 0, MPI_COMM_WORLD, &status, &req); MPI_Send(&a, 1, MPI_INT, 1, 0, MPI_COMM_WORLD); P1: MPI_Recv(&a, 1, MPI_INT, 0, 0, MPI_COMM_WORLD, &status); MPI_Send(&b, 1, MPI_INT, 0, 0, MPI_COMM_WORLD); Δεν έχει deadlock! #40

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Μεταβίβαση μηνυμάτων. Κεφάλαιο 5 (νέο βιβλίο) Κεφάλαιο 8 (παλιές σημειώσεις) ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Μεταβίβαση μηνυμάτων Κεφάλαιο 5 (νέο βιβλίο) Κεφάλαιο 8 (παλιές σημειώσεις) Προγραμματίζοντας με μεταβίβαση μηνυμάτων Δεν υπάρχουν κοινόχρηστες μεταβλητές διεργασίες και μηνύματα Θεωρείται

Διαβάστε περισσότερα

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

30/4/2012 Συστήματα κατανεμημένης μνήμης και ο προγραμματισμός τους (Ι) Β. Δημακόπουλος Υ07 Παράλληλα Συστήματα 2011-12 30/4/2012 Συστήματα κατανεμημένης μνήμης και ο προγραμματισμός τους (Ι) Β. Δημακόπουλος multicomputers, MPPs, clusters Πολυεπεξεργαστές κατανεμημένης μνήμης Ανεξάρτητοι

Διαβάστε περισσότερα

Υ07 Παράλληλα Συστήματα /5/2016 Προγραμματισμός με μεταβίβαση μηνυμάτων

Υ07 Παράλληλα Συστήματα /5/2016 Προγραμματισμός με μεταβίβαση μηνυμάτων Υ07 Παράλληλα Συστήματα 2015-16 10/5/2016 Προγραμματισμός με μεταβίβαση μηνυμάτων «Κατηγορίες» προγραμματισμού κατανεμημένης μνήμης Sockets Απλά το αναφέρουμε Message passing (μεταβίβαση μηνυμάτων) με

Διαβάστε περισσότερα

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

3/5/2012 Συστήματα κατανεμημένης μνήμης και ο προγραμματισμός τους (ΙI) Β. Δημακόπουλος Υ07 Παράλληλα Συστήματα 2011-12 3/5/2012 Συστήματα κατανεμημένης μνήμης και ο προγραμματισμός τους (ΙI) Β. Δημακόπουλος MPI συλλογικές επικοινωνίες Συλλογικές επικοινωνίες (collective communications) Εκτός

Διαβάστε περισσότερα

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

Προγραμματισμός με Μεταβίβαση Μηνυμάτων 5 Προγραμματισμός με Μεταβίβαση Μηνυμάτων Σε αυτό το κεφάλαιο του βιβλίου θα ασχοληθούμε με το προγραμματιστικό μοντέλο μεταβίβασης μηνυμάτων (message passing model), κατά πολλούς το πιο ευρέως χρησιμοποιούμενο

Διαβάστε περισσότερα

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

ύο μηχανισμοί απαιτούνται: 1. Μία μέθοδος για τη δημιουργία διεργασιών Υπολογισμός με βάση το πέρασμα μηνυμάτων Προγραμματισμός με πέρασμα μηνυμάτων ύο μηχανισμοί απαιτούνται: 1. Μία μέθοδος για τη δημιουργία διεργασιών που θα εκτελούνται σε διαφορετικούς υπολογιστές. 2.

Διαβάστε περισσότερα

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

Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας Ενότητα 2: OpenMPI Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής

Διαβάστε περισσότερα

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

Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας Ενότητα 4: MPI_ANY_TAG,MPI_ANY_SOURCE,MPI_Bcast, MPI_Wtime, MPI_Wait, MPI_Test, MPI_Scatter Δρ. Μηνάς Δασυγένης

Διαβάστε περισσότερα

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

Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας Ενότητα 5: MPI_Reduce Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής

Διαβάστε περισσότερα

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

Αρχιτεκτονική κοινής μνήμης Αρχιτεκτονική κοινής μνήμης Οι επεξεργαστές έχουν κοινή μνήμη Κάθε επεξεργαστής διαθέτει τοπική ιεραρχία κρυφών μνημών Συνήθως η διασύνδεση γίνεται μέσω διαδρόμου μνήμης (memory bus) Αλλά και πιο εξελιγμένα

Διαβάστε περισσότερα

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

Κατανεμημένος και Παράλληλος Προγραμματισμός MPI. MPI Απλές εντολές 03/13/2016. Οδηγίες αποστολής / παραλαβής μηνυμάτων, Υπολογισμός του π ( Κατανεμημένος και Παράλληλος Προγραμματισμός Ηλίας Κ. Σάββας Αναπληρωτής Καθηγητής Τμήμα Μηχανικών Πληροφορικής ΤΕ, ΤΕΙ Θεσσαλίας Email: savvas@teilar.gr MPI Οδηγίες αποστολής / παραλαβής μηνυμάτων, Υπολογισμός

Διαβάστε περισσότερα

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

Υπολογισμοί Μεταβίβασης Μηνυμάτων Υπολογισμοί Μεταβίβασης Μηνυμάτων Κ.Γ. Μαργαρίτης προσαρμογή από το μάθημα του Barry Wilkinson ITCS 4145/5145 2006 Cluster Computing Univ. of North Carolina at Charlotte 2.1 2.2 Προγραμματισμός μεταβίβασης

Διαβάστε περισσότερα

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

Εισαγωγή. E-03: Λειτουργικά Συστήµατα ΙΙ 6. Εαρινό Εξάµηνο SUN RPC. Κλήση Αποµακρυσµένων ιαδικασιών (RPC) Σύνδεση: Port Mapper. Εισαγωγή Ε-03: Λειτουργικά Συστήµατα ΙΙ Εαρινό Εξάµηνο 2005-06 Sun RPC MPI «Sun RPC & MPI» ρ. Παναγιώτης Χατζηδούκας (Π..407/80) E-03: Λειτουργικά Συστήµατα ΙΙ 1 E-03: Λειτουργικά Συστήµατα ΙΙ 2 Κλήση

Διαβάστε περισσότερα

Message Passing Interface (MPI)

Message Passing Interface (MPI) Message Passing Interface (MPI) Συστήµατα Παράλληλης Επεξεργασίας Εργαστήριο Υπολογιστικών Συστηµάτων Αθήνα, εκέµβριος 2002 Τι είναι το MPI; Είναι πρότυπο, όχι συγκεκριµένη υλοποίηση Βιβλιοθήκη ανταλλαγής

Διαβάστε περισσότερα

Υπολογιστικές Μέθοδοι Ανάλυσης και Σχεδιασµού Υπολογιστικό Εργαστήριο Μάθηµα 1 Εισαγωγή στο MPI http://ecourses.chemeng.ntua.gr/courses/computational_methods Αρχιτεκτονικές Παράλληλων Υπολογιστών Shared

Διαβάστε περισσότερα

Message Passing Interface (MPI)

Message Passing Interface (MPI) Message Passing Interface (MPI) Συστήµατα Παράλληλης Επεξεργασίας Εργαστήριο Υπολογιστικών Συστηµάτων Αθήνα, Νοέµβριος 2003 24/11/2003 Message Passing Interface (MPI) 1 Παράλληλες αρχιτεκτονικές Αρχιτεκτονική

Διαβάστε περισσότερα

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

Παράλληλα και Κατανεµηµένα Συστήµατα. Εισαγωγή Παράλληλα και Κατανεµηµένα Συστήµατα 1 Εισαγωγή Στόχος της περιγραφής που ακολουθεί, αποτελεί η παρουσίαση του περιβάλλοντος διεπαφής ανταλλαγής µηνυµάτων (message passing interface) MPI δια της χρήσεως

Διαβάστε περισσότερα

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

Επικοινωνία. Message-Passing Interface (MPI) Βασικές Κλήσεις για Sockets. Μοντέλο Μεταβίβασης Μηνυµάτων. Μοντέλα Παράλληλου Υπολογισµού Ε-85: Ειδικά Θέµατα Λογισµικού Προγραµµατισµός Συστηµάτων Υψηλών Επιδόσεων Χειµερινό Εξάµηνο 2009-10 Επικοινωνία Πολλάκατανεµηµένα συστήµατα υλοποιούνται πάνω από ένα απλό µοντέλο µηνυµάτων επικοινωνίας,

Διαβάστε περισσότερα

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

Ε-85: Ειδικά Θέµατα Λογισµικού Ε-85: Ειδικά Θέµατα Λογισµικού Προγραµµατισµός Συστηµάτων Υψηλών Επιδόσεων Χειµερινό Εξάµηνο 2009-10 «Εισαγωγή στο MPI» Παναγιώτης Χατζηδούκας (Π.Δ. 407/80) E-85: Ε.Θ.Λ: Προγραµµατισµός Συστηµάτων Υψηλών

Διαβάστε περισσότερα

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

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:04 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων

Διαβάστε περισσότερα

Λ10 Παράλληλος & Κατανεμημένος Προγραμματισμός 2009

Λ10 Παράλληλος & Κατανεμημένος Προγραμματισμός 2009 Λ10 Παράλληλος & Κατανεμημένος Προγραμματισμός 2009 Μάθημα 7 ο 24/11/2009 Οργάμωση & εισαγωγή στομ προγραμματισμό συστημάτωμ καταμεμημέμης μμήμης Β. Δημακόπουλος multicomputers, MPPs, clusters Πολυεπεξεργαςτζσ

Διαβάστε περισσότερα

MPI: Message Passing Interface

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

Διαβάστε περισσότερα

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

Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας Ενότητα 3: MPI_Get_count, non blocking send/recv, εμφάνιση και αποφυγή αδιεξόδων Δρ. Μηνάς Δασυγένης mdasyg@ieee.org

Διαβάστε περισσότερα

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

MPI: Βαςικζσ Εντολζσ Επικοινωνίασ. Κώςτασ Διαμαντάρασ Τμιμα Πλθροφορικισ ΤΕΙ Θεςςαλονίκθσ 2011 MPI: Βαςικζσ Εντολζσ Επικοινωνίασ Κώςτασ Διαμαντάρασ Τμιμα Πλθροφορικισ ΤΕΙ Θεςςαλονίκθσ 2011 Εντολζσ Επικοινωνίασ ςθμείο προσ ςθμείο (point-to-point) MPI_Send, MPI_Recv MPI_Isend, MPI_Irecv 2 Κώςτασ Διαμαντάρασ

Διαβάστε περισσότερα

Message Passing Interface (MPI)

Message Passing Interface (MPI) Message Passing Interface (MPI) Συστήµατα Παράλληλης Επεξεργασίας Εργαστήριο Υπολογιστικών Συστηµάτων Αθήνα, Οκτώβριος 2009 21/10/2009 Message Passing Interface (MPI) 1 Παράλληλες αρχιτεκτονικές Αρχιτεκτονική

Διαβάστε περισσότερα

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

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:07 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων

Διαβάστε περισσότερα

Message Passing Interface (MPI)

Message Passing Interface (MPI) Message Passing Interface (MPI) Συστήµατα Παράλληλης Επεξεργασίας Εργαστήριο Υπολογιστικών Συστηµάτων Αθήνα, Νοέµβριος 2004 22/11/2004 Message Passing Interface (MPI) 1 Παράλληλες αρχιτεκτονικές Αρχιτεκτονική

Διαβάστε περισσότερα

MPI: Message Passing Interface

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

Διαβάστε περισσότερα

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

Πίνακες: μια σύντομη εισαγωγή. Πίνακες χαρακτήρων: τα Αλφαριθμητικά Πίνακες: μια σύντομη εισαγωγή Πίνακες χαρακτήρων: τα "Αλφαριθμητικά" Πίνακες(Arrays): έννοιες και ορισμοί Ορισμός: Πίνακας (array) = σύνολο μεταβλητών του ιδίου τύπου (int, float, char,...) με ένα κοινό

Διαβάστε περισσότερα

13.2 Παράλληλος Προγραµµατισµός Γλωσσάρι, Σελ. 1

13.2 Παράλληλος Προγραµµατισµός Γλωσσάρι, Σελ. 1 13.2 Παράλληλος Προγραµµατισµός Γλωσσάρι, Σελ. 1 ΓΛΩΣΣΑΡΙ Αµοιβαίος αποκλεισµός (mutual exclusion) Στο µοντέλο κοινού χώρου διευθύνσεων, ο αµοιβαίος αποκλεισµός είναι ο περιορισµός του αριθµού των διεργασιών

Διαβάστε περισσότερα

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

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων Δομημένος Προγραμματισμός Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 2 Ορισμός

Διαβάστε περισσότερα

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

Non-blocking Επικοινωνίεσ και Buffering. Κώςτασ Διαμαντάρασ ΤΕΙ Θεςςαλονίκθσ 2011 Non-blocking Επικοινωνίεσ και Buffering Κώςτασ Διαμαντάρασ ΤΕΙ Θεςςαλονίκθσ 2011 Η χριςθ buffer Ροφ πάνε τα δεδομζνα μετά το send? Διεργασία 1 Διεργασία 2 A Buffer Δίκτσο Buffer B 2 Κ. Διαμαντάρας ΤΕΙ

Διαβάστε περισσότερα

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

Επιμερισμός δεδομένων Επιμερισμός δεδομένων Διαίρει και βασίλευε Κ.Γ. Μαργαρίτης προσαρμογή από το μάθημα του Barry Wilkinson ITCS 4145/5145 2006Cluster Computing Univ. of North Carolina at Charlotte Επιμερισμός δεδομένων Κατανομή

Διαβάστε περισσότερα

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

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:06 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων

Διαβάστε περισσότερα

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

Επιστημονικοί Υπολογισμοί - Μέρος ΙΙΙ: Παράλληλοι Υπολογισμοί Επιστημονικοί Υπολογισμοί - Μέρος ΙΙΙ: Παράλληλοι Υπολογισμοί Χαρμανδάρης Βαγγέλης, Τμήμα Εφαρμοσμένων Μαθηματικών Πανεπιστήμιο Κρήτης, Εαρινό Εξάμηνο 2013/14 Κεφάλαιο 6: Εφαρμογές ΙΙ Παράλληλοι Υπολογισμοί

Διαβάστε περισσότερα

Κεφάλαιο 8.7. Πολυδιάστατοι Πίνακες (Διάλεξη 19)

Κεφάλαιο 8.7. Πολυδιάστατοι Πίνακες (Διάλεξη 19) Κεφάλαιο 8.7 Πολυδιάστατοι Πίνακες (Διάλεξη 19) Πολυδιάστατοι πίνακες Μέχρι τώρα μιλούσαμε για Μονοδιάστατους Πίνακες. ή π.χ. int age[5]= {31,28,31,30,31; για Παράλληλους πίνακες, π.χ. int id[5] = {1029,1132,1031,9991,1513;

Διαβάστε περισσότερα

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Πίνακες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Πίνακες Πολλές φορές θέλουμε να κρατήσουμε στην μνήμη πολλά αντικείμενα

Διαβάστε περισσότερα

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

Μεθόδων Επίλυσης Προβλημάτων ΕΠΛ 032.3: 3: Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy Κεφάλαιο 12 Πολυδιάστατοι Πίνακες Πολυδιάστατοι πίνακες

Διαβάστε περισσότερα

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

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 7: Δομές Επανάληψης - Αναγνωσιμότητα 19/10/2015 Επανάληψη εκτέλεσης: while 2 while () lexpr true false body Όσο η λογική συνθήκη επανάληψης lexpr αποτιμάται

Διαβάστε περισσότερα

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

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:03 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων

Διαβάστε περισσότερα

Στόχοι και αντικείμενο ενότητας. Τύπος πίνακα. Τύπος πίνακα (συν.) #6. Πίνακες και Δείκτες

Στόχοι και αντικείμενο ενότητας. Τύπος πίνακα. Τύπος πίνακα (συν.) #6. Πίνακες και Δείκτες Στόχοι και αντικείμενο ενότητας Ο τύπος του Πίνακα (βλ. ενότητα #2α) Ορισμός και αρχικοποίηση Αποθήκευση πινάκων στη μνήμη Πολυδιάστατοι πίνακες #6. Πίνακες και Δείκτες Ο τύπος του Δείκτη Η έννοια του

Διαβάστε περισσότερα

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

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Εντολές ελέγχου ροής προγράμματος (if-else & switch) Η εντολή if-else Η εντολή if-else υπάρχει σχεδόν σε όλες τις γλώσσες προγραμματισμού. Χρησιμοποιείται για τον έλεγχο της

Διαβάστε περισσότερα

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης Η συνάρτηση printf() Η συνάρτηση printf() χρησιμοποιείται για την εμφάνιση δεδομένων στο αρχείο εξόδου stdout (standard output stream), το οποίο εξ ορισμού συνδέεται με την οθόνη Η συνάρτηση printf() δέχεται

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Συναρτήσεις Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Συναρτήσεις Ως τώρα γράφαμε όλα τα προγράμματα μας μέσα στην main..1

Διαβάστε περισσότερα

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

Παράλληλος προγραµµατισµός Το Message Passing Interface (MPI) και η υποστήριξή του στο EGEE Grid Vasileios Karakasis GRNET S.A., ICCS bkk@cslab.ece.ntua.gr Issues on Grid Technologies, Univ. of Patras, 2/3/2010 Σύνοψη παρουσίασης

Διαβάστε περισσότερα

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

ΗΥ486 - Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο Δεύτερη Προγραμματιστική Εργασία ΗΥ486 - Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο 2015-2016 Δεύτερη Προγραμματιστική Εργασία Γενική περιγραφή Στη δεύτερη προγραμματιστική εργασία καλείστε να υλοποιήσετε ένα διομότιμο σύστημα (Peer-to-

Διαβάστε περισσότερα

Χρησιμοποιείται για να αποφασίσει το πρόγραμμα αν θα κάνει κάτι σε ένα σημείο της εκτέλεσής του, εξετάζοντας αν ισχύει ή όχι μια συνθήκη.

Χρησιμοποιείται για να αποφασίσει το πρόγραμμα αν θα κάνει κάτι σε ένα σημείο της εκτέλεσής του, εξετάζοντας αν ισχύει ή όχι μια συνθήκη. Εργαστήριο 4: 4.1 Η Δομή Ελέγχου if Χρησιμοποιείται για να αποφασίσει το πρόγραμμα αν θα κάνει κάτι σε ένα σημείο της εκτέλεσής του, εξετάζοντας αν ισχύει ή όχι μια συνθήκη. Γενική Μορφή: Παρατηρήσεις:

Διαβάστε περισσότερα

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

ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής Στο εργαστήριο αυτό θα δούμε πώς ορίζονται και πώς χρησιμοποιούνται οι συμβολοσειρές στην C. Επίσης, θα μελετήσουμε κάποιες από τις συναρτήσεις

Διαβάστε περισσότερα

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

Προγραµµατισµός µε ανταλλαγή µηνυµάτων Ι. Εισαγωγή στο MPI. Εφαρµογές Ανεξάρτητου Παραλληλισµού. Προγραµµατισµός µε ανταλλαγή µηνυµάτων Ι. Εισαγωγή στο MPI. Εφαρµογές Ανεξάρτητου Παραλληλισµού. Λογισµικό & Προγραµµατισµός Συστηµάτων Υψηλής Επίδοσης Οµάδα Παράλληλων & Κατανεµηµένων Συστηµάτων http://pdsgroup.hpclab.ceid.upatras.gr/

Διαβάστε περισσότερα

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

Ανταλλαγι Μθνυμάτων. Κϊςτασ Διαμαντάρασ Τμιμα Πλθροφορικισ ΤΕΙ Θεςςαλονίκθσ Ανταλλαγι Μθνυμάτων Κϊςτασ Διαμαντάρασ Τμιμα Πλθροφορικισ ΤΕΙ Θεςςαλονίκθσ Στζλνω και λαμβάνω μθνφματα Θέματα: Προσ ποιόν ςτζλνονται τα δεδομζνα; Τι ςτζλνεται; Πϊσ ο δζκτθσ αναγνωρίηει τα δεδομζνα; 2 Πζραςμα

Διαβάστε περισσότερα

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

Περίληψη Φροντιστηρίου. Κατανεμημένα Συστήματα Ι. Το περιβάλλον DAP - Χαρακτηριστικά. Το περιβάλλον DAP Τι είναι. Κατανεμημένα Συστήματα Ι 1 Περίληψη Φροντιστηρίου 2 Το Περιβάλλον DAP Φροντιστήριο Ένα παράδειγμα υλοποίησης στο DAP Δευτέρα 14 Νοεμβρίου 2005 Γιάννης Κρομμύδας Το περιβάλλον DAP Τι είναι Το περιβάλλον

Διαβάστε περισσότερα

Εισαγωγή στον Προγραµµατισµό. Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ

Εισαγωγή στον Προγραµµατισµό. Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ Εισαγωγή στον Προγραµµατισµό Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ Συναρτήσεις 19.11.16 Β. Ντουφεξή 2 Προβλήματα: Οσο μεγαλώνουν τα προγράμματα, γίνονται πιο πολύπλοκα.

Διαβάστε περισσότερα

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Μεταβλητές,

Διαβάστε περισσότερα

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

Το Message Passing Interface (MPI) και η υποστήριξή του στο EGEE Grid Το Message Passing Interface (MPI) και η υποστήριξή του στο EGEE Grid Vangelis Koukis HG-01 01-GRNET and HG-06 06-EKT admin team vkoukis@cslab.ece.ntua.gr UoA, 2006/10/26 Πορεία μιας σειριακής εργασίας

Διαβάστε περισσότερα

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

HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο 2016-2017 Δέυτερη Προγραμματιστική Εργασία Προθεσμία παράδοσης: 19/6/2017 1. Γενική Περιγραφή Στην δεύτερη προγραμματιστική εργασία καλείστε να υλοποιήσετε

Διαβάστε περισσότερα

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

Εκφωνήσεις ασκήσεων εργαστηρίου 1 Τμήμα Μηχανικών Πληροφορικής Τ.Ε. Σχολή Τεχνολογικών Εφαρμογών Ακαδημαϊκό έτος 2016-2017 ΤΕΙ Ηπείρου - Άρτα Κατανεμημένα και Παράλληλα Συστήματα (εργαστήριο) Γκόγκος Χρήστος Εκφωνήσεις ασκήσεων εργαστηρίου

Διαβάστε περισσότερα

2. Στοιχεία Αρχιτεκτονικής Παράλληλων Υπολογιστών... 45

2. Στοιχεία Αρχιτεκτονικής Παράλληλων Υπολογιστών... 45 ΠΕΡΙΕΧΟΜΕΝΑ Πρόλογος... 9 1. Εισαγωγή... 13 1.1 Οι Μεγάλες Σύγχρονες Επιστημονικές Προκλήσεις... 13 1.2 Εξέλιξη της Παράλληλης Επεξεργασίας Δεδομένων... 14 1.3 Οι Έννοιες της Σωλήνωσης, του Παραλληλισμού

Διαβάστε περισσότερα

Ενώσεις δεδομένων Απαριθμητές Ψηφιακοί τελεστές Αναδρομικές συναρτήσεις

Ενώσεις δεδομένων Απαριθμητές Ψηφιακοί τελεστές Αναδρομικές συναρτήσεις Ενώσεις δεδομένων Απαριθμητές Ψηφιακοί τελεστές Αναδρομικές συναρτήσεις Ενώσεις δεδομένων (union) τι και γιατί Συσκευές με μικρή μνήμη => ανάγκη εξοικονόμησης πόρων Παρατήρηση: αχρησιμοποίητη μνήμη. Έστω

Διαβάστε περισσότερα

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

Το Message Passing Interface (MPI) και η υποστήριξή του στο EGEE Grid Το Message Passing Interface (MPI) και η υποστήριξή του στο EGEE Grid Vangelis Koukis HG-01 01-GRNET and HG-06 06-EKT admin team vkoukis@cslab.ece.ntua.gr NOA, 2006/10/03 Πορεία μιας σειριακής εργασίας

Διαβάστε περισσότερα

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Έλεγχος Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Σχεσιακοί Τελεστές και Ισότητας Ένα πρόγραμμα εκτός από αριθμητικές πράξεις

Διαβάστε περισσότερα

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

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ. Της φοιτήτριας Αριστέας Χρονοπούλου Αρ. Μητρώου: 01 / Επιβλέπων Καθηγητής Αθανάσιος Μάργαρης ΑΛΕΞΑΝ ΡΕΙΟ Τ.Ε.Ι. ΘΕΣΣΑΛΟΝΙΚΗΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΤΟ ΜΟΝΤΕΛΟ ΜΕΤΑΒΙΒΑΣΗΣ ΜΗΝΥΜΑΤΩΝ 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. Vangelis Koukis 01-GRNET and HG EKT admin team Το Message Passing Interface (MPI) και η υποστήριξή του στο EGEE Grid Vangelis Koukis HG-01 01-GRNET and HG-06 06-EKT admin team vkoukis@cslab.ece.ntua.gr Advanced Course on Grid Technologies, Univ. of

Διαβάστε περισσότερα

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

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 ❶ Προετοιµασία για το 1 ο Εργαστήριο

Διαβάστε περισσότερα

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

Ε-85: Ειδικά Θέµατα Λογισµικού Ε-85: Ειδικά Θέµατα Λογισµικού Προγραµµατισµός Συστηµάτων Υψηλών Επιδόσεων Χειµερινό Εξάµηνο 2009-10 «Υπολογιστικά Συστήµατα Υψηλών Επιδόσεων και Εφαρµογές» Παναγιώτης Χατζηδούκας (Π.Δ. 407/80) E-85: Ε.Θ.Λ:

Διαβάστε περισσότερα

Πρωτόκολλο ARP. Γεωργιλά Χιονία Καθηγήτρια Πληροφορικής ΠΕ1901

Πρωτόκολλο ARP. Γεωργιλά Χιονία Καθηγήτρια Πληροφορικής ΠΕ1901 Πρωτόκολλο ARP Γεωργιλά Χιονία Καθηγήτρια Πληροφορικής ΠΕ1901 Ποιο είναι το έργο του Πρωτοκόλλου Μετατροπής Διεύθυνσης (Address Resolution Protocol ARP) Κάνει δυναμική μετατροπή των IP διευθύνσεων σε φυσικές

Διαβάστε περισσότερα

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή Στόχοι και αντικείμενο ενότητας Η έννοια του Τελεστή #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Εκφράσεις Προτεραιότητα Προσεταιριστικότητα Χρήση παρενθέσεων Μετατροπές Τύπων Υπονοούμενες και ρητές μετατροπές

Διαβάστε περισσότερα

MPI: Message Passing Interface

MPI: Message Passing Interface Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων MPI: Message Passing Interface 9 ο Εξάμηνο Αρχιτεκτονική κοινής μνήμης l l l Οι επεξεργαστές

Διαβάστε περισσότερα

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

Διάλεξη 12: Διάχυση Μηνυμάτων. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι Διάλεξη 12: Διάχυση Μηνυμάτων ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι Ορισμός Προσομοίωσης Τι θα δούμε σήμερα Προσομοίωση Υπηρεσίας Διάχυσης Μηνυμάτων Ιδιότητες Διάταξης Μηνυμάτων ΕΠΛ432: Κατανεµηµένοι Αλγόριθµοι

Διαβάστε περισσότερα

6. ΠΙΝΑΚΕΣ & ΑΛΦΑΡΙΘΜΗΤΙΚΑ

6. ΠΙΝΑΚΕΣ & ΑΛΦΑΡΙΘΜΗΤΙΚΑ 6. ΠΙΝΑΚΕΣ & ΑΛΦΑΡΙΘΜΗΤΙΚΑ 6.1 Η Έννοια του Πίνακα Συχνά είναι προτιμότερο να αντιμετωπίζουμε ένα σύνολο μεταβλητών σαν ενότητα για να απλοποιούμε το χειρισμό τους. Έτσι οργανώνουμε σύνθετα δεδομένα σε

Διαβάστε περισσότερα

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

Παράλληλη Επεξεργασία Παράλληλη Επεξεργασία Φροντιστήριο: Εισαγωγή στο OpenMP Εργαστήριο Πληροφοριακών Συστημάτων Υψηλής Επίδοσης Parallel and Distributed Systems Group Τι είναι το OpenMP Πρότυπο Επέκταση στη C/C++ και τη Fortran

Διαβάστε περισσότερα

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

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Οι συναρτήσεις στη C Οι συναρτήσεις τι είναι Πρόκειται για ανεξάρτητα τμήματα ενός προγράμματος (υποπρογράμματα) που επιτελούν συγκεκριμένες εργασίες. Καλούνται από το κυρίως

Διαβάστε περισσότερα

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

Δημιουργία & Τερματισμός Διεργασιών. Προγραμματισμός II 1 Δημιουργία & Τερματισμός Διεργασιών Προγραμματισμός II 1 lalis@inf.uth.gr Δημιουργία νέας διεργασίας pid_t fork() Η fork δεν έχει παραμέτρους Δημιουργεί μια νέα διεργασία που είναι ένα αντίγραφο της διεργασίας

Διαβάστε περισσότερα

Η βασική συνάρτηση προγράμματος main()

Η βασική συνάρτηση προγράμματος main() Η βασική συνάρτηση προγράμματος main() HEADER FILES main(){ ΔΗΛΩΣΕΙΣ ΜΕΤΑΒΛΗΤΩΝ ΕΝΤΟΛΕΣ (σειριακές, επιλογής ή επανάληψης) ΕΠΙΣΤΡΕΦΟΜΕΝΟΣ ΤΥΠΟΣ (return 0;) Συναρτήσεις Η συνάρτηση είναι ένα υποπρόγραμμα

Διαβάστε περισσότερα

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

ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής Στο εργαστήριο αυτό θα δούμε πώς ορίζονται και πώς χρησιμοποιούνται οι συμβολοσειρές στην C. Επίσης, θα μελετήσουμε κάποιες από τις συναρτήσεις

Διαβάστε περισσότερα

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

Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας Ενότητα 1: OpenMPI Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής

Διαβάστε περισσότερα

Προγραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος 2009-2010. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος 2009-2010. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Είσοδος/Έξοδος Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2009-2010 Είσοδος/Έξοδος Μέχρι τώρα όποτε θέλαμε να διαβάσουμε χρησιμοποιούσαμε πάντα

Διαβάστε περισσότερα

Στόχοι και αντικείμενο ενότητας. Προτάσεις επανάληψης. Έλεγχος ροής προγράμματος. #5.. Εντολές Επανάληψης

Στόχοι και αντικείμενο ενότητας. Προτάσεις επανάληψης. Έλεγχος ροής προγράμματος. #5.. Εντολές Επανάληψης Στόχοι και αντικείμενο ενότητας Έλεγχος ροής προγράμματος (βλ. ενότητα #4) Δομή επανάληψης #5.. Εντολές Επανάληψης Προτάσεις επανάληψης Εντολές while, do while Εντολή for Περί βρόχων (loops) Τελεστές,

Διαβάστε περισσότερα

Κεφάλαιο Πίνακες Ι. (Διάλεξη 16)

Κεφάλαιο Πίνακες Ι. (Διάλεξη 16) Κεφάλαιο 8.1-8.3 Πίνακες Ι (Διάλεξη 16) 15-1 Πίνακες (Arrays) Σε αυτή την ενότητα θα μιλήσουμε για την δομή δεδομένων Πίνακας: 1. Εισαγωγή & Σύνταξη 2. Δήλωση Πίνακα 3. Αρχικοποίηση Πίνακα 4. Πρόσβαση

Διαβάστε περισσότερα

Κεφάλαιο 8.7. Πολυδιάστατοι Πίνακες ( ιάλεξη 18) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Κεφάλαιο 8.7. Πολυδιάστατοι Πίνακες ( ιάλεξη 18) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Κεφάλαιο 8.7 Πολυδιάστατοι Πίνακες ( ιάλεξη 18) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Πολυδιάστατοι πίνακες Μέχρι τώρα µιλούσαµε για Μονοδιάστατους Πίνακες. ή π.χ. int age[5]= {31,28,31,30,31; για Παράλληλους πίνακες,

Διαβάστε περισσότερα

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

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 9: Συναρτήσεις Ορισμός συναρτήσεων () { /* δήλωση μεταβλητών */ /* εντολές ελέγχου/επεξεργασίας */ o Μια συνάρτηση ορίζεται δίνοντας

Διαβάστε περισσότερα

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

Επιστημονικοί Υπολογισμοί - Μέρος ΙΙΙ: Παράλληλοι Υπολογισμοί Επιστημονικοί Υπολογισμοί - Μέρος ΙΙΙ: Παράλληλοι Υπολογισμοί Χαρμανδάρης Βαγγέλης, Τμήμα Εφαρμοσμένων Μαθηματικών Πανεπιστήμιο Κρήτης, Εαρινό Εξάμηνο 2013/14 Κεφάλαιο 5: (B) Message Passing Interface

Διαβάστε περισσότερα

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ 1 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΚΕΦΑΛΑΙΟ 3 ο : ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ ΚΕΦΑΛΑΙΟ 9 ο : ΠΙΝΑΚΕΣ ΜΕΡΟΣ 1 ο : ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΠΙΝΑΚΕΣ 1 & 2 ΔΙΑΣΤΑΣΕΩΝ http://eclass.sch.gr/courses/el594100/

Διαβάστε περισσότερα

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

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων Δομημένος Προγραμματισμός Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 2 Δομές Δεδομένων

Διαβάστε περισσότερα

7. ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΣΥΝΑΡΤΗΣΕΙΣ

7. ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΣΥΝΑΡΤΗΣΕΙΣ 7. ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΣΥΝΑΡΤΗΣΕΙΣ 7.1 Ορισμός και δήλωση συνάρτησης Μία συνάρτηση είναι μία ενότητα οδηγιών οι οποίες μαζί εκτελούν μία συγκεκριμένη εργασία. Παρέχει έναν κατάλληλο τρόπο να μπορέσουμε να κάνουμε

Διαβάστε περισσότερα

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

Κατανεμημένα Συστήματα Ασκήσεις. Κατανεμημένα Συστήματα Ασκήσεις 2016-2017 http://www.cslab.ece.ntua.gr/courses/distrib Άσκηση 1 3 διεργασίες, η P1, η P2 και η P3 στέλνουν μεταξύ τους multicast μηνύματα. Σε περίπτωση που θέλουμε να εξασφαλίσουμε:

Διαβάστε περισσότερα

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

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων Δομημένος Προγραμματισμός Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 2 Κανόνες

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΝΑΠΤΥΞΗ ΚΑΙ ΣΧΕΔΙΑΣΗ ΛΟΓΙΣΜΙΚΟΥ Η γλώσσα προγραμματισμού C ΕΡΓΑΣΤΗΡΙΟ 2: Εκφράσεις, πίνακες και βρόχοι 14 Απριλίου 2016 Το σημερινό εργαστήριο

Διαβάστε περισσότερα

Προγραμματισμός Η/Y. Διάλεξη 6 η : Συναρτήσεις

Προγραμματισμός Η/Y. Διάλεξη 6 η : Συναρτήσεις Προγραμματισμός Η/Y Διάλεξη 6 η : Συναρτήσεις Η C είναι συναρτησιακή γλώσσα προγραμματισμού Ως τώρα όλα τα προγράμματα που είδαμε ήταν γραμμένα μέσα στην main Τι θα κάνουμε όμως αν Το πρόγραμμα είναι τεράστιο

Διαβάστε περισσότερα

Εμπειρική αποτίμηση παράλληλων προγραμμάτων

Εμπειρική αποτίμηση παράλληλων προγραμμάτων . 2a.1 Εμπειρική αποτίμηση παράλληλων προγραμμάτων Κ.Γ. Μαργαρίτης προσαρμογή από το μάθημα του Barry Wilkinson ITCS 4145/5145 2006 Cluster Computing Univ. of North Carolina at Charlotte 2a.2 Οπτικοποίηση

Διαβάστε περισσότερα

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

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων Δομημένος Προγραμματισμός Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 2 Νέο Πρόγραμμα

Διαβάστε περισσότερα

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Μάθημα 5ο Τμήμα Διοίκησης Επιχειρήσεων α εξάμηνο Β. Φερεντίνος Πίνακες 77 Στατική δομή αποθήκευσης δεδομένων (το μέγεθος ορίζεται εξαρχής και δεν αλλάζει) Αποθήκευση πολλών μεταβλητών

Διαβάστε περισσότερα

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Ενότητα 5 Δομές Ελέγχου Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων Δομές Ελέγχου Οι Boehm και Jacopini απέδειξαν ότι οποιοσδήποτε αλγόριθμος

Διαβάστε περισσότερα

9. Εντολές επανάληψηςκαι η εντολή

9. Εντολές επανάληψηςκαι η εντολή Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων 9. Εντολές επανάληψηςκαι η εντολή while Ιωάννης Κατάκης Σήμερα o Εισαγωγή στις δομές επανάληψης o Εντολή while o Τελεστές prefix και postfix Δομές ελέγχου προγράμματος

Διαβάστε περισσότερα

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

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:20 OpenMP Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων

Διαβάστε περισσότερα

Λύσεις για τις ασκήσεις του lab5

Λύσεις για τις ασκήσεις του lab5 Εισαγωγή Λύσεις για τις ασκήσεις του lab5 Επειδή φάνηκε να υπάρχουν αρκετά προβλήματα σχετικά με τον τρόπο σκέψης για την επίλυση των προβλημάτων του lab5, θα συνοδεύσουμε τις λύσεις με αρκετές επεξηγήσεις,

Διαβάστε περισσότερα

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

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Εντολές ελέγχου ροής προγράμματος (if-else & switch) Η εντολή if-else Η εντολή if-else υπάρχει σχεδόν σε όλες τις γλώσσες προγραμματισμού. Χρησιμοποιείται για τον έλεγχο της

Διαβάστε περισσότερα

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

Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας Ενότητα 1: OpenMPI Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής

Διαβάστε περισσότερα

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

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Δομές Δεδομένων και Κυρίως Πρόγραμμα Δομές δεδομένων εκτός από πίνακες: Structs Unions Enums Κυρίως πρόγραμμα Παράμετροι που

Διαβάστε περισσότερα

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

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. Ασκήσεις Επανάληψης Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Ασκήσεις Επανάληψης Άσκηση 1 Το παρακάτω πρόγραμμα περιέχει μια δομή επανάληψης τύπου for. Να ξαναγραφεί ώστε να έχει ακριβώς την ίδια λειτουργία, χρησιμοποιώντας

Διαβάστε περισσότερα