scatter.c

#include<stdio.h>
#include<mpi.h>

#define SIZE 4

int main( int argc, char *argv[]){
   int numTasks, rank, sendCount, recvCount, source;
   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} };
    
   float recvBuf[SIZE];

  MPI_Init(&argc, &argv);
  MPI_Comm_rank(MPI_COMM_WORLD, &rank);
  MPI_Comm_size(MPI_COMM_WORLD, &numTasks);

   if(numTasks == SIZE){
    source = 1;
    sendCount = SIZE;
    recvCount = SIZE;
    
    MPI_Scatter(sendBuf, sendCount, MPI_FLOAT, recvBuf,    
             recvCount, MPI_FLOAT, source, MPI_COMM_WORLD);

    printf( "rank = %d, Results: %f %f %f %f\n", rank,
             recvBuf[0], recvBuf[1], recvBuf[2], recvBuf[3]);
  } else{
    printf( "Must specify %d processors. Terminating.\n", SIZE);
  }

              MPI_Finalize();
   return 0;
}

你可能感兴趣的:(职场,休闲,Scatter)