We are proposing a new communication semantic, the extended sending mode. This new mode allows to specify that further sending requests are going to be posted, the underlying communication library can therefore decide to wait before sending the data, as they could be aggregated with data being posted in a later request.
This new communication semantic can, for example, be used when sending messages containing values with different datatypes. Instead of creating a struct derived datatype, the extended sending mode can be used, as in the following example:
MPI_Esend(x, 100, MPI_CHAR, 2, 10, MPI_IS_NOT_COMPLETED, MPI_COMM_WORLD, &requests); MPI_Esend(y, 100, MPI_INT, 2, 10, MPI_IS_NOT_COMPLETED, MPI_COMM_WORLD, &requests); MPI_Esend(f, 5, MPI_FLOAT, 2, 10, MPI_IS_COMPLETED, MPI_COMM_WORLD, &requests);
We show in the next figures the performances when sending data using the extended mode or a struct derived datatype. The message consists of a block of x characters (512 <= x <= 80 KB), divided in chunks of size y (y = 128, 256, 512, 1KB).
Opterons - MX