📄 parallelfenzhi.c
字号:
#include "mpi.h"
#include <stdio.h>
#define N 64
char processor_name[MPI_MAX_PROCESSOR_NAME];
void main(int agrc,char *agrv[])
{
int a[N];
int i;
int p,myid;
int namelen;
int count;
int n,cnt;
MPI_Init(&agrc,&agrv);
MPI_Comm_size(MPI_COMM_WORLD,&p);
MPI_Comm_rank(MPI_COMM_WORLD,&myid);
MPI_Get_processor_name(processor_name,&namelen);
fprintf(stderr,"Process %d on %s\n",myid, processor_name);
fflush(stderr);
if(myid==0){
for(i=0;i<N;i++)
{
a[i]=(i+1)%13;
printf("%4d",a[i]);
}
count=-1;
}
MPI_Bcast(a,N,MPI_INT,0,MPI_COMM_WORLD);
n=N/p;
//分成p段每段n个元素
{
int *p1=&a[n*myid];
int *p2;
cnt=n*myid;
if(myid==p-1)
p2=&a[N-1];
else
p2=&a[n*(myid+1)-1];
while(p1<=p2)
{
if(*p1==0)
break;
else
p1++;
cnt++;
}
}
//将cnt发送给第一个节点
//printf("Process %d cnt=%d\n",myid,cnt);
MPI_Reduce(&cnt,&count,1,MPI_INT,MPI_MIN,0,MPI_COMM_WORLD);
if(myid==0)
printf("\nthe first 0's number is %d.",count);
MPI_Finalize();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -