• MPI之求和


    // MPI1.cpp : 定义控制台应用程序的入口点。
    //
    
    #include "stdafx.h"
    #include "mpi.h"
    #include <Windows.h>
    #include <stdio.h>
    #include <math.h>
    
    
    int main(int argc, char* argv[])
    {
    	int done=0,n,myid,numproces,i;
    	double mypi,pi,sum;
    	double startwtime,endwtime;
    	int namelen;
    	char processor_name[MPI_MAX_PROCESSOR_NAME];
    	MPI_Init(&argc,&argv);
    	MPI_Comm_rank(MPI_COMM_WORLD,&myid);
    	MPI_Comm_size(MPI_COMM_WORLD,&numproces);
    	MPI_Get_processor_name(processor_name,&namelen);
    	fprintf(stderr,"Process %d on %s
    ",myid,processor_name);
    	fflush(stderr);
    
    	n=0;
    	while(!done)
    	{
    		if(myid==0)
    		{
    			printf("输入一个数字不超过:(0退出)");
    			fflush(stdout);
    			scanf_s("%d",&n);
    			startwtime=MPI_Wtime();
    		}
    		MPI_Bcast(&n,1,MPI_INT,0,MPI_COMM_WORLD);
    		if(n==0)
    			done=1;
    		else
    		{
    			sum=0.0;
    			for(i=myid+1;i<=n;i+=numproces)
    				sum+=i;
    			mypi=sum;
    			MPI_Reduce(&mypi,&pi,1,MPI_DOUBLE,MPI_SUM,0,MPI_COMM_WORLD);
    			if(myid==0)
    			{
    				printf("结果%.16f
    ",pi);
    				endwtime=MPI_Wtime();
    				printf("时间=%f
    ",endwtime-startwtime);
    			}
    		}
    	}
    	MPI_Finalize;
    	printf("时间");
    	system("pause");
    	return 0;
    }
    
    

    运行结果如下:


  • 相关阅读:
    HDU 1540 Tunnel Warfare (线段树区间合并)
    P2258 子矩阵
    P5021 赛道修建
    P4084 [USACO17DEC]Barn Painting
    P3914 染色计数
    比赛用模板
    P3594 [POI2015]WIL-Wilcze doły
    P5022 旅行
    P3952 时间复杂度
    P3960 列队
  • 原文地址:https://www.cnblogs.com/IT-hexiang/p/4084584.html
Copyright © 2020-2023  润新知