kicy3212004014 2016-06-14 14:03 采纳率: 0%
浏览 1428

MPI通信问题,哪儿出错了,大神帮着看看

#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哪儿不对啊?

  • 写回答

1条回答 默认 最新

  • kicy3212004014 2016-06-14 14:08
    关注

    算了,我自己找到了...

    评论

报告相同问题?

悬赏问题

  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题