⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 parallelfenzhi.c

📁 一个使用分治方法的并行程序从一个存放在数组中整数数列中找出第一个0。自己选择进程数和数组大小
💻 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 + -