59
Issues on Grid Technologies, Univ. of Patras, 2/3/2010 Το Το Message Passing Interface Message Passing Interface (MPI) (MPI) και η υποστήριξή του στο και η υποστήριξή του στο EGEE Grid EGEE Grid Vasileios Karakasis Vasileios Karakasis GRNET S.A., ICCS GRNET S.A., ICCS [email protected] [email protected]

Vasileios Karakasis GRNET S.A., ICCS [email protected]

  • Upload
    jens

  • View
    43

  • Download
    2

Embed Size (px)

DESCRIPTION

Vasileios Karakasis GRNET S.A., ICCS [email protected]. Σύνοψη παρουσίασης. Παράλληλος προγραμματισμός Παράλληλες αρχιτεκτονικές Προγραμματιστικά μοντέλα / MPI Υπηρεσίες του προτύπου MPI Χρήση MPI σε dedicated cluster Υποστήριξη εργασιών MPI στο EGEE Grid - PowerPoint PPT Presentation

Citation preview

Page 1: Vasileios Karakasis GRNET S.A., ICCS bkk@cslab.ece.ntua.gr

Issues on Grid Technologies, Univ. of Patras, 2/3/2010

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

GridGrid

Vasileios KarakasisVasileios KarakasisGRNET S.A., ICCSGRNET S.A., ICCS

[email protected]@cslab.ece.ntua.gr

Page 2: Vasileios Karakasis GRNET S.A., ICCS bkk@cslab.ece.ntua.gr

Σύνοψη παρουσίασηςΣύνοψη παρουσίασης

Παράλληλος προγραμματισμός Παράλληλες αρχιτεκτονικές Προγραμματιστικά μοντέλα / MPI

Υπηρεσίες του προτύπου MPI Χρήση MPI σε dedicated cluster Υποστήριξη εργασιών MPI στο EGEE

Grid Υποβολή εργασίας MPI στο Grid Συζήτηση

Page 3: Vasileios Karakasis GRNET S.A., ICCS bkk@cslab.ece.ntua.gr

Πορεία μιας σειριακής εργασίας στο Πορεία μιας σειριακής εργασίας στο GridGrid

RB/WMS CEUI

LRMS(Torque / PBS)

Ανάθεση σε επεξεργαστή

Worker Node

Page 4: Vasileios Karakasis GRNET S.A., ICCS bkk@cslab.ece.ntua.gr

Ανάγκη για υποστήριξη Ανάγκη για υποστήριξη MPI MPI στο στο GridGrid

Μεγάλη εγκατεστημένη υπολογιστική ισχύς: Πώς την εκμεταλλευόμαστε; 1000άδες επεξεργαστών Πολλές ανεξάρτητες (σειριακές) δουλειές,

για ανεξάρτητη επεξεργασία διαφορετικού υποσυνόλου των δεδομένων εισόδου

Και αν υπάρχουν εξαρτήσεις; Αν το πρόβλημα δεν είναι “Embarassingly

Parallel”;

Page 5: Vasileios Karakasis GRNET S.A., ICCS bkk@cslab.ece.ntua.gr

Σύνοψη παρουσίασηςΣύνοψη παρουσίασης

Παράλληλος προγραμματισμός Παράλληλες αρχιτεκτονικές Προγραμματιστικά μοντέλα / MPI

Υπηρεσίες του προτύπου MPI Χρήση MPI σε dedicated cluster Υποστήριξη εργασιών MPI στο EGEE

Grid Υποβολή εργασίας MPI στο Grid Συζήτηση

Page 6: Vasileios Karakasis GRNET S.A., ICCS bkk@cslab.ece.ntua.gr

Παράλληλες ΑρχιτεκτονικέςΠαράλληλες Αρχιτεκτονικές

Αρχιτεκτονική κατανεμημένης μνήμης (distributed memory systems, π.χ. Cluster)

CPU

M

$

CPU

M

$

CPU

M

$

...

Κόμβος 1 Κόμβος 2 Κόμβος Ν

Δίκτυο Διασύνδεσης (π.χ., Ethernet, Myrinet, SCI, Infiniband)

Page 7: Vasileios Karakasis GRNET S.A., ICCS bkk@cslab.ece.ntua.gr

Παράλληλες Αρχιτεκτονικές (2)Παράλληλες Αρχιτεκτονικές (2)

Αρχιτεκτονική μοιραζόμενης μνήμης (shared memory systems, π.χ. SMP)

CPU

$

CPU

$

CPU

M

$

...

Διάδρομος Μνήμης (memory bus)

Page 8: Vasileios Karakasis GRNET S.A., ICCS bkk@cslab.ece.ntua.gr

Παράλληλες Αρχιτεκτονικές (3)Παράλληλες Αρχιτεκτονικές (3)

Υβριδική αρχιτεκτονική (π.χ. SMP cluster)

CPU0

M

$

...

SMP κόμβος 1

Δίκτυο Διασύνδεσης (π.χ. Ethernet, Myrinet, SCI, Infiniband)

CPUΚ

$

... CPU0

M

$

SMP κόμβος 2

CPUΚ

$

... CPU0

M

$

SMP κόμβος Ν

CPUΚ

$

...

Page 9: Vasileios Karakasis GRNET S.A., ICCS bkk@cslab.ece.ntua.gr

Παράλληλες Αρχιτεκτονικές (4)Παράλληλες Αρχιτεκτονικές (4)

CPU

M

$

CPU

M

$

...

Κόμβος i ………….………….………….

Διεργασία 1

………….………….………….

Διεργασία 2

Κόμβος jMPI_SendMPI_Recv

Page 10: Vasileios Karakasis GRNET S.A., ICCS bkk@cslab.ece.ntua.gr

Μοντέλα παράλληλου Μοντέλα παράλληλου προγραμματισμούπρογραμματισμού

Αρχιτεκτονική

Κοινής μνήμης(shared memory)

Κατανεμημένης μνήμης (distributed memory)

Προγρα

μμ

ατιστικ

ό μοντέλο

Κοινός χώρος διευθύνσεων

(shared address space)

+ Ευκολία υλοποίησης

+ Προγραμματιστική ευκολία

+ Υψηλή επίδοση

+ Προγραμματιστική ευκολία

- Δυσκολία υλοποίησης

- Χαμηλή επίδοση

Ανταλλαγή μηνυμάτων

(message-passing)

+ Ευκολία υλοποίησης

+ Υψηλή επίδοση

- Προγραμματιστική δυσκολία

+ Ευκολία υλοποίησης

+ Υψηλή επίδοση

- Προγραμματιστική δυσκολία

Page 11: Vasileios Karakasis GRNET S.A., ICCS bkk@cslab.ece.ntua.gr

Σύνοψη παρουσίασηςΣύνοψη παρουσίασης

Παράλληλος προγραμματισμός Παράλληλες αρχιτεκτονικές Προγραμματιστικά μοντέλα / MPI

Υπηρεσίες του προτύπου MPI Χρήση MPI σε dedicated cluster Υποστήριξη εργασιών MPI στο EGEE

Grid Υποβολή εργασίας MPI στο Grid Συζήτηση

Page 12: Vasileios Karakasis GRNET S.A., ICCS bkk@cslab.ece.ntua.gr

Τι είναι το Τι είναι το MPIMPI;;

Είναι πρότυπο, όχι συγκεκριμένη υλοποίηση

Βιβλιοθήκη ανταλλαγής μηνυμάτων Σχεδίαση σε στρώματα (layers) Σε υψηλό επίπεδο, παρέχει

συγκεκριμένη προγραμματιστική διεπαφή (interface)

Σε χαμηλό επίπεδο, επικοινωνεί με το δίκτυο διασύνδεσης

Υποστηρίζει C, C++, Fortran 77 και F90

Page 13: Vasileios Karakasis GRNET S.A., ICCS bkk@cslab.ece.ntua.gr

Υλοποιήσεις Υλοποιήσεις MPIMPI

MPICHhttp://www-unix.mcs.anl.gov/mpi/mpich

MPICH2http://www-unix.mcs.anl.gov/mpi/mpich2

MPICH-GMhttp://www.myri.com/scs

LAM/MPIhttp://www.lam-mpi.org

LA-MPIhttp://public.lanl.gov/lampi

Open MPIhttp://www.open-mpi.org

SCI-MPICHhttp://www.lfbs.rwth-aachen.de/users/joachim/SCI-

MPICH MPI/Pro

http://www.mpi-softtech.com MPICH-G2

http://www3.niu.edu/mpi

Page 14: Vasileios Karakasis GRNET S.A., ICCS bkk@cslab.ece.ntua.gr

Πολλές διεργασίες, όλες εκτελούν το ίδιο πρόγραμμα

Διακρίνονται με βάση το βαθμό (rank) που αποδίδεται σε κάθε μία διεργασία Επεξεργάζεται διαφορετικό υποσύνολο

δεδομένων Διαφοροποιεί τη ροή εκτέλεσής της

Επιδίωξη παράλληλου προγραμματισμού Μεγιστοποίηση παραλληλίας Αποδοτική αξιοποίηση πόρων συστήματος

(π.χ. μνήμη) Ελαχιστοποίηση όγκου δεδομένων επικοινωνίας Ελαχιστοποίηση αριθμού μηνυμάτων Ελαχιστοποίηση συγχρονισμού

Single ProgramSingle Program,, Multiple Data Multiple Data (SPMD)(SPMD)

Page 15: Vasileios Karakasis GRNET S.A., ICCS bkk@cslab.ece.ntua.gr

Διεργασίες καιΔιεργασίες και Communicators Communicators

Σε κάθε διεργασία αποδίδεται ένα μοναδικό rank στο εύρος 0...P-1, όπου P το συνολικό πλήθος διεργασιών στον συγκεκριμένο communicator

Σε γενικές γραμμές, o communicator ορίζει ένα σύνολο από διεργασίες που μπορούν να επικοινωνούν μεταξύ τους (π.χ. MPI_COMM_WORLD)

Προσοχή: Αναφερόμαστε πάντα σε διεργασίες, όχι σε επεξεργαστές

Page 16: Vasileios Karakasis GRNET S.A., ICCS bkk@cslab.ece.ntua.gr

Τυπική δομή κώδικα Τυπική δομή κώδικα MPIMPI

#include <mpi.h>

int main(int argc, char *argv[]){

...

/* Πρώτη κλήση MPI */

MPI_Init(&argc, &argv);MPI_Comm_rank(MPI_COMM_WORLD, &rank);

MPI_Comm_size(MPI_COMM_WORLD, &size);

.../* Τελευταία κλήση MPI */

MPI_Finalize();}

Page 17: Vasileios Karakasis GRNET S.A., ICCS bkk@cslab.ece.ntua.gr

Βασικές Συναρτήσεις στο Βασικές Συναρτήσεις στο MPIMPI

• MPI_Init(argc,argv) MPI_Init(argc,argv)

Αρχικοποίηση MPI_Comm_rank(comm,rank)

Εύρεση του rank της διεργασίας στον comm MPI_Comm_size(comm,size)

Εύρεση πλήθους διεργασιών size σε comm MPI_Send(sndbuf,count,datatype,dest,tag,comm)

Αποστολή μηνύματος σε διεργασία dest MPI_Recv(rcvbuf,count,datatype,source,tag,

comm,status) Λήψη μηνύματος από διεργασία source

MPI_Finalize() Τερματισμός

Page 18: Vasileios Karakasis GRNET S.A., ICCS bkk@cslab.ece.ntua.gr

Βασικές Συναρτήσεις στο Βασικές Συναρτήσεις στο MPI (2)MPI (2)

int MPI_Init(int* argc, char*** argv);

Αρχικοποίηση περιβάλλοντος MPI Παράδειγμα:

int main(int argc,char *argv[]){

…MPI_Init(&argc,&argv);…

}

Page 19: Vasileios Karakasis GRNET S.A., ICCS bkk@cslab.ece.ntua.gr

Βασικές Συναρτήσεις στο Βασικές Συναρτήσεις στο MPI (3)MPI (3)

int MPI_Comm_rank (MPI_Comm comm, int* rank);

Καθορισμός rank καλούσας διεργασίας που ανήκει στον communicator comm

Παράδειγμα:

int rank;

MPI_Comm_rank(MPI_COMM_WORLD, &rank);

Page 20: Vasileios Karakasis GRNET S.A., ICCS bkk@cslab.ece.ntua.gr

Βασικές Συναρτήσεις στο Βασικές Συναρτήσεις στο MPI (4)MPI (4)

int MPI_Comm_size (MPI_Comm comm, int* size);

Καθορισμός πλήθους διεργασιών size που ανήκουν στον communicator comm

Παράδειγμα:

int size;

MPI_Comm_size(MPI_COMM_WORLD,&size);

Page 21: Vasileios Karakasis GRNET S.A., ICCS bkk@cslab.ece.ntua.gr

Βασικές Συναρτήσεις στο Βασικές Συναρτήσεις στο MPI (5)MPI (5)

int MPI_Send(void *buf, int count, int dest, int tag, MPI_Datatype datatype, MPI_Comm comm);

Αποστολή μηνύματος buf από καλούσα διεργασία σε διεργασία με rank dest

Ο πίνακας buf έχει count στοιχεία τύπου datatype

Παράδειγμα:

int message[50],dest=1,tag=55;

MPI_Send(message, 50, dest, tag, MPI_INT,MPI_COMM_WORLD);

Page 22: Vasileios Karakasis GRNET S.A., ICCS bkk@cslab.ece.ntua.gr

Βασικές Συναρτήσεις στο Βασικές Συναρτήσεις στο MPI (6)MPI (6)

int MPI_Recv(void *buf, int count, int source, int tag, MPI_Datatype datatype, MPI_Comm comm, MPI_Status *status);

Λήψη μηνύματος από διεργασία με rank source και αποθήκευση στον buf

Λαμβάνονται το πολύ count δεδομένα τύπου datatype (ακριβής αριθμός με MPI_Get_count)

Wildcards MPI_ANY_SOURCE, MPI_ANY_TAG

Παράδειγμα:

int message[50],source=0,tag=55;MPI_Status status;MPI_Recv(message, 50, source, tag,

MPI_INT, MPI_COMM_WORLD, &status);

Page 23: Vasileios Karakasis GRNET S.A., ICCS bkk@cslab.ece.ntua.gr

Βασικές Συναρτήσεις στο Βασικές Συναρτήσεις στο MPI (7)MPI (7)

………………………………………………………………MPI_Send(msg,3,j,...);………………………………………………………………

MPI διεργασία i

virtual memoryδιεργασίας i

MPI buffer

………………………………………………………………MPI_Recv(msg,3,i,...);………………………………………………………………

MPI διεργασία j

virtual memoryδιεργασίας i

MPI buffer

Page 24: Vasileios Karakasis GRNET S.A., ICCS bkk@cslab.ece.ntua.gr

Βασικές Συναρτήσεις στο Βασικές Συναρτήσεις στο MPI (8)MPI (8)

int MPI_Finalize();

Τερματισμός περιβάλλοντος MPI Πρέπει να αποτελεί την τελευταία κλήση

MPI του προγράμματος

Page 25: Vasileios Karakasis GRNET S.A., ICCS bkk@cslab.ece.ntua.gr

/* Παράλληλος υπολογισμός της παράστασης f(0)+f(1)*/#include <mpi.h>

int main(int argc,char **argv){ int v0,v1,sum,rank; MPI_Status stat; MPI_Init(&argc,&argv); MPI_Comm_rank(MPI_COMM_WORLD,&rank); if (rank == 1) {

v1 = f(1); MPI_Send(&v1,1,0,50,MPI_INT,MPI_COMM_WORLD); } else if (rank == 0){ v0 = f(0); MPI_Recv(&v1,1,1,50,MPI_INT,MPI_COMM_WORLD,&stat); sum = v0 + v1; } MPI_Finalize();}

Διεργασία 1

Διεργασία 0

ΠαράδειγμαΠαράδειγμα

Page 26: Vasileios Karakasis GRNET S.A., ICCS bkk@cslab.ece.ntua.gr

Είδη ΕπικοινωνίαςΕίδη Επικοινωνίας

Point-to-point ή Συλλογική (Collective)

Synchronous, buffered ή ready ανάλογα με το τι θεωρείται ως συνθήκη

επιτυχίας

Blocking ή non-blocking ανάλογα με το πότε επιστρέφει η συνάρτηση

επικοινωνίας

Page 27: Vasileios Karakasis GRNET S.A., ICCS bkk@cslab.ece.ntua.gr

if (rank == 0) for (dest = 1; dest < size; dest++) MPI_Send(msg,count,dest,tag,MPI_FLOAT,MPI_COMM_WORLD);

Παράδειγμα: Αποστολή του msg στις διεργασίες 1-7 από τη 0

Γενικά: Για p διεργασίες έχουμε p - 1 βήματα επικοινωνίας

0

Διεργασίες MPI

2 31 4 5 6 7msg

Συλλογική Επικοινωνία

Page 28: Vasileios Karakasis GRNET S.A., ICCS bkk@cslab.ece.ntua.gr

MPI_Bcast(msg,count,MPI_FLOAT,0,MPI_COMM_WORLD);

Παράδειγμα: Αποστολή του msg στις διεργασίες 1-7 από τη 0

Γενικά: Για p διεργασίες έχουμε βήματα επικοινωνίας

plog2

0

Διεργασίες MPI

2 31 4 5 6 7msg

Συλλογική Επικοινωνία (2)

Page 29: Vasileios Karakasis GRNET S.A., ICCS bkk@cslab.ece.ntua.gr

int MPI_Bcast(void *message, int count, MPI_Datatype datatype, int root, MPI_Comm comm);

Συλλογική Επικοινωνία (3)Συλλογική Επικοινωνία (3)

Αποστολή του message από τη διεργασία με rank root προς όλες τις διεργασίες του communicator comm

To message περιέχει count δεδομένα τύπου datatype

Καλείται από όλες τις διεργασίες του comm

Page 30: Vasileios Karakasis GRNET S.A., ICCS bkk@cslab.ece.ntua.gr

int MPI_Reduce(void *operand, void *result, int count, MPI_Datatype datatype, MPI_Op op, int root, MPI_Comm comm);

Συλλογική Επικοινωνία (4)Συλλογική Επικοινωνία (4)

Τα δεδομένα operand συνδυάζονται με εφαρμογή του τελεστή op, και το αποτέλεσμα αποθηκεύεται στη διεργασία root στο result

Πρέπει να κληθεί από όλες τις διεργασίες του comm

MPI_Op: MPI_MAX, MPI_MIN, MPI_SUM, MPI_PROD κλπ.

Αντίστοιχα και MPI_Allreduce

Page 31: Vasileios Karakasis GRNET S.A., ICCS bkk@cslab.ece.ntua.gr

Συλλογική Επικοινωνία (5)Συλλογική Επικοινωνία (5)

/* Παράλληλος υπολογισμός της παράστασης f(0)+f(1)*/#include <mpi.h>

int main(int argc, char *argv[]){ int sum,rank; MPI_Status stat;

MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); /* Υπολογισμός τιμών στον f[] */ MPI_Reduce(&f[rank], &sum, 1, MPI_INT, MPI_SUM, 0,

MPI_COMM_WORLD); MPI_Finalize();}

Page 32: Vasileios Karakasis GRNET S.A., ICCS bkk@cslab.ece.ntua.gr

Συλλογική Επικοινωνία (6)Συλλογική Επικοινωνία (6)

int MPI_Barrier(MPI_Comm comm);

Συγχρονισμός διεργασιών του communicator comm

Η εκτέλεση τους συνεχίζεται μόνον όταν όλες έχουν εκτελέσει την κλήση

Περιορίζει την παραλληλία

Page 33: Vasileios Karakasis GRNET S.A., ICCS bkk@cslab.ece.ntua.gr

Συλλογική Επικοινωνία (7)Συλλογική Επικοινωνία (7)

int MPI_Gather(void *sendbuf, int sendcnt, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm);

Συνενώνονται στη διεργασία root οι πίνακες sendbuf των υπολοιπών (κατά αύξουσα σειρά rank)

Το αποτέλεσμα αποθηκεύεται στον πίνακα recvbuf, ο οποίος έχει νόημα μόνο στη διεργασία root

Αντίστοιχα και MPI_Allgather Αντίστροφη: MPI_Scatter

Page 34: Vasileios Karakasis GRNET S.A., ICCS bkk@cslab.ece.ntua.gr

Synchronous − Buffered − ReadySynchronous − Buffered − Ready

Αναφέρονται σε λειτουργία αποστολής, διαφοροποιούνται ως προς λειτουργία λήψης

Υπάρχουν τόσο σε blocking, όσο και σε non-blocking μορφή

Το απλό MPI_Send μπορεί να είναι είτε synchronous είτε buffered: εξαρτάται από υλοποίηση

Page 35: Vasileios Karakasis GRNET S.A., ICCS bkk@cslab.ece.ntua.gr

Synchronous − Buffered − Ready Synchronous − Buffered − Ready (2)(2)

int MPI_Ssend(void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm); Επιτυγχάνει μόνο όταν πάρει επιβεβαίωση λήψης από

δέκτη - ασφαλές int MPI_Bsend(void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm); Επιτρέφει αμέσως, αντιγράφοντας το μήνυμα σε system

buffer για μελλοντική μετάδοση – σφάλμα σε έλλειψη πόρων

int MPI_Rsend(void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm); Επιστρέφει αμέσως, αλλά επιτυγχάνει μόνο αν έχει

προηγηθεί αντίστοιχο receive από το δέκτη - αβέβαιο

Page 36: Vasileios Karakasis GRNET S.A., ICCS bkk@cslab.ece.ntua.gr

Synchronous − Buffered − Ready Synchronous − Buffered − Ready (3)(3)

MPI_Bsend MPI_Ssend MPI_Rsend

Τοπικό Μη τοπικό Τοπικό

2 αντιγραφές στη μνήμη

1 αντιγραφή στη μνήμη

1 αντιγραφή στη μνήμη

Αποτυγχάνει ελλείψει πόρων

Δεν αποτυγχάνει ελλείψει πόρων

Δεν αποτυγχάνει ελλείψει πόρων

Δεν αποτυγχάνει αν δεν έχει

προηγηθεί λήψη

Δεν αποτυγχάνει αν δεν έχει

προηγηθεί λήψη

Αποτυγχάνει αν δεν έχει

προηγηθεί λήψη

Page 37: Vasileios Karakasis GRNET S.A., ICCS bkk@cslab.ece.ntua.gr

Non–blocking CommunicationNon–blocking Communication

Άμεση επιστροφή Δεν είναι ασφαλές να επαναχρησιμοποιηθούν οι

buffers επικοινωνίας πριν ελεγχθεί η επιτυχία Δύο δυνατότητες για έλεγχο επιτυχίας της

επικοινωνίας

int MPI_Test(MPI_Request *request, int *flag, MPI_Status* status);

int MPI_Wait (MPI_Request *request, MPI_Status *status);

Page 38: Vasileios Karakasis GRNET S.A., ICCS bkk@cslab.ece.ntua.gr

Κάθε blocking συνάρτηση έχει την αντίστοιχη non-blocking:

MPI_Isend (για MPI_Send) MPI_Issend (για MPI_Ssend) MPI_Ibsend (για MPI_Bsend) MPI_Irsend (για MPI_Rsend) MPI_Irecv (για MPI_Recv)

Non–blocking Communication (2)Non–blocking Communication (2)

Page 39: Vasileios Karakasis GRNET S.A., ICCS bkk@cslab.ece.ntua.gr

Ποιο είναι το όφελος; Επικάλυψη υπολογισμού – επικοινωνίας

Non–blocking Communication (3)Non–blocking Communication (3)

Blocking Non-blocking

MPI_Recv();MPI_Send();Compute();

MPI_Irecv();MPI_Isend();Compute();Waitall();

Page 40: Vasileios Karakasis GRNET S.A., ICCS bkk@cslab.ece.ntua.gr

Non–blocking Communication (4)Non–blocking Communication (4)

Αποφυγή deadlocks

Blocking (deadlock!) Non-blocking (fine!)

MPI_Send();MPI_Send();MPI_Recv();MPI_Recv();Compute();

MPI_Isend();MPI_Isend();MPI_Irecv();MPI_Irecv();Waitall();Compute();

Page 41: Vasileios Karakasis GRNET S.A., ICCS bkk@cslab.ece.ntua.gr

Τύποι Δεδομένων Τύποι Δεδομένων MPIMPI

MPI_CHAR: 8-bit χαρακτήρας MPI_DOUBLE: 64-bit κινητής υποδιαστολήςMPI_FLOAT: 32-bit κινητής υποδιαστολής MPI_INT: 32-bit ακέραιοςMPI_LONG: 32-bit ακέραιος MPI_LONG_DOUBLE: 64-bit κινητής υποδιαστολήςMPI_LONG_LONG: 64-bit ακέραιος MPI_LONG_LONG_INT: 64-bit ακέραιος MPI_SHORT: 16-bit ακέραιος MPI_SIGNED_CHAR: 8-bit προσημασμένος χαρακτήραςMPI_UNSIGNED: 32-bit απρόσημος ακέραιοςMPI_UNSIGNED_CHAR: 8-bit απρόσημος χαρακτήρας MPI_UNSIGNED_LONG: 32-bit απρόσημος ακέραιος MPI_UNSIGNED_LONG_LONG: 64-bit απρόσημος ακέραιος MPI_UNSIGNED_SHORT: 16-bit απρόσημος ακέραιος MPI_WCHAR: 16-bit απρόσημος χαρακτήρας

Page 42: Vasileios Karakasis GRNET S.A., ICCS bkk@cslab.ece.ntua.gr

Τύποι Δεδομένων Τύποι Δεδομένων MPI (2)MPI (2)

Ομαδοποίηση δεδομένων επικοινωνίας:

Παράμετρος count (για ομοιογενή δεδομένα σε συνεχόμενες θέσεις μνήμης)

MPI_Type_struct (derived datatype) MPI_Pack(), MPI_Unpack() (για

ετερογενή δεδομένα)

Page 43: Vasileios Karakasis GRNET S.A., ICCS bkk@cslab.ece.ntua.gr

Παράλληλη είσοδος-έξοδος (Parallel I/O)

Δυναμική διαχείριση διεργασιών (dynamic process management)

Απομακρυσμένες λειτουργίες πρόσβαση στη μνήμη (remote memory operations) One-sided operations

Το πρότυπο Το πρότυπο MPI-2MPI-2

Page 44: Vasileios Karakasis GRNET S.A., ICCS bkk@cslab.ece.ntua.gr

Η υλοποίηση Η υλοποίηση MPICHMPICH

MPIDσυσκευή ADI-2

MPI API

Επικοινωνία συστήματος (βιβλιοθήκες συστήματος, δίκτυο, μνήμη)

MPIRrun-time βιβλιοθήκη

MPIPprofiling interface

χρήστης

δίκτυο διασύνδεσης

MPI API

MPIDσυσκευή ADI-2

Page 45: Vasileios Karakasis GRNET S.A., ICCS bkk@cslab.ece.ntua.gr

Η Υλοποίηση Η Υλοποίηση MPICH (2)MPICH (2)

Ανά διεργασία, 1 send message queue, 2 receive queues posted + unexpected

Επιλογή device βάσει του destination rank p4, shmem

Επιλογή πρωτοκόλλου βάσει του message size Short < 1024 bytes, rendezvous > 128000

bytes, eager ενδιάμεσα Έλεγχος ροής - Flow control

1MB buffer space για eager πρωτόκολλο ανά ζεύγος διεργασιών

Page 46: Vasileios Karakasis GRNET S.A., ICCS bkk@cslab.ece.ntua.gr

Σύνοψη παρουσίασηςΣύνοψη παρουσίασης

Παράλληλος προγραμματισμός Παράλληλες αρχιτεκτονικές Προγραμματιστικά μοντέλα / MPI

Υπηρεσίες του προτύπου MPI Χρήση MPI σε dedicated cluster Υποστήριξη εργασιών MPI στο EGEE

Grid Υποβολή εργασίας MPI στο Grid Συζήτηση

Page 47: Vasileios Karakasis GRNET S.A., ICCS bkk@cslab.ece.ntua.gr

Εκτέλεση προγράμματος Εκτέλεση προγράμματος MPI (1)MPI (1)

Παραδοσιακός τρόπος: απευθείας εκτέλεση σε cluster υπολογιστών

Linux cluster 32 κόμβων (clone1…clone32) Μεταγλώττιση και εκτέλεση

Κατάλληλο PATH για την υλοποίηση• export PATH=/usr/local/bin/mpich-intel:…:$PATH

Μεταγλώττιση με τις κατάλληλες βιβλιοθήκες• mpicc test.c –o test –O3

Εκτέλεση• mpirun –np 32 test

Page 48: Vasileios Karakasis GRNET S.A., ICCS bkk@cslab.ece.ntua.gr

Επίδειξη!Επίδειξη!

Hello World με υποβολή ενός 16-process MPICH job σε dedicated cluster (clones)

Page 49: Vasileios Karakasis GRNET S.A., ICCS bkk@cslab.ece.ntua.gr

Εκτέλεση προγράμματος Εκτέλεση προγράμματος MPI (2)MPI (2)

Σε ποια μηχανήματα εκτελούνται οι διεργασίες; Machine file

$ cat <<EOF >machinesclone4clone5clone7clone8EOF

$ mpiCC test.cc –o test –O3 –static –Wall$ mpirun –np 4 –machinefile machines test

Page 50: Vasileios Karakasis GRNET S.A., ICCS bkk@cslab.ece.ntua.gr

Εκτέλεση προγράμματος Εκτέλεση προγράμματος MPI (3)MPI (3)

Λεπτομέρειες Υλοποίησης Πώς δημιουργούνται οι απαραίτητες

διεργασίες; Implementation-specific• rsh/ssh χωρίς password, οι κόμβοι του cluster

εμπιστεύονται ο ένας τον άλλο (MPICH1)• Με χρήση daemons (lamboot, mpd)

Τι γίνεται με το file I/O; Shared storage ανάμεσα στους cluster

nodes• NFS στην απλούστερη περίπτωση• Κάποιο παράλληλο fs, πχ. PVFS, GFS, GPFS

Page 51: Vasileios Karakasis GRNET S.A., ICCS bkk@cslab.ece.ntua.gr

Σύνοψη παρουσίασηςΣύνοψη παρουσίασης

Παράλληλος προγραμματισμός Παράλληλες αρχιτεκτονικές Προγραμματιστικά μοντέλα / MPI

Υπηρεσίες του προτύπου MPI Χρήση MPI σε dedicated cluster Υποστήριξη εργασιών MPI στο EGEE

Grid Υποβολή εργασίας MPI στο Grid Συζήτηση

Page 52: Vasileios Karakasis GRNET S.A., ICCS bkk@cslab.ece.ntua.gr

Ένταξη στο περιβάλλον του Ένταξη στο περιβάλλον του GridGrid

Υποβολή εργασιών τύπου MPICH

Type = "job";JobType = "MPICH";CpuNumber = 16;Executable = "mpihello_nocpuinfo";StdOutput = "hello.out";StdError = "hello.err";InputSandbox = {"mpihello_nocpuinfo"};OutputSandbox = {"hello.out","hello.err"};Requirements = other.GlueHostArchitecturePlatformType ==

"x86_64" && other.GlueCEUniqueID == "ce02.athena.hellasgrid.gr:2119/jobmanager-pbs-hgdemo";

Page 53: Vasileios Karakasis GRNET S.A., ICCS bkk@cslab.ece.ntua.gr

Πορεία της εργασίας Πορεία της εργασίας MPI MPI στο στο GridGrid

RB CEUI

LRMS(Torque / PBS)

Επιλογή κόμβων($PBS_NODEFILE)

και mpirun

Worker Nodes

Page 54: Vasileios Karakasis GRNET S.A., ICCS bkk@cslab.ece.ntua.gr

Σύνοψη παρουσίασηςΣύνοψη παρουσίασης

Παράλληλος προγραμματισμός Παράλληλες αρχιτεκτονικές Προγραμματιστικά μοντέλα / MPI

Υπηρεσίες του προτύπου MPI Χρήση MPI σε dedicated cluster Υποστήριξη εργασιών MPI στο EGEE

Grid Υποβολή εργασίας MPI στο Grid Συζήτηση

Page 55: Vasileios Karakasis GRNET S.A., ICCS bkk@cslab.ece.ntua.gr

Επίδειξη!Επίδειξη!

Hello World με υποβολή ενός 16-process MPICH job στο Grid.

Page 56: Vasileios Karakasis GRNET S.A., ICCS bkk@cslab.ece.ntua.gr

EGEE MPI Working GroupEGEE MPI Working Group

Στοχεύει στην τυποποιημένη/γενικευμένη υποστήριξη διαφορετικών υλοποιήσεων http://egee-docs.web.cern.ch/egee-docs/

uig/development/uc-mpi-jobs_2.html

Κατευθυντήριες γραμμές για την μεταγλώττιση/εκτέλεση παράλληλων δουλειών

Page 57: Vasileios Karakasis GRNET S.A., ICCS bkk@cslab.ece.ntua.gr

Επιπλέον ΘέματαΕπιπλέον Θέματα

Επιλογή επεξεργαστών − ανάθεση σε διεργασίες Θέματα latency κατά την ανταλλαγή

μηνυμάτων Memory bandwidth Διαθέσιμης μνήμης

Υβριδικές αρχιτεκτονικές Συνδυασμός MPI με Pthreads/OpenMP

για καλύτερη προσαρμογή στην υφιστάμενη αρχιτεκτονική

Page 58: Vasileios Karakasis GRNET S.A., ICCS bkk@cslab.ece.ntua.gr

Βιβλιογραφία - ΠηγέςΒιβλιογραφία - Πηγές

Writing Message-Passing Parallel Programs with MPI (Course Notes – Edinburgh Parallel Computing Center)

Using MPI-2: Advanced Features of the Message-Passing Interface (Gropp, Lusk, Thakur)

http://www.mpi-forum.org (MPI standards 1.1 και 2.0)

http://www.mcs.anl.gov/mpi (MPICH υλοποίηση)

comp.parallel.mpi (newsgroup)

Page 59: Vasileios Karakasis GRNET S.A., ICCS bkk@cslab.ece.ntua.gr

Σύνοψη παρουσίασηςΣύνοψη παρουσίασης

Παράλληλος προγραμματισμός Παράλληλες αρχιτεκτονικές Προγραμματιστικά μοντέλα / MPI

Υπηρεσίες του προτύπου MPI Χρήση MPI σε dedicated cluster Υποστήριξη εργασιών MPI στο EGEE

Grid Υποβολή εργασίας MPI στο Grid Συζήτηση