Table of Contents

MPI User Parameters

General Information

Eager and Rendezvous

Eager and Rendezvous are protocols for MPI transmissions which are used depending on the size of the message that needs to be sent. Eager is good for smaller messages since it has a better latency with a lower bandwidth. At the other hand, Rendezvous provides a higher bandwidth thus increasing the latency due to synchronization.

Eager protocol

This protocol is used when the sender can guess that the message can fit in the receive buffers of the receiver (i.e. small messages). This way, no need of synchronization is needed between both processes.

Rendezvous protocol

When the sender can guess that the message won't fit in the receive buffers of the receiver (i.e. big messages) then the rendezvous protocol is used. As one can imagine, a synchronization between the sender and the received is needed.

OpenMPI

Several parameters can be tunned for OpenMPI. For a complete list execute the following at the Mont-Blanc prototype:

ompi_info --param all all --level9

Each one of these parameters can be modified in three different ways:

Adding the parameter to ~/.openmpi/mca-params.conf

Modifying the environment variable OMPI_MCA_param_name

Using the option –mca with mpirun

The following parameters could be interesting to study since it can improve the performance of your application:

btl_tcp_rndv_eager_limit

Size (in bytes, including header) of “phase 1” fragment sent for all large messages (must be >= 0 and ⇐ eager_limit) (integer, size in bytes)

Startup a separate thread dedicated to responding to connection requests

There is no universal rule for each of these parameters. This means that one application can perform better with one settings while another can drop it. The user is in charge to know its application and then, with this data, decide and check which configuration is the best for its application.

max no. of irecvs/isends posted at a time in some alltoall algorithms. Setting it to 0 causes all irecvs/isends to be posted at a time in some alltoall algorithms. Setting it to 0 causes all irecvs/isends to be posted at once.

There is no universal rule for each of these parameters. This means that one application can perform better with one settings while another can drop it. The user is in charge to know its application and then, with this data, decide and check which configuration is the best for its application.