Σχετικά έγγραφα
Αρχιτεκτονική κοινής μνήμης

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

Message Passing Interface (MPI)

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

Message Passing Interface (MPI)

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

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

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

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

Message Passing Interface (MPI)

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

MPI: Message Passing Interface

MPI: Message Passing Interface

Message Passing Interface (MPI)

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

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

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

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

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

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

MPI: Message Passing Interface

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού

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

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

Probleme de transmitere în modul standard. MPI - Message Passing Interface. Comunicarea punct la punct

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

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

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

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

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

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

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2017

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

ΦΥΣ 145 Υπολογιστικές Μέθοδοι στη Φυσική. Πρόοδος 26 Μαρτίου 2007 Ομάδα 1 η

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

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

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

EM 361: Παξάιιεινη Υπνινγηζκνί

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

Εισαγωγή στον Προγραμματισμό Η/Υ για Χημικούς Μηχανικούς

Διπλωματική Εργασία του φοιτητή του Τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών της Πολυτεχνικής Σχολής του Πανεπιστημίου Πατρών

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

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

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

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

Εισαγωγή στη Fortran. Μάθημα 1 ο. Ελευθερία Λιούκα

Minimum Spanning Tree: Prim's Algorithm

Τμήμα Φυσικής Πανεπιστημίου Κύπρου Εαρινό Εξάμηνο 2015/2016. ΦΥΣ145 Υπολογιστικές Μέθοδοι στην Φυσική

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

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

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ ΠΙΝΑΚΕΣ. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD

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

Παράλληλη Επεξεργασία Κεφάλαιο 6 ο Σύγχρονος Παραλληλισμός

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

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ ΠΙΝΑΚΕΣ. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD

FORTRAN και Αντικειμενοστραφής Προγραμματισμός

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

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

εφαρμογών Συμπεριφορά απόδοσης εφαρμογών Benchmarks, Profiling GRNET ntell [at] grnet.gr Χρονοεπίδοση και αξιολόγηση απόδοσης εφαρμογών

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2017

Απαντήσεις στο μάθημα Δομημένος Προγραμματισμός ΕΠΑΛ

εφαρμογών Συμπεριφορά απόδοσης εφαρμογών Benchmarks, Profiling GRNET ntell [at] grnet.gr Χρονοεπίδοση και αξιολόγηση απόδοσης εφαρμογών

Παραλληλοποίηση αλγορίθµων επίλυσης γενικευµένων πεδίων ϱοής

ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2014

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

FORTRAN και Αντικειμενοστραφής Προγραμματισμός

Μονοδιάστατοι πίνακες

Μορφοποίηση της εξόδου

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ. Δρ. Ιωάννης Λυχναρόπουλος Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας

Fortran και Αντικειμενοστραφής προγραμματισμός.

Παράδειγμα #5 EΠΙΛΥΣΗ ΜΗ ΓΡΑΜΜΙΚΩΝ ΑΛΓΕΒΡΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΜΕ ΜΕΘΟΔΟ NEWTON ΕΠΙΜΕΛΕΙΑ: Ν. Βασιλειάδης. ( k ) ( k)

Άσκηση 1. Α. Υπολογίστε χωρίς να εκτελέσετε κώδικα FORTRAN τα παρακάτω: Ποιά είναι η τελική τιμή του Z στα παρακάτω κομμάτια κώδικα FORTRAN:

Προγραμματισμός με FORTRAN Συνοπτικός Οδηγός Α. Σπυρόπουλος Α. Μπουντουβής

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

ΑΝΟΧΗ ΣΦΑΛΜΑΤΩΝ ΣΕ ΕΦΑΡΜΟΓΕΣ MPI ΠΟΥ ΑΚΟΛΟΥΘΟΥΝ ΤΟ ΜΟΝΤΕΛΟ MASTER-WORKER Η ΜΕΤΑΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΕΞΕΙΔΙΚΕΥΣΗΣ. Υποβάλλεται στην

ΦΥΣ-151. Ηλεκτρονικοί Υπολογιστές Ι (FORTRAN 77) (Άνοιξη 2004)

Παράλληλη Επεξεργασία Κεφάλαιο 1 Γιατί Παράλληλος Προγραμματισμός;

Oι εντολές COMMON και PARAMETER

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

Είσοδος -Έξοδος. Άνοιγµα αρχείου:

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

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

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

Παράλληλος προγραμματισμός: Σχεδίαση και υλοποίηση παράλληλων προγραμμάτων

ΦΥΣ 145 Μαθηµατικές Μέθοδοι στη Φυσική. Πρόοδος 28 Μαρτίου 2009 Οµάδα 1 η

Transcript:

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

Αρχιτεκτονικές Παράλληλων Υπολογιστών Shared Memory Distributed Memory

Προγραµµατισµός Παράλληλων Υπολογιστών µε MPI Distributed memory

Μια απλή υπολογιστική συστοιχία (cluster)

MPI : Message Passing Interface Τι είναι; Βιβλιοθήκη υποπρογραµµάτων τα οποία µπορείτε να καλέσετε µέσα από έναν κώδικα FORTRAN ή C για να πραγµατοποιήσετε την ανταλλαγή πληροφοριών (communication) µεταξύ των διεργασιών (processes) Γιατί MPI; Καθιερωµένο Αποδοτικό Εύκολο στη χρήση

MPI : Start - Finish call MPI_INIT(ierror) call MPI_COMM_RANK(MPI_COMM_WORLD, MyID, ierror) call MPI_COMM_SIZE(MPI_COMM_WORLD, Nprocs, ierror)... call MPI_FINALIZE(ierror) MPI_COMM_WORLD 1 0 2 3 Integer : MyID, Nprocs, ierror

MPI : Μετάφραση και εκτέλεση mpif90 myprogram.f90 mpirun -np S a.out S είναι το πλήθος των διεργασιών στις οποίες θα τρέξει ο κώδικας (nn = S)

Παράδειγµα 1: Ο πρώτος µου κώδικας µε MPI program hello implicit NONE include 'mpif.h' integer MyID, Nprocs, ierror call MPI_INIT(ierror) call MPI_COMM_RANK(MPI_COMM_WORLD, MyID, ierror) call MPI_COMM_SIZE(MPI_COMM_WORLD, Nprocs, ierror) print *, 'Hello world from ', MyID call MPI_FINALIZE(ierror) end

Collective communication Reduce MPI_REDUCE(sendbuf, recvbuf, count, type, op, root, comm, ierror) MPI_ALLREDUCE(sendbuf, recvbuf, count, type, op, comm, ierror) comm: MPI_COMM_WORLD type:mpi_integer, MPI_REAL, MPI_DOUBLE_PRECISION, MPI_COMPLEX, MPI_LOGICAL, MPI_CHARACTER op: MPI_MAX, MPI_MIN, MPI_SUM, MPI_PROD

Παράδειγµα 2: MPI_ALLREDUCE program allreduce implicit NONE include 'mpif.h' integer MyID, Nprocs, ierror real a, sum call MPI_INIT(ierror) call MPI_COMM_RANK(MPI_COMM_WORLD, MyID, ierror) call MPI_COMM_SIZE(MPI_COMM_WORLD, Nprocs, ierror) a = MyID + 1 call MPI_ALLREDUCE(a, sum, 1, MPI_REAL, MPI_SUM, MPI_COMM_WORLD, ierror) print *, sum call MPI_FINALIZE(ierror) end

Collective communication Broadcast, Scatter and Gather MPI_BCAST(buffer, count, type, root, comm, ierror) MPI_SCATTER(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, root, comm, ierror) A B C D A B C D A B C D MPI_GATHER(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, root, comm, ierror) A A B A B C D B C C D D

Παράδειγµα 3: MPI_SCATTER program scatter implicit NONE include 'mpif.h' integer size parameter(size=4) integer MyID, Nprocs, sendcount, recvcount, source, ierror real sendbuf(size,size), recvbuf(size) data sendbuf / 1.0, 2.0, 3.0, 4.0, & 5.0, 6.0, 7.0, 8.0, & 9.0, 10.0, 11.0, 12.0, & 13.0, 14.0, 15.0, 16.0 / call MPI_INIT(ierror) call MPI_COMM_RANK(MPI_COMM_WORLD, MyID, ierror) call MPI_COMM_SIZE(MPI_COMM_WORLD, Nprocs, ierror) if (Nprocs==size) then source = 1 sendcount = size recvcount = size call MPI_SCATTER(sendbuf, sendcount, MPI_REAL, & recvbuf, recvcount, MPI_REAL, & source, MPI_COMM_WORLD, ierror) print *, 'Task ID= ',MyID,' Results: ',recvbuf else print *, 'Error. Must specify',size,' processors.' endif call MPI_FINALIZE(ierror) end

Επικοινωνία Point to Point Η επικοινωνία point to point γίνεται µόνο µεταξύ 2 διεργασιών 4 τύποι επικοινωνίας standard buffered synchronous ready Όλοι οι τύποι µπορεί να είναι είτε σε µορφή blocking είτε σε µορφή non-blocking Blocking form non-blocking form Synchronous send MPI_SSEND MPI_ISSEND Buffered send MPI_BSEND MPI_IBSEND Standard send MPI_SEND MPI_ISEND Ready send MPI_RSEND MPI_IRSEND Receive MPI_RECV MPI_IRECV

Επικοινωνία Point to Point Ορίσµατα Blocking send non-blocking send Blocking receive non-blocking receive buffer, count, type, dest, tag, comm, ierror buffer, count, type, dest, tag, comm, request, ierror buffer, count, type, source, tag, comm, status, ierror buffer, count, type, source, tag, comm, request, ierror

Παράδειγµα 4: Blocking message passing program ping implicit NONE include 'mpif.h' integer MyID, Nprocs, dest, source, count, tag, ierror integer status(mpi_status_size) character inmsg, outmsg outmsg = 'x' tag = 1 call MPI_INIT(ierror) call MPI_COMM_RANK(MPI_COMM_WORLD, MyID, ierror) call MPI_COMM_SIZE(MPI_COMM_WORLD, Nprocs, ierror) if (MyID==0) then dest = 1 source = 1 call MPI_SSEND(outmsg, 1, MPI_CHARACTER, dest, tag, MPI_COMM_WORLD, ierror) call MPI_RECV(inmsg, 1, MPI_CHARACTER, source, tag, MPI_COMM_WORLD, status, ierror) endif if (MyID==1) then dest = 0 source = 0 call MPI_RECV(inmsg, 1, MPI_CHARACTER, source, tag, MPI_COMM_WORLD, status, ierror) call MPI_SSEND(outmsg, 1, MPI_CHARACTER, dest, tag, MPI_COMM_WORLD, ierror) endif print *, MyID, inmsg call MPI_FINALIZE(ierror) end

Παράδειγµα 5: non - blocking message passing program iping implicit NONE include 'mpif.h' integer MyID, Nprocs, dest, source, count, tag, request, ierror integer status(mpi_status_size) character inmsg, outmsg outmsg = 'x' tag = 1 call MPI_INIT(ierror) call MPI_COMM_RANK(MPI_COMM_WORLD, MyID, ierror) call MPI_COMM_SIZE(MPI_COMM_WORLD, Nprocs, ierror) dest = MyID + 1 source = MyID - 1 if(dest > Nprocs-1) dest = 0 if(source < 0) source = Nprocs-1 call MPI_ISSEND(outmsg, 1, MPI_CHARACTER, dest, tag, MPI_COMM_WORLD, request,ierror) call MPI_RECV(inmsg, 1, MPI_CHARACTER, source, tag, MPI_COMM_WORLD, status, ierror) call MPI_WAIT(request, status, ierror) print *, MyID, inmsg call MPI_FINALIZE(ierror) end