并行计算—OpenMP—统计完数个数
来源:互联网 发布:软件开发和互联网 编辑:程序博客网 时间:2024/06/05 09:35
<pre class="cpp" name="code">//parallel统计完数的并行算法和OpenMP并行编程。#include "stdafx.h"#include <omp.h>#include <iostream>#include <time.h>#include <math.h>#include <stdlib.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;//不是完数。}using namespace std;int _tmain(int argc, _TCHAR* argv[]){omp_set_num_threads(2);int lyy_n,lyy_num=0;clock_t t1, t2;long lyy_sumtmp[2];cin>>lyy_n;//并行t1=clock(); #pragma omp parallel{long i;long id=omp_get_thread_num();long lyy_num1=0;for(i = id; i < lyy_n; i=i+2) if(isPerfect(i)) lyy_num1++;lyy_sumtmp[id]=lyy_num1;}for(long i=0;i<2;i++)lyy_num+=lyy_sumtmp[i];t2=clock();cout<<lyy_num-1<<endl;cout<<"parallel time="<<(t2-t1)<<endl;//串行lyy_num=0;t1=clock(); for(int i = 1; i < lyy_n; i++) if(isPerfect(i)) lyy_num++;t2=clock();cout<<lyy_num<<endl;cout<<"serial time="<<(t2-t1)<<endl;system("pause");return 0;}
运行结果:
分析:
加速比计算:8253/4134=1.996
0 0
- 并行计算—OpenMP—统计完数个数
- 并行计算—OpenMP—统计素数的个数
- OpenMP并行计算程序设计-n以内的完数的个数
- 并行计算—OpenMP—parallel指令
- 并行计算—OpenMP—for指令
- 并行计算—OpenMP—section指令
- 并行计算—OpenMP—负载均衡
- 并行计算—OpenMP—任务调度
- 并行计算—OpenMP—并行区域法求和
- 并行计算—OpenMP—临界区critical
- 并行计算—OpenMP—共享与私有
- 并行计算—OpenMP—for指令法求和
- 并行计算—OpenMP—临界区方法求和
- MPI—统计完数的个数
- openMP 设置 (并行计算)
- 并行计算工具OpenMP
- 并行异构计算OpenMP
- [并行计算] 2. OpenMP简介
- 你真的会写单例吗
- 第九周项目1-猴子选大王(数组版)
- 把握问题的关键(转自知乎)
- 第九周项目一猴子选大王(数组版)
- Java Leetcode中KSum算法问题详解
- 并行计算—OpenMP—统计完数个数
- Java中的IO框架流一
- 编码解码
- Easyui Datagrid rownumbers行号四位、五位显示不完全的解决办法
- java自定义注解
- ArrayIndexOutOfBoundsException listview 不同视图问题
- Linux系统网络性能实例分析
- Windows MySQL BAT脚本控制启动、停止、重启
- MySQL-临时表