将数据块分配给所有组进程
MPI_Scatter函数将根进程发送缓冲区的消息分割成大小相等的sendcount部分,并将第i部分发送到第i号进程(包括它自己)的接收缓冲区。
int MPI_Scatter(void* sendbuf, int sendcount, MPI_Datatype sendtype,
void* recvbuf, int recvcount, MPI_Datatype recvtype。
int root, MPI_Comm comm)
IN sendbuf - 分布式数据块放置的起始地址(仅在发送进程根部使用)。
IN sendcount - 发送给每个进程的元素数量。
IN sendtype - 要发送的项目的类型。
OUT recvbuf - 接收缓冲区的起始地址。
IN recvcount - 要接收的项目的数量。
IN recvtype - 要接收的项目的类型。
IN root - 发送进程的编号。
IN comm - 沟通者。
MPI_Scatter函数将根进程的发送缓冲区的消息分割成大小相等的sendcount部分,并将第i部分发送到第i号进程(包括它自己)的接收缓冲区。
进程根使用两个缓冲区(发送和接收),所以它调用的子程序中的所有参数都是重要的。在有comm的组中的其他进程只是接收者,所以指定发送缓冲区的参数对他们来说是不重要的。
sendcount元素的数量必须等于收到的recvcount元素的数量。
请注意,在根进程的调用中,sendcount的值是发送到每个进程的项目数,而不是项目总数。Scatter操作是Gather的逆操作。
MPI_Scaterv函数是MPI_Scatter函数的一个向量变体,允许向每个进程发送不同数量的元素。发送给第i个进程的块元素的原点在位移数组displs中指定,而发送的元素数量在sendcounts数组中指定。
int MPI_Scatterv(void* sendbuf, int *sendcounts, int *displs,
MPI_Datatype sendtype, void* recvbuf, int recvcount。
MPI_Datatype recvtype, int root, MPI_Comm comm)
IN sendbuf - 发送缓冲区的起始地址(仅在发送进程根部使用)。
IN sendcoun