屮睨 2018-11-06 11:39 采纳率: 0%
浏览 811
已结题

大神们帮帮我吧,小白求助MPI问题,一用MPI_Scatterv,就报错。

我的意图是1加到100,c数组保存每个进程收到的数,d数组是 保存偏移量。
代码:
#include
#include

int main(void){

int c[200];
int i;
int n;
int d[200];
int x[100];

int x1[200];
int z[200];
int z1[200];
int size;
int rank;
int t;
int sum=0;

MPI_Init(NULL,NULL);//MPI_COMM_WORLD;
MPI_Comm_size(MPI_COMM_WORLD,&size);
MPI_Comm_rank(MPI_COMM_WORLD,&rank);
//建立数组存放给进程处理数据的个数
n=100;
if(rank==0){
for(i=0;i<100;i++)

   x[i]=i+1;

}

for(i=0;i<size;i++){

   c[i]=n/size;

t=n%size;

}
for(i=0;i<t;i++){
c[i]=c[i]+1;

}
//建立数组存放进程处理数据的偏移量
d[0]=0;
for(i=0;i<=rank;i++)
{
if(i!=0)
d[i]=c[i-1]+d[i-1];

}
printf("%d \n",rank);
printf("%d \n",c[rank]);
printf("%d \n",d[rank]);
printf("********************************** \n");

printf("x[2]是 %d \n",x[2]);

//零进程获取数据

//进行数据分发
MPI_Scatterv(x,c,d,MPI_INT,x1,c[rank],MPI_INT,0,MPI_COMM_WORLD);
/* for(i=0;i<c[rank];i++){
z1[rank]=z1[rank]+x1[i];

}

 printf("%d \n",rank);
 for(i=0;i<c[rank];i++)

printf("%d \n",x1[i]);
printf("%d \n",c[rank]);
printf("********************************** \n");

//数据处理
/* MPI_Gatherv(z1,c[rank],MPI_INT,z,c,d,MPI_INT,0,MPI_COMM_WORLD);
if(rank==0){
for(i=0;i<size;i++){
sum=sum+z[i];

   }
   printf("%d",sum);

}
*/ //汇总结果
MPI_Finalize();
}

  • 写回答

1条回答 默认 最新

  • devmiao 2018-11-06 13:24
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?