#include
#include
#include
#define ARRAY_LENGTH 10
void Create_Array(int* arr,int len)
{
int i,j;
printf("\nCreating Array.");
for(i=0;i<len;i++)
{
arr[i] = random() % (ARRAY_LENGTH * 10);
if((i%(ARRAY_LENGTH/10)) == 0)
printf(".");
}
printf("DONE!\n");
}
int main(int argc,char* argv[])
{
int myid;
int numprocs;
MPI_Status status;
int i,j;
MPI_Init(&argc,&argv);
MPI_Comm_rank(MPI_COMM_WORLD,&myid);
MPI_Comm_size(MPI_COMM_WORLD,&numprocs);
int len = ARRAY_LENGTH / numprocs;
int* array = (int *)malloc(sizeof(int) * ARRAY_LENGTH);
if(myid == 0)
{
Create_Array(array,ARRAY_LENGTH); //产生待排序数组
for(i=0;i<10;i++)
printf(" %d ",array[i]);
for(i=1;i<numprocs;i++)
{
MPI_Send((array+(i-1)*len),
len,
MPI_INT,
i,
99,
MPI_COMM_WORLD);
printf("\nmyid is %d \n",myid);
for(j=0;j<len;j++)
printf(" %d ",array[j + (i-1)*len]);
printf("\n");
}
//printf("here!");
MPI_Barrier(MPI_COMM_WORLD);
//quicksort(array,(numprocs-1)*len,ARRAY_LENGTH-1);
MPI_Barrier(MPI_COMM_WORLD);
}
if(myid != 0)
{
int* buffer = (int *)malloc(sizeof(int) * len);
MPI_Recv(&buffer,
len,
MPI_INT,
myid,
99,
MPI_COMM_WORLD,
&status);
printf("here!");//MPI_Barrier(MPI_COMM_WORLD);
printf("myid is %d",myid);
for(j=0;j<len;j++)
printf(" %d ",buffer[j]);
printf("\n");
}
MPI_Finalize();
return 0;
}
我的MPI_Send和MPI_Recv哪儿不对啊?