3/5/2012 Συστήματα κατανεμημένης μνήμης και ο προγραμματισμός τους (ΙI) Β. Δημακόπουλος
|
|
- Νατάσα Ζερβός
- 6 χρόνια πριν
- Προβολές:
Transcript
1 Υ07 Παράλληλα Συστήματα /5/2012 Συστήματα κατανεμημένης μνήμης και ο προγραμματισμός τους (ΙI) Β. Δημακόπουλος
2 MPI συλλογικές επικοινωνίες
3 Συλλογικές επικοινωνίες (collective communications) Εκτός από την επικοινωνία ενός ζεύγους διεργασιών ( unicast communication ), υπάρχει πολύ συχνά ανάγκη για επικοινωνία μεταξύ όλων των διεργασιών μαζί. collective communications διάφορων ειδών Εκπομπή (broadcasting, one-to-all) ίδιο μήνυμα από μία διεργασία προς όλες τις άλλες #3
4 Συλλογικές επικοινωνίες Διασκόρπιση (scattering, personalized one-to-all) διαφορετικά μηνύματα από μία διεργασία προς όλες τις άλλες Συλλογή (gathering, personalized all-to-one) ( αντίθετο της διασκόρπισης ) μία διεργασία λαμβάνει ένα μήνυμα από κάθε μία από τις υπόλοιπες #4
5 Συλλογικές επικοινωνίες??? Πολλά πιθανά ονόματα: πολλαπλή εκπομπή (multinode ή all-to-all broadcasting) Όλες εκτελούν εκπομπή (ή όλες εκτελούν το ίδιο gather) Στο MPI λέγεται allgather #5
6 Συλλογικές επικοινωνίες??? Πιθανά ονόματα: ολική ανταλλαγή (multinode gather/scatter ή all-to-all personalized ή total exchange) ( όλες οι διεργασίες εκτελούν τη δική τους διασκόρπιση ) κάθε διεργασία έχει διαφορετικό μήνυμα για κάθε άλλη Στο MPI λέγεται alltoall #6
7 Παράδειγμα Σε πολλές εφαρμογές απαιτείται η λύση ενός συστήματος εξισώσεων και η συνήθης τακτική για τη λύση του είναι οι λεγόμενες «επαναληπτικές μέθοδοι». Αυτέ πολύ απλά προσεγγίζουν σταδιακά τη λύση x(), μέσω επαναλήψεων της μορφής: x(t+1) = A x(t) ξεκινώντας από μία αρχική εκτίμηση x(0). To x() είναι διάνυσμα με Ν στοιχεία και το Α είναι πίνακας ΝxΝ. Άρα σε κάθε επανάληψη απαιτείται πολλαπλασιασμός πίνακα επί διάνυσμα. #7
8 Παράδειγμα, συνέχεια Μία στρατηγική αποθήκευσης των Α και x(): Κατά γραμμές ο Α (π.χ. η διεργασία i έχει τη γραμμή i του Α) Κάθε διεργασία έχει όλο το τρέχον x() Αρχικά, κάποια διεργασία πρέπει: να στείλει σε όλες τις άλλες την αρχική εκτίμηση (το x(0)). (εκπομπή) να στείλει στην διεργασία i την i-οστή γραμμή του Α (για κάθε i). (διασκόρπιση) #8
9 Παράδειγμα, συνέχεια Σε κάθε επανάληψη: Η διεργασία i πολλαπλασιάζει τη γραμμή του A που έχει με το x(t) που επίσης έχει και υπολογίζει το i-οστό στοιχείο του νέου x, δηλαδή το x i (t+1). Θα πρέπει να σχηματίσει ολόκληρο το x(t), προφανώς από τα στοιχεία που υπολόγισαν οι άλλες διεργασίες (πολλαπλή εκπομπή ή allgather) Αν απαιτηθεί αναστροφή του Α (οι γραμμές να γίνουν στήλες και οι στήλες γραμμές), τότε η διεργασία i θα έχει μόνο το στοιχείο A ii. Το Α 0i το έχει η διεργασία 0, το Α 1i το έχει η διεργασία 1, το Α ki το έχει η διεργασία k. Πρέπει να συλλέξει αυτά τα στοιχεία από όλες τις άλλες διεργασίες Το ίδιο κάνουν, όμως, όλες, για τις δικές τους στήλες (ολική ανταλλαγή ή alltoall) #9
10 Άλλες συλλογικές επικοινωνίες/υπολογισμοί Λειτουργίες υποβίβασης (reduction operations) Από ένα μέγεθος μεγαλύτερης διάστασης (π.χ. διάνυσμα) «υποβιβαζόμαστε» σε μέγεθος μικρότερης διάστασης (π.χ. βαθμωτό) global sum, product, εύρεση max, min κλπ Κλήσης φραγής (barrier calls) Μερική εμπομπή (multicast) Εκπομπή μόνο σε μερικές διεργασίες, όχι σε όλες Είναι πιο «δύσκολη» επικοινωνία από την ολική εκπομπή (!) και άλλες... #10
11 Κλήσεις Την ίδια κλήση κάνουν όλες οι διεργασίες 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 #11
12 Κλήσεις, συνέχεια 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() μόνο που όλες οι διεργασίες παίρνουν το αποτέλεσμα και άλλες #12
13 Παράδειγμα: «κυριλέ» ( ) υπολογισμός του π #include <mpi.h> /* Μετάφραση με mpicc */ main(int argc, char *argv[]) { float W, result = 0.0, pi; 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_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); } } /* Συλλογή αποτελεσμάτων */ MPI_Reduce(&result, if (myid == 0) { &pi, 1, MPI_FLOAT, for (i = 1; MPI_SUM, i < nproc; 0, MPI_COMM_WORLD); i++) { if (myid MPI_Recv(&temp, == 0) 1, MPI_FLOAT, i, 0, printf( pi = %f\n, MPI_COMM_WORLD, result); &status); result += temp; MPI_Finalize(); } printf( pi = %f\n, result); } else MPI_Send(&temp, 1, MPI_FLOAT, 0, 0, MPI_COMM_WORLD); MPI_Finalize(); #13
14 Παράδειγμα: πίνακας επί διάνυσμα (ΙΙ) συλλογικά 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); #14
15 MPI «ασφαλείς» επικοινωνίες
16 Προβλήματα; Δύο διεργασίες ανταλλάσουν δεδομένα: 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! #16
17 Ασφάλεια Αυτό; 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 #17
18 Συναρτήσεις που παρέχουν ασφάλεια Όταν κάθε διεργασία στέλνει & λαμβάνει, το 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); #18
19 MPI Μονόπλευρες επικοινωνίες (one-sided communications)
20 One-sided communications Μέχρι τώρα αμφίπλευρες επικοινωνίες (εμπλέκεται και ο αποστολέας send και ο παραλήπτης receive). Στις μονόπλευρες εμπλέκεται μόνο ο ένας από τους δύο One-sided communications ή Remote memory access (RMA) MPI_Put() MPI_Get() Λεπτομέρειες; Homework! #20
21 MPI προχωρημένες λειτουργίες
22 Communicators Αν θέλω να ορίσω γκρουπ διεργασιών τότε δημιουργώ έναν communicator και οι επικοινωνίες που γίνονται με αυτόν αφορούν μόνο διεργασίες του γκρουπ. O MPI_COMM_WORLD αφορά το γκρουπ ΟΛΩΝ των διεργασιών που υπάρχουν. Σε όλες τις κλήσεις που είδαμε, μπορεί κανείς να αντικαταστήσει το MPI_COMM_WORLD με όποιον άλλον δικόν του έχει δημιουργήσει τα send/receive με άλλον communicator απευθύνονται μόνο στις διεργασίες του αντίστοιχου γκρουπ. Σε κάθε γκρουπ/communicator, οι διεργασίες έχουν ακολουθιακό rank. Κάθε διεργασία ανήκει στο MPI_COMM_WORLD και πιθανώς σε πολλά άλλα communicators Αν μία διεργασία ανήκει σε έναν communicator comm, τότε δεν σημαίνει ότι τα myid1 και myid2 είναι οπωσδήποτε ίδια: MPI_Comm_rank(MPI_COMM_WORLD, &myid1); MPI_Comm_rank(comm, &myid2); #22
23 Άλλη μία ανάγκη Εκτός από την μεριά του χρήστη, υπάρχει και άλλη μία ανάγκη για communicators: Το MPI εγγυάται ότι τα μηνύματα φτάνουν στην διεργασία-παραλήπτη, με τη σειρά που στάλθηκαν από τη διεργασία-αποστολέα. Και οι δύο διεργασίες χρησιμοποιούν μία βιβλιοθήκη η οποία στέλνει/λαμβάνει τα δικά της μηνύματα. Φανταστείτε ότι ο αποστολές κάνει μία κλήση σε αυτήν μετά το send ενώ ο παραλήπτης κάτι χρειάστηκε από τη βιβλιοθήκη πριν το receive. Τι θα γίνει; #23
24 βιβλιοθήκες που δεν ελέγχονται από τον χρήστη Δεν μπορείς να βασιστείς στα tags διότι δεν γνωρίζεις τι tags χρησιμοποιεί η βιβλιοθήκη. Επίσης δεν μπορείς να βασιστείς στα ranks μιας και οι διεργασίες καλούν συναρτήσεις της βιβλιοθήκης (η βιβλιοθήκη δεν είναι ξεχωριστή διεργασία είναι απλά ένα σύνολο ρουτινών) Λύση: communicators Οι βιβλιοθήκες, για αυτούς τους λόγους, εσωτερικά δημιουργούν «ιδιωτικό» communicator και όλες οι αποστολές/λήψεις γίνονται μέσω αυτού Έτσι δεν υπάρχει περίπτωση να «μπερδευτούν» με τα μηνύματα των διεργασιών του χρήστη. #24
25 Φτιάχνοντας communicators Νέος communicator φτιάχνεται (αυτόματα) όταν δημιουργούνται τοπολογίες (παρακάτω ) Ένας άλλος τρόπος είναι να «χωρίσεις» τις διεργασίες από έναν υπάρχοντα communicator: MPI_Comm_split(oldcomm, int color, int key, &newcomm); Π.χ. MPI_Comm_split(MPI_COMM_WORLD, int color, int key, &newcomm); Είναι συλλογική διαδικασία. Πρέπει ΟΛΕΣ οι διεργασίες του oldcomm να την καλέσουν! Όσες διεργασίες δώσουν το ίδιο color θα είναι στον ίδιο νέο communicator Άρα φτιάχνονται τόσοι νέοι communicators όσα και τα διαφορετικά colors Το rank κάθε διεργασίας στον νέο communicator που θα ανήκει καθορίζεται από το key. Σε ισοπαλία, χρησιμοποιείται η κατάταξη στον παλιό communicator #25
26 Τοπολογίες διεργασιών Κανονικά οι διεργασίες αριθμούνται ακολουθιακά (γραμμικά) 0, 1, Ν-1. Πολλές φορές θέλουμε μία διαφορετική αρίθμηση Στο MPI μπορούμε να ορίσουμε εικονικές «τοπολογίες» Η κάθε διεργασία έχει τη δική της αρίθμηση (ετικέτα) στην κάθε τοπολογία Τοπολογίες καρτεσιανού γινομένου μόνο (πλέγματα και tori) Η νέα τοπολογία ΔΕΝ είναι πλέον αυτή του MPI_COMM_WORLD! Ορίζεται ένας νέος communicator για την τοπολογία αυτή Επίσης, μπορεί το MPI να τις χρησιμοποιήσει ώστε να κάνει καλύτερο mapping με την τοπολογία του δικτύου (ο χρήστης δεν έχει έλεγχο πάνω σε αυτή την αντιστοίχιση) #26
27 Δημιουργία καρτεσιανών τοπολογιών Δημιουργούμε καρτεσιανές τοπολογίες (πλέγματα) με: MPI_Cart_create(MPI_Comm comm_old, int ndims, int *dims, int *periods, int reorder, MPI_Comm *comm_cart) Οι διεργασίες που ανήκουν στον παλιό communicator δημιουργούν ένα νέο communicator με τοπολογία πλέγματος ndims διαστάσεων. Αν το periods[i] είναι 1, τότε η διάσταση i θα είναι δακτύλιος (κύκλος) Αν το reorder είναι 0, οι διεργασίες θα κρατήσουν το ίδιο (ακολουθιακό) rank που είχαν και στον παλιό communicator. Κάθε διεργασία θα έχει ως «ταυτότητα» μία ndims-άδα, δηλαδή ένα διάνυσμα ndims στοιχείων («συντεταγμένες» σε κάθε διάσταση). έχοντας φυσικά και το κλασικό ακολουθιακό ranks της #27
28 Τοπολογίες (0,0) (0,1) (0,2) (0,3) (0,0) (0,1) (0,2) (0,3) (1,0) (1,1) (1,2) (1,3) (1,0) (1,1) (1,2) (1,3) (2,0) (2,1) (2,2) (2,3) (2,0) (2,1) (2,2) (2,3) (3,0) (3,1) (3,2) (3,3) (με μπλε τα ranks) ndims =2 dims[0]=4, dims[1]=4 periods[0]=1, periods[1]=1 ndims =2 dims[0]=3, dims[1]=4 periods[0]=0, periods[1]=0 #28
29 Χρησιμοποιώντας καρτεσιανές τοπολογίες Μιας και τα send/receive εξακολουθούν να απαιτούν ranks ως ορίσματα, το MPI παρέχει ρουτίνες μετατροπής μεταξύ ranks και πολυδιάστατων συντεταγμένων: MPI_Cart_coords(MPI_Comm cartcomm, int rank, int ndims, int *coords) MPI_Cart_rank(MPI_Comm cartcomm, int *coords, int *rank) για «περιοδικές» διαστάσεις, αν η συντεταγμένη είναι εκτός ορίων, υπολογίζεται modulo στο μέγεθος της διάστασης Από τις πιο συνηθισμένες ενέργειες σε καρτεσιανές τοπολογίες είναι η κυκλική μεταφορά δεδομένων (shift). Κάθε διεργασία μπορεί να υπολογίσει άμεσα τον προορισμό και την πηγή που την αφορούν με: MPI_Cart_shift(MPI_Comm cartcomm, int dir, int s_step, int *rank_source, int *rank_dest) Το direction είναι η διάσταση στην οποία θα γίνει το shift (αρίθμηση από το 0). Το s_step είναι το μέγεθος (# θέσεων) του shift (θετικό ή αρνητικό). Τα αποτελέσματα μπορούν να χρησιμοποιηθούν άμεσα σε MPI_Sendrecv(). #29
30 Εφαρμογή: ο αλγόριθμος του Cannon για πολλαπλασιασμό πινάκων
31 Πολλαπλασιασμός Α*v Αρχική τοποθέτηση στοιχείων (πλέγμα/torus) Α 00 V0 A 01 A 02 A 03 A 10 A 11 A 12 A 13 V 1 A 20 A 21 A 22 A 23 V 2 A 30 A 31 A 32 A 33 V 3 #31
32 Υπολογισμός 1 ου στοιχείου του A*v Α 00 V 0 A 01 A 02 A 03 Α 01 V 1 A 02 A 03 A 00 V 1 V 2 (α) (β) V 2 V 3 V 3 V 0 Α 02 V 2 A 03 A 00 A 01 Α 03 V 3 A 00 A 01 A 02 (γ) V 3 (δ) V 0 V 0 V 1 V 1 V 2 #32
33 Τι λείπει για να υπολογιστεί το 2 ο στοιχείο; Να γίνει το αντίστοιχο με την γραμμή 1 του Α Όμως πρέπει να ξεκινήσουμε από το A[1][1]*v[1], μιας και το v[1] είναι αυτό που υπάρχει στην γραμμή 1. Πώς; Απάντηση: *πριν* ξεκινήσει ο αλγόριθμος, κάνουμε τη γραμμή 1 SHIFT (rotate) 1 θέση προς τα αριστερά. Από εκεί και ύστερα, ο υπολογισμός του v[1] γίνεται ταυτόχρονα με αυτόν του v[0]! Γενικά: Φάση 1: προετοιμασία Η γραμμή i ολισθάνει i θέσεις αριστερά (ώστε το Α[i][i] να βρεθεί μαζί με το v[i]) Φάση 2: υπολογισμός LOOP (N φορές): 1. Σε κάθε επεξεργαστή (i, 0) υπολογίζεται το γινόμενο του υπάρχοντος στοιχείου του πίνακα Α με το υπάρχον στοιχείο του διανύσματος v. 2. Ολίσθηση του διανύσματος v προς τα πάνω 3. Ολίσθηση κάθε γραμμής του Α προς τα αριστερά #33
34 A*v αρχικές τοποθετήσεις & 1 ο βήμα Α 00 V 0 A 01 A 02 A 03 Α 01 V 1 A 02 A 03 A 00 Α 11 V 1 Α 12 Α 13 Α 10 Α 12 V 2 Α 13 Α 10 Α 11 Α 22 V 2 Α 23 Α 20 Α 21 Α 23 V 3 Α 20 Α 21 Α 22 Α 33 Α 30 Α 31 Α 32 Α 30 Α 31 Α 32 Α 33 V 3 V 0 #34
35 Γενίκευση σε Α*Β (αλγόριθμος Cannon) Αρχικά, κάθε γραμμή i του πίνακα Α ολισθαίνει κατά i θέσεις αριστερά και Α 00 Β 00 A 01 Β 11 A 02 B22 A 03 B33 κάθε στήλη j του πίνακα Β ολισθαίνει κατά j θέσεις προς τα πάνω Στη συνέχεια γίνονται n επαναλήψεις, όπου σε κάθε επανάληψη, κάθε επεξεργαστής πολλαπλασιάζει τα δύο στοιχεία που διαθέτει, αθροίζει και Α 11 Β10 Α 22 Β20 Α 12 Β21 Α 23 Β31 Α 13 B32 Α 20 B02 Α 10 B03 Α 21 B13 κάθε γραμμή (στήλη) ολισθαίνει προς τα αριστερά (πάνω). Α 33 Β30 Α 30 Β01 Α 31 B12 Α 32 B23 Τελικά στον επεξεργαστή (i, j) θα βρεθεί το στοιχείο C ij του αποτελέσματος. #35
36 Υλοποίηση σε MPI Τοπολογία πλέγματος 2D απαραίτητη για τον εύκολο χειρισμό Χρησιμοποιεί blocks του πίνακα (όχι απλά στοιχεία). Δηλαδή η κάθε διεργασία σε κάθε βήμα δεν πολλαπλασιάζει ένα στοιχείο του Α με ένα στοιχείο του Β αλλά έναν υποπίνακα του Α με έναν υποπίνακα του Β (δεν αλλάζει σε κάτι ο αλγόριθμος) Στην επόμενη σελίδα Τα a και b είναι οι υποπίνακες που διαθέτει αρχικά κάθε διεργασία #36
37 MatrixMatrixMultiply(int n, double *a, double *b, double *c, MPI_Comm comm) { int i, nlocal; int npes, dims[2], periods[2]; int myrank, my2drank, mycoords[2]; int uprank, downrank, leftrank, rightrank, coords[2]; int shiftsource, shiftdest; MPI_Status status; MPI_Comm comm_2d; /* Get the communicator related information */ MPI_Comm_size(comm, &npes); MPI_Comm_rank(comm, &myrank); /* Set up the Cartesian topology */ dims[0] = dims[1] = sqrt(npes); /* Set the periods for wraparound connections */ periods[0] = periods[1] = 1; /* Create the Cartesian topology, with rank reordering */ MPI_Cart_create(comm, 2, dims, periods, 1, &comm_2d); /* Get the rank and coordinates in he new topology */ MPI_Comm_rank(comm_2d, &my2drank); MPI_Cart_coords(comm_2d, my2drank, 2, mycoords); /* Compute ranks of the up and left shifts */ MPI_Cart_shift(comm_2d, 0, -1, &rightrank, &leftrank); MPI_Cart_shift(comm_2d, 1, -1, &downrank, &uprank); /* Determine the dimension of the local matrix block */ nlocal = n/dims[0]; } /* Perform the initial matrix alignment B */ MPI_Cart_shift(comm_2d, 0, -mycoords[0], &shiftsource, &shiftdest); MPI_Sendrecv_replace(a, nlocal*nlocal, MPI_DOUBLE, shiftdest, 1, shiftsource, 1, comm_2d, &status); MPI_Cart_shift(comm_2d, 1, -mycoords[1], &shiftsource, &shiftdest); MPI_Sendrecv_replace(b, nlocal*nlocal, MPI_DOUBLE, shiftdest, 1, shiftsource, 1, comm_2d, &status); /* Get into the main computation loop */ for (i=0; i<dims[0]; i++) { MatrixMultiply(nlocal, a, b, c); /*c=c+a*b*/ } /* Shift matrix a left by one */ MPI_Sendrecv_replace(a, nlocal*nlocal, MPI_DOUBLE, leftrank, 1, rightrank, 1, comm_2d, &status); /* Shift matrix b up by one */ MPI_Sendrecv_replace(b, nlocal*nlocal, MPI_DOUBLE, uprank, 1, downrank, 1, comm_2d, &status); /* Restore the original distribution of a and b */ MPI_Cart_shift(comm_2d, 0, +mycoords[0], &shiftsource, &shiftdest); MPI_Sendrecv_replace(a, nlocal*nlocal, MPI_DOUBLE, shiftdest, 1, shiftsource, 1, comm_2d, &status); MPI_Cart_shift(comm_2d, 1, +mycoords[1], &shiftsource, &shiftdest); MPI_Sendrecv_replace(b, nlocal*nlocal, MPI_DOUBLE, shiftdest, 1, shiftsource, 1, comm_2d, &status); MPI_Comm_free(&comm_2d); /* Free up communicator */ MatrixMultiply(int n, double *a, double *b, double *c) { /* matrix-matrix multiplication c = a*b */ int i, j, k; for (i=0; i<n; i++) for (j=0; j<n; j++) for (k=0; k<n; k++) c[i*n+j] += a[i*n+k]*b[k*n+j]; }
38 Μη εμποδιστικές (non-blocking) επικοινωνίες
39 Λήψη Μέχρι τώρα υποθέσαμε ότι μια διεργασία που κάνει 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); #39
40 Αποστολή Υπάρχει και εδώ η έννοια της εμποδιστικότητας αλλά όχι τόσο εμφανώς (δεν μιλάμε για συγχρονισμένες επικοινωνίες τύπου 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); #40
41 Γιατί μη εμποδιστικές επικοινωνίες; Κυρίως για βελτίωση επιδόσεων επικάλυψη υπολογισμών και επικοινωνιών εκκίνηση όσο πιο νωρίς γίνεται ξεκίνα το 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! #41
42 Ο αλγόριθμος του Cannon με μη εμποδιστικές επικοινωνίες Θέλει διπλά πινακάκια a και b ώστε σε άλλον buffer να παραλαμβάνει και από άλλον να στέλνει MatrixMatrixMultiply(int n, double *a, double *b, double *c, MPI_Comm comm) {... MPI_Request reqs[4]; double *a_buffers[2], *b_buffers[2]; /* Get the communicator related information */ /* Set up the Cartesian topology */ /* Set the periods for wraparound connections */ /* Create the Cartesian topology, with rank reordering */ /* Get the rank and coordinates in he new topology */ /* Compute ranks of the up and left shifts */ /* Determine the dimension of the local matrix block */ /* Perform the initial matrix alignment B */... /* Setup the a_buffers and b_buffers arrays */ a_buffers[0] = a; a_buffers[1] = malloc(nlocal*nlocal*sizeof(double)); b_buffers[0] = b; b_buffers[1] = malloc(nlocal*nlocal*sizeof(double)); /* Get into the main computation loop */ for (i=0; i<dims[0]; i++) { /* Shift up & left post early */ MPI_Isend(a_buffers[i%2], nlocal*nlocal, MPI_DOUBLE, leftrank, 1, comm_2d, &reqs[0]); MPI_Isend(b_buffers[i%2], nlocal*nlocal, MPI_DOUBLE, uprank, 1, comm_2d, &reqs[1]); MPI_Irecv(a_buffers[(i+1)%2], nlocal*nlocal, MPI_DOUBLE, rightrank, 1, comm_2d, &reqs[2]); MPI_Irecv(b_buffers[(i+1)%2], nlocal*nlocal, MPI_DOUBLE, downrank, 1, comm_2d, &reqs[3]); } /* c = c + a*b * / MatrixMultiply(nlocal, a_buffers[i%2], b_buffers[i%2], c); /* Wait for completion before continuing */ for (j=0; j<4; j++) MPI_Wait(&reqs[j], &status); } /* Restore the original distribution of a and b */... #42
43 Distributed shared memory (DSM) ή Shared Virtual Memory (SVM)
44 Γιατί; Συστήματα κατανεμημένης μνήμης: Αρχιτεκτονική: κλιμακώσιμη Προγραμματισμός (MPI): αρκετά δύσκολος αλλά και δυνατότητα επιδόσεων Συστήματα κοινής μνήμης (SMPs): Αρχιτεκτονική: δύσκολα κλιμακώσιμη Προγραμματισμός: σχετικά εύκολος Το ιδεώδες: Κλιμακώσιμες αρχιτεκτονικές που να προγραμματίζονται εύκολα (αλλά μην ξεχνάμε και τις επιδόσεις) Μετά το σειριακό, το πιο εύκολο είναι ο προγραμματισμός κοινής μνήμης (π.χ. OpenMP) Λύση: «εξομοίωση» κοινής μνήμης πάνω από το σύνολο των ιδιωτικών μνημών με hardware με software #44
45 Hardware κόμβος συστήματος ΜΝΗΜΗ (ΤΟΠΙΚΗ) CPU ROUTER #45
46 Hardware ελεγκτής DSM ΕΛΕΓΚΤΗΣ DSM CPU ΜΝΗΜΗ (ΤΟΠΙΚΗ) ROUTER Η CPU προσπελαύνει όλο τον χώρο διευθύνσεων ενιαία Η τοπική μνήμη έχει μόνο ένα μικρό κομμάτι του χώρου Ο ελεγκτής DSM ελέγχει κάθε διεύθυνση που προσπελαύνει η CPU (1) Αν είναι για την τοπική μνήμη δεν κάνει τίποτε (2) Αν όχι, αναλαμβάνει την επικοινωνία με τον κόμβο που την χειρίζεται, στέλνοντας κατάλληλο μήνυμα. Μόλις έρθει η απάντηση, δίνει δεδομένα στη CPU σαν να ήταν αποθηκευμένο τοπικά Το μόνο που καταλαβαίνει η CPU είναι η διαφορά στην ταχύτητα προσπέλασης κάποιων δεδομένων (τα απομακρυσμένα κάνουν πολύ παραπάνω χρόνο να έρθουν) NUMA (non-uniform memory access) Χρήση cache στον ελεγκτή για τα απομακρυσμένα δεδομένα ccnuma (cache coherent NUMA) #46
47 Software DSM Σε clusters? Δεν υπάρχει δυνατότητα επέμβασης στο hardware Μόνο λύσεις software Κλασική υλοποίηση: page-based sdsm Χωρίς παρεμβάσεις στο Λ.Σ. (είναι μία απλή εφαρμογή σε επίπεδο χρήστη) Όλοι οι συμμετέχοντες κόμβοι «δεσμεύουν» έναν χώρο μνήμης (πολλές σελίδες) που θα τον έχουν ως κοινόχρηστο Τα κοινόχρηστα δεδομένα θα τοποθετούνται σε αυτό τον χώρο Καθένας «μαρκάρει» τις σελίδες ως «απαγορευμένης προσπέλασης» και ορίζει έναν χειριστή σημάτων για το σήμα SIGSEGV Η εφαρμογή ξεκινά και οι προσπελάσεις στον κοινόχρηστο χώρο οδηγούν σε σφάλματα μνήμης που εκκινούν τον χειριστή για το SIGSEGV. O χειριστής: επικοινωνεί με τον κόμβο που διαθέτει το δεδομένο, φέρνοντας ολόκληρη τη σελίδα που το περιέχει μετά τη λήψη και την τοποθέτηση στη σωστή θέση, αλλάζει τα δικαιώματα της σελίδας (π.χ. επιτρέπεται πλέον η ανάγνωση) τελειώνει, επανεκτελώντας την εντολή που προκάλεσε τη διακοπή #47
48 Ιδέες για υλοποιήσεις page-based sdsm Μία σελίδα p θα υπάρχει μόνο σε έναν κόμβο Κεντρικός server που γνωρίζει ποιος κόμβος έχει ποια σελίδα Απορρίπτεται μεγάλη κίνηση στον server Κατανεμημένα & προκαθορισμένα π.χ. ο κόμβος p % N είναι υπεύθυνος για γνωρίζει που βρίσκεται η σελίδα p Καλύτερο, μιας και κάθε κόμβος μπορεί να ρωτήσει κατευθείαν αυτόν που πρέπει Αν υπάρχουν πολλοί readers, σε κάθε προσπέλαση «σελίδες πάνε κι έρχονται» Λύση: πολλαπλά αντίγραφα σελίδων (page replication) Απλούστερη υλοποίηση: multi-readers Ή 1single-writer Αν εμφανιστεί writer, τότε όλα τα read-only copies ακυρώνονται Στο write υπάρχει μεγάλο overhead Πολύ καλό αν υπάρχουν πολλά reads και ελάχιστα writes Καλύτερη (σε γενικές γραμμές) υλοποίηση: multi-readers ΚΑΙ multi-writers Πιο δύσκολος ο χειρισμός των πολλαπλών εγγραφέων Conherency & consistency problems!!! #48
Υ07 Παράλληλα Συστήματα /5/2016 Προγραμματισμός με μεταβίβαση μηνυμάτων
Υ07 Παράλληλα Συστήματα 2015-16 10/5/2016 Προγραμματισμός με μεταβίβαση μηνυμάτων «Κατηγορίες» προγραμματισμού κατανεμημένης μνήμης Sockets Απλά το αναφέρουμε Message passing (μεταβίβαση μηνυμάτων) με
Διαβάστε περισσότεραΚεφάλαιο VIΙΙ Β. Δημακόπουλος
Μεταβίβαση μηνυμάτων Κεφάλαιο VIΙΙ Β. Δημακόπουλος Προγραμματίζοντας με μεταβίβαση μηνυμάτων Δεν υπάρχουν κοινές μεταβλητές διεργασίες και μηνύματα Θεωρείται το πιο δύσκολο Μπορεί, όμως, να γίνει πιο αποδοτικό
Διαβάστε περισσότεραΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Μεταβίβαση μηνυμάτων. Κεφάλαιο 5 (νέο βιβλίο) Κεφάλαιο 8 (παλιές σημειώσεις)
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Μεταβίβαση μηνυμάτων Κεφάλαιο 5 (νέο βιβλίο) Κεφάλαιο 8 (παλιές σημειώσεις) Προγραμματίζοντας με μεταβίβαση μηνυμάτων Δεν υπάρχουν κοινόχρηστες μεταβλητές διεργασίες και μηνύματα Θεωρείται
Διαβάστε περισσότεραΛ10 Παράλληλος & Κατανεμημένος Προγραμματισμός Μάθημα 8 ο & 9 ο 1 & 8/12/2009
Λ10 Παράλληλος & Κατανεμημένος Προγραμματισμός 2009 Μάθημα 8 ο & 9 ο 1 & 8/12/2009 Προγραμματισμός με MPI Β. Δημακόπουλος Τα βασικά Βαςικζσ δομζσ Διεργαςίεσ Η πιο κοινι περίπτωςθ είναι να δθμιουργοφνται
Διαβάστε περισσότερα30/4/2012 Συστήματα κατανεμημένης μνήμης και ο προγραμματισμός τους (Ι) Β. Δημακόπουλος
Υ07 Παράλληλα Συστήματα 2011-12 30/4/2012 Συστήματα κατανεμημένης μνήμης και ο προγραμματισμός τους (Ι) Β. Δημακόπουλος multicomputers, MPPs, clusters Πολυεπεξεργαστές κατανεμημένης μνήμης Ανεξάρτητοι
Διαβάστε περισσότεραΠρογραμματισμός με Μεταβίβαση Μηνυμάτων
5 Προγραμματισμός με Μεταβίβαση Μηνυμάτων Σε αυτό το κεφάλαιο του βιβλίου θα ασχοληθούμε με το προγραμματιστικό μοντέλο μεταβίβασης μηνυμάτων (message passing model), κατά πολλούς το πιο ευρέως χρησιμοποιούμενο
Διαβάστε περισσότεραΣυστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας
Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας Ενότητα 2: OpenMPI Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής
Διαβάστε περισσότεραΣυστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας
Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας Ενότητα 4: MPI_ANY_TAG,MPI_ANY_SOURCE,MPI_Bcast, MPI_Wtime, MPI_Wait, MPI_Test, MPI_Scatter Δρ. Μηνάς Δασυγένης
Διαβάστε περισσότεραΚατανεμημένος και Παράλληλος Προγραμματισμός MPI. MPI Απλές εντολές 03/13/2016. Οδηγίες αποστολής / παραλαβής μηνυμάτων, Υπολογισμός του π (
Κατανεμημένος και Παράλληλος Προγραμματισμός Ηλίας Κ. Σάββας Αναπληρωτής Καθηγητής Τμήμα Μηχανικών Πληροφορικής ΤΕ, ΤΕΙ Θεσσαλίας Email: savvas@teilar.gr MPI Οδηγίες αποστολής / παραλαβής μηνυμάτων, Υπολογισμός
Διαβάστε περισσότεραύο μηχανισμοί απαιτούνται: 1. Μία μέθοδος για τη δημιουργία διεργασιών
Υπολογισμός με βάση το πέρασμα μηνυμάτων Προγραμματισμός με πέρασμα μηνυμάτων ύο μηχανισμοί απαιτούνται: 1. Μία μέθοδος για τη δημιουργία διεργασιών που θα εκτελούνται σε διαφορετικούς υπολογιστές. 2.
Διαβάστε περισσότεραΣυστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας
Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας Ενότητα 2: OpenMPI Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής
Διαβάστε περισσότεραΑρχιτεκτονική κοινής μνήμης
Αρχιτεκτονική κοινής μνήμης Οι επεξεργαστές έχουν κοινή μνήμη Κάθε επεξεργαστής διαθέτει τοπική ιεραρχία κρυφών μνημών Συνήθως η διασύνδεση γίνεται μέσω διαδρόμου μνήμης (memory bus) Αλλά και πιο εξελιγμένα
Διαβάστε περισσότεραΣυστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας
Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας Ενότητα 5: MPI_Reduce Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής
Διαβάστε περισσότεραΚατανεμημένος και Παράλληλος Προγραμματισμός MPI. Γρήγορος οδηγός αναφοράς 1/4/2017
Κατανεμημένος και Παράλληλος Προγραμματισμός Ηλίας Κ. Σάββας Καθηγητής Τμήμα Μηχανικών Πληροφορικής ΤΕ, ΤΕΙ Θεσσαλίας Email: savvas@teilar.gr MPI Διαμοίραση (MPI_Scatter) και συλλογή δεδομένων (MPI_Gather)
Διαβάστε περισσότεραΣυστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας
Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας Ενότητα 4: MPI_ANY_TAG,MPI_ANY_SOURCE,MPI_Bcast, MPI_Wtime, MPI_Wait, MPI_Test, MPI_Scatter Δρ. Μηνάς Δασυγένης
Διαβάστε περισσότεραΣυστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας
Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:05 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων
Διαβάστε περισσότεραΣυστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας
Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας Ενότητα 5: MPI_Reduce Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής
Διαβάστε περισσότεραΣυστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας
Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:04 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων
Διαβάστε περισσότεραΣυστήµατα Παράλληλης Επεξεργασίας. Message Passing Interface (MPI)
Message Passing Interface (MPI) Αρχιτεκτονική κοινής µνήµης Οι επεξεργαστές έχουν κοινή µνήµη Κάθε επεξεργαστής διαθέτει τοπική ιεραρχία κρυφών µνηµών Συνήθως η διασύνδεση γίνεται µέσω διαδρόµου µνήµης
Διαβάστε περισσότεραΕισαγωγή. 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 Κλήση
Διαβάστε περισσότεραΣυστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας
Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας Ενότητα 3: MPI_Get_count, non blocking send/recv, εμφάνιση και αποφυγή αδιεξόδων Δρ. Μηνάς Δασυγένης mdasyg@ieee.org
Διαβάστε περισσότεραMessage Passing Interface (MPI)
Message Passing Interface (MPI) Συστήµατα Παράλληλης Επεξεργασίας Εργαστήριο Υπολογιστικών Συστηµάτων Αθήνα, Νοέµβριος 2003 24/11/2003 Message Passing Interface (MPI) 1 Παράλληλες αρχιτεκτονικές Αρχιτεκτονική
Διαβάστε περισσότεραΤοπολογίεσ. Κώςτασ Διαμαντάρασ Τμιμα Πλθροφορικισ ΤΕΙ Θεςςαλονίκθσ
Τοπολογίεσ Κώςτασ Διαμαντάρασ Τμιμα Πλθροφορικισ ΤΕΙ Θεςςαλονίκθσ Τοπολογίεσ ςτο MPI Γιατί να ορίςω τοπολογία; Βολεφει ςε ςυγκεκριμζνουσ αλγορίκμουσ (πχ. Επεξεργαςία εικόνασ ι ςιματοσ) Ποιοί είναι οι γείτονζσ
Διαβάστε περισσότεραΥπολογισμοί Μεταβίβασης Μηνυμάτων
Υπολογισμοί Μεταβίβασης Μηνυμάτων Κ.Γ. Μαργαρίτης προσαρμογή από το μάθημα του Barry Wilkinson ITCS 4145/5145 2006 Cluster Computing Univ. of North Carolina at Charlotte 2.1 2.2 Προγραμματισμός μεταβίβασης
Διαβάστε περισσότεραMPI: Message Passing Interface
Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων MPI: Message Passing Interface 9 ο Εξάμηνο Αρχιτεκτονική κοινής μνήμης Οι επεξεργαστές
Διαβάστε περισσότεραMessage Passing Interface (MPI)
Message Passing Interface (MPI) Συστήµατα Παράλληλης Επεξεργασίας Εργαστήριο Υπολογιστικών Συστηµάτων Αθήνα, εκέµβριος 2002 Τι είναι το MPI; Είναι πρότυπο, όχι συγκεκριµένη υλοποίηση Βιβλιοθήκη ανταλλαγής
Διαβάστε περισσότεραMονόπλευρες επικοινωνίες στο MPI-2
Mονόπλευρες επικοινωνίες στο MPI-2 Γιώργος Καππές ΑΜ: 235 Περίληψη Οι μονόπλευρες επικοινωνίες που παρέχει το MPI έχουν ως στόχο να παρέχουν τη ευκολία της άμεσης προσπέλασης απομακρυσμένων μνημών, καθώς
Διαβάστε περισσότεραΕΚΔΟΣΗ 1.0 ΟΚΤΩΒΡΙΟΣ, 2017 ΕΙΣΑΓΩΓΗ ΣΤΑ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΕΙΣΑΓΩΓΗ ΣΤO MESSAGE PASSING INTERFACE - MPI ΕΠΙΜΕΛΕΙΑ: Β. ΤΣΑΚΑΝΙΚΑΣ, Β.
ΕΚΔΟΣΗ 1.0 ΟΚΤΩΒΡΙΟΣ, 2017 ΕΙΣΑΓΩΓΗ ΣΤΑ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΕΙΣΑΓΩΓΗ ΣΤO MESSAGE PASSING INTERFACE - MPI ΕΠΙΜΕΛΕΙΑ: Β. ΤΣΑΚΑΝΙΚΑΣ, Β. ΤΑΜΠΑΚΑΣ CONTENTS ΕΙΣΑΓΩΓΗ ΣΤΑ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ... 2 Εισαγωγή...
Διαβάστε περισσότεραΛειτουργικά Συστήματα (ΗΥ321)
Λειτουργικά Συστήματα (ΗΥ321) Διάλεξη 17: Χειρισμός Εισόδου - Εξόδου Συστήματα Εισόδου / Εξόδου: Το Υλικό Ε/Ε Μεγάλη ποικιλία συσκευών Ε/Ε Και μεγαλώνει Συνηθισμένες έννοιες: Πόρτα Δίαυλος Κοινό μέσο πρόσβασης
Διαβάστε περισσότεραΥπολογιστικές Μέθοδοι Ανάλυσης και Σχεδιασµού Υπολογιστικό Εργαστήριο Μάθηµα 1 Εισαγωγή στο MPI http://ecourses.chemeng.ntua.gr/courses/computational_methods Αρχιτεκτονικές Παράλληλων Υπολογιστών Shared
Διαβάστε περισσότεραMPI: Βαςικζσ Εντολζσ Επικοινωνίασ. Κώςτασ Διαμαντάρασ Τμιμα Πλθροφορικισ ΤΕΙ Θεςςαλονίκθσ 2011
MPI: Βαςικζσ Εντολζσ Επικοινωνίασ Κώςτασ Διαμαντάρασ Τμιμα Πλθροφορικισ ΤΕΙ Θεςςαλονίκθσ 2011 Εντολζσ Επικοινωνίασ ςθμείο προσ ςθμείο (point-to-point) MPI_Send, MPI_Recv MPI_Isend, MPI_Irecv 2 Κώςτασ Διαμαντάρασ
Διαβάστε περισσότεραΠρογραμματισμός Η/Υ (ΤΛ2007 )
Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2015-16
Διαβάστε περισσότεραMPI: Message Passing Interface
Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων MPI: Message Passing Interface 9ο Εξάμηνο Αρχιτεκτονική κοινής μνήμης Οι επεξεργαστές έχουν
Διαβάστε περισσότεραΕπικοινωνία. Message-Passing Interface (MPI) Βασικές Κλήσεις για Sockets. Μοντέλο Μεταβίβασης Μηνυµάτων. Μοντέλα Παράλληλου Υπολογισµού
Ε-85: Ειδικά Θέµατα Λογισµικού Προγραµµατισµός Συστηµάτων Υψηλών Επιδόσεων Χειµερινό Εξάµηνο 2009-10 Επικοινωνία Πολλάκατανεµηµένα συστήµατα υλοποιούνται πάνω από ένα απλό µοντέλο µηνυµάτων επικοινωνίας,
Διαβάστε περισσότερα2. Στοιχεία Αρχιτεκτονικής Παράλληλων Υπολογιστών... 45
ΠΕΡΙΕΧΟΜΕΝΑ Πρόλογος... 9 1. Εισαγωγή... 13 1.1 Οι Μεγάλες Σύγχρονες Επιστημονικές Προκλήσεις... 13 1.2 Εξέλιξη της Παράλληλης Επεξεργασίας Δεδομένων... 14 1.3 Οι Έννοιες της Σωλήνωσης, του Παραλληλισμού
Διαβάστε περισσότεραΕ-85: Ειδικά Θέµατα Λογισµικού
Ε-85: Ειδικά Θέµατα Λογισµικού Προγραµµατισµός Συστηµάτων Υψηλών Επιδόσεων Χειµερινό Εξάµηνο 2009-10 «Εισαγωγή στο MPI» Παναγιώτης Χατζηδούκας (Π.Δ. 407/80) E-85: Ε.Θ.Λ: Προγραµµατισµός Συστηµάτων Υψηλών
Διαβάστε περισσότεραΕπιστημονικοί Υπολογισμοί - Μέρος ΙΙΙ: Παράλληλοι Υπολογισμοί
Επιστημονικοί Υπολογισμοί - Μέρος ΙΙΙ: Παράλληλοι Υπολογισμοί Χαρμανδάρης Βαγγέλης, Τμήμα Εφαρμοσμένων Μαθηματικών Πανεπιστήμιο Κρήτης, Εαρινό Εξάμηνο 2013/14 Κεφάλαιο 6: Εφαρμογές ΙΙ Παράλληλοι Υπολογισμοί
Διαβάστε περισσότεραΕπιμερισμός δεδομένων
Επιμερισμός δεδομένων Διαίρει και βασίλευε Κ.Γ. Μαργαρίτης προσαρμογή από το μάθημα του Barry Wilkinson ITCS 4145/5145 2006Cluster Computing Univ. of North Carolina at Charlotte Επιμερισμός δεδομένων Κατανομή
Διαβάστε περισσότεραΔομημένος Προγραμματισμός (ΤΛ1006)
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής
Διαβάστε περισσότεραΕΚΔΟΣΗ 1.1 ΜΑΙΟΣ, 2018 ΕΙΣΑΓΩΓΗ ΣΤΑ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΑΛΓΟΡΙΘΜΟΣ POLLING ΚΥΜΑΤΙΚΟΣ ΑΛΓΟΡΙΘΜΟΣ ΕΠΙΜΕΛΕΙΑ: Β. ΤΣΑΚΑΝΙΚΑΣ, Β.
ΕΚΔΟΣΗ 1.1 ΜΑΙΟΣ, 2018 ΕΙΣΑΓΩΓΗ ΣΤΑ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΕΠΙΜΕΛΕΙΑ: Β. ΤΣΑΚΑΝΙΚΑΣ, Β. ΤΑΜΠΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΑ ΕΙΣΑΓΩΓΗ ΣΤΑ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ... 2 Ο αλγόριθμος Polling... 2 Ο Κυματικός Αλγόριθμος...
Διαβάστε περισσότεραΔιάλεξη 12: Διάχυση Μηνυμάτων. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι
Διάλεξη 12: Διάχυση Μηνυμάτων ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι Ορισμός Προσομοίωσης Τι θα δούμε σήμερα Προσομοίωση Υπηρεσίας Διάχυσης Μηνυμάτων Ιδιότητες Διάταξης Μηνυμάτων ΕΠΛ432: Κατανεµηµένοι Αλγόριθµοι
Διαβάστε περισσότεραΠαράλληλα και Κατανεµηµένα Συστήµατα. Εισαγωγή
Παράλληλα και Κατανεµηµένα Συστήµατα 1 Εισαγωγή Στόχος της περιγραφής που ακολουθεί, αποτελεί η παρουσίαση του περιβάλλοντος διεπαφής ανταλλαγής µηνυµάτων (message passing interface) MPI δια της χρήσεως
Διαβάστε περισσότεραΣυστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας
Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:03 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων
Διαβάστε περισσότεραΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ. Της φοιτήτριας Αριστέας Χρονοπούλου Αρ. Μητρώου: 01 / Επιβλέπων Καθηγητής Αθανάσιος Μάργαρης
ΑΛΕΞΑΝ ΡΕΙΟ Τ.Ε.Ι. ΘΕΣΣΑΛΟΝΙΚΗΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΤΟ ΜΟΝΤΕΛΟ ΜΕΤΑΒΙΒΑΣΗΣ ΜΗΝΥΜΑΤΩΝ MESSAGE PASSING INTERFACE (MPI) Της φοιτήτριας Αριστέας Χρονοπούλου Αρ.
Διαβάστε περισσότεραΔημιουργία & Τερματισμός Διεργασιών. Προγραμματισμός II 1
Δημιουργία & Τερματισμός Διεργασιών Προγραμματισμός II 1 lalis@inf.uth.gr Δημιουργία νέας διεργασίας pid_t fork() Η fork δεν έχει παραμέτρους Δημιουργεί μια νέα διεργασία που είναι ένα αντίγραφο της διεργασίας
Διαβάστε περισσότεραΕΚΔΟΣΗ 1.1 ΑΠΡΙΛΙΟΣ, 2018 ΕΙΣΑΓΩΓΗ ΣΤΑ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΤΟ ΠΡΩΤΟΚΟΛΛΟ ECHO ΕΠΙΜΕΛΕΙΑ: Β. ΤΣΑΚΑΝΙΚΑΣ, Β. ΤΑΜΠΑΚΑΣ
ΕΚΔΟΣΗ 1.1 ΑΠΡΙΛΙΟΣ, 2018 ΕΙΣΑΓΩΓΗ ΣΤΑ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΕΠΙΜΕΛΕΙΑ: Β. ΤΣΑΚΑΝΙΚΑΣ, Β. ΤΑΜΠΑΚΑΣ CONTENTS ΕΙΣΑΓΩΓΗ ΣΤΑ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ... 2 Το πρωτόκολλο ECHO... 2 Εισαγωγή... 2 Το πρωτόκολλο
Διαβάστε περισσότεραΕπιστημονικοί Υπολογισμοί - Μέρος ΙΙΙ: Παράλληλοι Υπολογισμοί
Επιστημονικοί Υπολογισμοί - Μέρος ΙΙΙ: Παράλληλοι Υπολογισμοί Χαρμανδάρης Βαγγέλης, Τμήμα Εφαρμοσμένων Μαθηματικών Πανεπιστήμιο Κρήτης, Εαρινό Εξάμηνο 2013/14 Κεφάλαιο 5: (B) Message Passing Interface
Διαβάστε περισσότεραMessage Passing Interface (MPI)
Message Passing Interface (MPI) Συστήµατα Παράλληλης Επεξεργασίας Εργαστήριο Υπολογιστικών Συστηµάτων Αθήνα, Οκτώβριος 2009 21/10/2009 Message Passing Interface (MPI) 1 Παράλληλες αρχιτεκτονικές Αρχιτεκτονική
Διαβάστε περισσότεραΕικονική Μνήμη (Virtual Μemory)
ΗΥ 431 Αρχιτεκτονική Παραλλήλων Συστημάτων Διάλεξη 16 Εικονική Μνήμη (Virtual Μemory) Νίκος Μπέλλας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ Απλό πείραμα int *data = malloc((1
Διαβάστε περισσότεραΣυστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας
Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:07 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων
Διαβάστε περισσότεραΕΚΔΟΣΗ 1.1 ΜΑΙΟΣ, 2018 ΕΙΣΑΓΩΓΗ ΣΤΑ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΕΚΛΟΓΗ ΑΡΧΗΓΟΥ ΕΠΙΜΕΛΕΙΑ: Β. ΤΣΑΚΑΝΙΚΑΣ, Β. ΤΑΜΠΑΚΑΣ
ΕΚΔΟΣΗ 1.1 ΜΑΙΟΣ, 2018 ΕΙΣΑΓΩΓΗ ΣΤΑ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΕΚΛΟΓΗ ΑΡΧΗΓΟΥ ΕΠΙΜΕΛΕΙΑ: Β. ΤΣΑΚΑΝΙΚΑΣ, Β. ΤΑΜΠΑΚΑΣ CONTENTS ΕΙΣΑΓΩΓΗ ΣΤΑ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ... 2 Εκλογή αρχηγού... 2 Εισαγωγή... 2 Ο Αλγόριθμος
Διαβάστε περισσότεραΠίνακες: μια σύντομη εισαγωγή. Πίνακες χαρακτήρων: τα "Αλφαριθμητικά"
Πίνακες: μια σύντομη εισαγωγή Πίνακες χαρακτήρων: τα "Αλφαριθμητικά" Πίνακες(Arrays): έννοιες και ορισμοί Ορισμός: Πίνακας (array) = σύνολο μεταβλητών του ιδίου τύπου (int, float, char,...) με ένα κοινό
Διαβάστε περισσότεραNon-blocking Επικοινωνίεσ και Buffering. Κώςτασ Διαμαντάρασ ΤΕΙ Θεςςαλονίκθσ 2011
Non-blocking Επικοινωνίεσ και Buffering Κώςτασ Διαμαντάρασ ΤΕΙ Θεςςαλονίκθσ 2011 Η χριςθ buffer Ροφ πάνε τα δεδομζνα μετά το send? Διεργασία 1 Διεργασία 2 A Buffer Δίκτσο Buffer B 2 Κ. Διαμαντάρας ΤΕΙ
Διαβάστε περισσότεραΕΚΔΟΣΗ 1.0 ΟΚΤΩΒΡΙΟΣ, 2017 ΕΙΣΑΓΩΓΗ ΣΤΑ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΤΟ ΠΡΩΤΟΚΟΛΛΟ TARRY ΕΠΙΜΕΛΕΙΑ: Β. ΤΣΑΚΑΝΙΚΑΣ, Β. ΤΑΜΠΑΚΑΣ
ΕΚΔΟΣΗ 1.0 ΟΚΤΩΒΡΙΟΣ, 2017 ΕΙΣΑΓΩΓΗ ΣΤΑ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΤΟ ΠΡΩΤΟΚΟΛΛΟ TARRY ΕΠΙΜΕΛΕΙΑ: Β. ΤΣΑΚΑΝΙΚΑΣ, Β. ΤΑΜΠΑΚΑΣ CONTENTS ΕΙΣΑΓΩΓΗ ΣΤΑ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ... 2 Το πρωτόκολλο TARRY... 2 Εισαγωγή...
Διαβάστε περισσότεραΠερίληψη. Υπερυπολογιστές. Υπολογιστικά προβλήµατα. TOP 500 (Ιούνιος 2007) TOP 500 (Ιούνιος 2009) Ε-85: Ειδικά Θέµατα Λογισµικού
Ε-85: Ειδικά Θέµατα Λογισµικού Προγραµµατισµός Συστηµάτων Υψηλών Επιδόσεων Χειµερινό Εξάµηνο 2009-10 «Υπολογιστικά Συστήµατα Υψηλών Επιδόσεων και Εφαρµογές» Περίληψη Υπερυπολογιστές Πολυεπεξεργαστικά συστήµατα
Διαβάστε περισσότεραΥ- 07 Παράλληλα Συστήματα Συνέπεια και συνοχή μνήμης
Υ- 07 Παράλληλα Συστήματα Συνέπεια και συνοχή μνήμης Αρης Ευθυμίου Λειτουργία μνήμης Η μνήμη είναι ένας πίνακας αποθήκευσης Οταν διαβάζουμε μια θέση, περιμένουμε να πάρουμε την τελευταία τιμή που έχει
Διαβάστε περισσότεραΗ βασική συνάρτηση προγράμματος main()
Η βασική συνάρτηση προγράμματος main() HEADER FILES main(){ ΔΗΛΩΣΕΙΣ ΜΕΤΑΒΛΗΤΩΝ ΕΝΤΟΛΕΣ (σειριακές, επιλογής ή επανάληψης) ΕΠΙΣΤΡΕΦΟΜΕΝΟΣ ΤΥΠΟΣ (return 0;) Συναρτήσεις Η συνάρτηση είναι ένα υποπρόγραμμα
Διαβάστε περισσότεραΕνώσεις δεδομένων Απαριθμητές Ψηφιακοί τελεστές Αναδρομικές συναρτήσεις
Ενώσεις δεδομένων Απαριθμητές Ψηφιακοί τελεστές Αναδρομικές συναρτήσεις Ενώσεις δεδομένων (union) τι και γιατί Συσκευές με μικρή μνήμη => ανάγκη εξοικονόμησης πόρων Παρατήρηση: αχρησιμοποίητη μνήμη. Έστω
Διαβάστε περισσότεραΚατανεμημένος και Παράλληλος Προγραμματισμός
Κατανεμημένος και Παράλληλος Προγραμματισμός Ηλίας Κ. Σάββας Καθηγητής Τμήμα Μηχανικών Πληροφορικής ΤΕ, ΤΕΙ Θεσσαλίας Email: savvas@teilar.gr Παράλληλος προγραμματισμός OpenMP (3) Critical vs. Single Η
Διαβάστε περισσότεραΣυστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας
Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:06 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων
Διαβάστε περισσότεραΕΚΔΟΣΗ 1.0 ΟΚΤΩΒΡΙΟΣ, 2017 ΕΙΣΑΓΩΓΗ ΣΤΑ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΓΕΝΙΚΟΙ ΓΡΑΦΟΙ ΣΤΟ MPI ΕΠΙΜΕΛΕΙΑ: Β. ΤΣΑΚΑΝΙΚΑΣ, Β. ΤΑΜΠΑΚΑΣ
ΕΚΔΟΣΗ 1.0 ΟΚΤΩΒΡΙΟΣ, 2017 ΕΙΣΑΓΩΓΗ ΣΤΑ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΓΕΝΙΚΟΙ ΓΡΑΦΟΙ ΣΤΟ MPI ΕΠΙΜΕΛΕΙΑ: Β. ΤΣΑΚΑΝΙΚΑΣ, Β. ΤΑΜΠΑΚΑΣ CONTENTS ΕΙΣΑΓΩΓΗ ΣΤΑ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ... 2 Γενικοί Γράφοι στο MPI... 2
Διαβάστε περισσότεραΔημιουργία & Τερματισμός Διεργασιών. Προγραμματισμός II 1
Δημιουργία & Τερματισμός Διεργασιών Προγραμματισμός II 1 lalis@inf.uth.gr Δημιουργία νέας διεργασίας pid_t fork() Η fork δεν έχει παραμέτρους Δημιουργεί μια νέα διεργασία που είναι ένα αντίγραφο της διεργασίας
Διαβάστε περισσότεραΣυστήματα μνήμης και υποστήριξη μεταφραστή για MPSoC
Συστήματα μνήμης και υποστήριξη μεταφραστή για MPSoC Πλεονεκτήματα MPSoC Είναι ευκολότερο να σχεδιαστούν πολλαπλοί πυρήνες επεξεργαστών από τον σχεδιασμό ενός ισχυρότερου και πολύ πιο σύνθετου μονού επεξεργαστή.
Διαβάστε περισσότεραΚατανεμημένα Συστήματα Ασκήσεις.
Κατανεμημένα Συστήματα Ασκήσεις 2016-2017 http://www.cslab.ece.ntua.gr/courses/distrib Άσκηση 1 3 διεργασίες, η P1, η P2 και η P3 στέλνουν μεταξύ τους multicast μηνύματα. Σε περίπτωση που θέλουμε να εξασφαλίσουμε:
Διαβάστε περισσότεραΕΚΔΟΣΗ 1.0 ΟΚΤΩΒΡΙΟΣ, 2017 ΕΙΣΑΓΩΓΗ ΣΤΑ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΚΑΤΑΝΕΜΗΜΕΝΑ ΡΟΛΟΓΙΑ ΕΠΙΜΕΛΕΙΑ: Β. ΤΣΑΚΑΝΙΚΑΣ, Β. ΤΑΜΠΑΚΑΣ
ΕΚΔΟΣΗ 1.0 ΟΚΤΩΒΡΙΟΣ, 2017 ΕΙΣΑΓΩΓΗ ΣΤΑ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΕΠΙΜΕΛΕΙΑ: Β. ΤΣΑΚΑΝΙΚΑΣ, Β. ΤΑΜΠΑΚΑΣ CONTENTS ΕΙΣΑΓΩΓΗ ΣΤΑ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ... 2 Κατανεμημένα Ρολόγια... 2 Εισαγωγή... 2 Φυσικά Ρολόγια...
Διαβάστε περισσότεραΠερίληψη Φροντιστηρίου. Κατανεμημένα Συστήματα Ι. Το περιβάλλον DAP - Χαρακτηριστικά. Το περιβάλλον DAP Τι είναι.
Κατανεμημένα Συστήματα Ι 1 Περίληψη Φροντιστηρίου 2 Το Περιβάλλον DAP Φροντιστήριο Ένα παράδειγμα υλοποίησης στο DAP Δευτέρα 14 Νοεμβρίου 2005 Γιάννης Κρομμύδας Το περιβάλλον DAP Τι είναι Το περιβάλλον
Διαβάστε περισσότερα13.2 Παράλληλος Προγραµµατισµός Γλωσσάρι, Σελ. 1
13.2 Παράλληλος Προγραµµατισµός Γλωσσάρι, Σελ. 1 ΓΛΩΣΣΑΡΙ Αµοιβαίος αποκλεισµός (mutual exclusion) Στο µοντέλο κοινού χώρου διευθύνσεων, ο αµοιβαίος αποκλεισµός είναι ο περιορισµός του αριθµού των διεργασιών
Διαβάστε περισσότεραΔομημένος Προγραμματισμός (ΤΛ1006)
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής
Διαβάστε περισσότεραΠρογραμματισμός Η/Υ (ΤΛ2007 )
Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2014-15
Διαβάστε περισσότεραΔομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων
Δομημένος Προγραμματισμός Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 2 Ορισμός
Διαβάστε περισσότεραΕισαγωγή στους Η/Υ. Γιώργος Δημητρίου. Μάθημα 3-4: Προγραμματισμός MIPS. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής
Γιώργος Δημητρίου Μάθημα 3-4: Προγραμματισμός MIPS Προγραμματισμός σε Συμβολική Γλώσσα Η συμβολική γλώσσα: δεν έχει τύπους, δεν έχει δηλώσεις μεταβλητών, δεν έχει δομές ελέγχου, δεν έχει εντολές βρόχων,
Διαβάστε περισσότεραΠΛΕ- 027 Μικροεπεξεργαστές
ΠΛΕ- 027 Μικροεπεξεργαστές 10ο μάθημα: Αρχιτεκτονική συστήματος μνήμης: Εικονική μνήμη, σχεδίαση αποδοτικής κρυφής μνήμης, προγραμματισμός για κρυφή μνήμη Αρης Ευθυμίου Εικονική μνήμη ως cache Η κύρια
Διαβάστε περισσότεραEM 361: Παράλληλοι Υπολογισμοί
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ EM 361: Παράλληλοι Υπολογισμοί Ενότητα #5Β: Message Passing Interface (MPI) Διδάσκων: Χαρμανδάρης Ευάγγελος ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΩΝ ΜΑΘΗΜΑΤΙΚΩΝ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΚΩΝ
Διαβάστε περισσότεραΚεφάλαιο , 3.2: Συναρτήσεις II. (Διάλεξη 12)
Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II (Διάλεξη 12) 12-1 Ανασκόπηση Δομής Προγράμματος με Συναρτήσεις 1 void PrintMessage (); Πρότυπο (Δήλωση) Συνάρτησης (Δηλώνουν τι επιπλέον συναρτήσεις θα χρησιμοποιήσουμε
Διαβάστε περισσότεραΠρογραµµατισµός µε ανταλλαγή µηνυµάτων Ι. Εισαγωγή στο MPI. Εφαρµογές Ανεξάρτητου Παραλληλισµού.
Προγραµµατισµός µε ανταλλαγή µηνυµάτων Ι. Εισαγωγή στο MPI. Εφαρµογές Ανεξάρτητου Παραλληλισµού. Λογισµικό & Προγραµµατισµός Συστηµάτων Υψηλής Επίδοσης Οµάδα Παράλληλων & Κατανεµηµένων Συστηµάτων http://pdsgroup.hpclab.ceid.upatras.gr/
Διαβάστε περισσότεραΔιαφορές single-processor αρχιτεκτονικών και SoCs
13.1 Τα συστήματα και η επικοινωνία μεταξύ τους γίνονται όλο και περισσότερο πολύπλοκα. Δεν μπορούν να περιγραφούνε επαρκώς στο επίπεδο RTL καθώς αυτή η διαδικασία γίνεται πλέον αρκετά χρονοβόρα. Για αυτό
Διαβάστε περισσότεραΕισαγωγή στον Προγραµµατισµό. Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ
Εισαγωγή στον Προγραµµατισµό Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ Συναρτήσεις 19.11.16 Β. Ντουφεξή 2 Προβλήματα: Οσο μεγαλώνουν τα προγράμματα, γίνονται πιο πολύπλοκα.
Διαβάστε περισσότεραΕ-85: Ειδικά Θέµατα Λογισµικού
Ε-85: Ειδικά Θέµατα Λογισµικού Προγραµµατισµός Συστηµάτων Υψηλών Επιδόσεων Χειµερινό Εξάµηνο 2009-10 «Υπολογιστικά Συστήµατα Υψηλών Επιδόσεων και Εφαρµογές» Παναγιώτης Χατζηδούκας (Π.Δ. 407/80) E-85: Ε.Θ.Λ:
Διαβάστε περισσότεραΜεθόδων Επίλυσης Προβλημάτων
ΕΠΛ 032.3: 3: Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy Κεφάλαιο 9 Συναρτήσεις Μέρος II Θέματα ιάλεξης Μη- ομημένος
Διαβάστε περισσότεραΟργάνωση Υπολογιστών (IΙI)
Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2016-17 Οργάνωση Υπολογιστών (IΙI) (συσκευές εισόδου-εξόδου) http://mixstef.github.io/courses/csintro/ Μ.Στεφανιδάκης Ένα τυπικό
Διαβάστε περισσότεραΚατανεμημένα Συστήματα Ι
Κατανεμημένα Συστήματα Ι Συναίνεση και Σφάλματα Διεργασιών Παναγιώτα Παναγοπούλου Περίληψη Συναίνεση με σφάλματα διεργασιών Το πρόβλημα Ο αλγόριθμος FloodSet Επικύρωση δοσοληψιών Ορισμός του προβλήματος
Διαβάστε περισσότεραMessage Passing Interface (MPI)
Message Passing Interface (MPI) Συστήµατα Παράλληλης Επεξεργασίας Εργαστήριο Υπολογιστικών Συστηµάτων Αθήνα, Νοέµβριος 2004 22/11/2004 Message Passing Interface (MPI) 1 Παράλληλες αρχιτεκτονικές Αρχιτεκτονική
Διαβάστε περισσότεραΠρογραμματισμός Ι (ΗΥ120)
Προγραμματισμός Ι (ΗΥ120) Διάλεξη 9: Συναρτήσεις Ορισμός συναρτήσεων () { /* δήλωση μεταβλητών */ /* εντολές ελέγχου/επεξεργασίας */ o Μια συνάρτηση ορίζεται δίνοντας
Διαβάστε περισσότεραΕικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1
Εικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1 lalis@inf.uth.gr Μνήμη και επικοινωνία διεργασιών Κάθε διεργασία έχει δική της ιδιωτική μνήμη Μια διεργασία δεν μπορεί να γράψει/διαβάσει από/σε θέσεις
Διαβάστε περισσότεραΗ γλώσσα προγραμματισμού C
Η γλώσσα προγραμματισμού C Εντολές ελέγχου ροής προγράμματος (if-else & switch) Η εντολή if-else Η εντολή if-else υπάρχει σχεδόν σε όλες τις γλώσσες προγραμματισμού. Χρησιμοποιείται για τον έλεγχο της
Διαβάστε περισσότεραΔιαδιεργασιακή επικοινωνία (inter-process communication IPC) Προγραμματισμός II 1
Διαδιεργασιακή επικοινωνία (inter-process communication IPC) Προγραμματισμός II 1 lalis@inf.uth.gr Συνεργασία ανάμεσα σε διεργασίες Για ασφάλεια/ανεξαρτησία, το ΛΣ εξασφαλίζει πλήρη απομόνωση ανάμεσα στις
Διαβάστε περισσότεραΛύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ IΙ Λύβας Χρήστος chrislibas@ssl-unipi.gr Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος >_ ΣΥΝΑΡΤΗΣΕΙΣ ΣΤΗ C (1/3) +- Στη C χρησιμοποιούμε συχνα τις συναρτήσεις (functions),
Διαβάστε περισσότεραΚατανεμημένα Συστήματα. Javascript LCR example
Κατανεμημένα Συστήματα Javascript LCR example Javascript JavaScript All JavaScript is the scripting language of the Web. modern HTML pages are using JavaScript to add functionality, validate input, communicate
Διαβάστε περισσότεραΚατανεμημένος και Παράλληλος Προγραμματισμός. Εισαγωγή στο MPI. Εγκατάσταση MPICH σε ένα ΗΥ 10/3/2017
Κατανεμημένος και Παράλληλος Προγραμματισμός Ηλίας Κ. Σάββας Καθηγητής Τμήμα Μηχανικών Πληροφορικής ΤΕ, ΤΕΙ Θεσσαλίας Email: savvas@teilar.gr Εισαγωγή στο MPI Εγκατάσταση του Message Passing Interface,
Διαβάστε περισσότεραΔείκτες & Πίνακες Δείκτες, Πίνακες
Δείκτες & Πίνακες Δείκτες, Πίνακες Δείκτες Δείκτης είναι μια μεταβλητή που ως δεδομένο περιέχει τη θέση μνήμης (διεύθυνση) μιας άλλης μεταβλητής. Μεταβλητές Τιμές. (*) Δείκτης p Μεταβλητή v Δ1. Δ2. τιμή
Διαβάστε περισσότεραlab13grades 449 PASS 451 PASS PASS FAIL 1900 FAIL Page 1
ΑΕΜ ΒΑΘΜΟΣ 449 PASS 451 PASS 476-1733 PASS 1779-1899 FAIL 1900 FAIL Page 1 1901 PASS 1904 PASS 1908 PASS 1909 PASS 1910 - Page 2 1911 PASS 1914 Οριακό PASS 1915 PASS 1926 PASS Page 3 1927 PASS 1928 Οριακό
Διαβάστε περισσότεραΛειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος
ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ KΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ http://www.cslab.ece.ntua.gr Λειτουργικά
Διαβάστε περισσότεραΣυστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας
Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:20 OpenMP Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων
Διαβάστε περισσότεραΣτόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή
Στόχοι και αντικείμενο ενότητας Η έννοια του Τελεστή #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Εκφράσεις Προτεραιότητα Προσεταιριστικότητα Χρήση παρενθέσεων Μετατροπές Τύπων Υπονοούμενες και ρητές μετατροπές
Διαβάστε περισσότερα3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις
3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις 5 Απριλίου 01 1 Πίνακες Είδαμε ότι δηλώνοντας μία μεταβλητή κάποιου συγκεκριμένου τύπου δεσμεύουμε μνήμη κατάλληλη για να αποθηκευτεί μία οντότητα
Διαβάστε περισσότεραΕισαγωγή εκτελέσιμου κώδικα σε διεργασίες
0x375 - Thessaloniki Tech Talks Sessions Event 0x2 19 Μαρτίου 2010 Περιεχόμενα 1 Εισαγωγή 2 Η κλήση συστήματος ptrace 3 Νήματα 4 Το πρόγραμμα εισαγωγής κώδικα prez 5 Επίλογος Γιατί; Πολλές φορές θέλουμε
Διαβάστε περισσότεραΣτόχοι και αντικείμενο ενότητας. Τύπος πίνακα. Τύπος πίνακα (συν.) #6. Πίνακες και Δείκτες
Στόχοι και αντικείμενο ενότητας Ο τύπος του Πίνακα (βλ. ενότητα #2α) Ορισμός και αρχικοποίηση Αποθήκευση πινάκων στη μνήμη Πολυδιάστατοι πίνακες #6. Πίνακες και Δείκτες Ο τύπος του Δείκτη Η έννοια του
Διαβάστε περισσότεραΚατανεμημένα Συστήματα Ι
Συναίνεση με σφάλματα διεργασιών Κατανεμημένα Συστήματα Ι 5η Διάλεξη 10 Νοεμβρίου 2016 Παναγιώτα Παναγοπούλου Κατανεμημένα Συστήματα Ι 5η Διάλεξη 1 Συναίνεση με σφάλματα διεργασιών Προηγούμενη διάλεξη
Διαβάστε περισσότεραΗ γλώσσα προγραμματισμού C
Η γλώσσα προγραμματισμού C Οι συναρτήσεις στη C Οι συναρτήσεις τι είναι Πρόκειται για ανεξάρτητα τμήματα ενός προγράμματος (υποπρογράμματα) που επιτελούν συγκεκριμένες εργασίες. Καλούνται από το κυρίως
Διαβάστε περισσότεραΤεχνολογία και Προγραμματισμός Υπολογιστών. Η γλώσσα προγραμματισμού C
Τεχνολογία και Προγραμματισμός Υπολογιστών Η γλώσσα προγραμματισμού C Με μια ματιά Τύπος Πίνακα Μεταβλητές με ενδείκτη Αλφαριθμητικά - Πίνακες Δισδιάστατος Πολυδιάστατος Πίνακας 2 2 Τύπος Πίνακα Σύνθετος
Διαβάστε περισσότερα