> Can anyone tell me whether it is legal to pass zero values for some of the send count elements in an MPI_AlltoallV() call? I want to perform an all-to-all operation but for performance reasons do not want to send data to various ranks who don't need to receive any useful values. If it is legal, can I assume the implementation is smart enough to not send messages when the send count is 0?
Well, if the message size is small I would suggest you to use alltoall instead of alltoallv. If the message size is large, alltoallV probably will be little bit faster.
FYI the implementation sends a message for count 0.