Ответ находится в стандарте MPI (5.8, стр. 168)
J-й блок, отправленный из процесса i, получен процессом j и помещен в i-й блок recvbuf.
[...]
Если comm является внутрикоммуникатором, результат такой, как если бы каждый процесс выполнял отправку каждому процессу (включая его) с вызовом,
MPI_Send(sendbuf+i * sendcount * extent(sendtype),sendcount,sendtype,i, ...)
и получение от любого другого процесса с вызовом
MPI_Recv(recvbuf+i * recvcount * extent(recvtype),recvcount,recvtype,i,...)
И да, вы можете реализовать MPI_Alltoall()
с comm_size
MPI_Scatter()
, еслиэто то, что вы просите.