Write a program to measure the time it takes to send 1, 2, 4, ..., 1M
copies of various MPI C datatypes (such as MPI_DOUBLE, MPI_CHAR, and MPI_INT)
from one processor to another using MPI_Send and MPI_Recv. Use the
same techniques as in the memcpy assignment to average out variations and
overhead in MPI_Wtime.
As in the unaligned memcpy tests, make the send and receive buffers different
and well separated in memory. Make them unaligned relative to each other, but
preserve the usual alignment rules that a object (probably) must start on an
address that is an integral multiple of its size.
Print the size, time, and rate in MB/sec for each test.
Make sure that both sender and reciever are ready when you begin the test.
The sample solution uses MPI_Sendrecv, but other choices are possible.