National Technical University of Athens (NTUA), GreeceInstitute of Structural Analysis & Seismic Research (ISASR) Προχωρημένες υπολογιστικές τεχνικές και αλγόριθμοι επίλυσης Προγραμματισμός σε παράλληλη επεξεργασία Δ.Π.Μ.Σ. Υπολογιστικής Μηχανικής National Technical University of Athens (NTUA), GreeceInstitute of Structural Analysis & Seismic Research (ISASR)
National Technical University of Athens (NTUA), GreeceInstitute of Structural Analysis & Seismic Research (ISASR) Λογισμικό MPI Μεταφορά δεδομένων σε παράλληλα υπολογιστικά περιβάλλοντα Συγχρονισμός μεταξύ παράλληλων διεργασιών
National Technical University of Athens (NTUA), GreeceInstitute of Structural Analysis & Seismic Research (ISASR) Λογισμικό MPI Program MPIHelloWorld Implicit None Include "fmpi.h" Integer :: iRank, iNoOfProcs, iErr, iSource, iDest, iTag=50 Character, Len=50 :: cMessage Type (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) then iDest = 0 Write(cMessage, *) "Greetings from process:", iRank Call MPI_Send(cMessage, 50, MPI_CHARACTER, iDest, iTag, & MPI_COMM_WORLD, iErr) else Do iSource=1, iNoOfProcs – 1 Call MPI_Recv(cMessage, 50, MPI_CHARACTER, iSource, & iTag, MPI_COMM_WORLD, status, iErr) Write(*, *) cMessage End Do end if Call MPI_Finalize(iErr) End Program Πρόγραμμα “Hello world”
National Technical University of Athens (NTUA), GreeceInstitute 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), GreeceInstitute 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_COMPLEXCOMPLEX MPI_DOUBLE_COMPLEXDOUBLE COMPLEX MPI_LOGICALLOGICAL MPI_REALREAL MPI_DOUBLE_PRECISIONDOUBLE PRECISION MPI_INTEGERINTEGER MPI_CHARACTERCHARACTER
National Technical University of Athens (NTUA), GreeceInstitute 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), GreeceInstitute of Structural Analysis & Seismic Research (ISASR) Λογισμικό MPI Η μέθοδος συζυγών διανυσματικών κλίσεων Αρχικές τιμές: Για k=0,1,... μέχρι σύγκλισης
National Technical University of Athens (NTUA), GreeceInstitute of Structural Analysis & Seismic Research (ISASR) Λογισμικό MPI Η μέθοδος συζυγών διανυσματικών κλίσεων Αρχικές τιμές Για k=0,1,... μέχρι σύγκλισης Άθροιση στον master Στον masterκαι αποστολή σε όλες τις διαδικασίες Άθροιση στον master και αποστολή σε όλες τις διαδικασίες
National Technical University of Athens (NTUA), GreeceInstitute of Structural Analysis & Seismic Research (ISASR) Λογισμικό MPI Αποστολή σημειώσεων και κώδικα