Δ.Π.Μ.Σ. Υπολογιστικής Μηχανικής
description
Transcript of Δ.Π.Μ.Σ. Υπολογιστικής Μηχανικής
National Technical University of Athens (NTUA), Greece
Institute of Structural Analysis & Seismic Research (ISASR)
Προχωρημένες υπολογιστικές τεχνικές και αλγόριθμοι επίλυσης
Προγραμματισμός σε παράλληλη επεξεργασία
Δ.Π.Μ.Σ. Υπολογιστικής Μηχανικής
National Technical University of Athens (NTUA), Greece
Institute of Structural Analysis & Seismic Research (ISASR)
National Technical University of Athens (NTUA), Greece
Institute of Structural Analysis & Seismic Research (ISASR)
Λογισμικό MPI
Μεταφορά δεδομένων σε παράλληλα υπολογιστικά περιβάλλοντα
Συγχρονισμός μεταξύ παράλληλων διεργασιών
National Technical University of Athens (NTUA), Greece
Institute of Structural Analysis & Seismic Research (ISASR)
Λογισμικό MPI
Program MPIHelloWorldImplicit NoneInclude "fmpi.h"Integer :: iRank, iNoOfProcs, iErr, iSource, iDest, iTag=50Character, Len=50 :: cMessageType (MPI_Status) :: status
Call MPI_Init(iErr)Call MPI_Comm_rank(MPI_COMM_WORLD, iRank, iErr)Call MPI_Comm_size(MPI_COMM_WORLD, iNoOfProcs, iErr)if (iRank.GT.0) theniDest = 0Write(cMessage, *) "Greetings from process:", iRankCall MPI_Send(cMessage, 50, MPI_CHARACTER, iDest, iTag, &
MPI_COMM_WORLD, iErr)elseDo iSource=1, iNoOfProcs – 1Call MPI_Recv(cMessage, 50, MPI_CHARACTER, iSource, &iTag, MPI_COMM_WORLD, status, iErr)Write(*, *) cMessageEnd Doend ifCall MPI_Finalize(iErr)
End Program
Πρόγραμμα “Hello world”
National Technical University of Athens (NTUA), Greece
Institute of Structural Analysis & Seismic Research (ISASR)
Λογισμικό MPIΕντολές αρχικοποίησης και πληροφοριών
Call MPI_Comm_rank(MPI_COMM_WORLD, iRank, iErr)
Call MPI_Comm_size(MPI_COMM_WORLD, iNoOfProcs, iErr)
Call MPI_Init(iErr)
Call MPI_Finalize(iErr)
National Technical University of Athens (NTUA), Greece
Institute of Structural Analysis & Seismic Research (ISASR)
Λογισμικό MPIΕντολές λήψης και αποστολής δεδομένων
Call MPI_Send(cMessage, 50, MPI_CHARACTER, iDest, &iTag, MPI_COMM_WORLD, iErr)
Call MPI_Recv(cMessage, 50, MPI_CHARACTER, iSource, iTag, &MPI_COMM_WORLD, status, iErr)
Αντιστοιχία τύπων δεδομένων MPI με αυτούς της γλώσσας FORTRAN
Τύπος δεδομένων MPI (MPI_DATATYPE) Τύπος δεδομένων FORTRAN
MPI_COMPLEX COMPLEX
MPI_DOUBLE_COMPLEX DOUBLE COMPLEX
MPI_LOGICAL LOGICAL
MPI_REAL REAL
MPI_DOUBLE_PRECISION DOUBLE PRECISION
MPI_INTEGER INTEGER
MPI_CHARACTER CHARACTER
National Technical University of Athens (NTUA), Greece
Institute of Structural Analysis & Seismic Research (ISASR)
Λογισμικό MPIΕντολές συλλογικής επικοινωνίας
Call MPI_BCast(Message, iSize, MPI_DATATYPE, &iRoot, MPI_COMM_WORLD, iErr)
Call MPI_Reduce(Operand, Message, iSize, MPI_DATATYPE, &MPI_OPERAND, iRoot, MPI_COMM_WORLD, iErr)
Όνομα τελεστή (MPI_OPERAND)
Σημασία
MPI_MAX Μέγιστο
MPI_MIN Ελάχιστο
MPI_SUM Άθροισμα
MPI_PROD Γινόμενο
MPI_LAND Logical AND
MPI_BAND Bitwise AND
MPI_LOR Logical OR
MPI_BOR Bitwise OR
MPI_LXOR Logical Exclusive OR
MPI_BXOR Bitwise Exclusive OR
National Technical University of Athens (NTUA), Greece
Institute of Structural Analysis & Seismic Research (ISASR)
Λογισμικό MPIΗ μέθοδος συζυγών διανυσματικών κλίσεων
fuKfgu )0()0()0()0( ,0
)()(
)()(
kTk
kTk
kK
gg
)()()1( kk
kk uu
)()()1( kk
kk Kgg
)()(
)1()1(
1 kTk
kTk
kgg
gg
)(1)1()1( k
kkk g
Αρχικές τιμές:
Για k=0,1,... μέχρι σύγκλισης
National Technical University of Athens (NTUA), Greece
Institute of Structural Analysis & Seismic Research (ISASR)
Λογισμικό MPIΗ μέθοδος συζυγών διανυσματικών κλίσεων
Αρχικές τιμές
vvvvvv fuKfgu )0()0()0()0( ,0
)()()( kv
Tkv
kv ggn
v
a
ka
k nn1
)()(0
)()()( kv
Tkv
kv Kd
v
n
kn
k dd1
)()(0
)(0
)(0)(
0 k
kk
d
n
)()()()1( kv
kv
kv
kv uu
)()()()1( kv
kv
kv
kv Kgg
)1()1()( kv
Tkv
kv ggd
v
n
kn
k dd1
)()(0
)(0
)(0)1(
k
kk
vn
d
)(1)1()1( k
vkk
vk
v g
Για k=0,1,... μέχρι σύγκλισης
Άθροιση στον master
Άθροιση στον master
Στον master
και αποστολή σε όλες τις διαδικασίες
Άθροιση στον master
και αποστολή σε όλες τις διαδικασίες
National Technical University of Athens (NTUA), Greece
Institute of Structural Analysis & Seismic Research (ISASR)
Λογισμικό MPIΑποστολή σημειώσεων και κώδικα