OpenMP 之reduction 子句求数值积分圆周率(pi)(学习笔记)
2014-09-10 11:52
1751 查看
OpenMP 并行求数值积分,reduction 子句求数值积分圆周率(pi)方法
开启两个并行线程程序如下:
开启四个并行线程(修改如下语句):
开启两个并行线程程序如下:
#include "stdafx.h" #include <stdio.h> #include <time.h> #include <stdlib.h> #include <omp.h> static long num_steps = 100000000; double step; #define NUM_THREADS 2 int _tmain(int argc, _TCHAR* argv[]) { int i; clock_t t1,t2; double x,pi,sum = 0.0; step = 1.0/(double) num_steps; omp_set_num_threads(NUM_THREADS); t1 = clock(); #pragma omp parallel for reduction(+:sum) private(x) for(i= 0;i< num_steps ;i++) { x=(i+0.5)*step; sum = sum + 4.0/(1.0 + x*x); } pi = step * sum; t2 = clock(); printf("pi = %.15f\n",pi); printf("parallel time=%d\n",(t2-t1)); t1 = clock(); sum =0; for (int i=0;i <num_steps;i++) { x=(i+0.5)*step; sum = sum + 4.0/(1.0 + x*x); } pi = step * sum; t2 = clock(); printf("pi = %.15f\n",pi); printf("serial time=%d\n",(t2-t1)); printf("wo shi xingxing\n"); system("pause"); return 0; }运行结果如下图:
开启四个并行线程(修改如下语句):
#define NUM_THREADS 4运行结果如下图:
相关文章推荐
- OpenMP 之 临界区 求数值积分圆周率(pi)(学习笔记)
- OpenMP 之 sections 求素数、求和、求积分圆周率(星星笔记)
- MATLAB学习笔记(八)——MATLAB数值积分与微分
- MATLAB学习笔记:数值积分
- linq 学习笔记之 Linq基本子句
- OpenMP编程学习笔记七
- SQL学习笔记 where子句用法,like关键字 嵌套查询
- sql语句学习笔记(10)-group by(因为该列没有包含在聚合函数或 GROUP BY 子句中。聚合函数不能出现在where中)
- OpenMP编程学习笔记九
- ORACLE MODEL子句学习笔记
- OpenMP编程学习笔记二
- μcGUI学习笔记之三文本显示与数值显示
- Openmp补遗之数据共享&归约子句的学习
- 学习笔记:const int *pi 与 int *const pi 区别
- 学习笔记: 自适应Simpson积分
- oracle model子句学习笔记
- ORACLE MODEL子句学习笔记
- ORACLE MODEL子句学习笔记
- python学习笔记——字符串,列表,字典,集合,数值,sorted
- 多核编程学习笔记之OpenMP(一) (转)