References:
Concepts:
- Rank: Each process has a unique id, which is assigned by the system when the process is started (a process has an id for each group it is in). This identification is sequential, starting at zero and going up to n-1 processes.
- Group: Ordered set of N processes. Each group is associated to a communicator, initially all processes are members of a group with a pre-established communicator, this is MPI_COMM_WORLD.
- Communicator: Defines a group of processes that can communicate with each other (context of processes).
- Application Buffer: It’s a regular memory address where the data that a process needs to send or receive is stored.
- System Buffer: It is a memory address reserved by the system to store messages. Typically, in asynchronous communication, during a send/receive operation, data from the application buffer may need to be copied to/from the system buffer (either to the send buffer or the receive buffer part).
- Blocking Communication: In a blocking communication routine, the call termination depends on certain events. Examples:
- In a send routine, data must be successfully received or stored in the System Buffer.
- In a receiving routine, data must be stored in the System Buffer.
- Non-Blocking Communication: In a non-blocking communication routine, the call returns without waiting for any event that indicate the routine end or success.
Messaging concepts:
- Standard Send: Default MPI implementation, used to transmit data from a process to another.
- Synchronous Send: Operation synchronized between the sender and receiver processes. The sender blocks program execution util the message is received.
- Ready Send: Used when the programmer is sure that there is a corresponding receiver already activated.
- Standard Receive: Basic messaging receive operation, may be blocking or non-blocking.
Initial functions:
The majority of MPI functions returns an integer that indicates success or error while executing it, usually they will return MPI_SUCCESS (0), but here are all possible codes: https://learn.microsoft.com/en-us/message-passing-interface/mpi-error.