![Page 1: Point to point communication - İTÜtraining.uhem.itu.edu.tr/docs/13haziranmpi/mpi_I.sunum.pdf · • MPI is a specification for the developers and users of message passing libraries](https://reader034.vdocument.in/reader034/viewer/2022050215/5f60bfdcbe33205d2c31bc14/html5/thumbnails/1.jpg)
Message Passing Programming Based on MPI
Point to point communication
Gürsan ÇOBAN
13.06.2012
![Page 2: Point to point communication - İTÜtraining.uhem.itu.edu.tr/docs/13haziranmpi/mpi_I.sunum.pdf · • MPI is a specification for the developers and users of message passing libraries](https://reader034.vdocument.in/reader034/viewer/2022050215/5f60bfdcbe33205d2c31bc14/html5/thumbnails/2.jpg)
2
• What is MPI ?
• Information Routines
• Environment Management Routines
• Basic Point to Point Communication
(Send/Receive)
• MPI Datatypes
• Point to Point Communication
Point to point communication 13.06.2012
Outline
![Page 3: Point to point communication - İTÜtraining.uhem.itu.edu.tr/docs/13haziranmpi/mpi_I.sunum.pdf · • MPI is a specification for the developers and users of message passing libraries](https://reader034.vdocument.in/reader034/viewer/2022050215/5f60bfdcbe33205d2c31bc14/html5/thumbnails/3.jpg)
3
• MPI is a specification for the developers and users of
message passing libraries.
– A library for creating separate processes for
execution on different computers
– A library of sending and receiving messages
• The goal of the Message Passing Interface is to
provide a widely used standard for writing message
passing programs. The interface attempts to be:
– practical
– portable
– efficient
– flexible
• Interface specifications have been defined for C/C++
and Fortran programs.
Point to point communication 13.06.2012
MPI = Massage Passing Interface
![Page 4: Point to point communication - İTÜtraining.uhem.itu.edu.tr/docs/13haziranmpi/mpi_I.sunum.pdf · • MPI is a specification for the developers and users of message passing libraries](https://reader034.vdocument.in/reader034/viewer/2022050215/5f60bfdcbe33205d2c31bc14/html5/thumbnails/4.jpg)
4
• Standardization: MPI is the only message passing
library which can be considered a standard. November
1993. Defines routines, not implementation.
• Portability : There is no need to modify your source
code when you port your application to a different
platform that supports (and is compliant with) the MPI
standard.
• Performance Opportunities : Vendor implementations
should be able to exploit native hardware features to
optimize performance.
• Functionality: Over 115 routines are defined in MPI-1
alone.
• Availability: A variety of implementations are available,
both vendor and public domain.
Point to point communication 13.06.2012
Reasons for Using MPI
![Page 5: Point to point communication - İTÜtraining.uhem.itu.edu.tr/docs/13haziranmpi/mpi_I.sunum.pdf · • MPI is a specification for the developers and users of message passing libraries](https://reader034.vdocument.in/reader034/viewer/2022050215/5f60bfdcbe33205d2c31bc14/html5/thumbnails/5.jpg)
5
• Function categories:
• Initialization/finalization
• Point-to-point communication functions
• Collective communication functions
• Communicator topologies
• User-defined data types
• Utilities (e.g.- timing)
Point to point communication 13.06.2012
Message Passing Interface
![Page 6: Point to point communication - İTÜtraining.uhem.itu.edu.tr/docs/13haziranmpi/mpi_I.sunum.pdf · • MPI is a specification for the developers and users of message passing libraries](https://reader034.vdocument.in/reader034/viewer/2022050215/5f60bfdcbe33205d2c31bc14/html5/thumbnails/6.jpg)
6Point to point communication 13.06.2012
Single Program Multiple Data (SPMD)
Model
![Page 7: Point to point communication - İTÜtraining.uhem.itu.edu.tr/docs/13haziranmpi/mpi_I.sunum.pdf · • MPI is a specification for the developers and users of message passing libraries](https://reader034.vdocument.in/reader034/viewer/2022050215/5f60bfdcbe33205d2c31bc14/html5/thumbnails/7.jpg)
7
MPI include file
Initialize MPI environment
Do work and make message passing calls
Terminate MPI Environment
MPI_Init
MPI_Finalize
Point to point communication 13.06.2012
Minimum MPI Program Skeleton
![Page 8: Point to point communication - İTÜtraining.uhem.itu.edu.tr/docs/13haziranmpi/mpi_I.sunum.pdf · • MPI is a specification for the developers and users of message passing libraries](https://reader034.vdocument.in/reader034/viewer/2022050215/5f60bfdcbe33205d2c31bc14/html5/thumbnails/8.jpg)
8
• Format:
• Example:
• Error code:
rc = MPI_Xxxxx(parameter, ... )
rc = MPI_Bsend(&buf,count,type,dest,tag,comm)
Returned as "rc". MPI_SUCCESS if successful.
Point to point communication 13.06.2012
Format of MPI Calls (C Binding)
![Page 9: Point to point communication - İTÜtraining.uhem.itu.edu.tr/docs/13haziranmpi/mpi_I.sunum.pdf · • MPI is a specification for the developers and users of message passing libraries](https://reader034.vdocument.in/reader034/viewer/2022050215/5f60bfdcbe33205d2c31bc14/html5/thumbnails/9.jpg)
9
• Format:
• Example:
• Error code:
CALL MPI_XXXX(parameter, ...,ierr )
call mpi_xxxx(parameter, ...,ierr )
CALL MPI_BSEND(buf,count,type,dest,tag,comm,ierr)
Returned as “ierr“ parameter. MPI_SUCCESS if successful.
Point to point communication 13.06.2012
Format of MPI Calls (Fortran Binding)
![Page 10: Point to point communication - İTÜtraining.uhem.itu.edu.tr/docs/13haziranmpi/mpi_I.sunum.pdf · • MPI is a specification for the developers and users of message passing libraries](https://reader034.vdocument.in/reader034/viewer/2022050215/5f60bfdcbe33205d2c31bc14/html5/thumbnails/10.jpg)
10
• MPI uses
• objects,
• communicators,
• groups
to define which collection of processes maycommunicate with each other.
• Most MPI routines require you to specify acommunicator as an argument.
• Simply use MPI_COMM_WORLD whenever acommunicator is required.
• MPI_COMM_WORLD includes all of your MPI
processes.
Point to point communication 13.06.2012
Getting Information
![Page 11: Point to point communication - İTÜtraining.uhem.itu.edu.tr/docs/13haziranmpi/mpi_I.sunum.pdf · • MPI is a specification for the developers and users of message passing libraries](https://reader034.vdocument.in/reader034/viewer/2022050215/5f60bfdcbe33205d2c31bc14/html5/thumbnails/11.jpg)
11
• MPI_Comm_size: Determines the size of the group
associated with a communictor.
• MPI_Comm_rank: Determines the rank of the calling
process in the communicator.
0
1
2
4
53 6
7
8
9 MPI_COMM_WORLD
We called “master”
Point to point communication 13.06.2012
Getting Information
![Page 12: Point to point communication - İTÜtraining.uhem.itu.edu.tr/docs/13haziranmpi/mpi_I.sunum.pdf · • MPI is a specification for the developers and users of message passing libraries](https://reader034.vdocument.in/reader034/viewer/2022050215/5f60bfdcbe33205d2c31bc14/html5/thumbnails/12.jpg)
12
• Rank within a communicator:
• Every process has its own unique,
• Integer identifier assigned by the system when the
process initializes.
• A rank is sometimes also called a "process ID".
• Ranks are contiguous and begin at zero.
Point to point communication 13.06.2012
Getting Information
![Page 13: Point to point communication - İTÜtraining.uhem.itu.edu.tr/docs/13haziranmpi/mpi_I.sunum.pdf · • MPI is a specification for the developers and users of message passing libraries](https://reader034.vdocument.in/reader034/viewer/2022050215/5f60bfdcbe33205d2c31bc14/html5/thumbnails/13.jpg)
13
• Purposes of MPI environment management routines:
• Initializing the MPI environment,
• Terminating the MPI environment,
• Querying the environment,
• Identity, etc.
Point to point communication 13.06.2012
Environment Management Routines
![Page 14: Point to point communication - İTÜtraining.uhem.itu.edu.tr/docs/13haziranmpi/mpi_I.sunum.pdf · • MPI is a specification for the developers and users of message passing libraries](https://reader034.vdocument.in/reader034/viewer/2022050215/5f60bfdcbe33205d2c31bc14/html5/thumbnails/14.jpg)
14
MPI_Init
• Initializes the MPI execution environment.
• Must be called in every MPI program,
• Must be called before any other MPI functions
• Must be called only once in an MPI program.
• For C programs, MPI_Init may be used to pass the
command line arguments to all processes.
int MPI_Init(int *argc, char **argv[])
MPI_INIT(ierr)
Point to point communication 13.06.2012
Environment Management Routines
![Page 15: Point to point communication - İTÜtraining.uhem.itu.edu.tr/docs/13haziranmpi/mpi_I.sunum.pdf · • MPI is a specification for the developers and users of message passing libraries](https://reader034.vdocument.in/reader034/viewer/2022050215/5f60bfdcbe33205d2c31bc14/html5/thumbnails/15.jpg)
15
MPI_Finalize
• Terminates MPI execution environment.
• After this routine, any of MPI routines does not
int MPI_Finalize (void)
MPI_FINALIZE (ierr)
Point to point communication 13.06.2012
Environment Management Routines
![Page 16: Point to point communication - İTÜtraining.uhem.itu.edu.tr/docs/13haziranmpi/mpi_I.sunum.pdf · • MPI is a specification for the developers and users of message passing libraries](https://reader034.vdocument.in/reader034/viewer/2022050215/5f60bfdcbe33205d2c31bc14/html5/thumbnails/16.jpg)
16
MPI_Comm_size
• Determines the number of processes in the group
associated with a communicator.
• Generally used within the communicatorMPI_COMM_WORLD to determine the number of
processes being used by your application.
int MPI_Comm_size (MPI_COMM_WORLD,int *size)
MPI_COMM_SIZE (MPI_COMM_WORLD,size,ierr)
Point to point communication 13.06.2012
Environment Management Routines
![Page 17: Point to point communication - İTÜtraining.uhem.itu.edu.tr/docs/13haziranmpi/mpi_I.sunum.pdf · • MPI is a specification for the developers and users of message passing libraries](https://reader034.vdocument.in/reader034/viewer/2022050215/5f60bfdcbe33205d2c31bc14/html5/thumbnails/17.jpg)
17
MPI_Comm_rank
• Determines the rank of the calling process within the
communicator.
• A unique integer rank between 0 and (#OfProcs-1)within the communicator MPI_COMM_WORLD.
• The rank is referred to as a task ID.
int MPI_Comm_rank (MPI_COMM_WORLD,int *rank)
MPI_COMM_RANK (MPI_COMM_WORLD,rank,ierr)
Point to point communication 13.06.2012
Environment Management Routines
![Page 18: Point to point communication - İTÜtraining.uhem.itu.edu.tr/docs/13haziranmpi/mpi_I.sunum.pdf · • MPI is a specification for the developers and users of message passing libraries](https://reader034.vdocument.in/reader034/viewer/2022050215/5f60bfdcbe33205d2c31bc14/html5/thumbnails/18.jpg)
18
MPI_Get_processor_name
• Returns the processor name.
• Also returns the length of the name.
int MPI_Get_processor_name (char *name,int *length)
mpi_get_processor_name (processorName,nameLen,ierr)
Point to point communication 13.06.2012
Environment Management Routines
![Page 19: Point to point communication - İTÜtraining.uhem.itu.edu.tr/docs/13haziranmpi/mpi_I.sunum.pdf · • MPI is a specification for the developers and users of message passing libraries](https://reader034.vdocument.in/reader034/viewer/2022050215/5f60bfdcbe33205d2c31bc14/html5/thumbnails/19.jpg)
19
C
#include <stdio.h>
#include “mpi.h”
int main(int argc, char * argv[]) {
int taskid, ntasks;
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD,
&taskid);
MPI_Comm_size(MPI_COMM_WORLD,
&ntasks);
printf(“Hello world! I am %d of %d\n",
taskid, ntasks);
MPI_Finalize();
return(0);
}
Point to point communication 13.06.2012
Simple MPI example
Fortran
Program SimpleMPI
implicit none
include "mpif.h"
integer My_Id, Numb_of_Procs, Ierr
call MPI_INIT ( ierr )
call MPI_COMM_RANK ( &
MPI_COMM_WORLD, My_Id, ierr )
call MPI_COMM_SIZE ( &
MPI_COMM_WORLD, Numb_of_Procs, ierr )
print *, “Hello World! This is “, My_id, “ of
“ , Numb_of_Procs
call MPI_FINALIZE ( ierr ) ! bad things
happen if you forget ierr
End Program SimpleMPI
![Page 20: Point to point communication - İTÜtraining.uhem.itu.edu.tr/docs/13haziranmpi/mpi_I.sunum.pdf · • MPI is a specification for the developers and users of message passing libraries](https://reader034.vdocument.in/reader034/viewer/2022050215/5f60bfdcbe33205d2c31bc14/html5/thumbnails/20.jpg)
20
MPI_Wtime
• Returns an elapsed wall clock time in seconds (double
precision) on the calling processor.
double MPI_Wtime()
MPI_Wtime()
Point to point communication 13.06.2012
Environment Management Routines
![Page 21: Point to point communication - İTÜtraining.uhem.itu.edu.tr/docs/13haziranmpi/mpi_I.sunum.pdf · • MPI is a specification for the developers and users of message passing libraries](https://reader034.vdocument.in/reader034/viewer/2022050215/5f60bfdcbe33205d2c31bc14/html5/thumbnails/21.jpg)
21
MPI_Abort
• Terminates all MPI processes associated with the
communicator.
• In most MPI implementations it terminates ALL
processes regardless of the communicator specified.
int MPI_Abort( MPI_COMM_WORLD,int errorcode )
MPI_ABORT( MPI_COMM_WORLD,errorcode,ierr )
Point to point communication 13.06.2012
Environment Management Routines
![Page 22: Point to point communication - İTÜtraining.uhem.itu.edu.tr/docs/13haziranmpi/mpi_I.sunum.pdf · • MPI is a specification for the developers and users of message passing libraries](https://reader034.vdocument.in/reader034/viewer/2022050215/5f60bfdcbe33205d2c31bc14/html5/thumbnails/22.jpg)
22
MPI_Send
• Performs a blocking send of the specified data to the
specified destination.
• Basic blocking send operation. Routine returns only after
the application buffer in the sending task is free for
reuse.
int MPI_Send( void *buf, int count,
MPI_Datatype datatype,
int dest,
int tag,
MPI_Comm comm )
Point to point communication 13.06.2012
Sending Data
![Page 23: Point to point communication - İTÜtraining.uhem.itu.edu.tr/docs/13haziranmpi/mpi_I.sunum.pdf · • MPI is a specification for the developers and users of message passing libraries](https://reader034.vdocument.in/reader034/viewer/2022050215/5f60bfdcbe33205d2c31bc14/html5/thumbnails/23.jpg)
23
MPI_Send
• Performs a blocking send of the specified data to the
specified destination.
MPI_SEND( buf, count,
MPI_Datatype datatype,
dest,
tag,
comm,
ierr )
Point to point communication 13.06.2012
Sending Data
![Page 24: Point to point communication - İTÜtraining.uhem.itu.edu.tr/docs/13haziranmpi/mpi_I.sunum.pdf · • MPI is a specification for the developers and users of message passing libraries](https://reader034.vdocument.in/reader034/viewer/2022050215/5f60bfdcbe33205d2c31bc14/html5/thumbnails/24.jpg)
24
MPI_Recv
• Performs a blocking receive of the specified data from
the specified source.
• Receive a message and block until the requested data is
available in the application buffer in the receiving task
int MPI_Recv( void *buf, int count,
MPI_Datatype datatype,
int source,
int tag,
MPI_Comm comm,
MPI_Status *status )
Point to point communication 13.06.2012
Receving Data
![Page 25: Point to point communication - İTÜtraining.uhem.itu.edu.tr/docs/13haziranmpi/mpi_I.sunum.pdf · • MPI is a specification for the developers and users of message passing libraries](https://reader034.vdocument.in/reader034/viewer/2022050215/5f60bfdcbe33205d2c31bc14/html5/thumbnails/25.jpg)
25
MPI_Recv
• Performs a blocking receive of the specified data from
the specified source.
MPI_RECV( buf, count,
MPI_Datatype datatype,
source,
tag,
comm,
MPI_Status status,ierr )
Point to point communication 13.06.2012
Receving Data
![Page 26: Point to point communication - İTÜtraining.uhem.itu.edu.tr/docs/13haziranmpi/mpi_I.sunum.pdf · • MPI is a specification for the developers and users of message passing libraries](https://reader034.vdocument.in/reader034/viewer/2022050215/5f60bfdcbe33205d2c31bc14/html5/thumbnails/26.jpg)
26
Destination
An argument to send routines that indicates the process where a
message should be delivered. Specified as the rank of the receiving
process.
Source
An argument to receive routines that indicates the originating process of
the message. Specified as the rank of the sending process. This may be
set to the wild card MPI_ANY_SOURCE to receive a message from any
task.
Point to point communication 13.06.2012
Destination-Source
![Page 27: Point to point communication - İTÜtraining.uhem.itu.edu.tr/docs/13haziranmpi/mpi_I.sunum.pdf · • MPI is a specification for the developers and users of message passing libraries](https://reader034.vdocument.in/reader034/viewer/2022050215/5f60bfdcbe33205d2c31bc14/html5/thumbnails/27.jpg)
27
Tag
Arbitrary non-negative integer assigned by the programmer to uniquely
identify a message. Send and receive operations should match message
tags. For a receive operation, the wild card MPI_ANY_TAG can be used
to receive any message regardless of its tag. The MPI standard
guarantees that integers 0-32767 can be used as tags, but most
implementations allow a much larger range than this.
Communicator
Indicates the communication context, or set of processes for which the
source or destination fields are valid. Unless the programmer is explicitly
creating new communicators, the predefined communicator
MPI_COMM_WORLD is usually used.
Point to point communication 13.06.2012
Tag - Communicator
![Page 28: Point to point communication - İTÜtraining.uhem.itu.edu.tr/docs/13haziranmpi/mpi_I.sunum.pdf · • MPI is a specification for the developers and users of message passing libraries](https://reader034.vdocument.in/reader034/viewer/2022050215/5f60bfdcbe33205d2c31bc14/html5/thumbnails/28.jpg)
28
Status
For a receive operation, indicates the source of the message and the tag
of the message. In C, this argument is a pointer to a predefined structure
MPI_Status (ex. stat.MPI_SOURCE stat.MPI_TAG). In Fortran, it is an
integer array of size MPI_STATUS_SIZE (ex. stat(MPI_SOURCE)
stat(MPI_TAG)).
Point to point communication 13.06.2012
Status
![Page 29: Point to point communication - İTÜtraining.uhem.itu.edu.tr/docs/13haziranmpi/mpi_I.sunum.pdf · • MPI is a specification for the developers and users of message passing libraries](https://reader034.vdocument.in/reader034/viewer/2022050215/5f60bfdcbe33205d2c31bc14/html5/thumbnails/29.jpg)
29Point to point communication 13.06.2012
MPI_Send and MPI_Recv
Process 1
compute
Send (P2, info);
compute
compute
idle
idle
Receive (P2, reply);
Process 2
idle
idle
Receive (P1, info);
compute
compute
compute
Send (P1, reply);
![Page 30: Point to point communication - İTÜtraining.uhem.itu.edu.tr/docs/13haziranmpi/mpi_I.sunum.pdf · • MPI is a specification for the developers and users of message passing libraries](https://reader034.vdocument.in/reader034/viewer/2022050215/5f60bfdcbe33205d2c31bc14/html5/thumbnails/30.jpg)
30Point to point communication 13.06.2012
MPI_Send and MPI_Recv
![Page 31: Point to point communication - İTÜtraining.uhem.itu.edu.tr/docs/13haziranmpi/mpi_I.sunum.pdf · • MPI is a specification for the developers and users of message passing libraries](https://reader034.vdocument.in/reader034/viewer/2022050215/5f60bfdcbe33205d2c31bc14/html5/thumbnails/31.jpg)
31Point to point communication 13.06.2012
MPI_Send and MPI_Recv
Waits for a message from process 1 with a tag of 5
![Page 32: Point to point communication - İTÜtraining.uhem.itu.edu.tr/docs/13haziranmpi/mpi_I.sunum.pdf · • MPI is a specification for the developers and users of message passing libraries](https://reader034.vdocument.in/reader034/viewer/2022050215/5f60bfdcbe33205d2c31bc14/html5/thumbnails/32.jpg)
32
MPI Datatypes (C)
MPI_CHAR signed char
MPI_SHORT signed short int
MPI_INT signed int
MPI_LONG signed long int
MPI_FLOAT float
MPI_DOUBLE double
MPI_LONG_DOUBLE long double
Point to point communication 13.06.2012
MPI Datatypes
![Page 33: Point to point communication - İTÜtraining.uhem.itu.edu.tr/docs/13haziranmpi/mpi_I.sunum.pdf · • MPI is a specification for the developers and users of message passing libraries](https://reader034.vdocument.in/reader034/viewer/2022050215/5f60bfdcbe33205d2c31bc14/html5/thumbnails/33.jpg)
33
MPI Datatypes (Fortran)
MPI_CHARACTER character
MPI_DOUBLE_COMPLEX double complex
MPI_INTEGER integer
MPI_REAL real
MPI_DOUBLE_PRECISION double precision
MPI_COMPLEX complex
Point to point communication 13.06.2012
MPI Datatypes
![Page 34: Point to point communication - İTÜtraining.uhem.itu.edu.tr/docs/13haziranmpi/mpi_I.sunum.pdf · • MPI is a specification for the developers and users of message passing libraries](https://reader034.vdocument.in/reader034/viewer/2022050215/5f60bfdcbe33205d2c31bc14/html5/thumbnails/34.jpg)
34
MPI Datatypes (C)
MPI_UNSIGNED_CHAR unsigned char
MPI_UNSIGNED_SHORT unsigned short int
MPI_UNSIGNED unsigned int
MPI_UNSIGNED_LONG unsigned long int
MPI_BYTE 8 binary digits
MPI_PACKED
data packed/unpacked
with
MPI_Pack()/ MPI_Unpack
Point to point communication 13.06.2012
MPI Datatypes
![Page 35: Point to point communication - İTÜtraining.uhem.itu.edu.tr/docs/13haziranmpi/mpi_I.sunum.pdf · • MPI is a specification for the developers and users of message passing libraries](https://reader034.vdocument.in/reader034/viewer/2022050215/5f60bfdcbe33205d2c31bc14/html5/thumbnails/35.jpg)
35
MPI Datatypes (Fortran)
MPI_LOGICAL logical
MPI_BYTE 8 binary digits
MPI_PACKED
data packed/unpacked
with
MPI_Pack()/ MPI_Unpack
Point to point communication 13.06.2012
MPI Datatypes
![Page 36: Point to point communication - İTÜtraining.uhem.itu.edu.tr/docs/13haziranmpi/mpi_I.sunum.pdf · • MPI is a specification for the developers and users of message passing libraries](https://reader034.vdocument.in/reader034/viewer/2022050215/5f60bfdcbe33205d2c31bc14/html5/thumbnails/36.jpg)
36
• The communication mode is selected with the send
routine.
• Four blocking send routines,
• Four non-blocking send routines.
• The receive routine does not specify communication
mode.
• The receive routine is simply blocking or non-
blocking.
Point to point communication 13.06.2012
Point to Point Communication
![Page 37: Point to point communication - İTÜtraining.uhem.itu.edu.tr/docs/13haziranmpi/mpi_I.sunum.pdf · • MPI is a specification for the developers and users of message passing libraries](https://reader034.vdocument.in/reader034/viewer/2022050215/5f60bfdcbe33205d2c31bc14/html5/thumbnails/37.jpg)
37
Point to Point Communication
Communication Mode Blocking Routines Non-Blocking Routines
Synchronous MPI_Ssend MPI_Issend
Ready MPI_Rsend MPI_Irsend
Buffered MPI_Bsend MPI_Ibsend
Standard MPI_Send MPI_Isend
MPI_Recv MPI_Irecv
MPI_Sendrecv
MPI_Sendrecv_replace
The receive routine is simply blocking (MPI_Recv) or non-blocking (MPI_Irecv).
Point to point communication 13.06.2012
Point to Point Communication
![Page 38: Point to point communication - İTÜtraining.uhem.itu.edu.tr/docs/13haziranmpi/mpi_I.sunum.pdf · • MPI is a specification for the developers and users of message passing libraries](https://reader034.vdocument.in/reader034/viewer/2022050215/5f60bfdcbe33205d2c31bc14/html5/thumbnails/38.jpg)
38
Dead Lock!
Point to point communication 13.06.2012
Before Activity
#include “mpi.h”
MPI_Init(&argc, &arcv);
MPI_Comm_size(MPI_COMM_WORLD, &mysize);
MPI_Comm_rank(MPI_COMM_WORLD, &myrank);
if ( my_PE_num == 0 )
MPI_Recv(&message, 12, MPI_CHAR, 1, ntag,
MPI_COMM_WORLD, &status);
else if ( my_PE_num == 1 ) {
MPI_Recv(&message, 12, MPI_CHAR, 0, ntag,
MPI_COMM_WORLD, &status);
printf("Node %d : %s\n", my_PE_num, message); }
MPI_Finalize();
![Page 39: Point to point communication - İTÜtraining.uhem.itu.edu.tr/docs/13haziranmpi/mpi_I.sunum.pdf · • MPI is a specification for the developers and users of message passing libraries](https://reader034.vdocument.in/reader034/viewer/2022050215/5f60bfdcbe33205d2c31bc14/html5/thumbnails/39.jpg)
39
Before Activity
Remember!
#include “mpi.h”
Initialize:
MPI_Init(&argc, &arcv);
MPI_Comm_size(MPI_COMM_WORLD, &mysize);
MPI_Comm_rank(MPI_COMM_WORLD, &myrank);
Finalize:
MPI_Finalize();
Compile with
mpicc -O foo.c -o foo.out
Run with
mpirun -np #procs ./foo.out (or use „bsub‟ )
Point to point communication 13.06.2012
Before Activity
![Page 40: Point to point communication - İTÜtraining.uhem.itu.edu.tr/docs/13haziranmpi/mpi_I.sunum.pdf · • MPI is a specification for the developers and users of message passing libraries](https://reader034.vdocument.in/reader034/viewer/2022050215/5f60bfdcbe33205d2c31bc14/html5/thumbnails/40.jpg)
40
Activity: sendrecv
(Send and Receive data with Message)
• Filling the blanks in sendrecv.c program withfollowing conditions:
I. Master: Sends a block of data to processes 1 toN iteratively. It prints the sending message.
II. Process from 1 to (N): Receives the data fromrank 0 with „any tag‟, it prints the receivingmessage.
Point to point communication 13.06.2012
Activity
![Page 41: Point to point communication - İTÜtraining.uhem.itu.edu.tr/docs/13haziranmpi/mpi_I.sunum.pdf · • MPI is a specification for the developers and users of message passing libraries](https://reader034.vdocument.in/reader034/viewer/2022050215/5f60bfdcbe33205d2c31bc14/html5/thumbnails/41.jpg)
41
Activity: sendrecv
(Send and Receive data with Message)
Point to point communication 13.06.2012
Activity
Process
0
Time
Sends
an array
Process
1
Process
2
Process
N
Print message
Print message
Print message
![Page 42: Point to point communication - İTÜtraining.uhem.itu.edu.tr/docs/13haziranmpi/mpi_I.sunum.pdf · • MPI is a specification for the developers and users of message passing libraries](https://reader034.vdocument.in/reader034/viewer/2022050215/5f60bfdcbe33205d2c31bc14/html5/thumbnails/42.jpg)
42
Activity: Hello World
(Hello World with Message)
• Filling the blanks in helloworld1.c programwith following conditions:
I. Master: Takes a value from stdin, increments itand will sends it to the next process 1.
II. Process from 1 to (last-1): After taking valueprevious process, it prints the receivingmessage, and increments the value then sendsit to next one.
III. Last Process: Takes value from previous one,and prints receiving message.
Point to point communication 13.06.2012
Activity
![Page 43: Point to point communication - İTÜtraining.uhem.itu.edu.tr/docs/13haziranmpi/mpi_I.sunum.pdf · • MPI is a specification for the developers and users of message passing libraries](https://reader034.vdocument.in/reader034/viewer/2022050215/5f60bfdcbe33205d2c31bc14/html5/thumbnails/43.jpg)
43
Activity: Hello World
(Hello World with Message)
Point to point communication 13.06.2012
Activity
![Page 44: Point to point communication - İTÜtraining.uhem.itu.edu.tr/docs/13haziranmpi/mpi_I.sunum.pdf · • MPI is a specification for the developers and users of message passing libraries](https://reader034.vdocument.in/reader034/viewer/2022050215/5f60bfdcbe33205d2c31bc14/html5/thumbnails/44.jpg)
44
Activity: Hello World
(Hello World with Finish Message)
• Filling the blanks in helloworld2.c program
with following conditions:
I. MPI processes pass an integer variable from left
to right, reporting and incrementing its value at
each step.
II. The master process should report when all
processes are finished.
Point to point communication 13.06.2012
Activity
![Page 45: Point to point communication - İTÜtraining.uhem.itu.edu.tr/docs/13haziranmpi/mpi_I.sunum.pdf · • MPI is a specification for the developers and users of message passing libraries](https://reader034.vdocument.in/reader034/viewer/2022050215/5f60bfdcbe33205d2c31bc14/html5/thumbnails/45.jpg)
45
Activity: Hello World
(Hello World with Finish Message)
Point to point communication 13.06.2012
Activity
![Page 46: Point to point communication - İTÜtraining.uhem.itu.edu.tr/docs/13haziranmpi/mpi_I.sunum.pdf · • MPI is a specification for the developers and users of message passing libraries](https://reader034.vdocument.in/reader034/viewer/2022050215/5f60bfdcbe33205d2c31bc14/html5/thumbnails/46.jpg)
46
Activity: ping pong
(Wall Clock Time for Send and Receive Process)
• Filling the blanks in pingpong.c program with following
conditions:
I. Master MPI process (rank 0) sends a block of double sized
array of length 2ⁿ to rank 1, incrementing its size from n=1
to n=20 at each iteration. The operation is repeated for 5
times to obtain an average WCT from trials.
II. For any trial and array size, Process rank 1 receives the
array from rank 0 and immediately sends the same amount
of data back to rank 0.
III. Measure elapsed wall clock time (WCT) with MPI_Wtime.
IV. The master process should report all statistics calculated
from the ping-pong operation.
Point to point communication 13.06.2012
Activity
![Page 47: Point to point communication - İTÜtraining.uhem.itu.edu.tr/docs/13haziranmpi/mpi_I.sunum.pdf · • MPI is a specification for the developers and users of message passing libraries](https://reader034.vdocument.in/reader034/viewer/2022050215/5f60bfdcbe33205d2c31bc14/html5/thumbnails/47.jpg)
47
Activity: ping pong
(Wall Clock Time for Send and Receive Process)
Point to point communication 13.06.2012
Activity
Process
0
Wall Clock Time
Process
1
Process
0
Process
0
Process
0
Process
1
Process
1
Process
1
Loop for array size (n=1 to 20)
Loop for trials (trial = 1 to 5)
![Page 48: Point to point communication - İTÜtraining.uhem.itu.edu.tr/docs/13haziranmpi/mpi_I.sunum.pdf · • MPI is a specification for the developers and users of message passing libraries](https://reader034.vdocument.in/reader034/viewer/2022050215/5f60bfdcbe33205d2c31bc14/html5/thumbnails/48.jpg)
48
Calculate Pi
Point to point communication 13.06.2012
Final Activity
• Open the file mpi_pi.c (mpi_pi.f90). We will edit two
lines for sending the value of „n‟ and collecting the sum
of local variable „mypi‟.
![Page 49: Point to point communication - İTÜtraining.uhem.itu.edu.tr/docs/13haziranmpi/mpi_I.sunum.pdf · • MPI is a specification for the developers and users of message passing libraries](https://reader034.vdocument.in/reader034/viewer/2022050215/5f60bfdcbe33205d2c31bc14/html5/thumbnails/49.jpg)
49
(Wall Clock Time for Send and Receive Process)
Point to point communication 13.06.2012
Dimensionality
• Analysis of dimensionality (1D, 2D, 3D)
• Ghost point operations
• Domain decomposition
Mesh partition from 3D domainData transfer between partitions
![Page 50: Point to point communication - İTÜtraining.uhem.itu.edu.tr/docs/13haziranmpi/mpi_I.sunum.pdf · • MPI is a specification for the developers and users of message passing libraries](https://reader034.vdocument.in/reader034/viewer/2022050215/5f60bfdcbe33205d2c31bc14/html5/thumbnails/50.jpg)
50
Genel Değerlendirme
Genel değerlendirme (her bir çalıştayın son günü):
http://workshop.uybhm.itu.edu.tr/feedback.php
Günlük değerlendirme formları:
http://workshop.uybhm.itu.edu.tr/evaluation/general.php
Point to point communication 13.06.2012
Değerlendirme