1. 函数 MPI_Scatter
MPI_Scatter (&sendbuf,sendcnt,sendtype,&recvbuf,recvcnt,recvtype,root,comm)
Distributes distinct messages from a single source task to each task in the group.
2. 举例
#include<stdio.h> #include"mpi.h" #define SIZE 4 int main(int argc, char *argv[]){ int totalNumTasks, rankID; float sendBuf[SIZE][SIZE] = { {1.0, 2.0, 3.0, 4.0}, {5.0, 6.0, 7.0, 8.0}, {9.0, 10.0, 11.0, 12.0}, {13.0, 14.0, 15.0, 16.0} }; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rankID); MPI_Comm_size(MPI_COMM_WORLD, &totalNumTasks); if(totalNumTasks == SIZE){ int source = 0; int sendCount = SIZE; int recvCount = SIZE; float recvBuf[SIZE]; //scatter data from source process to all processes in MPI_COMM_WORLD MPI_Scatter(sendBuf, sendCount, MPI_FLOAT, recvBuf, recvCount, MPI_FLOAT, source, MPI_COMM_WORLD); printf("my rankID = %d, receive Results: %f %f %f %f, total = %f\n",