MPI—统计完数的个数
来源:互联网 发布:跳舞毯哪款最好 知乎 编辑:程序博客网 时间:2024/05/29 14:15
MPI求完数个数
// MPI1.cpp : 定义控制台应用程序的入口点。//MPI求完数个数#include "stdafx.h"#include "mpi.h"#include <stdio.h>#include <math.h>int isPerfect(int n) { int lyy_sum=0; for(int i = 1; i <=n/2; i++) if(n%i == 0) lyy_sum+= i;//统计所有真因子的和。 if(lyy_sum == n) return 1;//如果与原值相等,则该数为完数。 return 0;//不是完数。 } void main(int argc, char * argv[]){int n=0,myid,numprocs,i,pi,sum,mypi;double startwtime,endwtime;MPI_Init(&argc,&argv);MPI_Comm_size(MPI_COMM_WORLD,&numprocs);MPI_Comm_rank(MPI_COMM_WORLD,&myid);if(myid==0){printf("输入一个数字:");fflush(stdout);scanf_s("%d",&n);startwtime=MPI_Wtime();}MPI_Bcast(&n,1,MPI_INT,0,MPI_COMM_WORLD); //将n值广播出去sum=0;for(i=myid+1;i<=n;i+=numprocs)sum+=isPerfect(i);mypi=sum; MPI_Reduce(&mypi,&pi,1,MPI_INT,MPI_SUM,0,MPI_COMM_WORLD); //规约if(myid==0) {printf("结果=%d\n",pi);endwtime=MPI_Wtime();printf("并行时间=%f\n",endwtime-startwtime);}//串行程序sum=0;double startwtime2=MPI_Wtime();if(myid==0){for(i=1;i<=n;i++)sum+=isPerfect(i);double endwtime2=MPI_Wtime();printf("结果=%d\n",sum);printf("串行时间=%f\n",endwtime2-startwtime2);}MPI_Finalize();}
小数据运行结果:
大数据运行结果:
实验加速比:
加速比计算:8.074396/4.040743=1.998
0 0
- MPI—统计完数的个数
- MPI—统计素数个数
- Java多线程—Thread统计完数的个数
- MPI实现任意两个数之间的素数个数
- 并行计算—OpenMP—统计完数个数
- 统计二进制数1的个数
- 统计一个数中1的个数
- 统计二进制数中1的个数
- 找出最大的数并统计个数
- 统计二进制数中的1的个数
- 统计二进制数中1 的个数
- 正负数、0,个数的统计
- 统计一个数中1的个数
- 统计二进制数中1的个数
- 统计二进制数中1的个数
- 统计一个数阶乘0的个数
- 统计正负数个数
- 统计奇偶数个数
- DTD约束
- ServerSocket+Swing+SQL Server2008聊天系统(好友私聊,聊天室群聊)
- addEventListener()解决传统事件绑定中去除冗余同名函数但也存在问题
- Unity Editor Window Zooming
- S4.1_Struts2_ActionAdvance 在action动作类里定义增删改方法,在struts.xml中的action method属性如何设置?
- MPI—统计完数的个数
- <sstream>—istringstream、ostringstream、stringstream类
- 字母点击滚动条跳转事件
- Nexus私服与Maven配置
- 将数据流链接到加密转换的流CryptoStream 类
- 构造数组的MaxTree
- 去除inline-block元素间间距的N种方法
- try finally没有catch的用法
- mac下使用java命令直接执行类文件(找不到或无法加载主类)